-
Notifications
You must be signed in to change notification settings - Fork 120
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update documentation from JS comments #1381
Merged
Merged
Changes from all commits
Commits
Show all changes
29 commits
Select commit
Hold shift + click to select a range
bd76db8
docs iot README update
83e6fde
how to guides update
cb61589
docs iot README update
082c5a0
how to guides update
e547b1e
Merge branch 'momuno/doc-updates-js' of github.com:momuno/azure-sdk-f…
3696d0f
remove hub and provisioning mds. Add pseudo_code md. update readmes
fba1ee4
typo fix
87e5c1b
Update CMake instructions
f8ad6a4
typo fix
08ed710
Fix CMake instructions
2c0a7f3
Merge branch 'master' into momuno/doc-updates-js
5177c11
Updates per comments
113cbc6
naming update
d3c12d9
Merge branch 'master' into momuno/doc-updates-js
6e7f3fb
update naming
427abf6
fix link
dc89eef
fix link
0a96417
commit to kick of fresh testing
1de8c17
revert change
12e4150
build fix attempt
57fb698
build fix attempt
5a08664
Disable vcpkg caching to use the correct triplet.
ahsonkhan c6c4068
Revert "Disable vcpkg caching to use the correct triplet."
ahsonkhan ec771e5
Merge branch 'momuno/doc-updates-js' of github.com:momuno/azure-sdk-f…
de64452
revert vcpkg and cmake-build changes to clear cache
cfa4294
Adding the triplet as part of the restore key.
ahsonkhan 7072ee5
Merge branch 'momuno/doc-updates-js' of https:/momuno/azu…
ahsonkhan bcfe16b
Adding back the triplet as part of the restore key.
ahsonkhan d44be06
Comment updates
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,127 @@ | ||
# Azure IoT Client Coding Patterns | ||
|
||
## Introduction | ||
|
||
This page introduces you to coding patterns that are MQTT stack agnostic. These examples will give you a general overview of the API calls and structure needed to use the Azure IoT Embedded C SDK features. | ||
|
||
To view scenario-focused examples using the API calls, please view the [introductory examples](https:/Azure/azure-sdk-for-c/blob/master/sdk/docs/iot/README.md#examples) on the Azure IoT Client README file. | ||
|
||
For a more extensive demonstration of the API, please view and run the [sample code](https:/Azure/azure-sdk-for-c/blob/master/sdk/samples/iot/), which uses Paho MQTT. | ||
|
||
## Examples | ||
|
||
### IoT Hub Client with MQTT Stack | ||
|
||
Below is an implementation for using the IoT Hub Client SDK. This is meant to guide users in incorporating their MQTT stack with the IoT Hub Client SDK. Note for simplicity reasons, this code will not compile. Ideally, guiding principles can be inferred from reading through this snippet to create an IoT solution. | ||
|
||
```C | ||
#include <az/core/az_result.h> | ||
#include <az/core/az_span.h> | ||
#include <az/iot/az_iot_hub_client.h> | ||
|
||
az_iot_hub_client my_client; | ||
static az_span my_iothub_hostname = AZ_SPAN_LITERAL_FROM_STR("<your hub fqdn here>"); | ||
static az_span my_device_id = AZ_SPAN_LITERAL_FROM_STR("<your device id here>"); | ||
|
||
//Make sure the buffer is large enough to fit the user name (100 is an example) | ||
static char my_mqtt_user_name[100]; | ||
|
||
//Make sure the buffer is large enough to fit the client id (16 is an example) | ||
static char my_mqtt_client_id[16]; | ||
|
||
//This assumes an X509 Cert. SAS keys may also be used. | ||
static const char my_device_cert[]= "-----BEGIN CERTIFICATE-----abcdefg-----END CERTIFICATE-----"; | ||
|
||
static char telemetry_topic[128]; | ||
static char telemetry_payload[] = "Hello World"; | ||
|
||
void handle_iot_message(mqtt_client_message* msg); | ||
|
||
int main(void) | ||
{ | ||
//Get the default IoT Hub options | ||
az_iot_hub_client_options options = az_iot_hub_client_options_default(); | ||
|
||
//Initialize the client with hostname, device id, and options | ||
az_iot_hub_client_init(&my_client, my_iothub_hostname, my_device_id, &options); | ||
|
||
//Get the MQTT user name to connect | ||
az_iot_hub_client_get_user_name(&my_client, my_mqtt_user_name, | ||
sizeof(my_mqtt_user_name), NULL); | ||
|
||
//Get the MQTT client id to connect | ||
az_iot_hub_client_get_client_id(&my_client, my_mqtt_client_id, | ||
sizeof(my_mqtt_client_id), NULL); | ||
|
||
//Initialize MQTT client with necessary parameters (example params shown) | ||
mqtt_client my_mqtt_client; | ||
mqtt_client_init(&my_mqtt_client, my_iothub_hostname, my_mqtt_client_id); | ||
|
||
//Subscribe to c2d messages | ||
mqtt_client_subscribe(&my_mqtt_client, AZ_IOT_HUB_CLIENT_C2D_SUBSCRIBE_TOPIC); | ||
|
||
//Subscribe to device methods | ||
mqtt_client_subscribe(&my_mqtt_client, AZ_IOT_HUB_CLIENT_METHODS_SUBSCRIBE_TOPIC); | ||
|
||
//Subscribe to twin patch topic | ||
mqtt_client_subscribe(&my_mqtt_client, AZ_IOT_HUB_CLIENT_TWIN_PATCH_SUBSCRIBE_TOPIC); | ||
|
||
//Subscribe to twin response topic | ||
mqtt_client_subscribe(&my_mqtt_client, AZ_IOT_HUB_CLIENT_TWIN_RESPONSE_SUBSCRIBE_TOPIC); | ||
|
||
//Connect to the IoT Hub with your chosen mqtt stack | ||
mqtt_client_connect(&my_mqtt_client, my_mqtt_user_name, my_device_cert); | ||
|
||
//This example would run to receive any incoming message and send a telemetry message five times | ||
int iterations = 0; | ||
mqtt_client_message msg; | ||
while(iterations++ < 5) | ||
{ | ||
if(mqtt_client_receive(&msg)) | ||
{ | ||
handle_iot_message(&msg); | ||
} | ||
|
||
send_telemetry_message(); | ||
} | ||
|
||
//Disconnect from the IoT Hub | ||
mqtt_client_disconnect(&my_mqtt_client); | ||
|
||
//Destroy the mqtt client | ||
mqtt_client_destroy(&my_mqtt_client); | ||
} | ||
|
||
void send_telemetry_message(void) | ||
{ | ||
//Get the topic to send a telemetry message | ||
az_iot_hub_client_telemetry_get_publish_topic(&client, NULL, telemetry_topic, sizeof(telemetry_topic), NULL); | ||
|
||
//Send the telemetry message with the MQTT client | ||
mqtt_client_publish(telemetry_topic, telemetry_payload, AZ_HUB_CLIENT_DEFAULT_MQTT_TELEMETRY_QOS); | ||
} | ||
|
||
void handle_iot_message(mqtt_client_message* msg) | ||
{ | ||
//Initialize the incoming topic to a span | ||
az_span incoming_topic = az_span_create(msg->topic, msg->topic_len); | ||
|
||
//The message could be for three features so parse the topic to see which it is for | ||
az_iot_hub_client_method_request method_request; | ||
az_iot_hub_client_c2d_request c2d_request; | ||
az_iot_hub_client_twin_response twin_response; | ||
if (az_result_succeeded(az_iot_hub_client_methods_parse_received_topic(&client, incoming_topic, &method_request))) | ||
{ | ||
//Handle the method request | ||
} | ||
else if (az_result_succeeded(az_iot_hub_client_c2d_parse_received_topic(&client, incoming_topic, &c2d_request))) | ||
{ | ||
//Handle the c2d message | ||
} | ||
else if (az_result_succeeded(az_iot_hub_client_twin_parse_received_topic(&client, incoming_topic, &twin_response))) | ||
{ | ||
//Handle the twin message | ||
} | ||
} | ||
|
||
``` |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@weshaggard, @danieljurek - We are adding the triplet name to the restore key of the cache to make it more unique and force a cache miss.
This was causing issues because we temporarily changed the triplet value to solve a different issue (and reverted it back), but since it is still within the 7 day window, the cache had the incorrect packages stored corresponding to the wrong triplet (x86-windows-static-md instead of x86-windows-static).
For context:
https://docs.microsoft.com/en-us/azure/devops/pipelines/release/caching?view=azure-devops#can-i-clear-a-cache
See this Windows leg, which now has a cache miss since we now include the triplet name as part of the key:
https://dev.azure.com/azure-sdk/public/_build/results?buildId=566055&view=logs&j=1822ef0b-3ac4-586f-233b-6fdf166a140f&t=47e4b218-8f82-5039-fb29-8b3a261ff980
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FYI, @vhvb1989, @antkmsft, @RickWinter, if this issue comes up again.
Once we have a new release of Vcpkg, we can leverage their own binary caching feature which might be less error-prone and flexible, moving forward: microsoft/vcpkg#11204
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ahsonkhan please comment the vcpkg.yml file with these details. Years from now it will be helpful to know why that triplet is there and I doubt anyone will remember this issue
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@RickWinter 2 months later, I remembered ahahaha.. Happened again here: Azure/azure-sdk-for-cpp#1042
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
#1534