Nina: Add firmware version checking.

This commit is contained in:
iabdalkader 2021-07-29 21:22:32 +02:00
parent 9dafa2447b
commit ab506618d7
3 changed files with 29 additions and 8 deletions

View File

@ -19,6 +19,14 @@
#define NINA_MAX_NETWORK_LIST (10)
#define NINA_MAX_SOCKET (10)
#define NINA_FW_VER_MAJOR (1)
#define NINA_FW_VER_MINOR (4)
#define NINA_FW_VER_PATCH (7)
#define NINA_FW_VER_MAJOR_OFFS (0)
#define NINA_FW_VER_MINOR_OFFS (2)
#define NINA_FW_VER_PATCH_OFFS (4)
typedef enum {
NINA_SEC_INVALID = 0,
NINA_SEC_OPEN,

View File

@ -320,13 +320,6 @@ int nina_init()
{
// Initialize the BSP.
nina_bsp_init();
// check firmware version
uint8_t fw_ver[NINA_FW_VER_LEN];
if (nina_fw_version(fw_ver) != 0) {
return -1;
}
// TODO check fw version matches the driver.
return 0;
}

View File

@ -85,7 +85,27 @@ static mp_obj_t py_nina_active(size_t n_args, const mp_obj_t *args)
int error = 0;
if ((error = nina_init()) != 0) {
mp_raise_msg_varg(&mp_type_OSError,
MP_ERROR_TEXT("Failed to initialize Nina-W10 module: %d\n"), error);
MP_ERROR_TEXT("Failed to initialize Nina-W10 module, error: %d\n"), error);
}
// check firmware version
uint8_t fw_ver[NINA_FW_VER_LEN];
if (nina_fw_version(fw_ver) != 0) {
nina_deinit();
mp_raise_msg_varg(&mp_type_OSError,
MP_ERROR_TEXT("Failed to read firmware version, error: %d\n"), error);
}
// Check fw version matches the driver.
if ((fw_ver[NINA_FW_VER_MAJOR_OFFS] - 48) != NINA_FW_VER_MAJOR ||
(fw_ver[NINA_FW_VER_MINOR_OFFS] - 48) != NINA_FW_VER_MINOR ||
(fw_ver[NINA_FW_VER_PATCH_OFFS] - 48) != NINA_FW_VER_PATCH) {
nina_deinit();
mp_raise_msg_varg(&mp_type_OSError,
MP_ERROR_TEXT("Firmware version mismatch. Expected %d.%d.%d found: %d.%d.%d\n"),
NINA_FW_VER_MAJOR, NINA_FW_VER_MINOR, NINA_FW_VER_PATCH,
fw_ver[NINA_FW_VER_MAJOR_OFFS] - 48,
fw_ver[NINA_FW_VER_MINOR_OFFS] - 48,
fw_ver[NINA_FW_VER_PATCH_OFFS] - 48);
}
} else {
nina_deinit();