A simple IoTHub sample using AMQP as transport

Dependencies:   EthernetInterface NTPClient iothub_amqp_transport iothub_client mbed-rtos mbed azure_c_shared_utility serializer wolfSSL azure_uamqp_c

This sample showcases the usage of Azure IoT client libraries with the AMQP transport for sending/receiving raw messages from an IoT Hub.

Committer:
AzureIoTClient
Date:
Thu Oct 22 18:33:52 2015 -0700
Revision:
16:b2c6de619743
Child:
21:b8b8782d412f
v1.0.0-preview.4

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AzureIoTClient 16:b2c6de619743 1 // Copyright (c) Microsoft. All rights reserved.
AzureIoTClient 16:b2c6de619743 2 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
AzureIoTClient 16:b2c6de619743 3
AzureIoTClient 16:b2c6de619743 4 #include <stdio.h>
AzureIoTClient 16:b2c6de619743 5 #include "EthernetInterface.h"
AzureIoTClient 16:b2c6de619743 6 #include "mbed/logging.h"
AzureIoTClient 16:b2c6de619743 7 #include "mbed/mbedtime.h"
AzureIoTClient 16:b2c6de619743 8 #include "simplesample_amqp.h"
AzureIoTClient 16:b2c6de619743 9 #include "NTPClient.h"
AzureIoTClient 16:b2c6de619743 10
AzureIoTClient 16:b2c6de619743 11 int setupRealTime(void)
AzureIoTClient 16:b2c6de619743 12 {
AzureIoTClient 16:b2c6de619743 13 int result;
AzureIoTClient 16:b2c6de619743 14
AzureIoTClient 16:b2c6de619743 15 (void)printf("setupRealTime begin\r\n");
AzureIoTClient 16:b2c6de619743 16 if (EthernetInterface::connect())
AzureIoTClient 16:b2c6de619743 17 {
AzureIoTClient 16:b2c6de619743 18 (void)printf("Error initializing EthernetInterface.\r\n");
AzureIoTClient 16:b2c6de619743 19 result = __LINE__;
AzureIoTClient 16:b2c6de619743 20 }
AzureIoTClient 16:b2c6de619743 21 else
AzureIoTClient 16:b2c6de619743 22 {
AzureIoTClient 16:b2c6de619743 23 (void)printf("setupRealTime NTP begin\r\n");
AzureIoTClient 16:b2c6de619743 24 NTPClient ntp;
AzureIoTClient 16:b2c6de619743 25 if (ntp.setTime("0.pool.ntp.org") != 0)
AzureIoTClient 16:b2c6de619743 26 {
AzureIoTClient 16:b2c6de619743 27 (void)printf("Failed setting time.\r\n");
AzureIoTClient 16:b2c6de619743 28 result = __LINE__;
AzureIoTClient 16:b2c6de619743 29 }
AzureIoTClient 16:b2c6de619743 30 else
AzureIoTClient 16:b2c6de619743 31 {
AzureIoTClient 16:b2c6de619743 32 (void)printf("set time correctly!\r\n");
AzureIoTClient 16:b2c6de619743 33 result = 0;
AzureIoTClient 16:b2c6de619743 34 }
AzureIoTClient 16:b2c6de619743 35 (void)printf("setupRealTime NTP end\r\n");
AzureIoTClient 16:b2c6de619743 36 EthernetInterface::disconnect();
AzureIoTClient 16:b2c6de619743 37 }
AzureIoTClient 16:b2c6de619743 38 (void)printf("setupRealTime end\r\n");
AzureIoTClient 16:b2c6de619743 39
AzureIoTClient 16:b2c6de619743 40 return result;
AzureIoTClient 16:b2c6de619743 41 }
AzureIoTClient 16:b2c6de619743 42
AzureIoTClient 16:b2c6de619743 43 int main(void)
AzureIoTClient 16:b2c6de619743 44 {
AzureIoTClient 16:b2c6de619743 45 (void)printf("Initializing mbed specific things...\r\n");
AzureIoTClient 16:b2c6de619743 46
AzureIoTClient 16:b2c6de619743 47 /* These are needed in order to initialize the time provider for Proton-C */
AzureIoTClient 16:b2c6de619743 48 mbed_log_init();
AzureIoTClient 16:b2c6de619743 49 mbedtime_init();
AzureIoTClient 16:b2c6de619743 50
AzureIoTClient 16:b2c6de619743 51 if (EthernetInterface::init())
AzureIoTClient 16:b2c6de619743 52 {
AzureIoTClient 16:b2c6de619743 53 (void)printf("Error initializing EthernetInterface.\r\n");
AzureIoTClient 16:b2c6de619743 54 return -1;
AzureIoTClient 16:b2c6de619743 55 }
AzureIoTClient 16:b2c6de619743 56
AzureIoTClient 16:b2c6de619743 57 if (setupRealTime() != 0)
AzureIoTClient 16:b2c6de619743 58 {
AzureIoTClient 16:b2c6de619743 59 (void)printf("Failed setting up real time clock\r\n");
AzureIoTClient 16:b2c6de619743 60 return -1;
AzureIoTClient 16:b2c6de619743 61 }
AzureIoTClient 16:b2c6de619743 62
AzureIoTClient 16:b2c6de619743 63 if (EthernetInterface::connect())
AzureIoTClient 16:b2c6de619743 64 {
AzureIoTClient 16:b2c6de619743 65 (void)printf("Error connecting EthernetInterface.\r\n");
AzureIoTClient 16:b2c6de619743 66 return -1;
AzureIoTClient 16:b2c6de619743 67 }
AzureIoTClient 16:b2c6de619743 68
AzureIoTClient 16:b2c6de619743 69 simplesample_amqp_run();
AzureIoTClient 16:b2c6de619743 70
AzureIoTClient 16:b2c6de619743 71 (void)EthernetInterface::disconnect();
AzureIoTClient 16:b2c6de619743 72
AzureIoTClient 16:b2c6de619743 73 return 0;
AzureIoTClient 16:b2c6de619743 74 }