From d4d2f0af12bf8d7c183b731a5d6e655a7183ee99 Mon Sep 17 00:00:00 2001 From: pennam Date: Thu, 5 Dec 2024 12:56:54 +0100 Subject: [PATCH 1/6] networkId: fix return values --- src/networkId.cpp | 44 ++++++++++++++++++++------------------------ 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/src/networkId.cpp b/src/networkId.cpp index 18abdef..2b309e2 100644 --- a/src/networkId.cpp +++ b/src/networkId.cpp @@ -11,24 +11,23 @@ #include "networkId.h" bool networkId::begin() { -#if defined(ARDUINO_SAMD_MKRWIFI1010) || \ - defined(ARDUINO_SAMD_NANO_33_IOT) - WiFi.setTimeout(0); - return !!WiFi.begin("In33dm4c4ddr35", "In33dm4c4ddr35"); -#elif defined(ARDUINO_PORTENTA_H7_M7) || \ - defined(ARDUINO_NICLA_VISION) || \ - defined(ARDUINO_GIGA) - WiFi.setTimeout(0); - return !!WiFi.begin("In33dm4c4ddr35", "In33dm4c4ddr35", ENC_TYPE_TKIP); -#elif defined(ARDUINO_PORTENTA_C33) || \ +#if defined(ARDUINO_NANO_RP2040_CONNECT) || \ + defined(ARDUINO_SAMD_MKRWIFI1010) || \ + defined(ARDUINO_SAMD_NANO_33_IOT) || \ + defined(ARDUINO_PORTENTA_C33) || \ defined(ARDUINO_UNOR4_WIFI) WiFi.setTimeout(0); - return !!WiFi.begin("In33dm4c4ddr35", "In33dm4c4ddr35"); -#elif defined(ARDUINO_NANO_RP2040_CONNECT) + int result = WiFi.begin("In33dm4c4ddr35", "In33dm4c4ddr35"); + return (result != WL_NO_SHIELD) ? true : false; +#elif defined(ARDUINO_PORTENTA_H7_M7) || \ + defined(ARDUINO_NICLA_VISION) || \ + defined(ARDUINO_GIGA) WiFi.setTimeout(0); - return !!WiFi.begin("In33dm4c4ddr35", "In33dm4c4ddr35"); + int result = WiFi.begin("In33dm4c4ddr35", "In33dm4c4ddr35", ENC_TYPE_TKIP); + return ( result != WL_NO_SHIELD) ? true : false; #elif defined(ARDUINO_OPTA) - return !!Ethernet.begin(NULL, 0, 0); + Ethernet.begin(NULL, 0, 0); + return true; #endif } @@ -41,18 +40,15 @@ bool networkId::get(uint8_t *in, uint32_t size) { if (size < IFACE_MAC_ADDR_LENGTH) { return false; } -#if defined(ARDUINO_SAMD_MKRWIFI1010) || \ - defined(ARDUINO_SAMD_NANO_33_IOT) - WiFi.macAddress(in); -#elif defined(ARDUINO_PORTENTA_H7_M7) || \ - defined(ARDUINO_NICLA_VISION) || \ +#if defined(ARDUINO_NANO_RP2040_CONNECT) || \ + defined(ARDUINO_SAMD_MKRWIFI1010) || \ + defined(ARDUINO_SAMD_NANO_33_IOT) || \ + defined(ARDUINO_PORTENTA_C33) || \ + defined(ARDUINO_UNOR4_WIFI) || \ + defined(ARDUINO_PORTENTA_H7_M7) || \ + defined(ARDUINO_NICLA_VISION) || \ defined(ARDUINO_GIGA) WiFi.macAddress(in); -#elif defined(ARDUINO_PORTENTA_C33) || \ - defined(ARDUINO_UNOR4_WIFI) - WiFi.macAddress(in); -#elif defined(ARDUINO_NANO_RP2040_CONNECT) - WiFi.macAddress(in); #elif defined(ARDUINO_OPTA) Ethernet.MACAddress(in); #endif From b37f2ea0201c06ea79b07e32078f84ff820d585b Mon Sep 17 00:00:00 2001 From: pennam Date: Mon, 9 Dec 2024 11:49:51 +0100 Subject: [PATCH 2/6] networkId: fix c33 begin --- src/networkId.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/networkId.cpp b/src/networkId.cpp index 2b309e2..cbf4db1 100644 --- a/src/networkId.cpp +++ b/src/networkId.cpp @@ -14,11 +14,12 @@ bool networkId::begin() { #if defined(ARDUINO_NANO_RP2040_CONNECT) || \ defined(ARDUINO_SAMD_MKRWIFI1010) || \ defined(ARDUINO_SAMD_NANO_33_IOT) || \ - defined(ARDUINO_PORTENTA_C33) || \ defined(ARDUINO_UNOR4_WIFI) WiFi.setTimeout(0); int result = WiFi.begin("In33dm4c4ddr35", "In33dm4c4ddr35"); return (result != WL_NO_SHIELD) ? true : false; +#elif defined(ARDUINO_PORTENTA_C33) + return true; #elif defined(ARDUINO_PORTENTA_H7_M7) || \ defined(ARDUINO_NICLA_VISION) || \ defined(ARDUINO_GIGA) From f5439b1cd74ae9503507d42eabb63fa5cc34c91e Mon Sep 17 00:00:00 2001 From: pennam Date: Mon, 9 Dec 2024 15:20:00 +0100 Subject: [PATCH 3/6] networkId: add support for MKR boards --- src/networkId.cpp | 21 +++++++++++++++++++++ src/networkId.h | 22 ++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/src/networkId.cpp b/src/networkId.cpp index cbf4db1..177b533 100644 --- a/src/networkId.cpp +++ b/src/networkId.cpp @@ -9,6 +9,7 @@ */ #include "networkId.h" +#include bool networkId::begin() { #if defined(ARDUINO_NANO_RP2040_CONNECT) || \ @@ -20,6 +21,13 @@ bool networkId::begin() { return (result != WL_NO_SHIELD) ? true : false; #elif defined(ARDUINO_PORTENTA_C33) return true; +#elif defined(ARDUINO_SAMD_MKRNB1500) + return _modem.begin(); +#elif defined(ARDUINO_SAMD_MKRGSM1400) + return _modem.begin(); +#elif defined(ARDUINO_SAMD_MKRWAN1300) || \ + defined(ARDUINO_SAMD_MKRWAN1310) + return _modem.begin(EU868); #elif defined(ARDUINO_PORTENTA_H7_M7) || \ defined(ARDUINO_NICLA_VISION) || \ defined(ARDUINO_GIGA) @@ -29,6 +37,8 @@ bool networkId::begin() { #elif defined(ARDUINO_OPTA) Ethernet.begin(NULL, 0, 0); return true; +#else + return false; #endif } @@ -52,6 +62,17 @@ bool networkId::get(uint8_t *in, uint32_t size) { WiFi.macAddress(in); #elif defined(ARDUINO_OPTA) Ethernet.MACAddress(in); +#elif defined(ARDUINO_SAMD_MKRNB1500) || \ + defined(ARDUINO_SAMD_MKRGSM1400) + String imei = _modem.getIMEI(); + /* Remove luhn check digit to keep things even */ + imei.remove(15); + THEXT::decode(imei, in, size); +#elif defined(ARDUINO_SAMD_MKRWAN1300) || \ + defined(ARDUINO_SAMD_MKRWAN1310) + return THEXT::decode(_modem.deviceEUI(), in, size); +#else + return false; #endif return true; #endif diff --git a/src/networkId.h b/src/networkId.h index 1bcc5ae..2e1ff52 100644 --- a/src/networkId.h +++ b/src/networkId.h @@ -18,6 +18,18 @@ defined(ARDUINO_GIGA) #include #define IFACE_MAC_ADDR_LENGTH WL_MAC_ADDR_LENGTH +#elif defined(ARDUINO_SAMD_MKRNB1500) + #include + /* We don't take in account Luhn check digit */ + #define IFACE_MAC_ADDR_LENGTH 7 +#elif defined(ARDUINO_SAMD_MKRGSM1400) + #include + /* We don't take in account Luhn check digit */ + #define IFACE_MAC_ADDR_LENGTH 7 +#elif defined(ARDUINO_SAMD_MKRWAN1300) || \ + defined(ARDUINO_SAMD_MKRWAN1310) + #include + #define IFACE_MAC_ADDR_LENGTH 8 #elif defined(ARDUINO_PORTENTA_C33) #include #define IFACE_MAC_ADDR_LENGTH WL_MAC_ADDR_LENGTH @@ -48,4 +60,14 @@ class networkId { public: bool begin(); bool get(uint8_t *in, uint32_t size); + +private: +#if defined(ARDUINO_SAMD_MKRNB1500) + NBModem _modem; +#elif defined(ARDUINO_SAMD_MKRGSM1400) + GSMModem _modem; +#elif defined(ARDUINO_SAMD_MKRWAN1300) || \ + defined(ARDUINO_SAMD_MKRWAN1310) + LoRaModem _modem; +#endif }; From bf2c4bbbd75c8aacab23c642f8ab7607b0ccadf9 Mon Sep 17 00:00:00 2001 From: pennam Date: Mon, 9 Dec 2024 15:23:02 +0100 Subject: [PATCH 4/6] networkId: rename IFACE_MAC_ADDR_LENGTH to NETWORK_ID_SIZE --- src/networkId.cpp | 4 ++-- src/networkId.h | 16 ++++++++-------- src/uniqueHWId.cpp | 2 +- src/uniqueHWId.h | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/networkId.cpp b/src/networkId.cpp index 177b533..aff734a 100644 --- a/src/networkId.cpp +++ b/src/networkId.cpp @@ -43,12 +43,12 @@ bool networkId::begin() { } bool networkId::get(uint8_t *in, uint32_t size) { -#if IFACE_MAC_ADDR_LENGTH == 0 +#if NETWORK_ID_SIZE == 0 (void)in; (void)size; return false; #else - if (size < IFACE_MAC_ADDR_LENGTH) { + if (size < NETWORK_ID_SIZE) { return false; } #if defined(ARDUINO_NANO_RP2040_CONNECT) || \ diff --git a/src/networkId.h b/src/networkId.h index 2e1ff52..0127c32 100644 --- a/src/networkId.h +++ b/src/networkId.h @@ -17,30 +17,30 @@ defined(ARDUINO_NICLA_VISION) || \ defined(ARDUINO_GIGA) #include - #define IFACE_MAC_ADDR_LENGTH WL_MAC_ADDR_LENGTH + #define NETWORK_ID_SIZE WL_MAC_ADDR_LENGTH #elif defined(ARDUINO_SAMD_MKRNB1500) #include /* We don't take in account Luhn check digit */ - #define IFACE_MAC_ADDR_LENGTH 7 + #define NETWORK_ID_SIZE 7 #elif defined(ARDUINO_SAMD_MKRGSM1400) #include /* We don't take in account Luhn check digit */ - #define IFACE_MAC_ADDR_LENGTH 7 + #define NETWORK_ID_SIZE 7 #elif defined(ARDUINO_SAMD_MKRWAN1300) || \ defined(ARDUINO_SAMD_MKRWAN1310) #include - #define IFACE_MAC_ADDR_LENGTH 8 + #define NETWORK_ID_SIZE 8 #elif defined(ARDUINO_PORTENTA_C33) #include - #define IFACE_MAC_ADDR_LENGTH WL_MAC_ADDR_LENGTH + #define NETWORK_ID_SIZE WL_MAC_ADDR_LENGTH #elif defined(ARDUINO_UNOR4_WIFI) #include - #define IFACE_MAC_ADDR_LENGTH 6 + #define NETWORK_ID_SIZE 6 #elif defined(ARDUINO_OPTA) #include - #define IFACE_MAC_ADDR_LENGTH 6 + #define NETWORK_ID_SIZE 6 #else - #define IFACE_MAC_ADDR_LENGTH 0 + #define NETWORK_ID_SIZE 0 #endif /* diff --git a/src/uniqueHWId.cpp b/src/uniqueHWId.cpp index 1105b47..37d6ed4 100644 --- a/src/uniqueHWId.cpp +++ b/src/uniqueHWId.cpp @@ -29,7 +29,7 @@ bool UniqueHWId::get(uint8_t* in, uint32_t size) { if (!_nId.get(&in[offset], size - offset)) { return false; } - offset += IFACE_MAC_ADDR_LENGTH; + offset += NETWORK_ID_SIZE; if (!_sId.get(&in[offset], size - offset)) { return false; } diff --git a/src/uniqueHWId.h b/src/uniqueHWId.h index 13bf504..cb47557 100644 --- a/src/uniqueHWId.h +++ b/src/uniqueHWId.h @@ -21,7 +21,7 @@ class UniqueHWId { public: static constexpr int BOARD_PROVISIONING_ID_SIZE = UC_UID_SIZE + - IFACE_MAC_ADDR_LENGTH + + NETWORK_ID_SIZE + CRYPTO_SN_SIZE; bool begin(); From d8edd31211ab63f303086af19a601ae9feb2983c Mon Sep 17 00:00:00 2001 From: pennam Date: Thu, 23 Jan 2025 09:34:09 +0100 Subject: [PATCH 5/6] networkId: restore WiFi timeout after begin --- src/networkId.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/networkId.cpp b/src/networkId.cpp index aff734a..804d3a2 100644 --- a/src/networkId.cpp +++ b/src/networkId.cpp @@ -18,6 +18,7 @@ bool networkId::begin() { defined(ARDUINO_UNOR4_WIFI) WiFi.setTimeout(0); int result = WiFi.begin("In33dm4c4ddr35", "In33dm4c4ddr35"); + WiFi.setTimeout(10000); return (result != WL_NO_SHIELD) ? true : false; #elif defined(ARDUINO_PORTENTA_C33) return true; @@ -33,6 +34,7 @@ bool networkId::begin() { defined(ARDUINO_GIGA) WiFi.setTimeout(0); int result = WiFi.begin("In33dm4c4ddr35", "In33dm4c4ddr35", ENC_TYPE_TKIP); + WiFi.setTimeout(10000); return ( result != WL_NO_SHIELD) ? true : false; #elif defined(ARDUINO_OPTA) Ethernet.begin(NULL, 0, 0); From 87036a5c36d091f25f1fd0d41a3c7af7c4d1144e Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 11 Feb 2025 12:01:11 +0100 Subject: [PATCH 6/6] compile-examples: use Arduino_CloudUtils url --- .github/workflows/compile-examples.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/compile-examples.yml b/.github/workflows/compile-examples.yml index d69786d..0815c6c 100644 --- a/.github/workflows/compile-examples.yml +++ b/.github/workflows/compile-examples.yml @@ -20,8 +20,9 @@ jobs: # libraries to install for all boards UNIVERSAL_LIBRARIES: | - source-path: ./ - - name: Arduino_CloudUtils - name: Arduino_SecureElement + - source-url: https://github.com/arduino/Arduino_CloudUtils.git + version: 0.0.1 # sketch paths to compile (recursive) for all boards UNIVERSAL_SKETCH_PATHS: | - examples/uniqueHWId