Indeed. But then the missing part is that the function signatures don’t match.
min.h
void min_application_handler(uint8_t min_id, uint8_t const *min_payload, uint8_t len_payload, uint8_t port);
vs in pc_comm.cpp
void min_application_handler(uint8_t min_id, uint8_t *min_payload, uint8_t len_payload, uint8_t port)
so as far as C++ is concerned, these are two different functions due to missing const
on min_payload
, and the extern "C"
linkage does not apply to the function define in pc_comm.cpp
. So the function will not be found.
You’ll also have to pull that const
through the other functions.
diff --git a/src/pc_comm.cpp b/src/pc_comm.cpp
index 10a532a..16e752a 100644
--- a/src/pc_comm.cpp
+++ b/src/pc_comm.cpp
@@ -35,7 +35,7 @@ uint32_t min_time_ms(void)
// Handle the reception of a MIN frame. This is the main interface to MIN for receiving
// frames. It's called whenever a valid frame has been received (for transport layer frames
// duplicates will have been eliminated).
-void min_application_handler(uint8_t min_id, uint8_t *min_payload, uint8_t len_payload, uint8_t port)
+void min_application_handler(uint8_t min_id, uint8_t const *min_payload, uint8_t len_payload, uint8_t port)
{
ESP_LOGI(TAG, "Got MIN frame with ID %d", min_id);
if (min_id == CMD_CHANGE_WIFI) {
@@ -57,7 +57,7 @@ void min_application_handler(uint8_t min_id, uint8_t *min_payload, uint8_t len_p
/* --- End callbacks --- */
-void handleChangeSerialNumber(uint8_t *min_payload, uint8_t len_payload)
+void handleChangeSerialNumber(const uint8_t *min_payload, uint8_t len_payload)
{
String newSN = String(min_payload, len_payload);
newSN.trim();
@@ -69,7 +69,7 @@ void handleChangeSerialNumber(uint8_t *min_payload, uint8_t len_payload)
pref.end();
}
-void handleChangeFarmCodename(uint8_t *min_payload, uint8_t len_payload)
+void handleChangeFarmCodename(const uint8_t *min_payload, uint8_t len_payload)
{
String newName = String(min_payload, len_payload);
newName.trim();
@@ -81,7 +81,7 @@ void handleChangeFarmCodename(uint8_t *min_payload, uint8_t len_payload)
pref.end();
}
-void handleChangeWifi(uint8_t *min_payload, uint8_t len_payload)
+void handleChangeWifi(const uint8_t *min_payload, uint8_t len_payload)
{
// The JSON document will be an array to 2 strings,
// each string is in form "ssid:password"
diff --git a/src/pc_comm.h b/src/pc_comm.h
index 94e081e..e40fa4f 100644
--- a/src/pc_comm.h
+++ b/src/pc_comm.h
@@ -9,7 +9,7 @@ uint16_t min_tx_space(uint8_t port);
void min_tx_byte(uint8_t port, uint8_t byte);
uint32_t min_time_ms(void);
-void handleChangeSerialNumber(uint8_t *min_payload, uint8_t len_payload);
-void handleChangeFarmCodename(uint8_t *min_payload, uint8_t len_payload);
-void handleChangeWifi(uint8_t *min_payload, uint8_t len_payload);
+void handleChangeSerialNumber(const uint8_t *min_payload, uint8_t len_payload);
+void handleChangeFarmCodename(const uint8_t *min_payload, uint8_t len_payload);
+void handleChangeWifi(const uint8_t *min_payload, uint8_t len_payload);
void saveWifiAuth(JsonArray &creds, const uint8_t slot);
After you git apply
that file, you’ll receive
Retrieving maximum program size .pio\build\esp-wrover-kit\firmware.elf
Checking size .pio\build\esp-wrover-kit\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [= ] 14.1% (used 46348 bytes from 327680 bytes)
Flash: [====== ] 57.7% (used 756389 bytes from 1310720 bytes)
========================================================================================= [SUCCESS] Took 15.69 seconds =========================================================================================
as expected.