Skip to content

Commit f5439b1

Browse files
committed
networkId: add support for MKR boards
1 parent b37f2ea commit f5439b1

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed

src/networkId.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
*/
1010

1111
#include "networkId.h"
12+
#include <Arduino_HEX.h>
1213

1314
bool networkId::begin() {
1415
#if defined(ARDUINO_NANO_RP2040_CONNECT) || \
@@ -20,6 +21,13 @@ bool networkId::begin() {
2021
return (result != WL_NO_SHIELD) ? true : false;
2122
#elif defined(ARDUINO_PORTENTA_C33)
2223
return true;
24+
#elif defined(ARDUINO_SAMD_MKRNB1500)
25+
return _modem.begin();
26+
#elif defined(ARDUINO_SAMD_MKRGSM1400)
27+
return _modem.begin();
28+
#elif defined(ARDUINO_SAMD_MKRWAN1300) || \
29+
defined(ARDUINO_SAMD_MKRWAN1310)
30+
return _modem.begin(EU868);
2331
#elif defined(ARDUINO_PORTENTA_H7_M7) || \
2432
defined(ARDUINO_NICLA_VISION) || \
2533
defined(ARDUINO_GIGA)
@@ -29,6 +37,8 @@ bool networkId::begin() {
2937
#elif defined(ARDUINO_OPTA)
3038
Ethernet.begin(NULL, 0, 0);
3139
return true;
40+
#else
41+
return false;
3242
#endif
3343
}
3444

@@ -52,6 +62,17 @@ bool networkId::get(uint8_t *in, uint32_t size) {
5262
WiFi.macAddress(in);
5363
#elif defined(ARDUINO_OPTA)
5464
Ethernet.MACAddress(in);
65+
#elif defined(ARDUINO_SAMD_MKRNB1500) || \
66+
defined(ARDUINO_SAMD_MKRGSM1400)
67+
String imei = _modem.getIMEI();
68+
/* Remove luhn check digit to keep things even */
69+
imei.remove(15);
70+
THEXT::decode(imei, in, size);
71+
#elif defined(ARDUINO_SAMD_MKRWAN1300) || \
72+
defined(ARDUINO_SAMD_MKRWAN1310)
73+
return THEXT::decode(_modem.deviceEUI(), in, size);
74+
#else
75+
return false;
5576
#endif
5677
return true;
5778
#endif

src/networkId.h

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,18 @@
1818
defined(ARDUINO_GIGA)
1919
#include <WiFi.h>
2020
#define IFACE_MAC_ADDR_LENGTH WL_MAC_ADDR_LENGTH
21+
#elif defined(ARDUINO_SAMD_MKRNB1500)
22+
#include <MKRNB.h>
23+
/* We don't take in account Luhn check digit */
24+
#define IFACE_MAC_ADDR_LENGTH 7
25+
#elif defined(ARDUINO_SAMD_MKRGSM1400)
26+
#include <MKRGSM.h>
27+
/* We don't take in account Luhn check digit */
28+
#define IFACE_MAC_ADDR_LENGTH 7
29+
#elif defined(ARDUINO_SAMD_MKRWAN1300) || \
30+
defined(ARDUINO_SAMD_MKRWAN1310)
31+
#include <MKRWAN.h>
32+
#define IFACE_MAC_ADDR_LENGTH 8
2133
#elif defined(ARDUINO_PORTENTA_C33)
2234
#include <WiFiC3.h>
2335
#define IFACE_MAC_ADDR_LENGTH WL_MAC_ADDR_LENGTH
@@ -48,4 +60,14 @@ class networkId {
4860
public:
4961
bool begin();
5062
bool get(uint8_t *in, uint32_t size);
63+
64+
private:
65+
#if defined(ARDUINO_SAMD_MKRNB1500)
66+
NBModem _modem;
67+
#elif defined(ARDUINO_SAMD_MKRGSM1400)
68+
GSMModem _modem;
69+
#elif defined(ARDUINO_SAMD_MKRWAN1300) || \
70+
defined(ARDUINO_SAMD_MKRWAN1310)
71+
LoRaModem _modem;
72+
#endif
5173
};

0 commit comments

Comments
 (0)