Hey @rickkas7 - I have tried to get this error code but I just seem to be receiving 0 see log below.
0000010140 [hal.wlan] INFO: Using external antenna
0000010164 [app] TRACE: 1 stored credentials giving 5000 mS timeout
0000010164 [app] TRACE: DIAG_ID_NETWORK_CONNECTION_ERROR_CODE = 0
0000010164 [app] TRACE: network.connection.error 0
0000010166 [hal.wlan] TRACE: connect cancel
0000010196 [hal.wlan] INFO: Bringing WiFi interface up with DHCP
0000010196 [hal.wlan] TRACE: connect cancel
The code I adapted from your example is as follows:
// based upon Rick Kas code
uint32_t getNetworkConnectionError()
{
int32_t value;
if (getSystemDiagValue(DIAG_ID_NETWORK_CONNECTION_ERROR_CODE, value))
{
Log.trace("DIAG_ID_NETWORK_CONNECTION_ERROR_CODE = %d", value);
}
else
{
Log.trace("No NETWORK_CONNECTION_ERROR_CODE found");
value = 0;
}
return value;
}
// based upon Rick Kas code
bool getSystemDiagValue(uint16_t id, int32_t &value)
{
union Data {
struct __attribute__((packed)) {
uint16_t idSize;
uint16_t valueSize;
uint16_t id;
int32_t value;
size_t offset;
} d;
uint8_t b[10];
};
Data data;
data.d.offset = data.d.value = 0;
struct {
static bool appender(void* appender, const uint8_t* data, size_t size) {
Data *d = (Data *)appender;
if ((d->d.offset + size) <= sizeof(Data::b)) {
memcpy(&d->b[d->d.offset], data, size);
d->d.offset += size;
}
return true;
}
} Callback;
system_format_diag_data(&id, 1, 1, Callback.appender, &data, nullptr);
//Log.trace("idSize=%u valueSize=%u id=%u value=%ld", data.d.idSize, data.d.valueSize, data.d.id, data.d.value);
value = data.d.value;
return (data.d.offset == sizeof(Data::b));
}
Any ideas why it is returning error code of 0?