main/config.c

changeset 59
52d9405474e1
parent 57
232f318a6b51
child 60
07a1a07fdc8c
equal deleted inserted replaced
58:e949f41034eb 59:52d9405474e1
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)

mercurial