diff --git a/Tests/Mieming/host_esp32Wroom/client/lib/espnow/src/ESPNow.cpp b/Tests/Mieming/host_esp32Wroom/client/lib/espnow/src/ESPNow.cpp index 81d1195752ca4d17328cae4a556c8eb07247bdaa..990ed1ff0992538d4a84bd45b601aa97a20e4f87 100644 --- a/Tests/Mieming/host_esp32Wroom/client/lib/espnow/src/ESPNow.cpp +++ b/Tests/Mieming/host_esp32Wroom/client/lib/espnow/src/ESPNow.cpp @@ -22,7 +22,7 @@ void get_host_mac(uint8_t *destination) preferences.getBytes("host", destination, sizeof(uint8_t) * 6); } else { memcpy(destination, BROADCAST_MAC, sizeof(BROADCAST_MAC)); - ESP_LOGE(TAG, "Backup MAC address used"); + ESP_LOGI(TAG, "Backup MAC address used"); } preferences.end(); } @@ -53,47 +53,54 @@ void on_data_recv(const uint8_t *mac, const uint8_t *incomingData, int len) // assume host change not happening, rare event // => on host change, broadcast ESP_LOGE(TAG, "Message recieved"); - preferences.begin("config", false); config received_msg; memcpy(&received_msg, incomingData, sizeof(received_msg)); // TODO: check for valid mac // all the esp32 macs so far use the same first 3(?) bytes so maybe use that switch (received_msg.type){ case dataAck:{ + ESP_LOGI(TAG, "dataAck received."); msg_recv = true; Time::getInstance().setTime( received_msg.epoch_seconds); // see https://www.esp32.com/viewtopic.php?t=9965, maybe this needs an offset Serial.println(Time::getInstance().getEpochSeconds()); + preferences.begin("config", false); if (!preferences.isKey("host")) { - preferences.putBytes("host", received_msg.host, sizeof(received_msg.host)); + if(preferences.putBytes("host", received_msg.host, sizeof(received_msg.host)) > 0){; ESP_LOGI(TAG, "host MAC address saved to flash"); + } // add host to peers add_host_to_peers(received_msg); } + preferences.end(); } case hostChange:{ + ESP_LOGI(TAG, "hostChange received"); Time::getInstance().setTime(received_msg.epoch_seconds); // delete old host + preferences.begin("config", false); if(preferences.isKey("host")){ + ESP_LOGI(TAG, "removing old host"); uint8_t old[6]; - get_host_mac(old); + preferences.end(); + get_host_mac(old); // maybe problem here, re-opening preferences esp_now_del_peer(old); } // add new host - preferences.putBytes("host", received_msg.host, sizeof(received_msg.host)); - ESP_LOGI(TAG, "Host Mac address saved to flash:"); - for(int i=0; i<6; i++){ - Serial.print(received_msg.host[i], HEX); - Serial.print(":"); + preferences.begin("config", false); + if(preferences.putBytes("host", received_msg.host, sizeof(received_msg.host)) > 0){ + ESP_LOGI(TAG, "Host Mac address saved to flash:"); } - Serial.println(); + else{ + ESP_LOGI(TAG, "Couldn't save Host Mac to flash"); + } + preferences.end(); add_host_to_peers(received_msg); } default:{ break; } } - preferences.end(); } diff --git a/host/esp-t-sim7000g/src/main.cpp b/host/esp-t-sim7000g/src/main.cpp index 9952aeffe91d91a6e980d29f4152db8c1c191e6f..ff11b84e479bb8291c853164dce93869b2edf1e7 100644 --- a/host/esp-t-sim7000g/src/main.cpp +++ b/host/esp-t-sim7000g/src/main.cpp @@ -139,7 +139,7 @@ void on_data_recv(const uint8_t *mac, const uint8_t *incomingData, int len) if(!esp_now_is_peer_exist(mac)){ esp_now_peer_info_t client = {}; - memcpy(client.peer_addr, mac, 6); + memcpy(client.peer_addr, mac, sizeof(uint8_t) * 6); client.encrypt = false; client.channel = 0; @@ -171,13 +171,13 @@ void on_data_recv(const uint8_t *mac, const uint8_t *incomingData, int len) queue.push(lineData); xSemaphoreGive(xMutex); - response response; + response response = {}; response.type = dataAck; esp_read_mac(response.mac, ESP_MAC_WIFI_STA); response.time = rtc.getEpoch(); esp_err_t success = esp_now_send(mac, (uint8_t*) &response, sizeof(response)); esp_log_write(ESP_LOG_DEBUG, TAG_ESPNOW.c_str(), - (success == ESP_OK) ? "Response sent." : "Failed to respond"); + (success == ESP_OK) ? "Response sent\n" : "Failed to respond\n"); } String documentToLineProtocolString(const DynamicJsonDocument &doc)