diff --git a/.github/workflows/check-arduino.yml b/.github/workflows/check-arduino.yml index adb330f..e818685 100644 --- a/.github/workflows/check-arduino.yml +++ b/.github/workflows/check-arduino.yml @@ -19,7 +19,7 @@ jobs: uses: actions/checkout@v4 - name: Arduino Lint - uses: arduino/arduino-lint-action@v1 + uses: arduino/arduino-lint-action@v2 with: compliance: specification library-manager: update diff --git a/library.properties b/library.properties index c202d60..f3c10c5 100644 --- a/library.properties +++ b/library.properties @@ -1,10 +1,10 @@ name=Arduino_ConnectionHandler -version=1.0.0 +version=1.0.1 author=Ubi de Feo, Cristian Maglie, Andrea Catozzi, Alexander Entinger et al. maintainer=Arduino sentence=Arduino Library for network connection management (WiFi, GSM, NB, [Ethernet], Notecard) paragraph=Originally part of ArduinoIoTCloud category=Communication url=https://github.com/arduino-libraries/Arduino_ConnectionHandler -architectures=samd,esp32,esp8266,mbed,megaavr,mbed_nano,mbed_portenta,mbed_nicla,mbed_opta,mbed_giga,renesas_portenta,renesas_uno,mbed_edge,stm32 +architectures=samd,esp32,esp8266,mbed,megaavr,mbed_nano,mbed_portenta,mbed_nicla,mbed_opta,mbed_giga,renesas_portenta,renesas_uno,mbed_edge,stm32,rp2040 depends=Arduino_DebugUtils, WiFi101, WiFiNINA, MKRGSM, MKRNB, MKRWAN, Blues Wireless Notecard (>=1.6.3) diff --git a/src/NotecardConnectionHandler.cpp b/src/NotecardConnectionHandler.cpp index 5205c4a..9917fce 100644 --- a/src/NotecardConnectionHandler.cpp +++ b/src/NotecardConnectionHandler.cpp @@ -31,13 +31,11 @@ #define NOTEFILE_BASE_NAME "arduino_iot_cloud" // Notecard LoRa requires us to choose an arbitrary port between 1-99 -#define NOTEFILE_DATABASE_LORA_PORT 1 #define NOTEFILE_INBOUND_LORA_PORT 2 #define NOTEFILE_OUTBOUND_LORA_PORT 3 // Note that we use "s" versions of the Notefile extensions to ensure that // traffic always happens on a secure transport -#define NOTEFILE_SECURE_DATABASE NOTEFILE_BASE_NAME ".dbs" #define NOTEFILE_SECURE_INBOUND NOTEFILE_BASE_NAME ".qis" #define NOTEFILE_SECURE_OUTBOUND NOTEFILE_BASE_NAME ".qos" @@ -423,41 +421,6 @@ NetworkConnectionState NotecardConnectionHandler::update_handleInit() } #endif - // Set database template to support LoRa/Satellite Notecard - if (NetworkConnectionState::INIT == result) { - if (J *req = _notecard.newRequest("note.template")) { - JAddStringToObject(req, "file", NOTEFILE_SECURE_DATABASE); - JAddStringToObject(req, "format", "compact"); // Support LoRa/Satellite Notecards - JAddIntToObject(req, "port", NOTEFILE_DATABASE_LORA_PORT); // Support LoRa/Satellite Notecards - if (J *body = JAddObjectToObject(req, "body")) { - JAddStringToObject(body, "text", TSTRINGV); - JAddNumberToObject(body, "value", TFLOAT64); - JAddBoolToObject(body, "flag", TBOOL); - if (J *rsp = _notecard.requestAndResponse(req)) { - // Check the response for errors - if (NoteResponseError(rsp)) { - const char *err = JGetString(rsp, "err"); - Debug.print(DBG_ERROR, F("%s"), err); - result = NetworkConnectionState::ERROR; - } else { - result = NetworkConnectionState::INIT; - } - JDelete(rsp); - } else { - Debug.print(DBG_ERROR, F("Failed to receive response from Notecard.")); - result = NetworkConnectionState::ERROR; // Assume the worst - } - } else { - Debug.print(DBG_ERROR, "Failed to allocate request: note.template:body"); - JFree(req); - result = NetworkConnectionState::ERROR; // Assume the worst - } - } else { - Debug.print(DBG_ERROR, "Failed to allocate request: note.template"); - result = NetworkConnectionState::ERROR; // Assume the worst - } - } - // Set inbound template to support LoRa/Satellite Notecard if (NetworkConnectionState::INIT == result) { if (J *req = _notecard.newRequest("note.template")) { @@ -811,9 +774,13 @@ bool NotecardConnectionHandler::updateUidCache (void) result = false; } else { _notecard_uid = JGetString(rsp, "device"); - _device_id = JGetString(rsp, "sn"); - _device_id = (_device_id.length() ? _device_id : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"); - Debug.print(DBG_DEBUG, F("NotecardConnectionHandler::%s updated cache with Notecard UID: <%s> and Arduino Device ID: <%s>"), __FUNCTION__, _notecard_uid.c_str(), _device_id.c_str()); + char device_id[] = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"; + if (NoteGetEnv("_arduino_device_id", device_id, device_id, sizeof(device_id))) { + _device_id = device_id; + } else { + Debug.print(DBG_DEBUG, F("NotecardConnectionHandler::%s Arduino Device ID not cached on Notecard, using default value: <%s>"), __FUNCTION__, _device_id.c_str()); + } + Debug.print(DBG_DEBUG, F("NotecardConnectionHandler::%s updated local cache with Notecard UID: <%s> and Arduino Device ID: <%s>"), __FUNCTION__, _notecard_uid.c_str(), _device_id.c_str()); result = true; } JDelete(rsp); diff --git a/src/NotecardConnectionHandler.h b/src/NotecardConnectionHandler.h index c758030..4278c14 100644 --- a/src/NotecardConnectionHandler.h +++ b/src/NotecardConnectionHandler.h @@ -28,8 +28,8 @@ ******************************************************************************/ #define NOTECARD_CONNECTION_HANDLER_VERSION_MAJOR 1 -#define NOTECARD_CONNECTION_HANDLER_VERSION_MINOR 0 -#define NOTECARD_CONNECTION_HANDLER_VERSION_PATCH 0 +#define NOTECARD_CONNECTION_HANDLER_VERSION_MINOR 1 +#define NOTECARD_CONNECTION_HANDLER_VERSION_PATCH 1 #define NOTECARD_CONNECTION_HANDLER_VERSION NOTE_C_STRINGIZE(NOTECARD_CONNECTION_HANDLER_VERSION_MAJOR) "." NOTE_C_STRINGIZE(NOTECARD_CONNECTION_HANDLER_VERSION_MINOR) "." NOTE_C_STRINGIZE(NOTECARD_CONNECTION_HANDLER_VERSION_PATCH) @@ -261,6 +261,7 @@ class NotecardConnectionHandler final : public ConnectionHandler * @param interval_min[in] The inbound polling interval (in minutes) * * @note Set the interval to 0 to disable inbound polling. + * @note Must be set prior to initializing the connection to the Notecard. */ inline void setNotehubPollingInterval (int32_t interval_min) { _inbound_polling_interval_min = (interval_min ? interval_min : -1);