Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/compile-examples.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
72 changes: 46 additions & 26 deletions src/networkId.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,52 +9,72 @@
*/

#include "networkId.h"
#include <Arduino_HEX.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_UNOR4_WIFI)
WiFi.setTimeout(0);
return !!WiFi.begin("In33dm4c4ddr35", "In33dm4c4ddr35");
#elif defined(ARDUINO_NANO_RP2040_CONNECT)
int result = WiFi.begin("In33dm4c4ddr35", "In33dm4c4ddr35");
WiFi.setTimeout(10000);
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)
WiFi.setTimeout(0);
return !!WiFi.begin("In33dm4c4ddr35", "In33dm4c4ddr35");
int result = WiFi.begin("In33dm4c4ddr35", "In33dm4c4ddr35", ENC_TYPE_TKIP);
WiFi.setTimeout(10000);
return ( result != WL_NO_SHIELD) ? true : false;
#elif defined(ARDUINO_OPTA)
return !!Ethernet.begin(NULL, 0, 0);
Ethernet.begin(NULL, 0, 0);
return true;
#else
return false;
#endif
}

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_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);
#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
Expand Down
32 changes: 27 additions & 5 deletions src/networkId.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,30 @@
defined(ARDUINO_NICLA_VISION) || \
defined(ARDUINO_GIGA)
#include <WiFi.h>
#define IFACE_MAC_ADDR_LENGTH WL_MAC_ADDR_LENGTH
#define NETWORK_ID_SIZE WL_MAC_ADDR_LENGTH
#elif defined(ARDUINO_SAMD_MKRNB1500)
#include <MKRNB.h>
/* We don't take in account Luhn check digit */
#define NETWORK_ID_SIZE 7
#elif defined(ARDUINO_SAMD_MKRGSM1400)
#include <MKRGSM.h>
/* We don't take in account Luhn check digit */
#define NETWORK_ID_SIZE 7
#elif defined(ARDUINO_SAMD_MKRWAN1300) || \
defined(ARDUINO_SAMD_MKRWAN1310)
#include <MKRWAN.h>
#define NETWORK_ID_SIZE 8
#elif defined(ARDUINO_PORTENTA_C33)
#include <WiFiC3.h>
#define IFACE_MAC_ADDR_LENGTH WL_MAC_ADDR_LENGTH
#define NETWORK_ID_SIZE WL_MAC_ADDR_LENGTH
#elif defined(ARDUINO_UNOR4_WIFI)
#include <WiFi.h>
#define IFACE_MAC_ADDR_LENGTH 6
#define NETWORK_ID_SIZE 6
#elif defined(ARDUINO_OPTA)
#include <Ethernet.h>
#define IFACE_MAC_ADDR_LENGTH 6
#define NETWORK_ID_SIZE 6
#else
#define IFACE_MAC_ADDR_LENGTH 0
#define NETWORK_ID_SIZE 0
#endif

/*
Expand All @@ -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
};
2 changes: 1 addition & 1 deletion src/uniqueHWId.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
2 changes: 1 addition & 1 deletion src/uniqueHWId.h
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
Loading