84 uint8_t mac_addr[8] = {0}; |
84 uint8_t mac_addr[8] = {0}; |
85 FILE *f = fopen("/spiffs/etc/units.conf", "r"); |
85 FILE *f = fopen("/spiffs/etc/units.conf", "r"); |
86 |
86 |
87 if (f == NULL) { |
87 if (f == NULL) { |
88 // No units yet, create them. |
88 // No units yet, create them. |
89 esp_efuse_mac_get_default(mac_addr); |
89 ESP_LOGE(TAG, "/spiffs/etc/units.conf not found, create new"); |
90 for (int i = 0; i < 3; i++) { |
90 goto u_error; |
91 memset(&units[i], 0, sizeof(unit_t)); |
|
92 sprintf(units[i].uuid, "c0ffeeee-dead-beef-caf%d-%02x%02x%02x%02x%02x%02x", i & 3, |
|
93 mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]); |
|
94 sprintf(units[i].alias, "unit%d", (i + 1) & 3); |
|
95 units[i].pressure_zero = 110; |
|
96 } |
|
97 write_units(); |
|
98 } else { |
91 } else { |
99 dst = (uint8_t*)&units; |
92 dst = (uint8_t*)&units; |
100 size_t bytes = fread(dst, 1, sizeof(units), f); |
93 size_t bytes = fread(dst, 1, sizeof(units), f); |
101 fclose(f); |
94 fclose(f); |
|
95 if (bytes != sizeof(units)) { |
|
96 ESP_LOGE(TAG, "/spiffs/etc/units.conf read %d of %d bytes", bytes, sizeof(units)); |
|
97 goto u_error; |
|
98 } |
102 ESP_LOGI(TAG, "/spiffs/etc/units.conf read %d bytes", bytes); |
99 ESP_LOGI(TAG, "/spiffs/etc/units.conf read %d bytes", bytes); |
103 for (int i = 0; i < 3; i++) |
100 for (int i = 0; i < 3; i++) |
104 ESP_LOGI(TAG, "%d %s %d %4d %3d", i, units[i].alias, units[i].pressure_channel, units[i].pressure_voltage, units[i].pressure_zero); |
101 ESP_LOGI(TAG, "%d %s %d %4d %3d", i, units[i].alias, units[i].pressure_channel, units[i].pressure_voltage, units[i].pressure_zero); |
105 } |
102 } |
|
103 return; |
|
104 |
|
105 u_error: |
|
106 esp_efuse_mac_get_default(mac_addr); |
|
107 for (int i = 0; i < 3; i++) { |
|
108 memset(&units[i], 0, sizeof(unit_t)); |
|
109 sprintf(units[i].uuid, "c0ffeeee-dead-beef-caf%d-%02x%02x%02x%02x%02x%02x", i & 3, |
|
110 mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]); |
|
111 sprintf(units[i].alias, "unit%d", (i + 1) & 3); |
|
112 units[i].pressure_zero = 110; |
|
113 } |
|
114 f = fopen("/spiffs/etc/units.conf", "w+"); |
106 } |
115 } |
107 |
116 |
108 |
117 |
109 |
118 |
110 int add_station(uint8_t *SSID, uint8_t *Password) |
119 int add_station(uint8_t *SSID, uint8_t *Password) |