Sync Arduino libraries with latest Azure IoT SDK 1.0.46
This commit is contained in:
Родитель
fefc50279f
Коммит
72ff629687
|
@ -1,14 +0,0 @@
|
|||
---
|
||||
name: General Issue
|
||||
about: Learn where to submit issues
|
||||
title: DO NOT SUBMIT ISSUES TO THIS REPOSITORY
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Hello! Thank you for submitting an issue to our repository. **HOWEVER**, don't do it here. We don't monitor this repository, and all the files are autogenerated so any issues submitted here will be in vain.
|
||||
|
||||
Please submit your issue to the [azure-iot-sdk-c repo](https://github.com/Azure/azure-iot-sdk-c), and add "Arduino PAL" in the issue title.
|
||||
|
||||
Thanks!
|
21
LICENSE
21
LICENSE
|
@ -1,21 +0,0 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2019 Microsoft
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
|
@ -1,4 +0,0 @@
|
|||
### simplesample_http
|
||||
|
||||
Instructions for this sample are
|
||||
[here in the Azure IoT HTTP protocol library for Arduino.](https://github.com/Azure/azure-iot-arduino-protocol-http)
|
|
@ -1,26 +0,0 @@
|
|||
// Copyright (c) Microsoft. All rights reserved.
|
||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
#ifndef IOT_CONFIGS_H
|
||||
#define IOT_CONFIGS_H
|
||||
|
||||
/**
|
||||
* WiFi setup
|
||||
*/
|
||||
#define IOT_CONFIG_WIFI_SSID "<Your WiFi network SSID or name>"
|
||||
#define IOT_CONFIG_WIFI_PASSWORD "<Your WiFi network WPA password or WEP key>"
|
||||
|
||||
/**
|
||||
* Find under Microsoft Azure IoT Suite -> DEVICES -> <your device> -> Device Details and Authentication Keys
|
||||
* String containing Hostname, Device Id & Device Key in the format:
|
||||
* "HostName=<host_name>;DeviceId=<device_id>;SharedAccessKey=<device_key>"
|
||||
*/
|
||||
#define IOT_CONFIG_CONNECTION_STRING "HostName=<host_name>.azure-devices.net;DeviceId=<device_id>;SharedAccessKey=<device_key>"
|
||||
|
||||
/**
|
||||
* Choose the transport protocol
|
||||
*/
|
||||
// #define IOT_CONFIG_MQTT // uncomment this line for MQTT
|
||||
#define IOT_CONFIG_HTTP // uncomment this line for HTTP
|
||||
|
||||
#endif /* IOT_CONFIGS_H */
|
|
@ -1,17 +0,0 @@
|
|||
// Copyright (c) Microsoft. All rights reserved.
|
||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
#ifndef SAMPLE_H
|
||||
#define SAMPLE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void sample_run(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* SAMPLE_H */
|
|
@ -1,250 +0,0 @@
|
|||
// Copyright (c) Microsoft. All rights reserved.
|
||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include "iot_configs.h"
|
||||
#include "sample.h"
|
||||
|
||||
#include "AzureIoTHub.h"
|
||||
|
||||
/*String containing Hostname, Device Id & Device Key in the format: */
|
||||
/* "HostName=<host_name>;DeviceId=<device_id>;SharedAccessKey=<device_key>" */
|
||||
static const char* connectionString = IOT_CONFIG_CONNECTION_STRING;
|
||||
|
||||
// Define the Model
|
||||
BEGIN_NAMESPACE(WeatherStation);
|
||||
|
||||
DECLARE_MODEL(ContosoAnemometer,
|
||||
WITH_DATA(ascii_char_ptr, DeviceId),
|
||||
WITH_DATA(int, WindSpeed),
|
||||
WITH_DATA(float, Temperature),
|
||||
WITH_DATA(float, Humidity),
|
||||
WITH_ACTION(TurnFanOn),
|
||||
WITH_ACTION(TurnFanOff),
|
||||
WITH_ACTION(SetAirResistance, int, Position)
|
||||
);
|
||||
|
||||
END_NAMESPACE(WeatherStation);
|
||||
|
||||
static char propText[1024];
|
||||
|
||||
EXECUTE_COMMAND_RESULT TurnFanOn(ContosoAnemometer* device)
|
||||
{
|
||||
(void)device;
|
||||
(void)printf("Turning fan on.\r\n");
|
||||
return EXECUTE_COMMAND_SUCCESS;
|
||||
}
|
||||
|
||||
EXECUTE_COMMAND_RESULT TurnFanOff(ContosoAnemometer* device)
|
||||
{
|
||||
(void)device;
|
||||
(void)printf("Turning fan off.\r\n");
|
||||
return EXECUTE_COMMAND_SUCCESS;
|
||||
}
|
||||
|
||||
EXECUTE_COMMAND_RESULT SetAirResistance(ContosoAnemometer* device, int Position)
|
||||
{
|
||||
(void)device;
|
||||
(void)printf("Setting Air Resistance Position to %d.\r\n", Position);
|
||||
return EXECUTE_COMMAND_SUCCESS;
|
||||
}
|
||||
|
||||
void sendCallback(IOTHUB_CLIENT_CONFIRMATION_RESULT result, void* userContextCallback)
|
||||
{
|
||||
unsigned int messageTrackingId = (unsigned int)(uintptr_t)userContextCallback;
|
||||
|
||||
(void)printf("Message Id: %u Received.\r\n", messageTrackingId);
|
||||
|
||||
(void)printf("Result Call Back Called! Result is: %s \r\n", ENUM_TO_STRING(IOTHUB_CLIENT_CONFIRMATION_RESULT, result));
|
||||
}
|
||||
|
||||
static void sendMessage(IOTHUB_CLIENT_LL_HANDLE iotHubClientHandle, const unsigned char* buffer, size_t size)
|
||||
{
|
||||
static unsigned int messageTrackingId;
|
||||
IOTHUB_MESSAGE_HANDLE messageHandle = IoTHubMessage_CreateFromByteArray(buffer, size);
|
||||
if (messageHandle == NULL)
|
||||
{
|
||||
printf("unable to create a new IoTHubMessage\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (IoTHubClient_LL_SendEventAsync(iotHubClientHandle, messageHandle, sendCallback, (void*)(uintptr_t)messageTrackingId) != IOTHUB_CLIENT_OK)
|
||||
{
|
||||
printf("failed to hand over the message to IoTHubClient");
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("IoTHubClient accepted the message for delivery\r\n");
|
||||
}
|
||||
IoTHubMessage_Destroy(messageHandle);
|
||||
}
|
||||
free((void*)buffer);
|
||||
messageTrackingId++;
|
||||
}
|
||||
|
||||
/*this function "links" IoTHub to the serialization library*/
|
||||
static IOTHUBMESSAGE_DISPOSITION_RESULT IoTHubMessage(IOTHUB_MESSAGE_HANDLE message, void* userContextCallback)
|
||||
{
|
||||
IOTHUBMESSAGE_DISPOSITION_RESULT result;
|
||||
const unsigned char* buffer;
|
||||
size_t size;
|
||||
if (IoTHubMessage_GetByteArray(message, &buffer, &size) != IOTHUB_MESSAGE_OK)
|
||||
{
|
||||
printf("unable to IoTHubMessage_GetByteArray\r\n");
|
||||
result = IOTHUBMESSAGE_ABANDONED;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*buffer is not zero terminated*/
|
||||
char* temp = malloc(size + 1);
|
||||
if (temp == NULL)
|
||||
{
|
||||
printf("failed to malloc\r\n");
|
||||
result = IOTHUBMESSAGE_ABANDONED;
|
||||
}
|
||||
else
|
||||
{
|
||||
EXECUTE_COMMAND_RESULT executeCommandResult;
|
||||
|
||||
(void)memcpy(temp, buffer, size);
|
||||
temp[size] = '\0';
|
||||
executeCommandResult = EXECUTE_COMMAND(userContextCallback, temp);
|
||||
result =
|
||||
(executeCommandResult == EXECUTE_COMMAND_ERROR) ? IOTHUBMESSAGE_ABANDONED :
|
||||
(executeCommandResult == EXECUTE_COMMAND_SUCCESS) ? IOTHUBMESSAGE_ACCEPTED :
|
||||
IOTHUBMESSAGE_REJECTED;
|
||||
free(temp);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void simplesample_http_run(void)
|
||||
{
|
||||
if (platform_init() != 0)
|
||||
{
|
||||
printf("Failed to initialize the platform.\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (serializer_init(NULL) != SERIALIZER_OK)
|
||||
{
|
||||
(void)printf("Failed on serializer_init\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
IOTHUB_CLIENT_LL_HANDLE iotHubClientHandle = IoTHubClient_LL_CreateFromConnectionString(connectionString, HTTP_Protocol);
|
||||
int avgWindSpeed = 10;
|
||||
float minTemperature = 20.0;
|
||||
float minHumidity = 60.0;
|
||||
|
||||
srand((unsigned int)time(NULL));
|
||||
|
||||
if (iotHubClientHandle == NULL)
|
||||
{
|
||||
(void)printf("Failed on IoTHubClient_LL_Create\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
// Because it can poll "after 9 seconds" polls will happen
|
||||
// effectively at ~10 seconds.
|
||||
// Note that for scalabilty, the default value of minimumPollingTime
|
||||
// is 25 minutes. For more information, see:
|
||||
// https://azure.microsoft.com/documentation/articles/iot-hub-devguide/#messaging
|
||||
unsigned int minimumPollingTime = 9;
|
||||
ContosoAnemometer* myWeather;
|
||||
|
||||
if (IoTHubClient_LL_SetOption(iotHubClientHandle, "MinimumPollingTime", &minimumPollingTime) != IOTHUB_CLIENT_OK)
|
||||
{
|
||||
printf("failure to set option \"MinimumPollingTime\"\r\n");
|
||||
}
|
||||
|
||||
#ifdef SET_TRUSTED_CERT_IN_SAMPLES
|
||||
// For mbed add the certificate information
|
||||
if (IoTHubClient_LL_SetOption(iotHubClientHandle, "TrustedCerts", certificates) != IOTHUB_CLIENT_OK)
|
||||
{
|
||||
(void)printf("failure to set option \"TrustedCerts\"\r\n");
|
||||
}
|
||||
#endif // SET_TRUSTED_CERT_IN_SAMPLES
|
||||
|
||||
myWeather = CREATE_MODEL_INSTANCE(WeatherStation, ContosoAnemometer);
|
||||
if (myWeather == NULL)
|
||||
{
|
||||
(void)printf("Failed on CREATE_MODEL_INSTANCE\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (IoTHubClient_LL_SetMessageCallback(iotHubClientHandle, IoTHubMessage, myWeather) != IOTHUB_CLIENT_OK)
|
||||
{
|
||||
printf("unable to IoTHubClient_SetMessageCallback\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
myWeather->DeviceId = "myFirstDevice";
|
||||
myWeather->WindSpeed = avgWindSpeed + (rand() % 4 + 2);
|
||||
myWeather->Temperature = minTemperature + (rand() % 10);
|
||||
myWeather->Humidity = minHumidity + (rand() % 20);
|
||||
{
|
||||
unsigned char* destination;
|
||||
size_t destinationSize;
|
||||
if (SERIALIZE(&destination, &destinationSize, myWeather->DeviceId, myWeather->WindSpeed, myWeather->Temperature, myWeather->Humidity) != CODEFIRST_OK)
|
||||
{
|
||||
(void)printf("Failed to serialize\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
IOTHUB_MESSAGE_HANDLE messageHandle = IoTHubMessage_CreateFromByteArray(destination, destinationSize);
|
||||
if (messageHandle == NULL)
|
||||
{
|
||||
printf("unable to create a new IoTHubMessage\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
MAP_HANDLE propMap = IoTHubMessage_Properties(messageHandle);
|
||||
(void)sprintf_s(propText, sizeof(propText), myWeather->Temperature > 28 ? "true" : "false");
|
||||
if (Map_AddOrUpdate(propMap, "temperatureAlert", propText) != MAP_OK)
|
||||
{
|
||||
printf("ERROR: Map_AddOrUpdate Failed!\r\n");
|
||||
}
|
||||
|
||||
if (IoTHubClient_LL_SendEventAsync(iotHubClientHandle, messageHandle, sendCallback, (void*)1) != IOTHUB_CLIENT_OK)
|
||||
{
|
||||
printf("failed to hand over the message to IoTHubClient");
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("IoTHubClient accepted the message for delivery\r\n");
|
||||
}
|
||||
|
||||
IoTHubMessage_Destroy(messageHandle);
|
||||
}
|
||||
free(destination);
|
||||
}
|
||||
}
|
||||
|
||||
/* wait for commands */
|
||||
while (1)
|
||||
{
|
||||
IoTHubClient_LL_DoWork(iotHubClientHandle);
|
||||
ThreadAPI_Sleep(100);
|
||||
}
|
||||
}
|
||||
|
||||
DESTROY_MODEL_INSTANCE(myWeather);
|
||||
}
|
||||
IoTHubClient_LL_Destroy(iotHubClientHandle);
|
||||
}
|
||||
serializer_deinit();
|
||||
}
|
||||
platform_deinit();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void sample_run(void)
|
||||
{
|
||||
simplesample_http_run();
|
||||
}
|
|
@ -1,43 +0,0 @@
|
|||
// Copyright (c) Microsoft. All rights reserved.
|
||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
// Please use an Arduino IDE 1.6.8 or greater
|
||||
|
||||
// You must set the device id, device key, IoT Hub name and IotHub suffix in
|
||||
// iot_configs.h
|
||||
#include "iot_configs.h"
|
||||
|
||||
#include <AzureIoTHub.h>
|
||||
#if defined(IOT_CONFIG_MQTT)
|
||||
#include <AzureIoTProtocol_MQTT.h>
|
||||
#elif defined(IOT_CONFIG_HTTP)
|
||||
#include <AzureIoTProtocol_HTTP.h>
|
||||
#endif
|
||||
|
||||
#include "sample.h"
|
||||
#include "esp8266/sample_init.h"
|
||||
|
||||
static char ssid[] = IOT_CONFIG_WIFI_SSID;
|
||||
static char pass[] = IOT_CONFIG_WIFI_PASSWORD;
|
||||
|
||||
void setup() {
|
||||
sample_init(ssid, pass);
|
||||
}
|
||||
|
||||
// Azure IoT samples contain their own loops, so only run them once
|
||||
static bool done = false;
|
||||
void loop() {
|
||||
if (!done)
|
||||
{
|
||||
// Run the sample
|
||||
// You must set the device id, device key, IoT Hub name and IotHub suffix in
|
||||
// iot_configs.h
|
||||
sample_run();
|
||||
done = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
delay(500);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
### simplesample_http
|
||||
|
||||
Instructions for this sample are
|
||||
[here in the Azure IoT HTTP protocol library for Arduino.](https://github.com/Azure/azure-iot-arduino-protocol-http)
|
|
@ -1,26 +0,0 @@
|
|||
// Copyright (c) Microsoft. All rights reserved.
|
||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
#ifndef IOT_CONFIGS_H
|
||||
#define IOT_CONFIGS_H
|
||||
|
||||
/**
|
||||
* WiFi setup
|
||||
*/
|
||||
#define IOT_CONFIG_WIFI_SSID "<Your WiFi network SSID or name>"
|
||||
#define IOT_CONFIG_WIFI_PASSWORD "<Your WiFi network WPA password or WEP key>"
|
||||
|
||||
/**
|
||||
* Find under Microsoft Azure IoT Suite -> DEVICES -> <your device> -> Device Details and Authentication Keys
|
||||
* String containing Hostname, Device Id & Device Key in the format:
|
||||
* "HostName=<host_name>;DeviceId=<device_id>;SharedAccessKey=<device_key>"
|
||||
*/
|
||||
#define IOT_CONFIG_CONNECTION_STRING "HostName=<host_name>.azure-devices.net;DeviceId=<device_id>;SharedAccessKey=<device_key>"
|
||||
|
||||
/**
|
||||
* Choose the transport protocol
|
||||
*/
|
||||
// #define IOT_CONFIG_MQTT // uncomment this line for MQTT
|
||||
#define IOT_CONFIG_HTTP // uncomment this line for HTTP
|
||||
|
||||
#endif /* IOT_CONFIGS_H */
|
|
@ -1,17 +0,0 @@
|
|||
// Copyright (c) Microsoft. All rights reserved.
|
||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
#ifndef SAMPLE_H
|
||||
#define SAMPLE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void sample_run(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* SAMPLE_H */
|
|
@ -1,255 +0,0 @@
|
|||
// Copyright (c) Microsoft. All rights reserved.
|
||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include "iot_configs.h"
|
||||
|
||||
/* This sample uses the _LL APIs of iothub_client for example purposes.
|
||||
That does not mean that HTTP only works with the _LL APIs.
|
||||
Simply changing the using the convenience layer (functions not having _LL)
|
||||
and removing calls to _DoWork will yield the same results. */
|
||||
|
||||
#include "AzureIoTHub.h"
|
||||
|
||||
|
||||
/*String containing Hostname, Device Id & Device Key in the format: */
|
||||
/* "HostName=<host_name>;DeviceId=<device_id>;SharedAccessKey=<device_key>" */
|
||||
static const char* connectionString = IOT_CONFIG_CONNECTION_STRING;
|
||||
|
||||
// Define the Model
|
||||
BEGIN_NAMESPACE(WeatherStation);
|
||||
|
||||
DECLARE_MODEL(ContosoAnemometer,
|
||||
WITH_DATA(ascii_char_ptr, DeviceId),
|
||||
WITH_DATA(int, WindSpeed),
|
||||
WITH_DATA(float, Temperature),
|
||||
WITH_DATA(float, Humidity),
|
||||
WITH_ACTION(TurnFanOn),
|
||||
WITH_ACTION(TurnFanOff),
|
||||
WITH_ACTION(SetAirResistance, int, Position)
|
||||
);
|
||||
|
||||
END_NAMESPACE(WeatherStation);
|
||||
|
||||
static char propText[1024];
|
||||
|
||||
EXECUTE_COMMAND_RESULT TurnFanOn(ContosoAnemometer* device)
|
||||
{
|
||||
(void)device;
|
||||
(void)printf("Turning fan on.\r\n");
|
||||
return EXECUTE_COMMAND_SUCCESS;
|
||||
}
|
||||
|
||||
EXECUTE_COMMAND_RESULT TurnFanOff(ContosoAnemometer* device)
|
||||
{
|
||||
(void)device;
|
||||
(void)printf("Turning fan off.\r\n");
|
||||
return EXECUTE_COMMAND_SUCCESS;
|
||||
}
|
||||
|
||||
EXECUTE_COMMAND_RESULT SetAirResistance(ContosoAnemometer* device, int Position)
|
||||
{
|
||||
(void)device;
|
||||
(void)printf("Setting Air Resistance Position to %d.\r\n", Position);
|
||||
return EXECUTE_COMMAND_SUCCESS;
|
||||
}
|
||||
|
||||
void sendCallback(IOTHUB_CLIENT_CONFIRMATION_RESULT result, void* userContextCallback)
|
||||
{
|
||||
unsigned int messageTrackingId = (unsigned int)(uintptr_t)userContextCallback;
|
||||
|
||||
(void)printf("Message Id: %u Received.\r\n", messageTrackingId);
|
||||
|
||||
(void)printf("Result Call Back Called! Result is: %s \r\n", ENUM_TO_STRING(IOTHUB_CLIENT_CONFIRMATION_RESULT, result));
|
||||
}
|
||||
|
||||
static void sendMessage(IOTHUB_CLIENT_LL_HANDLE iotHubClientHandle, const unsigned char* buffer, size_t size)
|
||||
{
|
||||
static unsigned int messageTrackingId;
|
||||
IOTHUB_MESSAGE_HANDLE messageHandle = IoTHubMessage_CreateFromByteArray(buffer, size);
|
||||
if (messageHandle == NULL)
|
||||
{
|
||||
printf("unable to create a new IoTHubMessage\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (IoTHubClient_LL_SendEventAsync(iotHubClientHandle, messageHandle, sendCallback, (void*)(uintptr_t)messageTrackingId) != IOTHUB_CLIENT_OK)
|
||||
{
|
||||
printf("failed to hand over the message to IoTHubClient");
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("IoTHubClient accepted the message for delivery\r\n");
|
||||
}
|
||||
IoTHubMessage_Destroy(messageHandle);
|
||||
}
|
||||
free((void*)buffer);
|
||||
messageTrackingId++;
|
||||
}
|
||||
|
||||
/*this function "links" IoTHub to the serialization library*/
|
||||
static IOTHUBMESSAGE_DISPOSITION_RESULT IoTHubMessage(IOTHUB_MESSAGE_HANDLE message, void* userContextCallback)
|
||||
{
|
||||
IOTHUBMESSAGE_DISPOSITION_RESULT result;
|
||||
const unsigned char* buffer;
|
||||
size_t size;
|
||||
if (IoTHubMessage_GetByteArray(message, &buffer, &size) != IOTHUB_MESSAGE_OK)
|
||||
{
|
||||
printf("unable to IoTHubMessage_GetByteArray\r\n");
|
||||
result = IOTHUBMESSAGE_ABANDONED;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*buffer is not zero terminated*/
|
||||
char* temp = malloc(size + 1);
|
||||
if (temp == NULL)
|
||||
{
|
||||
printf("failed to malloc\r\n");
|
||||
result = IOTHUBMESSAGE_ABANDONED;
|
||||
}
|
||||
else
|
||||
{
|
||||
EXECUTE_COMMAND_RESULT executeCommandResult;
|
||||
|
||||
(void)memcpy(temp, buffer, size);
|
||||
temp[size] = '\0';
|
||||
executeCommandResult = EXECUTE_COMMAND(userContextCallback, temp);
|
||||
result =
|
||||
(executeCommandResult == EXECUTE_COMMAND_ERROR) ? IOTHUBMESSAGE_ABANDONED :
|
||||
(executeCommandResult == EXECUTE_COMMAND_SUCCESS) ? IOTHUBMESSAGE_ACCEPTED :
|
||||
IOTHUBMESSAGE_REJECTED;
|
||||
free(temp);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void simplesample_http_run(void)
|
||||
{
|
||||
if (platform_init() != 0)
|
||||
{
|
||||
printf("Failed to initialize the platform.\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (serializer_init(NULL) != SERIALIZER_OK)
|
||||
{
|
||||
(void)printf("Failed on serializer_init\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
IOTHUB_CLIENT_LL_HANDLE iotHubClientHandle = IoTHubClient_LL_CreateFromConnectionString(connectionString, HTTP_Protocol);
|
||||
int avgWindSpeed = 10;
|
||||
float minTemperature = 20.0;
|
||||
float minHumidity = 60.0;
|
||||
|
||||
srand((unsigned int)time(NULL));
|
||||
|
||||
if (iotHubClientHandle == NULL)
|
||||
{
|
||||
(void)printf("Failed on IoTHubClient_LL_Create\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
// Because it can poll "after 9 seconds" polls will happen
|
||||
// effectively at ~10 seconds.
|
||||
// Note that for scalabilty, the default value of minimumPollingTime
|
||||
// is 25 minutes. For more information, see:
|
||||
// https://azure.microsoft.com/documentation/articles/iot-hub-devguide/#messaging
|
||||
unsigned int minimumPollingTime = 9;
|
||||
ContosoAnemometer* myWeather;
|
||||
|
||||
if (IoTHubClient_LL_SetOption(iotHubClientHandle, "MinimumPollingTime", &minimumPollingTime) != IOTHUB_CLIENT_OK)
|
||||
{
|
||||
printf("failure to set option \"MinimumPollingTime\"\r\n");
|
||||
}
|
||||
|
||||
#ifdef SET_TRUSTED_CERT_IN_SAMPLES
|
||||
// For mbed add the certificate information
|
||||
if (IoTHubClient_LL_SetOption(iotHubClientHandle, "TrustedCerts", certificates) != IOTHUB_CLIENT_OK)
|
||||
{
|
||||
(void)printf("failure to set option \"TrustedCerts\"\r\n");
|
||||
}
|
||||
#endif // SET_TRUSTED_CERT_IN_SAMPLES
|
||||
|
||||
myWeather = CREATE_MODEL_INSTANCE(WeatherStation, ContosoAnemometer);
|
||||
if (myWeather == NULL)
|
||||
{
|
||||
(void)printf("Failed on CREATE_MODEL_INSTANCE\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (IoTHubClient_LL_SetMessageCallback(iotHubClientHandle, IoTHubMessage, myWeather) != IOTHUB_CLIENT_OK)
|
||||
{
|
||||
printf("unable to IoTHubClient_SetMessageCallback\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
myWeather->DeviceId = "myFirstDevice";
|
||||
myWeather->WindSpeed = avgWindSpeed + (rand() % 4 + 2);
|
||||
myWeather->Temperature = minTemperature + (rand() % 10);
|
||||
myWeather->Humidity = minHumidity + (rand() % 20);
|
||||
{
|
||||
unsigned char* destination;
|
||||
size_t destinationSize;
|
||||
if (SERIALIZE(&destination, &destinationSize, myWeather->DeviceId, myWeather->WindSpeed, myWeather->Temperature, myWeather->Humidity) != CODEFIRST_OK)
|
||||
{
|
||||
(void)printf("Failed to serialize\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
IOTHUB_MESSAGE_HANDLE messageHandle = IoTHubMessage_CreateFromByteArray(destination, destinationSize);
|
||||
if (messageHandle == NULL)
|
||||
{
|
||||
printf("unable to create a new IoTHubMessage\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
MAP_HANDLE propMap = IoTHubMessage_Properties(messageHandle);
|
||||
(void)sprintf_s(propText, sizeof(propText), myWeather->Temperature > 28 ? "true" : "false");
|
||||
if (Map_AddOrUpdate(propMap, "temperatureAlert", propText) != MAP_OK)
|
||||
{
|
||||
printf("ERROR: Map_AddOrUpdate Failed!\r\n");
|
||||
}
|
||||
|
||||
if (IoTHubClient_LL_SendEventAsync(iotHubClientHandle, messageHandle, sendCallback, (void*)1) != IOTHUB_CLIENT_OK)
|
||||
{
|
||||
printf("failed to hand over the message to IoTHubClient");
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("IoTHubClient accepted the message for delivery\r\n");
|
||||
}
|
||||
|
||||
IoTHubMessage_Destroy(messageHandle);
|
||||
}
|
||||
free(destination);
|
||||
}
|
||||
}
|
||||
|
||||
/* wait for commands */
|
||||
while (1)
|
||||
{
|
||||
IoTHubClient_LL_DoWork(iotHubClientHandle);
|
||||
ThreadAPI_Sleep(100);
|
||||
}
|
||||
}
|
||||
|
||||
DESTROY_MODEL_INSTANCE(myWeather);
|
||||
}
|
||||
IoTHubClient_LL_Destroy(iotHubClientHandle);
|
||||
}
|
||||
serializer_deinit();
|
||||
}
|
||||
platform_deinit();
|
||||
}
|
||||
}
|
||||
|
||||
void sample_run(void)
|
||||
{
|
||||
simplesample_http_run();
|
||||
}
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
// Copyright (c) Microsoft. All rights reserved.
|
||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
#ifndef SIMPLESAMPLEHTTP_H
|
||||
#define SIMPLESAMPLEHTTP_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void simplesample_http_run(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* SIMPLESAMPLEHTTP_H */
|
|
@ -1,43 +0,0 @@
|
|||
// Copyright (c) Microsoft. All rights reserved.
|
||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
// Please use an Arduino IDE 1.6.8 or greater
|
||||
|
||||
// You must set the device id, device key, IoT Hub name and IotHub suffix in
|
||||
// iot_configs.h
|
||||
#include "iot_configs.h"
|
||||
|
||||
#include <AzureIoTHub.h>
|
||||
#if defined(IOT_CONFIG_MQTT)
|
||||
#include <AzureIoTProtocol_MQTT.h>
|
||||
#elif defined(IOT_CONFIG_HTTP)
|
||||
#include <AzureIoTProtocol_HTTP.h>
|
||||
#endif
|
||||
|
||||
#include "sample.h"
|
||||
#include "samd/sample_init.h"
|
||||
|
||||
static char ssid[] = IOT_CONFIG_WIFI_SSID;
|
||||
static char pass[] = IOT_CONFIG_WIFI_PASSWORD;
|
||||
|
||||
void setup() {
|
||||
sample_init(ssid, pass);
|
||||
}
|
||||
|
||||
// Azure IoT samples contain their own loops, so only run them once
|
||||
static bool done = false;
|
||||
void loop() {
|
||||
if (!done)
|
||||
{
|
||||
// Run the sample
|
||||
// You must set the device id, device key, IoT Hub name and IotHub suffix in
|
||||
// iot_configs.h
|
||||
sample_run();
|
||||
done = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
delay(500);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
#######################################
|
||||
# Syntax Coloring Map For WiFi
|
||||
# Syntax Coloring Map For AzreuoIoTProtocol_HTTP
|
||||
#######################################
|
||||
|
||||
#######################################
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
name=AzureIoTProtocol_HTTP
|
||||
version=1.0.45
|
||||
version=1.0.46
|
||||
author=Microsoft
|
||||
maintainer=Microsoft <iotcert@microsoft.com>
|
||||
sentence=Azure HTTP protocol library for Arduino. For the Arduino MKR1000 or Zero and WiFi Shield 101, Adafruit Huzzah and Feather M0, or SparkFun Thing.
|
||||
paragraph=Microsoft compact implementation of the HTTP protocol for small devices like Arduino. It allows you to use your Arduino with the Azure IoT Hub using HTTP as the transport protocol. See readme.md for more details. Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
category=Communication
|
||||
url=https://github.com/Azure/azure-iot-arduino-protocol-http
|
||||
architectures=samd,esp8266
|
||||
architectures=samd,esp8266,esp32
|
||||
|
|
|
@ -4,6 +4,6 @@
|
|||
#ifndef AZUREIOTPROTOCOLHTTP_H
|
||||
#define AZUREIOTPROTOCOLHTTP_H
|
||||
|
||||
#define AzureIoTProtocolHTTPVersion "1.0.45"
|
||||
#define AzureIoTProtocolHTTPVersion "1.0.46"
|
||||
|
||||
#endif //AZUREIOTPROTOCOLHTTP_H
|
||||
|
|
Загрузка…
Ссылка в новой задаче