diff --git a/.gitmodules b/.gitmodules index 2024270..7ebbd44 100644 --- a/.gitmodules +++ b/.gitmodules @@ -160,9 +160,21 @@ [submodule ".\\avnet_rsl10_2devices\\HardwareDefinitions"] path = .\\avnet_rsl10_2devices\\HardwareDefinitions url = https://github.com/Azure-Sphere-DevX/AzureSphereDevX.HardwareDefinitions.git -[submodule "avnet_lightranger5/AzureSphereDevX"] - path = avnet_lightranger5/AzureSphereDevX +[submodule "avnet_sensors_converge/avnet_lightranger5/AzureSphereDevX"] + path = avnet_sensors_converge/avnet_lightranger5/AzureSphereDevX url = https://github.com/Azure-Sphere-DevX/AzureSphereDevX.git -[submodule "avnet_lightranger5/HardwareDefinitions"] - path = avnet_lightranger5/HardwareDefinitions +[submodule "avnet_sensors_converge/avnet_lightranger5/HardwareDefinitions"] + path = avnet_sensors_converge/avnet_lightranger5/HardwareDefinitions + url = https://github.com/Azure-Sphere-DevX/AzureSphereDevX.HardwareDefinitions.git +[submodule "avnet_sensors_converge/avnet_tempHum13/AzureSphereDevX"] + path = avnet_sensors_converge/avnet_tempHum13/AzureSphereDevX + url = https://github.com/Azure-Sphere-DevX/AzureSphereDevX.git +[submodule "avnet_sensors_converge/avnet_tempHum13/HardwareDefinitions"] + path = avnet_sensors_converge/avnet_tempHum13/HardwareDefinitions + url = https://github.com/Azure-Sphere-DevX/AzureSphereDevX.HardwareDefinitions.git +[submodule "avnet_rsl10_2devices/AzureSphereDevX"] + path = avnet_rsl10_2devices/AzureSphereDevX + url = https://github.com/Azure-Sphere-DevX/AzureSphereDevX.git +[submodule "avnet_rsl10_2devices/HardwareDefinitions"] + path = avnet_rsl10_2devices/HardwareDefinitions url = https://github.com/Azure-Sphere-DevX/AzureSphereDevX.HardwareDefinitions.git diff --git a/avnet_RTAppLab_app/AzureSphereDevX b/avnet_RTAppLab_app/AzureSphereDevX index 08e01b4..e3c6c22 160000 --- a/avnet_RTAppLab_app/AzureSphereDevX +++ b/avnet_RTAppLab_app/AzureSphereDevX @@ -1 +1 @@ -Subproject commit 08e01b406c2bcb8c4874f65aa9317c025657dcc4 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/avnet_RTAppLab_app/HardwareDefinitions b/avnet_RTAppLab_app/HardwareDefinitions index ad2cefa..871149b 160000 --- a/avnet_RTAppLab_app/HardwareDefinitions +++ b/avnet_RTAppLab_app/HardwareDefinitions @@ -1 +1 @@ -Subproject commit ad2cefa8cf6e52ae6ee21e343da2b08a988c15a4 +Subproject commit 871149bd855184ac1d42ee6e61def5da18e9dc8f diff --git a/avnet_bbq_monitor/AzureSphereDevX b/avnet_bbq_monitor/AzureSphereDevX index de68952..e3c6c22 160000 --- a/avnet_bbq_monitor/AzureSphereDevX +++ b/avnet_bbq_monitor/AzureSphereDevX @@ -1 +1 @@ -Subproject commit de68952b0a1c48cac1017cca83000bba08990e00 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/avnet_bbq_monitor/HardwareDefinitions b/avnet_bbq_monitor/HardwareDefinitions index 1b76a0e..871149b 160000 --- a/avnet_bbq_monitor/HardwareDefinitions +++ b/avnet_bbq_monitor/HardwareDefinitions @@ -1 +1 @@ -Subproject commit 1b76a0e3b0b19ec6a5447eee6fa6dcbc70e52d32 +Subproject commit 871149bd855184ac1d42ee6e61def5da18e9dc8f diff --git a/avnet_end_to_end/AzureSphereDevX b/avnet_end_to_end/AzureSphereDevX index 32fb212..e3c6c22 160000 --- a/avnet_end_to_end/AzureSphereDevX +++ b/avnet_end_to_end/AzureSphereDevX @@ -1 +1 @@ -Subproject commit 32fb212aa73d764f2602e2e2624929972af6c003 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/avnet_end_to_end/IoTConnectDeviceTemplate/Avnet 2_1 DevX End to End_template.JSON b/avnet_end_to_end/IoTConnectDeviceTemplate/Avnet 2_1 DevX End to End_template.JSON new file mode 100644 index 0000000..a10ccfe --- /dev/null +++ b/avnet_end_to_end/IoTConnectDeviceTemplate/Avnet 2_1 DevX End to End_template.JSON @@ -0,0 +1,85 @@ +{ + "code": "AVTe2f", + "name": "AVT EndtoEnd21", + "authType": 2, + "description": "2.1 Device template for the DevX avnet_end_to_end example.", + "isIotEdgeEnable": false, + "attributes": [ + { + "name": "Temperature", + "type": "DECIMAL", + "description": null, + "unit": "Degrees C" + }, + { + "name": "Humidity", + "type": "DECIMAL", + "description": null, + "unit": "% moisture" + }, + { + "name": "Pressure", + "type": "DECIMAL", + "description": null, + "unit": null + }, + { + "name": "MsgId", + "type": "INTEGER" + } + ], + "settings": [ + { + "name": "Software Version", + "type": "STRING", + "localName": "SoftwareVersion", + "defaultValue": "\"\"", + "isReadOnly": true + }, + { + "name": "Timestamp of last startup", + "type": "STRING", + "localName": "DeviceStartUtc", + "defaultValue": "\" \"", + "isReadOnly": true + }, + { + "name": "Current UTC time for device twin update", + "type": "STRING", + "localName": "ReportedUTC", + "defaultValue": "\"\"", + "isReadOnly": true + }, + { + "name": "Timestamp of last connection", + "type": "STRING", + "localName": "DeviceConnectUtc", + "defaultValue": "\" \"", + "isReadOnly": true + }, + { + "name": "Reported Humidity", + "type": "DECIMAL", + "localName": "ReportedHumidity", + "defaultValue": "0", + "isReadOnly": true + }, + { + "name": "Desired Sample Rate", + "type": "INTEGER", + "localName": "DesiredSampleRate", + "defaultValue": "75", + "dataValidation": "0 to 120", + "isReadOnly": false + }, + { + "name": "Reported Temperature", + "type": "DECIMAL", + "localName": "ReportedTemperature", + "defaultValue": "0", + "isReadOnly": true + } + ], + "messageVersion": "2.1", + "dataFrequency": 60 +} \ No newline at end of file diff --git a/avnet_end_to_end/app_manifest.json b/avnet_end_to_end/app_manifest.json index 5a5a2be..15f760f 100644 --- a/avnet_end_to_end/app_manifest.json +++ b/avnet_end_to_end/app_manifest.json @@ -3,14 +3,14 @@ "Name": "avnet_end_to_end", "ComponentId": "b217fd65-ac8d-4d7c-b62c-0d07b5df6357", "EntryPoint": "/bin/app", - "CmdArgs": [ "--ScopeID", "REPLACE_WITH_YOUR_ID_SCOPE" ], + "CmdArgs": [ "--ScopeID", "0ne001DB429" ], "Capabilities": { "Gpio": [ "$NETWORK_CONNECTED_LED", "$LED2" ], "AllowedConnections": [ "global.azure-devices-provisioning.net", - "REPLACE_WITH_YOUR_IOT_HUB_ENDPOINT_URL" + "poc-iotc-sphere-iothub-eu.azure-devices.net" ], - "DeviceAuthentication": "REPLACE_WITH_YOUR_AZURE_SPHERE_TENANT_ID" + "DeviceAuthentication": "8d34f65c-532e-4dcf-a1d6-3e811c1e5c68" }, "ApplicationType": "Default" -} +} \ No newline at end of file diff --git a/avnet_end_to_end/main.c b/avnet_end_to_end/main.c index b586b6f..0804437 100644 --- a/avnet_end_to_end/main.c +++ b/avnet_end_to_end/main.c @@ -44,7 +44,7 @@ static DX_TIMER_HANDLER(publish_message_handler) if (dx_isAvnetConnected()) { // Serialize telemetry as JSON - bool serialization_result = dx_avnetJsonSerialize(msgBuffer, sizeof(msgBuffer), NULL, 4, + bool serialization_result = dx_jsonSerialize(msgBuffer, sizeof(msgBuffer), 4, DX_JSON_INT, "MsgId", msgId++, DX_JSON_DOUBLE, "Temperature", temperature, DX_JSON_DOUBLE, "Humidity", humidity, @@ -54,7 +54,7 @@ static DX_TIMER_HANDLER(publish_message_handler) Log_Debug("%s\n", msgBuffer); - dx_azurePublish(msgBuffer, strlen(msgBuffer), messageProperties, NELEMS(messageProperties), &contentProperties); + dx_avnetPublish(msgBuffer, strlen(msgBuffer), messageProperties, NELEMS(messageProperties), &contentProperties, NULL); } else { Log_Debug("JSON Serialization failed: Buffer too small\n"); @@ -69,7 +69,7 @@ static DX_TIMER_HANDLER(report_properties_handler) float temperature = 25.05f; double humidity = 60.25; - if (dx_isAzureConnected()) { + if (dx_isAvnetConnected()) { // Update twin with current UTC (Universal Time Coordinate) in ISO format dx_deviceTwinReportValue(&dt_reported_utc, dx_getCurrentUtc(msgBuffer, sizeof(msgBuffer))); @@ -152,6 +152,7 @@ static void NetworkConnectionState(bool connected) /// static void InitPeripheralsAndHandlers(void) { + dx_avnetSetDebugLevel(AVT_DEBUG_LEVEL_VERBOSE); // comment out to supress IoTConnect debug dx_avnetConnect(&dx_config, NETWORK_INTERFACE); dx_gpioSetOpen(gpio_bindings, NELEMS(gpio_bindings)); dx_timerSetStart(timer_bindings, NELEMS(timer_bindings)); diff --git a/avnet_end_to_end/main.h b/avnet_end_to_end/main.h index e8a6720..d791349 100644 --- a/avnet_end_to_end/main.h +++ b/avnet_end_to_end/main.h @@ -4,6 +4,7 @@ #include "app_exit_codes.h" #include "dx_azure_iot.h" +#include "dx_avnet_iot_connect.h" #include "dx_config.h" #include "dx_json_serializer.h" #include "dx_terminate.h" diff --git a/avnet_gw_send_message/AzureSphereDevX b/avnet_gw_send_message/AzureSphereDevX index 32fb212..e3c6c22 160000 --- a/avnet_gw_send_message/AzureSphereDevX +++ b/avnet_gw_send_message/AzureSphereDevX @@ -1 +1 @@ -Subproject commit 32fb212aa73d764f2602e2e2624929972af6c003 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/avnet_gw_send_message/app_manifest.json b/avnet_gw_send_message/app_manifest.json index 84fb196..15f760f 100644 --- a/avnet_gw_send_message/app_manifest.json +++ b/avnet_gw_send_message/app_manifest.json @@ -1,15 +1,16 @@ { "SchemaVersion": 1, - "Name": "avnet_gateway_example", - "ComponentId": "353d8b5e-d3ab-43f7-b65a-10f14b766d21", + "Name": "avnet_end_to_end", + "ComponentId": "b217fd65-ac8d-4d7c-b62c-0d07b5df6357", "EntryPoint": "/bin/app", - "CmdArgs": ["--ScopeID", "REPLACE_WITH_YOUR_ID_SCOPE"], + "CmdArgs": [ "--ScopeID", "0ne001DB429" ], "Capabilities": { + "Gpio": [ "$NETWORK_CONNECTED_LED", "$LED2" ], "AllowedConnections": [ "global.azure-devices-provisioning.net", - "REPLACE_WITH_YOUR_IOT_HUB_ENDPOINT_URL" + "poc-iotc-sphere-iothub-eu.azure-devices.net" ], - "DeviceAuthentication": "REPLACE_WITH_YOUR_AZURE_SPHERE_TENANT_ID" + "DeviceAuthentication": "8d34f65c-532e-4dcf-a1d6-3e811c1e5c68" }, "ApplicationType": "Default" -} +} \ No newline at end of file diff --git a/avnet_gw_send_message/iotConnect Templates/devXGwDemo21_template.JSON b/avnet_gw_send_message/iotConnect Templates/devXGwDemo21_template.JSON new file mode 100644 index 0000000..210c0d3 --- /dev/null +++ b/avnet_gw_send_message/iotConnect Templates/devXGwDemo21_template.JSON @@ -0,0 +1,30 @@ +{ + "code": "devXDemo21", + "name": "devXDemo21", + "tag": "spheregwdevice", + "authType": 2, + "isIotEdgeEnable": false, + "attributes": [ + { + "name": "temperature", + "type": "DECIMAL", + "tag": "temperaturechilddevice", + "unit": "C" + }, + { + "name": "humidity", + "type": "DECIMAL", + "tag": "humiditychilddevice", + "unit": "% moisture" + }, + { + "name": "pressure", + "type": "DECIMAL", + "tag": "pressurechilddevice", + "unit": "psi" + } + ], + "dataFrequency": 60, + "messageVersion": "2.1", + "msgCode": "138913Y" +} \ No newline at end of file diff --git a/avnet_gw_send_message/iotConnect Templates/devXGwDemo_template.JSON b/avnet_gw_send_message/iotConnect Templates/devXGwDemo_template.JSON new file mode 100644 index 0000000..3dfc70d --- /dev/null +++ b/avnet_gw_send_message/iotConnect Templates/devXGwDemo_template.JSON @@ -0,0 +1,34 @@ +{ + "code": "devXDemo", + "name": "devXDemo", + "tag": "spheregwdevice", + "authType": 2, + "description": null, + "isIotEdgeEnable": false, + "attributes": [ + { + "name": "temperature", + "type": "NUMBER", + "tag": "temperaturechilddevice", + "description": null, + "unit": "C" + }, + { + "name": "humidity", + "type": "NUMBER", + "tag": "humiditychilddevice", + "description": null, + "unit": "% moisture" + }, + { + "name": "pressure", + "type": "NUMBER", + "tag": "pressurechilddevice", + "description": null, + "unit": "psi" + } + ], + "dataFrequency": 60, + "messageVersion": "1.0", + "msgCode": "1389TEE" +} \ No newline at end of file diff --git a/avnet_gw_send_message/main.c b/avnet_gw_send_message/main.c index 3cfdeeb..e8e6357 100644 --- a/avnet_gw_send_message/main.c +++ b/avnet_gw_send_message/main.c @@ -136,6 +136,7 @@ DX_TIMER_HANDLER_END /// static void InitPeripheralsAndHandlers(void) { + dx_avnetSetDebugLevel(AVT_DEBUG_LEVEL_INFO); // Comment out to supress IoTConnect debug dx_avnetConnect(&dx_config, NETWORK_INTERFACE); dx_timerSetStart(timers, NELEMS(timers)); dx_deviceTwinSubscribe(device_twin_bindings, NELEMS(device_twin_bindings)); @@ -181,13 +182,13 @@ void sendChildDeviceTelemetry(const char* id, const char* key, float value){ // Create serialized telemetry as JSON bool serialization_result = - dx_avnetJsonSerialize(msgBuffer, sizeof(msgBuffer), dx_avnetFindChild(id), 1, + dx_jsonSerialize(msgBuffer, sizeof(msgBuffer), 1, DX_JSON_DOUBLE, key, value); if (serialization_result) { Log_Debug("%s\n", msgBuffer); - dx_azurePublish(msgBuffer, strlen(msgBuffer), NULL, 0, NULL); + dx_avnetPublish(msgBuffer, strlen(msgBuffer), NULL, 0, NULL, dx_avnetFindChild(id)); } else { Log_Debug("JSON Serialization failed: Buffer too small\n"); diff --git a/avnet_lightranger5/AzureSphereDevX b/avnet_lightranger5/AzureSphereDevX deleted file mode 160000 index 32fb212..0000000 --- a/avnet_lightranger5/AzureSphereDevX +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 32fb212aa73d764f2602e2e2624929972af6c003 diff --git a/avnet_rsl10_2devices/AzureSphereDevX b/avnet_rsl10_2devices/AzureSphereDevX index 08e01b4..e3c6c22 160000 --- a/avnet_rsl10_2devices/AzureSphereDevX +++ b/avnet_rsl10_2devices/AzureSphereDevX @@ -1 +1 @@ -Subproject commit 08e01b406c2bcb8c4874f65aa9317c025657dcc4 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/avnet_rsl10_2devices/app_manifest.json b/avnet_rsl10_2devices/app_manifest.json index f285c3e..18b7b46 100644 --- a/avnet_rsl10_2devices/app_manifest.json +++ b/avnet_rsl10_2devices/app_manifest.json @@ -1,19 +1,21 @@ { "SchemaVersion": 1, - "Name": "AvnetRSL10Example", + "Name": "avnet_end_to_end", "ComponentId": "b217fd65-ac8d-4d7c-b62c-0d07b5df6357", "EntryPoint": "/bin/app", - "CmdArgs": [ "--ScopeID", "" ], + "CmdArgs": [ "--ScopeID", "0ne001DB429" ], "Capabilities": { "Gpio": [ "$SAMPLE_RGBLED_RED", "$SAMPLE_RGBLED_GREEN", "$SAMPLE_RGBLED_BLUE"], "Uart": ["$SAMPLE_PMOD_UART"], - "AllowedConnections": ["global.azure-devices-provisioning.net", - "ENTER.IOT.HUB.HOSTNAME.net"], - "DeviceAuthentication": "00000000-0000-0000-0000-000000000000", - "NetworkConfig": true + "NetworkConfig": true, + "AllowedConnections": [ + "global.azure-devices-provisioning.net", + "poc-iotc-sphere-iothub-eu.azure-devices.net" + ], + "DeviceAuthentication": "8d34f65c-532e-4dcf-a1d6-3e811c1e5c68" }, "ApplicationType": "Default" -} +} \ No newline at end of file diff --git a/avnet_rsl10_2devices/main.c b/avnet_rsl10_2devices/main.c index 5cb2ea7..8c51bc3 100644 --- a/avnet_rsl10_2devices/main.c +++ b/avnet_rsl10_2devices/main.c @@ -350,6 +350,7 @@ static void InitPeripheralsAndHandlers(void) #endif // USE_WEB_PROXY #ifdef USE_IOT_CONNECT + dx_avnetSetDebugLevel(AVT_DEBUG_LEVEL_INFO); // Comment out to supress IoTConnect Debug dx_avnetConnect(&dx_config, NETWORK_INTERFACE); #else dx_azureConnect(&dx_config, NETWORK_INTERFACE, IOT_PLUG_AND_PLAY_MODEL_ID); diff --git a/avnet_rsl10_2devices/rsl10.c b/avnet_rsl10_2devices/rsl10.c index e04bc68..ce84fff 100644 --- a/avnet_rsl10_2devices/rsl10.c +++ b/avnet_rsl10_2devices/rsl10.c @@ -36,10 +36,6 @@ SOFTWARE. // Static buffer for telemetry data static char telemetryBuffer[JSON_BUFFER_SIZE] = {0}; -#ifdef USE_IOT_CONNECT -static char avtMsgBuffer[JSON_BUFFER_SIZE + DX_AVNET_IOT_CONNECT_METADATA] = {0}; -#endif //USE_IOT_CONNECT - static DX_MESSAGE_PROPERTY *messageProperties[] = {&(DX_MESSAGE_PROPERTY){.key = "appid", .value = "Avnet RSL10 Demo"}, &(DX_MESSAGE_PROPERTY){.key = "type", .value = "telemetry"}, &(DX_MESSAGE_PROPERTY){.key = "schema", .value = "1"}}; @@ -503,12 +499,10 @@ void rsl10SendTelemetry(void) { Rsl10DeviceList[currentDevice].lastOrientation_z, Rsl10DeviceList[currentDevice].lastOrientation_w); + Log_Debug("Send telemetry: %s\n", telemetryBuffer); #ifdef USE_IOT_CONNECT - // Add the IoTConnect metadata to the seralized telemetry - dx_avnetJsonSerializePayload(telemetryBuffer, avtMsgBuffer, sizeof(avtMsgBuffer), NULL); - Log_Debug("%s\n", avtMsgBuffer); - dx_azurePublish(avtMsgBuffer, strlen(avtMsgBuffer), messageProperties, NELEMS(messageProperties), &contentProperties); + dx_avnetPublish(telemetryBuffer, strlen(telemetryBuffer), messageProperties, NELEMS(messageProperties), &contentProperties, NULL); #else // !USE_IOT_CONNECT @@ -516,7 +510,6 @@ void rsl10SendTelemetry(void) { dx_azurePublish(telemetryBuffer, strnlen(telemetryBuffer, JSON_BUFFER_SIZE), messageProperties, NELEMS(messageProperties), &contentProperties); - Log_Debug("Send telemetry: %s\n", telemetryBuffer); #endif // Clear the flag so we don't send this data again Rsl10DeviceList[currentDevice].movementDataRefreshed = false; @@ -541,12 +534,12 @@ void rsl10SendTelemetry(void) { Rsl10DeviceList[currentDevice].lastHumidity, Rsl10DeviceList[currentDevice].telemetryKey, Rsl10DeviceList[currentDevice].lastPressure); + + Log_Debug("Send telemetry: %s\n", telemetryBuffer); + #ifdef USE_IOT_CONNECT - // Add the IoTConnect metadata to the seralized telemetry - dx_avnetJsonSerializePayload(telemetryBuffer, avtMsgBuffer, sizeof(avtMsgBuffer), NULL); - Log_Debug("%s\n", avtMsgBuffer); - dx_azurePublish(avtMsgBuffer, strlen(avtMsgBuffer), messageProperties, NELEMS(messageProperties), &contentProperties); + dx_avnetPublish(telemetryBuffer, strlen(telemetryBuffer), messageProperties, NELEMS(messageProperties), &contentProperties, NULL); #else // !USE_IOT_CONNECT @@ -554,7 +547,7 @@ void rsl10SendTelemetry(void) { dx_azurePublish(telemetryBuffer, strnlen(telemetryBuffer, JSON_BUFFER_SIZE), messageProperties, NELEMS(messageProperties), &contentProperties); - Log_Debug("Send telemetry: %s\n", telemetryBuffer); + #endif // Clear the flag so we don't send this data again Rsl10DeviceList[currentDevice].movementDataRefreshed = false; @@ -578,12 +571,12 @@ void rsl10SendTelemetry(void) { Rsl10DeviceList[currentDevice].lastRssi, Rsl10DeviceList[currentDevice].telemetryKey, Rsl10DeviceList[currentDevice].lastBattery); + + Log_Debug("Send telemetry: %s\n", telemetryBuffer); + #ifdef USE_IOT_CONNECT - // Add the IoTConnect metadata to the seralized telemetry - dx_avnetJsonSerializePayload(telemetryBuffer, avtMsgBuffer, sizeof(avtMsgBuffer), NULL); - Log_Debug("%s\n", avtMsgBuffer); - dx_azurePublish(avtMsgBuffer, strlen(avtMsgBuffer), messageProperties, NELEMS(messageProperties), &contentProperties); + dx_avnetPublish(telemetryBuffer, strlen(telemetryBuffer), messageProperties, NELEMS(messageProperties), &contentProperties, NULL); #else // !USE_IOT_CONNECT @@ -591,7 +584,7 @@ void rsl10SendTelemetry(void) { dx_azurePublish(telemetryBuffer, strnlen(telemetryBuffer, JSON_BUFFER_SIZE), messageProperties, NELEMS(messageProperties), &contentProperties); - Log_Debug("Send telemetry: %s\n", telemetryBuffer); + #endif // Clear the flag so we don't send this data again Rsl10DeviceList[currentDevice].batteryDataRefreshed = false; diff --git a/avnet_send_message/AzureSphereDevX b/avnet_send_message/AzureSphereDevX index 32fb212..e3c6c22 160000 --- a/avnet_send_message/AzureSphereDevX +++ b/avnet_send_message/AzureSphereDevX @@ -1 +1 @@ -Subproject commit 32fb212aa73d764f2602e2e2624929972af6c003 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/avnet_send_message/main.c b/avnet_send_message/main.c index 4e18cb0..2339447 100644 --- a/avnet_send_message/main.c +++ b/avnet_send_message/main.c @@ -49,17 +49,16 @@ static void publish_message_handler(EventLoopTimer *eventLoopTimer) // Serialize telemetry as JSON bool serialization_result = - dx_avnetJsonSerialize(msgBuffer, sizeof(msgBuffer), NULL, 4, DX_JSON_INT, "MsgId", msgId++, + dx_jsonSerialize(msgBuffer, sizeof(msgBuffer), 4, DX_JSON_INT, "MsgId", msgId++, DX_JSON_DOUBLE, "Temperature", temperature, DX_JSON_DOUBLE, "Humidity", humidity, DX_JSON_DOUBLE, "Pressure", pressure); - if (serialization_result) { Log_Debug("%s\n", msgBuffer); - dx_azurePublish(msgBuffer, strlen(msgBuffer), messageProperties, NELEMS(messageProperties), &contentProperties); + dx_avnetPublish(msgBuffer, strlen(msgBuffer), messageProperties, NELEMS(messageProperties), &contentProperties, NULL); } else { Log_Debug("JSON Serialization failed: Buffer too small\n"); @@ -100,6 +99,7 @@ static void dt_desired_temperature_handler(DX_DEVICE_TWIN_BINDING *deviceTwinBin /// static void InitPeripheralsAndHandlers(void) { + dx_avnetSetDebugLevel(AVT_DEBUG_LEVEL_INFO); // Comment out to suppress IoTConnect Debug dx_avnetConnect(&dx_config, NETWORK_INTERFACE); dx_timerSetStart(timers, NELEMS(timers)); dx_deviceTwinSubscribe(device_twin_bindings, NELEMS(device_twin_bindings)); diff --git a/avnet_sensors_converge/avnet_lightranger5/.gitignore b/avnet_sensors_converge/avnet_lightranger5/.gitignore new file mode 100644 index 0000000..2a94754 --- /dev/null +++ b/avnet_sensors_converge/avnet_lightranger5/.gitignore @@ -0,0 +1 @@ +out/* \ No newline at end of file diff --git a/avnet_lightranger5/.vscode/launch.json b/avnet_sensors_converge/avnet_lightranger5/.vscode/launch.json similarity index 100% rename from avnet_lightranger5/.vscode/launch.json rename to avnet_sensors_converge/avnet_lightranger5/.vscode/launch.json diff --git a/avnet_lightranger5/.vscode/settings.json b/avnet_sensors_converge/avnet_lightranger5/.vscode/settings.json similarity index 100% rename from avnet_lightranger5/.vscode/settings.json rename to avnet_sensors_converge/avnet_lightranger5/.vscode/settings.json diff --git a/avnet_sensors_converge/avnet_lightranger5/AzureSphereDevX b/avnet_sensors_converge/avnet_lightranger5/AzureSphereDevX new file mode 160000 index 0000000..e3c6c22 --- /dev/null +++ b/avnet_sensors_converge/avnet_lightranger5/AzureSphereDevX @@ -0,0 +1 @@ +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/avnet_lightranger5/CMakeLists.txt b/avnet_sensors_converge/avnet_lightranger5/CMakeLists.txt similarity index 100% rename from avnet_lightranger5/CMakeLists.txt rename to avnet_sensors_converge/avnet_lightranger5/CMakeLists.txt diff --git a/avnet_lightranger5/CMakeSettings.json b/avnet_sensors_converge/avnet_lightranger5/CMakeSettings.json similarity index 100% rename from avnet_lightranger5/CMakeSettings.json rename to avnet_sensors_converge/avnet_lightranger5/CMakeSettings.json diff --git a/avnet_sensors_converge/avnet_lightranger5/DemoBinaries/AvnetLightRanger5Click-Rev2-Click2-Workshop-V1-signed.imagepackage b/avnet_sensors_converge/avnet_lightranger5/DemoBinaries/AvnetLightRanger5Click-Rev2-Click2-Workshop-V1-signed.imagepackage new file mode 100644 index 0000000..42ee95a Binary files /dev/null and b/avnet_sensors_converge/avnet_lightranger5/DemoBinaries/AvnetLightRanger5Click-Rev2-Click2-Workshop-V1-signed.imagepackage differ diff --git a/avnet_sensors_converge/avnet_lightranger5/DemoBinaries/avnet_sensors_converge_TMF8801_HLApp-V1-signed.imagepackage b/avnet_sensors_converge/avnet_lightranger5/DemoBinaries/avnet_sensors_converge_TMF8801_HLApp-V1-signed.imagepackage new file mode 100644 index 0000000..ad471d5 Binary files /dev/null and b/avnet_sensors_converge/avnet_lightranger5/DemoBinaries/avnet_sensors_converge_TMF8801_HLApp-V1-signed.imagepackage differ diff --git a/avnet_sensors_converge/avnet_lightranger5/HardwareDefinitions b/avnet_sensors_converge/avnet_lightranger5/HardwareDefinitions new file mode 160000 index 0000000..871149b --- /dev/null +++ b/avnet_sensors_converge/avnet_lightranger5/HardwareDefinitions @@ -0,0 +1 @@ +Subproject commit 871149bd855184ac1d42ee6e61def5da18e9dc8f diff --git a/avnet_lightranger5/README.md b/avnet_sensors_converge/avnet_lightranger5/README.md similarity index 100% rename from avnet_lightranger5/README.md rename to avnet_sensors_converge/avnet_lightranger5/README.md diff --git a/avnet_lightranger5/app_exit_codes.h b/avnet_sensors_converge/avnet_lightranger5/app_exit_codes.h similarity index 100% rename from avnet_lightranger5/app_exit_codes.h rename to avnet_sensors_converge/avnet_lightranger5/app_exit_codes.h diff --git a/avnet_lightranger5/app_manifest.json b/avnet_sensors_converge/avnet_lightranger5/app_manifest.json similarity index 100% rename from avnet_lightranger5/app_manifest.json rename to avnet_sensors_converge/avnet_lightranger5/app_manifest.json diff --git a/avnet_lightranger5/applibs_versions.h b/avnet_sensors_converge/avnet_lightranger5/applibs_versions.h similarity index 100% rename from avnet_lightranger5/applibs_versions.h rename to avnet_sensors_converge/avnet_lightranger5/applibs_versions.h diff --git a/avnet_lightranger5/azsphere_board.txt b/avnet_sensors_converge/avnet_lightranger5/azsphere_board.txt similarity index 100% rename from avnet_lightranger5/azsphere_board.txt rename to avnet_sensors_converge/avnet_lightranger5/azsphere_board.txt diff --git a/avnet_lightranger5/launch.vs.json b/avnet_sensors_converge/avnet_lightranger5/launch.vs.json similarity index 100% rename from avnet_lightranger5/launch.vs.json rename to avnet_sensors_converge/avnet_lightranger5/launch.vs.json diff --git a/avnet_lightranger5/lightranger5_click.h b/avnet_sensors_converge/avnet_lightranger5/lightranger5_click.h similarity index 100% rename from avnet_lightranger5/lightranger5_click.h rename to avnet_sensors_converge/avnet_lightranger5/lightranger5_click.h diff --git a/avnet_lightranger5/main.c b/avnet_sensors_converge/avnet_lightranger5/main.c similarity index 100% rename from avnet_lightranger5/main.c rename to avnet_sensors_converge/avnet_lightranger5/main.c diff --git a/avnet_lightranger5/main.h b/avnet_sensors_converge/avnet_lightranger5/main.h similarity index 100% rename from avnet_lightranger5/main.h rename to avnet_sensors_converge/avnet_lightranger5/main.h diff --git a/avnet_sensors_converge/avnet_tempHum13/.gitignore b/avnet_sensors_converge/avnet_tempHum13/.gitignore new file mode 100644 index 0000000..2a94754 --- /dev/null +++ b/avnet_sensors_converge/avnet_tempHum13/.gitignore @@ -0,0 +1 @@ +out/* \ No newline at end of file diff --git a/avnet_sensors_converge/avnet_tempHum13/.vscode/launch.json b/avnet_sensors_converge/avnet_tempHum13/.vscode/launch.json new file mode 100644 index 0000000..fcace73 --- /dev/null +++ b/avnet_sensors_converge/avnet_tempHum13/.vscode/launch.json @@ -0,0 +1,27 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Launch for Azure Sphere High-Level Applications (gdb)", + "type": "azurespheredbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "cwd": "${workspaceFolder}", + "environment": [], + "externalConsole": true, + "partnerComponents": [ "f6768b9a-e086-4f5a-8219-5ffe9684b001" ], + "MIMode": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/avnet_sensors_converge/avnet_tempHum13/.vscode/settings.json b/avnet_sensors_converge/avnet_tempHum13/.vscode/settings.json new file mode 100644 index 0000000..94d6c8e --- /dev/null +++ b/avnet_sensors_converge/avnet_tempHum13/.vscode/settings.json @@ -0,0 +1,15 @@ +{ + "cmake.generator": "Ninja", + "cmake.buildDirectory": "${workspaceRoot}/out/ARM-${buildType}", + "cmake.buildToolArgs": [ "-v" ], + "cmake.configureSettings": { + "CMAKE_TOOLCHAIN_FILE": "${command:azuresphere.AzureSphereSdkDir}/CMakeFiles/AzureSphereToolchain.cmake", + "AZURE_SPHERE_TARGET_API_SET": "latest-lts" + }, + "cmake.configureOnOpen": true, + "C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools", + "files.associations": { + "dx_avnet_iot_connect.h": "c", + "dx_json_serializer.h": "c" + } +} \ No newline at end of file diff --git a/avnet_sensors_converge/avnet_tempHum13/AzureSphereDevX b/avnet_sensors_converge/avnet_tempHum13/AzureSphereDevX new file mode 160000 index 0000000..e3c6c22 --- /dev/null +++ b/avnet_sensors_converge/avnet_tempHum13/AzureSphereDevX @@ -0,0 +1 @@ +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/avnet_sensors_converge/avnet_tempHum13/CMakeLists.txt b/avnet_sensors_converge/avnet_tempHum13/CMakeLists.txt new file mode 100644 index 0000000..2e9e76b --- /dev/null +++ b/avnet_sensors_converge/avnet_tempHum13/CMakeLists.txt @@ -0,0 +1,64 @@ +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. + +cmake_minimum_required (VERSION 3.10) + +project (avnet_TEMPHUM_TMF8801_HLApp-V1 C) + +# Check if there is a global azsphere_board.cmake file +get_filename_component(PARENT_DIR ${PROJECT_SOURCE_DIR} DIRECTORY) + +if (EXISTS "${PARENT_DIR}/azsphere_board.global.txt") + include("${PARENT_DIR}/azsphere_board.global.txt") +else() + include(azsphere_board.txt) +endif() + +if (EXISTS "${PARENT_DIR}/tools/cmake/azsphere_config.cmake") + include(../tools/cmake/azsphere_config.cmake) + auto_generate_azsphere_config() +else() + + # For information on setting tools revision and target api set see + # https://docs.microsoft.com/en-us/azure-sphere/app-development/using-cmake-functions + + azsphere_configure_tools(TOOLS_REVISION "21.07") + azsphere_configure_api(TARGET_API_SET "12") + +endif() + +add_subdirectory("AzureSphereDevX" out) + +# Create executable +add_executable (${PROJECT_NAME} main.c) +target_link_libraries (${PROJECT_NAME} applibs pthread gcc_s c azure_sphere_devx) +target_include_directories(${PROJECT_NAME} PUBLIC AzureSphereDevX/include ) + + +set(BOARD_COUNTER 0) + +if(AVNET) + MATH(EXPR BOARD_COUNTER "${BOARD_COUNTER}+1") + add_definitions( -DOEM_AVNET=TRUE ) + azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/avnet_mt3620_sk" TARGET_DEFINITION "sample_appliance.json") + message(STATUS "Azure Sphere board selected: AVNET REV 1") +endif(AVNET) + +if(AVNET_REV_2) + MATH(EXPR BOARD_COUNTER "${BOARD_COUNTER}+1") + add_definitions( -DOEM_AVNET=TRUE ) + azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/avnet_mt3620_sk_rev2" TARGET_DEFINITION "sample_appliance.json") + message(STATUS "Azure Sphere board selected: AVNET REV 2") +endif(AVNET_REV_2) + + +if(BOARD_COUNTER EQUAL 0) + message(FATAL_ERROR "No Azure Sphere boards selected. Ensure one board set") +endif() + +if(BOARD_COUNTER GREATER 1) + message(FATAL_ERROR "Multiple (${BOARD_COUNTER}) Azure Sphere boards selected. Ensure only one board set") +endif() + + +azsphere_target_add_image_package(${PROJECT_NAME}) \ No newline at end of file diff --git a/avnet_sensors_converge/avnet_tempHum13/CMakeSettings.json b/avnet_sensors_converge/avnet_tempHum13/CMakeSettings.json new file mode 100644 index 0000000..004e70d --- /dev/null +++ b/avnet_sensors_converge/avnet_tempHum13/CMakeSettings.json @@ -0,0 +1,47 @@ +{ + "environments": [ + { + "environment": "AzureSphere" + } + ], + "configurations": [ + { + "name": "ARM-Debug", + "generator": "Ninja", + "configurationType": "Debug", + "inheritEnvironments": [ + "AzureSphere" + ], + "buildRoot": "${projectDir}\\out\\${name}", + "installRoot": "${projectDir}\\out\\${name}", + "cmakeToolchain": "${env.AzureSphereDefaultSDKDir}CMakeFiles\\AzureSphereToolchain.cmake", + "buildCommandArgs": "-v", + "ctestCommandArgs": "", + "variables": [ + { + "name": "AZURE_SPHERE_TARGET_API_SET", + "value": "latest-lts" + } + ] + }, + { + "name": "ARM-Release", + "generator": "Ninja", + "configurationType": "Release", + "inheritEnvironments": [ + "AzureSphere" + ], + "buildRoot": "${projectDir}\\out\\${name}", + "installRoot": "${projectDir}\\out\\${name}", + "cmakeToolchain": "${env.AzureSphereDefaultSDKDir}CMakeFiles\\AzureSphereToolchain.cmake", + "buildCommandArgs": "-v", + "ctestCommandArgs": "", + "variables": [ + { + "name": "AZURE_SPHERE_TARGET_API_SET", + "value": "latest-lts" + } + ] + } + ] +} diff --git a/avnet_sensors_converge/avnet_tempHum13/DemoBinaries/AvnetHTU21dRTApp-App1-V1-Signed.imagepackage b/avnet_sensors_converge/avnet_tempHum13/DemoBinaries/AvnetHTU21dRTApp-App1-V1-Signed.imagepackage new file mode 100644 index 0000000..654b405 Binary files /dev/null and b/avnet_sensors_converge/avnet_tempHum13/DemoBinaries/AvnetHTU21dRTApp-App1-V1-Signed.imagepackage differ diff --git a/avnet_sensors_converge/avnet_tempHum13/DemoBinaries/avnet_TEMPHUM_HLApp-V1-signed.imagepackage b/avnet_sensors_converge/avnet_tempHum13/DemoBinaries/avnet_TEMPHUM_HLApp-V1-signed.imagepackage new file mode 100644 index 0000000..5d5256f Binary files /dev/null and b/avnet_sensors_converge/avnet_tempHum13/DemoBinaries/avnet_TEMPHUM_HLApp-V1-signed.imagepackage differ diff --git a/avnet_sensors_converge/avnet_tempHum13/HardwareDefinitions b/avnet_sensors_converge/avnet_tempHum13/HardwareDefinitions new file mode 160000 index 0000000..871149b --- /dev/null +++ b/avnet_sensors_converge/avnet_tempHum13/HardwareDefinitions @@ -0,0 +1 @@ +Subproject commit 871149bd855184ac1d42ee6e61def5da18e9dc8f diff --git a/avnet_sensors_converge/avnet_tempHum13/README.md b/avnet_sensors_converge/avnet_tempHum13/README.md new file mode 100644 index 0000000..c95b1c3 --- /dev/null +++ b/avnet_sensors_converge/avnet_tempHum13/README.md @@ -0,0 +1,17 @@ +# Azure IoT Starter Project (empty) + +This is an empty (starter) project that can be used for new Azure Sphere applications based on the DevX library. The project connects to an Azure IoTHub, +IoTCentral, or Avnet's IoTConnect and nothing more. Use the other examples in this folder to help you see how to build out the project to meet your requirements. Search the project for "TODO" to see where to add definitions, declarations and code. +## Config app_manifest.json sample + +1. Set ID Scope +1. Set Allowed connections +1. Set DeviceAuthentication + +For more information refer to: + +1. [Adding the Azure Sphere DevX library](https://github.com/gloveboxes/AzureSphereDevX/wiki/Adding-the-DevX-Library) +1. [Azure Messaging](https://github.com/gloveboxes/AzureSphereDevX/wiki/IoT-Hub-Sending-messages) +1. [Device Twins](https://github.com/gloveboxes/AzureSphereDevX/wiki/IoT-Hub-Device-Twins) +1. [Direct Methods](https://github.com/gloveboxes/AzureSphereDevX/wiki/IoT-Hub-Direct-Methods) +1. [GPIO](https://github.com/gloveboxes/AzureSphereDevX/wiki/Working-with-GPIO) diff --git a/avnet_sensors_converge/avnet_tempHum13/app_exit_codes.h b/avnet_sensors_converge/avnet_tempHum13/app_exit_codes.h new file mode 100644 index 0000000..f9b6a1c --- /dev/null +++ b/avnet_sensors_converge/avnet_tempHum13/app_exit_codes.h @@ -0,0 +1,14 @@ +#pragma once + +/* Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the MIT License. */ + +/// +/// Exit codes for this application. Application exit codes +/// must be between 1 and 149, where 0 is reserved for successful +// termination. dx_exit_codes.h owns/defines exit codes 0 and +/// 150 - 254. +/// +typedef enum { + APP_ExitCode_Telemetry_Buffer_Too_Small = 1 +} App_Exit_Code; \ No newline at end of file diff --git a/avnet_sensors_converge/avnet_tempHum13/app_manifest.json b/avnet_sensors_converge/avnet_tempHum13/app_manifest.json new file mode 100644 index 0000000..db388da --- /dev/null +++ b/avnet_sensors_converge/avnet_tempHum13/app_manifest.json @@ -0,0 +1,16 @@ +{ + "SchemaVersion": 1, + "Name": "avnet_TEMPHUM_TMF8801_HLApp-V1", + "ComponentId": "b8f5931e-173a-40f5-a4f8-3d98240f53ec", + "EntryPoint": "/bin/app", + "CmdArgs": [ "--ScopeID", "0ne00000000" ], + "Capabilities": { + "Gpio": ["$SAMPLE_BUTTON_1", "$SAMPLE_BUTTON_2"], + "Pwm": [ "$SAMPLE_LED_PWM_CONTROLLER" ], + "AllowedConnections": [ "global.azure-devices-provisioning.net", + "YOUR_IOT_HUB-HOSTNAME.azure-devices.net"], + "DeviceAuthentication": "00000000-0000-0000-0000-000000000000", + "AllowedApplicationConnections": [ "f6768b9a-e086-4f5a-8219-5ffe9684b001" ] + }, + "ApplicationType": "Default" +} diff --git a/avnet_sensors_converge/avnet_tempHum13/applibs_versions.h b/avnet_sensors_converge/avnet_tempHum13/applibs_versions.h new file mode 100644 index 0000000..22f5880 --- /dev/null +++ b/avnet_sensors_converge/avnet_tempHum13/applibs_versions.h @@ -0,0 +1,25 @@ +#pragma once + +/// +/// This identifier should be defined before including any of the networking-related header files. +/// It indicates which version of the Wi-Fi data structures the application uses. +/// +#define NETWORKING_STRUCTS_VERSION 1 + +/// +/// This identifier must be defined before including any of the Wi-Fi related header files. +/// It indicates which version of the Wi-Fi data structures the application uses. +/// +#define WIFICONFIG_STRUCTS_VERSION 1 + +/// +/// This identifier must be defined before including any of the UART-related header files. +/// It indicates which version of the UART data structures the application uses. +/// +#define UART_STRUCTS_VERSION 1 + +/// +/// This identifier must be defined before including any of the SPI-related header files. +/// It indicates which version of the SPI data structures the application uses. +/// +#define SPI_STRUCTS_VERSION 1 \ No newline at end of file diff --git a/avnet_sensors_converge/avnet_tempHum13/azsphere_board.txt b/avnet_sensors_converge/avnet_tempHum13/azsphere_board.txt new file mode 100644 index 0000000..011bb0e --- /dev/null +++ b/avnet_sensors_converge/avnet_tempHum13/azsphere_board.txt @@ -0,0 +1,7 @@ +# Select your developer board by removing the # tag from the beginning of the line +# If you are NOT using the AVNET Revision 1 board be sure to comment out the AVNET board + +# set(AVNET TRUE "AVNET Azure Sphere Starter Kit Revision 1") +set(AVNET_REV_2 TRUE "AVNET Azure Sphere Starter Kit Revision 2") +# set(SEEED_STUDIO_RDB TRUE "Seeed Studio Azure Sphere MT3620 Development Kit (aka Reference Design Board or RDB)") +# set(SEEED_STUDIO_MINI TRUE "Seeed Studio Azure Sphere MT3620 Mini Dev Board") \ No newline at end of file diff --git a/avnet_sensors_converge/avnet_tempHum13/htu21d_rtapp.h b/avnet_sensors_converge/avnet_tempHum13/htu21d_rtapp.h new file mode 100644 index 0000000..3412d00 --- /dev/null +++ b/avnet_sensors_converge/avnet_tempHum13/htu21d_rtapp.h @@ -0,0 +1,43 @@ +/* Copyright (c) Avnet Incorporated. All rights reserved. + Licensed under the MIT License. */ + +#pragma once + +#define JSON_STRING_MAX_SIZE 100 + +// Define the different messages IDs we can send to real time applications +// If this enum is changed, it also needs to be changed for the high level application +typedef enum __attribute__((packed)) +{ + IC_TEMPHUM_UNKNOWN, + IC_TEMPHUM_HEARTBEAT, + IC_TEMPHUM_READ_SENSOR_RESPOND_WITH_TELEMETRY, + IC_TEMPHUM_SET_TELEMETRY_SEND_RATE, + ///////////////////////////////////////////////////////////////////////////////// + // Don't change the enums above or the generic RTApp implementation will break // + ///////////////////////////////////////////////////////////////////////////////// + IC_TEMPHUM_READ_SENSOR + +} INTER_CORE_CMD_TEMPHUM; + +// Define the expected data structure. +typedef struct __attribute__((packed)) +{ + INTER_CORE_CMD_TEMPHUM cmd; + uint32_t telemtrySendRate; + //////////////////////////////////////////////////////////////////////////////////////// + // Don't change the declarations above or the generic RTApp implementation will break // + //////////////////////////////////////////////////////////////////////////////////////// +} IC_COMMAND_BLOCK_TEMPHUM_HL_TO_RT; + +typedef struct __attribute__((packed)) +{ + INTER_CORE_CMD_TEMPHUM cmd; + uint32_t telemtrySendRate; + char telemetryJSON[JSON_STRING_MAX_SIZE]; + //////////////////////////////////////////////////////////////////////////////////////// + // Don't change the declarations above or the generic RTApp implementation will break // + //////////////////////////////////////////////////////////////////////////////////////// + float temp; + float hum; +} IC_COMMAND_BLOCK_TEMPHUM_RT_TO_HL; \ No newline at end of file diff --git a/avnet_sensors_converge/avnet_tempHum13/launch.vs.json b/avnet_sensors_converge/avnet_tempHum13/launch.vs.json new file mode 100644 index 0000000..09ab6f1 --- /dev/null +++ b/avnet_sensors_converge/avnet_tempHum13/launch.vs.json @@ -0,0 +1,21 @@ +{ + "version": "0.2.1", + "defaults": {}, + "configurations": [ + { + "type": "azurespheredbg", + "name": "GDB Debugger (HLCore)", + "project": "CMakeLists.txt", + "inheritEnvironments": [ + "AzureSphere" + ], + "customLauncher": "AzureSphereLaunchOptions", + "workingDirectory": "${workspaceRoot}", + "applicationPath": "${debugInfo.target}", + "imagePath": "${debugInfo.targetImage}", + "targetCore": "HLCore", + "targetApiSet": "${env.AzureSphereTargetApiSet}", + "partnerComponents": [ "f6768b9a-e086-4f5a-8219-5ffe9684b001" ] + } + ] +} diff --git a/avnet_sensors_converge/avnet_tempHum13/main.c b/avnet_sensors_converge/avnet_tempHum13/main.c new file mode 100644 index 0000000..1f9ae0e --- /dev/null +++ b/avnet_sensors_converge/avnet_tempHum13/main.c @@ -0,0 +1,312 @@ +/* Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. + * + * This example is built on the Azure Sphere DevX library. + * 1. DevX is an Open Source community-maintained implementation of the Azure Sphere SDK samples. + * 2. DevX is a modular library that simplifies common development scenarios. + * - You can focus on your solution, not the plumbing. + * 3. DevX documentation is maintained at https://github.com/gloveboxes/AzureSphereDevX/wiki + * 4. The DevX library is not a substitute for understanding the Azure Sphere SDK Samples. + * - https://github.com/Azure/azure-sphere-samples + * + * DEVELOPER BOARD SELECTION + * + * The following developer boards are supported. + * + * 1. AVNET Azure Sphere Starter Kit. + * 2. AVNET Azure Sphere Starter Kit Revision 2. + * 3. Seeed Studio Azure Sphere MT3620 Development Kit aka Reference Design Board or rdb. + * 4. Seeed Studio Seeed Studio MT3620 Mini Dev Board. + * + * ENABLE YOUR DEVELOPER BOARD + * + * Each Azure Sphere developer board manufacturer maps pins differently. You need to select the + * configuration that matches your board. + * + * Follow these steps: + * + * 1. Open CMakeLists.txt. + * 2. Uncomment the set command that matches your developer board. + * 3. Click File, then Save to auto-generate the CMake Cache. + * + * How to use this sample + * + * Developers can use this sample as a starting point for their DevX based Azure Sphere + * application. It will connect to an Azure IoTHub, IOTCentral or Avnet's IoTConnect. + * + * There are sections marked with "TODO" that the developer can review for hints on where + * to add code, or to enable code that may be needed for general support, such as sending + * telemetry. + * + ************************************************************************************************/ +#include "main.h" + +static float lastTempMeasurement = -100.0F; +static float lastHumMeasurement = -100.0F; +static double calculatedRoomTemp = 0.0F; +static bool roomTempCalculated = false; + +/**************************************************************************************** + * Implementation + ****************************************************************************************/ +/// +/// Handler to check for Button Presses +/// +static DX_TIMER_HANDLER(ButtonPressCheckHandler) +{ + static GPIO_Value_Type buttonAState; + static GPIO_Value_Type buttonBState; + + // Check to see if either button was pressed + if (dx_gpioStateGet(&buttonA, &buttonAState) || dx_gpioStateGet(&buttonB, &buttonBState) ) { + + // Turn the RBB LED on bright to indicate that we're sampling room temperature + dx_pwmSetDutyCycle(&pwm_red_led, 1000, 0); + dx_pwmSetDutyCycle(&pwm_green_led, 1000, 0); + dx_pwmSetDutyCycle(&pwm_blue_led, 1000, 0); + + // Set the global flag to false so we calculate room temp again + roomTempCalculated = false; + calculatedRoomTemp = 0.0; + } +} +DX_TIMER_HANDLER_END + +static void updateHistoricalTempData(float tempData){ + + static float historicalTempData[HISTORICAL_DATA_ARRAY_SIZE]; + static int arrayIndex = 0; + double runningAverageSum = 0; + + if(!roomTempCalculated && ++arrayIndex >= HISTORICAL_DATA_ARRAY_SIZE){ + // Calculate room temperature based on the first HISTORICAL_DATA_ARRAY_SIZE + // temperature readings + for(int i = 0; i < HISTORICAL_DATA_ARRAY_SIZE; i++){ + runningAverageSum = runningAverageSum + tempData; + } + calculatedRoomTemp = runningAverageSum/(double)HISTORICAL_DATA_ARRAY_SIZE; + roomTempCalculated = true; + arrayIndex = 0; // Reset the index in case we recalcualte during run time + Log_Debug("Room temperature captured as %.2fC\n", calculatedRoomTemp); + } + // We're still capturing data, update the next array location with the new temperature reading + else{ + historicalTempData[arrayIndex] = tempData; + } +} +static DX_DEVICE_TWIN_HANDLER(dt_set_sensor_polling_period_ms, deviceTwinBinding) +{ + // validate data is sensible range before applying. + if (deviceTwinBinding->twinType == DX_DEVICE_TWIN_INT && + *(int *)deviceTwinBinding->propertyValue >= MIN_POLL_TIME_MS && + *(int *)deviceTwinBinding->propertyValue <= MAX_POLL_TIME_MS) { + + // Break the ms value int seconds and ms for the timespec struct + int seconds = (int)(*(int *)deviceTwinBinding->propertyValue/1000); + int ms = (long)(*(int *)deviceTwinBinding->propertyValue) - (seconds * 1000); + + dx_timerChange(&readSensorTimer, &(struct timespec){seconds, ms * ONE_MS}); + + dx_deviceTwinAckDesiredValue(deviceTwinBinding, deviceTwinBinding->propertyValue, + DX_DEVICE_TWIN_RESPONSE_COMPLETED); + + } else { + dx_deviceTwinAckDesiredValue(deviceTwinBinding, deviceTwinBinding->propertyValue, + DX_DEVICE_TWIN_RESPONSE_ERROR); + } +} +DX_DEVICE_TWIN_HANDLER_END + +static DX_DEVICE_TWIN_HANDLER(dt_set_telemetemetry_period_seconds, deviceTwinBinding) +{ + + // validate data is sensible range before applying. + if (deviceTwinBinding->twinType == DX_DEVICE_TWIN_INT && + *(int *)deviceTwinBinding->propertyValue >= MIN_TELEMETRY_TX_PERIOD && + *(int *)deviceTwinBinding->propertyValue <= MAX_TELEMETRY_TX_PERIOD) { + + dx_timerChange(&sendTelemetryTimer, &(struct timespec){ *(int *)deviceTwinBinding->propertyValue, 0}); + + dx_deviceTwinAckDesiredValue(deviceTwinBinding, deviceTwinBinding->propertyValue, + DX_DEVICE_TWIN_RESPONSE_COMPLETED); + + } else { + dx_deviceTwinAckDesiredValue(deviceTwinBinding, deviceTwinBinding->propertyValue, + DX_DEVICE_TWIN_RESPONSE_ERROR); + } +} +DX_DEVICE_TWIN_HANDLER_END + +// Using the rangeStatus value, turn on/off the range indication LEDs +static void setPwmStatusLed(float temp) +{ + static float lastTemp = -100.0; + uint32_t dutyCycle = 100; + + // Nothing to see here folks, move along . . . + if(lastTemp == temp){ + return; + } + + // Update the local static variable + lastTemp = temp; + + // Turn off all the LED's then set the LED corresponding to the range status + // Turn off RGBLED - 100% duty cycle is off + dx_pwmSetDutyCycle(&pwm_red_led, 1000, 100); + dx_pwmSetDutyCycle(&pwm_green_led, 1000, 100); + dx_pwmSetDutyCycle(&pwm_blue_led, 1000, 100); + + // Detmine if we're under of over the calculated room temperature, then calculate the duty cycle + // 100% == LED Full Brightness + // 0% == LED Off + if(roomTempCalculated){ + if(temp < calculatedRoomTemp){ + dutyCycle = (uint32_t)((float)(temp-(calculatedRoomTemp-OVER_UNDER_RANGE))/ + (float)(calculatedRoomTemp-(calculatedRoomTemp-OVER_UNDER_RANGE))*100); + dx_pwmSetDutyCycle(&pwm_blue_led, 1000, dutyCycle); + } + else if(temp > calculatedRoomTemp){ + dutyCycle = (uint32_t)((float)(temp-(calculatedRoomTemp+OVER_UNDER_RANGE))/ + (float)(calculatedRoomTemp-(calculatedRoomTemp+OVER_UNDER_RANGE))*100); + dx_pwmSetDutyCycle(&pwm_red_led, 1000, dutyCycle); + } + } +} + +/// +/// receive_msg_handler() +/// This handler is called when the high level application receives a raw data read response from the +/// Thermo CLICK real time application. +/// +static void receive_msg_handler(void *data_block, ssize_t message_length) +{ + + // Cast the data block so we can index into the data + IC_COMMAND_BLOCK_TEMPHUM_RT_TO_HL *messageData = (IC_COMMAND_BLOCK_TEMPHUM_RT_TO_HL*) data_block; + + switch (messageData->cmd) { + case IC_TEMPHUM_READ_SENSOR: + if(roomTempCalculated){ + setPwmStatusLed(messageData->temp); + } + else{ + updateHistoricalTempData(messageData->temp); + } + + lastTempMeasurement = messageData->temp; + lastHumMeasurement = messageData->hum; + + break; + // Handle the other cases by doing nothing + case IC_TEMPHUM_HEARTBEAT: + case IC_TEMPHUM_READ_SENSOR_RESPOND_WITH_TELEMETRY: + case IC_TEMPHUM_SET_TELEMETRY_SEND_RATE: + case IC_TEMPHUM_UNKNOWN: + default: + break; + } +} + +/// +/// Periodic timer to read the TMF8801 sensor +/// +static DX_TIMER_HANDLER(ReadSensorHandler) +{ + //Code to read the sensor data in your application + // reset inter-core block + memset(&ic_tx_block, 0x00, sizeof(IC_COMMAND_BLOCK_TEMPHUM_HL_TO_RT)); + + // Send read sensor message to realtime core app one + ic_tx_block.cmd = IC_TEMPHUM_READ_SENSOR; + dx_intercorePublish(&intercore_tempHum13_click_binding, &ic_tx_block, + sizeof(IC_COMMAND_BLOCK_TEMPHUM_HL_TO_RT)); +} +DX_TIMER_HANDLER_END + +/// +/// Periodic timer to read the TMF8801 sensor +/// +static DX_TIMER_HANDLER(SendTelemetryHandler) +{ + + snprintf(msgBuffer, sizeof(msgBuffer), "{\"temp\":%.2f, \"humidity\": %.2f}", lastTempMeasurement, lastHumMeasurement); + Log_Debug("%s\n", msgBuffer); + + if(dx_isAzureConnected()){ + dx_azurePublish(msgBuffer, strlen(msgBuffer), messageProperties, NELEMS(messageProperties), &contentProperties); + } +} +DX_TIMER_HANDLER_END + +/// +/// Initialize peripherals, device twins, direct methods, timer_bindings. +/// +static void InitPeripheralsAndHandlers(void) +{ +#ifdef USE_AVNET_IOTCONNECT + dx_avnetConnect(&dx_config, NETWORK_INTERFACE); +#else + // TODO, to connect this application to Azure, remove the comment + // specifier below and update the app_manifest.json file with the details + // for your Azure resources and Azure Sphere tenant. + //dx_azureConnect(&dx_config, NETWORK_INTERFACE, IOT_PLUG_AND_PLAY_MODEL_ID); +#endif + + dx_gpioSetOpen(gpio_bindings, NELEMS(gpio_bindings)); + dx_timerSetStart(timer_bindings, NELEMS(timer_bindings)); + dx_deviceTwinSubscribe(device_twin_bindings, NELEMS(device_twin_bindings)); + dx_directMethodSubscribe(direct_method_bindings, NELEMS(direct_method_bindings)); + dx_intercoreConnect(&intercore_tempHum13_click_binding); + dx_pwmSetOpen(pwm_bindings, NELEMS(pwm_bindings)); + + // Turn on all RGBLEDs - 0% duty cycle is 100% on + dx_pwmSetDutyCycle(&pwm_red_led, 1000, 0); + dx_pwmSetDutyCycle(&pwm_green_led, 1000, 0); + dx_pwmSetDutyCycle(&pwm_blue_led, 1000, 0); + + Log_Debug("Temp&Hum13 Demo Starting . . . \n"); +} + +/// +/// Close peripherals and handlers. +/// +static void ClosePeripheralsAndHandlers(void) +{ + + // Turn off RGBLEDs - 100% duty cycle is off + dx_pwmSetDutyCycle(&pwm_red_led, 1000, 100); + dx_pwmSetDutyCycle(&pwm_green_led, 1000, 100); + dx_pwmSetDutyCycle(&pwm_blue_led, 1000, 100); + + dx_timerSetStop(timer_bindings, NELEMS(timer_bindings)); + dx_pwmSetClose(pwm_bindings, NELEMS(pwm_bindings)); + dx_deviceTwinUnsubscribe(); + dx_directMethodUnsubscribe(); + dx_gpioSetClose(gpio_bindings, NELEMS(gpio_bindings)); + dx_timerEventLoopStop(); +} + +int main(int argc, char *argv[]) +{ + dx_registerTerminationHandler(); + + if (!dx_configParseCmdLineArguments(argc, argv, &dx_config)) { + return dx_getTerminationExitCode(); + } + + InitPeripheralsAndHandlers(); + + // Main loop + while (!dx_isTerminationRequired()) { + int result = EventLoop_Run(dx_timerGetEventLoop(), -1, true); + // Continue if interrupted by signal, e.g. due to breakpoint being set. + if (result == -1 && errno != EINTR) { + dx_terminate(DX_ExitCode_Main_EventLoopFail); + } + } + + ClosePeripheralsAndHandlers(); + Log_Debug("Application exiting.\n"); + return dx_getTerminationExitCode(); +} \ No newline at end of file diff --git a/avnet_sensors_converge/avnet_tempHum13/main.h b/avnet_sensors_converge/avnet_tempHum13/main.h new file mode 100644 index 0000000..a94139b --- /dev/null +++ b/avnet_sensors_converge/avnet_tempHum13/main.h @@ -0,0 +1,145 @@ + +#include "hw/sample_appliance.h" // Hardware definition +#include "app_exit_codes.h" +#include "dx_azure_iot.h" +#include "dx_config.h" +#include "dx_json_serializer.h" +#include "dx_terminate.h" +#include "dx_timer.h" +#include "dx_utilities.h" +#include "dx_direct_methods.h" +#include "dx_version.h" +#include "dx_config.h" +#include "dx_gpio.h" +#include "dx_pwm.h" +#include +#include +#include "dx_intercore.h" +#include "htu21d_rtapp.h" +#include "dx_uart.h" + +// https://docs.microsoft.com/en-us/azure/iot-pnp/overview-iot-plug-and-play +#define IOT_PLUG_AND_PLAY_MODEL_ID "" + +// Details on how to connect your application using an ethernet adaptor +// https://docs.microsoft.com/en-us/azure-sphere/network/connect-ethernet +#define NETWORK_INTERFACE "wlan0" + +#define SAMPLE_VERSION_NUMBER "1.0" + + +DX_USER_CONFIG dx_config; + +/**************************************************************************************** + * Avnet IoTConnect Support + ****************************************************************************************/ +// TODO: If the application will connect to Avnet's IoTConnect platform enable the +// #define below +//#define USE_AVNET_IOTCONNECT + +/**************************************************************************************** + * Application defines + ****************************************************************************************/ +#define ONE_MS 1000000 +#define ONE_HUNDRED_MS 100000000 + +#define DEFAULT_SENSOR_POLL_PERIOD_SECONDS 0 +#define DEFAULT_SENSOR_POLL_PERIOD_MS (ONE_MS * 100) + +#define DEFAULT_SEND_TELEMETRY_PERIOD_SECONDS 5 + +#define MIN_POLL_TIME_MS 20 +#define MAX_POLL_TIME_MS 60*1000 // 1 Minute + +#define MIN_TELEMETRY_TX_PERIOD 1 +#define MAX_TELEMETRY_TX_PERIOD (60*60) // 1 Hour + +#define HISTORICAL_DATA_ARRAY_SIZE 32 + +#define OVER_UNDER_RANGE 2 // Degrees C + +/**************************************************************************************** + * Forward declarations + ****************************************************************************************/ +static void receive_msg_handler(void *data_block, ssize_t message_length); +static DX_DECLARE_TIMER_HANDLER(ReadSensorHandler); +static DX_DECLARE_TIMER_HANDLER(SendTelemetryHandler); +static DX_DECLARE_TIMER_HANDLER(ButtonPressCheckHandler); +static DX_DECLARE_DEVICE_TWIN_HANDLER(dt_set_sensor_polling_period_ms); +static DX_DECLARE_DEVICE_TWIN_HANDLER(dt_set_telemetemetry_period_seconds); +static void updateHistoricalTempData(float tempData); + +IC_COMMAND_BLOCK_TEMPHUM_HL_TO_RT ic_tx_block; +IC_COMMAND_BLOCK_TEMPHUM_RT_TO_HL ic_rx_block; + +/**************************************************************************************** + * Telemetry message buffer property sets + ****************************************************************************************/ + +// Number of bytes to allocate for the JSON telemetry message for IoT Hub/Central +#define JSON_MESSAGE_BYTES 32 +static char msgBuffer[JSON_MESSAGE_BYTES] = {0}; + +static DX_MESSAGE_PROPERTY *messageProperties[] = {&(DX_MESSAGE_PROPERTY){.key = "appid", .value = "TMF8801"}, + &(DX_MESSAGE_PROPERTY){.key = "type", .value = "telemetry"}, + &(DX_MESSAGE_PROPERTY){.key = "schema", .value = "1"}}; + +static DX_MESSAGE_CONTENT_PROPERTIES contentProperties = {.contentEncoding = "utf-8", .contentType = "application/json"}; + +/**************************************************************************************** + * Bindings + ****************************************************************************************/ +DX_INTERCORE_BINDING intercore_tempHum13_click_binding = { + .sockFd = -1, + .nonblocking_io = true, + .rtAppComponentId = "f6768b9a-e086-4f5a-8219-5ffe9684b001", + .interCoreCallback = receive_msg_handler, + .intercore_recv_block = &ic_rx_block, + .intercore_recv_block_length = sizeof(IC_COMMAND_BLOCK_TEMPHUM_RT_TO_HL)}; + +static DX_TIMER_BINDING readSensorTimer = { + .repeat = &(struct timespec){DEFAULT_SENSOR_POLL_PERIOD_SECONDS, DEFAULT_SENSOR_POLL_PERIOD_MS}, + .name = "readSensorTimer", .handler = ReadSensorHandler}; + +static DX_TIMER_BINDING sendTelemetryTimer = { + .repeat = &(struct timespec){DEFAULT_SEND_TELEMETRY_PERIOD_SECONDS, 0}, + .name = "sendTelemetryTimer", .handler = SendTelemetryHandler}; + +static DX_PWM_CONTROLLER pwm_led_controller = {.controllerId = SAMPLE_LED_PWM_CONTROLLER, + .name = "PWM Click Controller"}; + +static DX_PWM_BINDING pwm_red_led = { + .pwmController = &pwm_led_controller, .channelId = 0, .name = "red_led"}; + +static DX_PWM_BINDING pwm_green_led = { + .pwmController = &pwm_led_controller, .channelId = 1, .name = "green_led"}; + +static DX_PWM_BINDING pwm_blue_led = { + .pwmController = &pwm_led_controller, .channelId = 2, .name = "blue led"}; + +static DX_DEVICE_TWIN_BINDING dt_desired_sample_rate_ms = {.propertyName = "sensorPollPeriod_ms", + .twinType = DX_DEVICE_TWIN_INT, + .handler = dt_set_sensor_polling_period_ms}; + +static DX_DEVICE_TWIN_BINDING dt_telemetry_tx_period_s = {.propertyName = "setTelemetrySendPeriod_seconds", + .twinType = DX_DEVICE_TWIN_INT, + .handler = dt_set_telemetemetry_period_seconds}; + +static DX_TIMER_BINDING buttonPressCheckTimer = { + .period = {0, 1000000}, .name = "buttonPressCheckTimer", .handler = ButtonPressCheckHandler}; + +static DX_GPIO_BINDING buttonA = { + .pin = SAMPLE_BUTTON_1, .name = "buttonA", .direction = DX_INPUT, .detect = DX_GPIO_DETECT_LOW}; + +static DX_GPIO_BINDING buttonB = { + .pin = SAMPLE_BUTTON_2, .name = "buttonB", .direction = DX_INPUT, .detect = DX_GPIO_DETECT_LOW}; + +/**************************************************************************************** + * Binding sets + ****************************************************************************************/ +DX_DEVICE_TWIN_BINDING *device_twin_bindings[] = {&dt_desired_sample_rate_ms, + &dt_telemetry_tx_period_s}; +static DX_DIRECT_METHOD_BINDING *direct_method_bindings[] = {}; +static DX_GPIO_BINDING *gpio_bindings[] = {&buttonA, &buttonB}; +static DX_TIMER_BINDING *timer_bindings[] = {&readSensorTimer, &sendTelemetryTimer, &buttonPressCheckTimer}; +static DX_PWM_BINDING *pwm_bindings[] = {&pwm_red_led, &pwm_green_led, &pwm_blue_led}; diff --git a/avnet_sk_demo/AzureSphereDevX b/avnet_sk_demo/AzureSphereDevX index 32fb212..e3c6c22 160000 --- a/avnet_sk_demo/AzureSphereDevX +++ b/avnet_sk_demo/AzureSphereDevX @@ -1 +1 @@ -Subproject commit 32fb212aa73d764f2602e2e2624929972af6c003 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/avnet_sk_demo/build_options.h b/avnet_sk_demo/build_options.h index 4630d19..4253dda 100644 --- a/avnet_sk_demo/build_options.h +++ b/avnet_sk_demo/build_options.h @@ -22,7 +22,6 @@ // If this is a IoT Conect build, make sure to enable the IOT Hub application code #ifdef USE_IOT_CONNECT #define IOT_HUB_APPLICATION -#define IOT_CONNECT_API_VERSION 1 #undef USE_PNP // Disable PNP device twins responses #endif diff --git a/avnet_sk_demo/main.c b/avnet_sk_demo/main.c index 5afc05d..49ff985 100644 --- a/avnet_sk_demo/main.c +++ b/avnet_sk_demo/main.c @@ -112,8 +112,7 @@ static void publish_message_handler(void) #ifdef USE_DEVX_SERIALIZATION // Serialize telemetry as JSON -#ifdef USE_IOT_CONNECT - bool serialization_result = dx_avnetJsonSerialize(avtMsgBuffer, sizeof(avtMsgBuffer), NULL, 11, + bool serialization_result = dx_jsonSerialize(msgBuffer, sizeof(msgBuffer), 11, DX_JSON_DOUBLE, "gX", acceleration_g.x, DX_JSON_DOUBLE, "gY", acceleration_g.y, DX_JSON_DOUBLE, "gZ", acceleration_g.z, @@ -128,27 +127,14 @@ static void publish_message_handler(void) if (serialization_result) { - Log_Debug("%s\n", avtMsgBuffer); - dx_azurePublish(avtMsgBuffer, strlen(avtMsgBuffer), messageProperties, NELEMS(messageProperties), &contentProperties); + Log_Debug("%s\n", msgBuffer); -#else // ! IoT Connect +#ifdef USE_IOT_CONNECT - bool serialization_result = dx_jsonSerialize(msgBuffer, sizeof(msgBuffer), 11, - DX_JSON_DOUBLE, "gX", acceleration_g.x, - DX_JSON_DOUBLE, "gY", acceleration_g.y, - DX_JSON_DOUBLE, "gZ", acceleration_g.z, - DX_JSON_DOUBLE, "aX", angular_rate_dps.x, - DX_JSON_DOUBLE, "aY", angular_rate_dps.y, - DX_JSON_DOUBLE, "aZ", angular_rate_dps.z, - DX_JSON_DOUBLE, "pressure", pressure_hPa, - DX_JSON_DOUBLE, "light_intensity", light_sensor, - DX_JSON_DOUBLE, "altitude", altitude, - DX_JSON_DOUBLE, "temp", lsm6dso_temperature, - DX_JSON_INT, "rssi", network_data.rssi); + dx_avnetPublish(msgBuffer, strlen(msgBuffer), messageProperties, NELEMS(messageProperties), &contentProperties, NULL); - if (serialization_result) { +#else // ! IoT Connect - Log_Debug("%s\n", msgBuffer); dx_azurePublish(msgBuffer, strlen(msgBuffer), messageProperties, NELEMS(messageProperties), &contentProperties); #endif // USE_IOT_CONNECT @@ -166,16 +152,16 @@ static void publish_message_handler(void) angular_rate_dps.y, angular_rate_dps.z, pressure_hPa, light_sensor, altitude, lsm6dso_temperature, network_data.rssi); + Log_Debug("%s\n", msgBuffer); + #ifdef USE_IOT_CONNECT - // Add the IoTConnect metadata to the seralized telemetry - dx_avnetJsonSerializePayload(msgBuffer, avtMsgBuffer, sizeof(avtMsgBuffer), NULL); - Log_Debug("%s\n", avtMsgBuffer); - dx_azurePublish(avtMsgBuffer, strlen(avtMsgBuffer), messageProperties, NELEMS(messageProperties), &contentProperties); + dx_avnetPublish(msgBuffer, strlen(msgBuffer), messageProperties, NELEMS(messageProperties), &contentProperties, NULL); #else // !USE_IOT_CONNECt - Log_Debug("%s\n", msgBuffer); + dx_azurePublish(msgBuffer, strlen(msgBuffer), messageProperties, NELEMS(messageProperties), &contentProperties); + #endif // USE_IOT_CONNECT #endif // // !USE_DEVX_SERIALIZATION } @@ -525,8 +511,17 @@ static void SendButtonTelemetry(const char* telemetry_key, GPIO_Value_Type butto if (serialization_result) { Log_Debug("%s\n", msgBuffer); + +#ifdef USE_IOT_CONNECT + + dx_avnetPublish(msgBuffer, strlen(msgBuffer), messageProperties, NELEMS(messageProperties), &contentProperties, NULL); + +#else // !USE_IOT_CONNECT + dx_azurePublish(msgBuffer, strlen(msgBuffer), messageProperties, NELEMS(messageProperties), &contentProperties); +#endif // USE_IOT_CONNECT + } else { Log_Debug("JSON Serialization failed\n"); } @@ -569,18 +564,18 @@ switch (messageData->cmd) { break; case IC_READ_SENSOR_RESPOND_WITH_TELEMETRY: Log_Debug("IC_READ_SENSOR_RESPOND_WITH_TELEMETRY\n"); -// Log_Debug("%s\n", messageData->telemetryJSON); + Log_Debug("%s\n", messageData->telemetryJSON); #ifdef IOT_HUB_APPLICATION #ifdef USE_IOT_CONNECT - // Add the IoTConnect metadata to the seralized telemetry - dx_avnetJsonSerializePayload(messageData->telemetryJSON, avtMsgBuffer, sizeof(avtMsgBuffer), NULL); - Log_Debug("%s\n", avtMsgBuffer); - dx_azurePublish(avtMsgBuffer, strlen(avtMsgBuffer), messageProperties, NELEMS(messageProperties), &contentProperties); + + dx_avnetPublish(messageData->telemetryJSON, strlen(messageData->telemetryJSON), messageProperties, NELEMS(messageProperties), &contentProperties, NULL); #else // !USE_IOT_CONNECT - Log_Debug("%s\n", messageData->telemetryJSON); - dx_azurePublish(messageData->telemetryJSON, strlen(messageData->telemetryJSON), messageProperties, NELEMS(messageProperties), &contentProperties); + + Log_Debug("%s\n", messageData->telemetryJSON); + dx_azurePublish(messageData->telemetryJSON, strlen(messageData->telemetryJSON), messageProperties, NELEMS(messageProperties), &contentProperties); + #endif // USE_IOT_CONNECT #endif // IOT_HUB_APPLICATION @@ -609,6 +604,7 @@ static void InitPeripheralsAndHandlers(void) #ifdef IOT_HUB_APPLICATION #ifdef USE_IOT_CONNECT + //dx_avnetSetDebugLevel(AVT_DEBUG_LEVEL_VERBOSE); dx_avnetConnect(&dx_config, NETWORK_INTERFACE); #else // not Avnet IoTConnect dx_azureConnect(&dx_config, NETWORK_INTERFACE, IOT_PLUG_AND_PLAY_MODEL_ID); diff --git a/avnet_sk_demo/main.h b/avnet_sk_demo/main.h index 7e8860e..7ca6f72 100644 --- a/avnet_sk_demo/main.h +++ b/avnet_sk_demo/main.h @@ -76,9 +76,6 @@ DX_USER_CONFIG dx_config; #ifdef IOT_HUB_APPLICATION static char msgBuffer[JSON_MESSAGE_BYTES] = {0}; #endif // IOT_HUB_APPLICATION -#ifdef USE_IOT_CONNECT -static char avtMsgBuffer[JSON_MESSAGE_BYTES + DX_AVNET_IOT_CONNECT_METADATA] = {0}; -#endif //USE_IOT_CONNECT #ifdef IOT_HUB_APPLICATION static DX_MESSAGE_PROPERTY *messageProperties[] = {&(DX_MESSAGE_PROPERTY){.key = "appid", .value = "SK-Demo"}, diff --git a/azure_end_to_end/AzureSphereDevX b/azure_end_to_end/AzureSphereDevX index 32fb212..e3c6c22 160000 --- a/azure_end_to_end/AzureSphereDevX +++ b/azure_end_to_end/AzureSphereDevX @@ -1 +1 @@ -Subproject commit 32fb212aa73d764f2602e2e2624929972af6c003 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/azure_send_message/AzureSphereDevX b/azure_send_message/AzureSphereDevX index 32fb212..e3c6c22 160000 --- a/azure_send_message/AzureSphereDevX +++ b/azure_send_message/AzureSphereDevX @@ -1 +1 @@ -Subproject commit 32fb212aa73d764f2602e2e2624929972af6c003 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/deferred_update/AzureSphereDevX b/deferred_update/AzureSphereDevX index 32fb212..e3c6c22 160000 --- a/deferred_update/AzureSphereDevX +++ b/deferred_update/AzureSphereDevX @@ -1 +1 @@ -Subproject commit 32fb212aa73d764f2602e2e2624929972af6c003 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/device_twins/AzureSphereDevX b/device_twins/AzureSphereDevX index 32fb212..e3c6c22 160000 --- a/device_twins/AzureSphereDevX +++ b/device_twins/AzureSphereDevX @@ -1 +1 @@ -Subproject commit 32fb212aa73d764f2602e2e2624929972af6c003 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/device_twins_json_object/AzureSphereDevX b/device_twins_json_object/AzureSphereDevX index 32fb212..e3c6c22 160000 --- a/device_twins_json_object/AzureSphereDevX +++ b/device_twins_json_object/AzureSphereDevX @@ -1 +1 @@ -Subproject commit 32fb212aa73d764f2602e2e2624929972af6c003 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/direct_methods/AzureSphereDevX b/direct_methods/AzureSphereDevX index 32fb212..e3c6c22 160000 --- a/direct_methods/AzureSphereDevX +++ b/direct_methods/AzureSphereDevX @@ -1 +1 @@ -Subproject commit 32fb212aa73d764f2602e2e2624929972af6c003 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/error_reporting/AzureSphereDevX b/error_reporting/AzureSphereDevX index 32fb212..e3c6c22 160000 --- a/error_reporting/AzureSphereDevX +++ b/error_reporting/AzureSphereDevX @@ -1 +1 @@ -Subproject commit 32fb212aa73d764f2602e2e2624929972af6c003 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/gpio_example/AzureSphereDevX b/gpio_example/AzureSphereDevX index 32fb212..e3c6c22 160000 --- a/gpio_example/AzureSphereDevX +++ b/gpio_example/AzureSphereDevX @@ -1 +1 @@ -Subproject commit 32fb212aa73d764f2602e2e2624929972af6c003 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/intercore_example/HighLevelApp/AzureSphereDevX b/intercore_example/HighLevelApp/AzureSphereDevX index 32fb212..e3c6c22 160000 --- a/intercore_example/HighLevelApp/AzureSphereDevX +++ b/intercore_example/HighLevelApp/AzureSphereDevX @@ -1 +1 @@ -Subproject commit 32fb212aa73d764f2602e2e2624929972af6c003 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/intercore_generic_example/AzureSphereDevX b/intercore_generic_example/AzureSphereDevX index 32fb212..e3c6c22 160000 --- a/intercore_generic_example/AzureSphereDevX +++ b/intercore_generic_example/AzureSphereDevX @@ -1 +1 @@ -Subproject commit 32fb212aa73d764f2602e2e2624929972af6c003 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/little_fs_on_mutable_storage/AzureSphereDevX b/little_fs_on_mutable_storage/AzureSphereDevX index 32fb212..e3c6c22 160000 --- a/little_fs_on_mutable_storage/AzureSphereDevX +++ b/little_fs_on_mutable_storage/AzureSphereDevX @@ -1 +1 @@ -Subproject commit 32fb212aa73d764f2602e2e2624929972af6c003 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/little_fs_on_mutable_storage/littlefs b/little_fs_on_mutable_storage/littlefs index ead5080..9c7e232 160000 --- a/little_fs_on_mutable_storage/littlefs +++ b/little_fs_on_mutable_storage/littlefs @@ -1 +1 @@ -Subproject commit ead50807f1ca3fdf2da00b77a0ce02651ded2d13 +Subproject commit 9c7e232086f865cff0bb96fe753deb66431d91fd diff --git a/monitor_memory_usage/AzureSphereDevX b/monitor_memory_usage/AzureSphereDevX index 32fb212..e3c6c22 160000 --- a/monitor_memory_usage/AzureSphereDevX +++ b/monitor_memory_usage/AzureSphereDevX @@ -1 +1 @@ -Subproject commit 32fb212aa73d764f2602e2e2624929972af6c003 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/monitor_memory_usage/main.c b/monitor_memory_usage/main.c index 269d10d..7dc0154 100644 --- a/monitor_memory_usage/main.c +++ b/monitor_memory_usage/main.c @@ -101,17 +101,18 @@ static DX_TIMER_HANDLER(monitor_memory_handler) Log_Debug("New Memory High Water Mark: %d Kb\n", newMemoryHighWaterMark); // Serialize telemetry as JSON -#ifdef USE_AVNET_IOTCONNECT - bool serialization_result = dx_avnetJsonSerialize(msgBuffer, sizeof(msgBuffer), NULL, 1, - DX_JSON_INT, "MemoryHighWaterMark", newMemoryHighWaterMark); -#else bool serialization_result = dx_jsonSerialize(msgBuffer, sizeof(msgBuffer), 1, DX_JSON_INT, "MemoryHighWaterMark", newMemoryHighWaterMark); -#endif if (serialization_result) { Log_Debug("%s\n", msgBuffer); - dx_azurePublish(msgBuffer, strlen(msgBuffer), memoryMessageProperties, NELEMS(memoryMessageProperties), &contentProperties); +#ifdef USE_AVNET_IOTCONNECT + + dx_avnetPublish(msgBuffer, strlen(msgBuffer), memoryMessageProperties, NELEMS(memoryMessageProperties), &contentProperties, NULL); +#else + dx_azurePublish(msgBuffer, strlen(msgBuffer), memoryMessageProperties, NELEMS(memoryMessageProperties), &contentProperties); + +#endif } else { Log_Debug("JSON Serialization failed: Buffer too small\n"); } @@ -126,6 +127,7 @@ DX_TIMER_HANDLER_END static void InitPeripheralsAndHandlers(void) { #ifdef USE_AVNET_IOTCONNECT + dx_avnetSetDebugLevel(AVT_DEBUG_LEVEL_INFO); dx_avnetConnect(&dx_config, NETWORK_INTERFACE); #else dx_azureConnect(&dx_config, NETWORK_INTERFACE, IOT_PLUG_AND_PLAY_MODEL_ID); diff --git a/monitor_memory_usage/main.h b/monitor_memory_usage/main.h index 4541528..d3a8b2a 100644 --- a/monitor_memory_usage/main.h +++ b/monitor_memory_usage/main.h @@ -8,6 +8,7 @@ #include "dx_timer.h" #include "dx_utilities.h" #include "dx_version.h" +#include "dx_avnet_iot_connect.h" #include #include @@ -27,7 +28,7 @@ DX_USER_CONFIG dx_config; ****************************************************************************************/ // TODO: If the application will connect to Avnet's IoTConnect platform enable the // #define below -// #define USE_AVNET_IOTCONNECT +//#define USE_AVNET_IOTCONNECT /**************************************************************************************** * Application defines diff --git a/pwm_click_buzz/AzureSphereDevX b/pwm_click_buzz/AzureSphereDevX index 32fb212..e3c6c22 160000 --- a/pwm_click_buzz/AzureSphereDevX +++ b/pwm_click_buzz/AzureSphereDevX @@ -1 +1 @@ -Subproject commit 32fb212aa73d764f2602e2e2624929972af6c003 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/pwm_example/AzureSphereDevX b/pwm_example/AzureSphereDevX index 32fb212..e3c6c22 160000 --- a/pwm_example/AzureSphereDevX +++ b/pwm_example/AzureSphereDevX @@ -1 +1 @@ -Subproject commit 32fb212aa73d764f2602e2e2624929972af6c003 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/starter_project/AzureSphereDevX b/starter_project/AzureSphereDevX index 32fb212..e3c6c22 160000 --- a/starter_project/AzureSphereDevX +++ b/starter_project/AzureSphereDevX @@ -1 +1 @@ -Subproject commit 32fb212aa73d764f2602e2e2624929972af6c003 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/timer_example/AzureSphereDevX b/timer_example/AzureSphereDevX index 32fb212..e3c6c22 160000 --- a/timer_example/AzureSphereDevX +++ b/timer_example/AzureSphereDevX @@ -1 +1 @@ -Subproject commit 32fb212aa73d764f2602e2e2624929972af6c003 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75 diff --git a/uart_example/AzureSphereDevX b/uart_example/AzureSphereDevX index 32fb212..e3c6c22 160000 --- a/uart_example/AzureSphereDevX +++ b/uart_example/AzureSphereDevX @@ -1 +1 @@ -Subproject commit 32fb212aa73d764f2602e2e2624929972af6c003 +Subproject commit e3c6c2232621fd13059f4fd91791bfcb0f526b75