I'm compiling some arduino code for ESP8266 (Wemos)
This code works fine
char url[256],station[13],bssid[13];
sprintf(url, "/update/secret_key?secs=%lu&in=%lu:", millis()/1000,
clients_known.last_heard );
strcat(url,format_mac_address(station,clients_known.station));
strcat(url,":");
strcat(url,format_mac_address(bssid,clients_known.bssid));
char *format_mac_address( char *result ,uint8_t ssid[] )
{
result[0]='\0';
for (int i = 0; i < ETH_MAC_LEN; i++)
sprintf(&result[strlen(result)], "%02x", ssid[i]);
return result;
}
But if I try to combine it into a single sprintf statement it causes an "Exception (28)" error with stack dump and a hard reset every time its called.
sprintf(url, "/update/secret_key?secs=%lu&in=%lu:%s:%s", millis()/1000,
clients_known.last_heard,
format_mac_address(station,clients_known.station),
format_mac_address(bssid,clients_known.bssid)
);
Appreciate if anyone with more coding skill than I could tell me if I made an obvious mistake or if this is a bug in the ESP8266 sprintf() function.