A basic setup and connect sample for the Helium Atom

Committer:
Marc Nijdam
Date:
Thu Jul 06 13:32:34 2017 -0700
Revision:
6:65411183b48a
Parent:
4:03dac69c22c5
Child:
9:15075df34b31
Updating helium lib and adding format prefix define

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Marc Nijdam 0:9c0bcd840b37 1 /*
Marc Nijdam 0:9c0bcd840b37 2 * Copyright 2017, Helium Systems, Inc.
Marc Nijdam 3:8e6494dda270 3 * All Rights Reserved. See LICENSE.txt for license information
Marc Nijdam 0:9c0bcd840b37 4 */
Marc Nijdam 0:9c0bcd840b37 5
Marc Nijdam 0:9c0bcd840b37 6 #include "mbed.h"
Marc Nijdam 0:9c0bcd840b37 7 #include "Helium.h"
Marc Nijdam 6:65411183b48a 8 #define __STDC_FORMAT_MACROS
Marc Nijdam 1:a843f3d9d31c 9 #include <inttypes.h>
Marc Nijdam 0:9c0bcd840b37 10
Marc Nijdam 0:9c0bcd840b37 11 void report_status(int status)
Marc Nijdam 0:9c0bcd840b37 12 {
Marc Nijdam 0:9c0bcd840b37 13 if (helium_status_OK == status) {
Marc Nijdam 0:9c0bcd840b37 14 printf("Succeeded\n");
Marc Nijdam 0:9c0bcd840b37 15 } else {
Marc Nijdam 1:a843f3d9d31c 16 printf("Failed (status %d)\n", status);
Marc Nijdam 0:9c0bcd840b37 17 }
Marc Nijdam 0:9c0bcd840b37 18 }
Marc Nijdam 0:9c0bcd840b37 19
Marc Nijdam 0:9c0bcd840b37 20 void report_status_result(int status, int result)
Marc Nijdam 0:9c0bcd840b37 21 {
Marc Nijdam 0:9c0bcd840b37 22 if (helium_status_OK == status) {
Marc Nijdam 0:9c0bcd840b37 23 if (result == 0) {
Marc Nijdam 0:9c0bcd840b37 24 printf("Succeeded\n");
Marc Nijdam 0:9c0bcd840b37 25 } else {
Marc Nijdam 0:9c0bcd840b37 26 printf("Failed - %d", result);
Marc Nijdam 0:9c0bcd840b37 27 }
Marc Nijdam 0:9c0bcd840b37 28 } else {
Marc Nijdam 1:a843f3d9d31c 29 printf("Failed (status %d)\n", status);
Marc Nijdam 0:9c0bcd840b37 30 }
Marc Nijdam 0:9c0bcd840b37 31 }
Marc Nijdam 0:9c0bcd840b37 32
Marc Nijdam 0:9c0bcd840b37 33
Marc Nijdam 1:a843f3d9d31c 34 #if defined(TARGET_K64F)
Marc Nijdam 3:8e6494dda270 35 Helium helium(D9, D7); // TX:D9, RX:D7
Marc Nijdam 2:bfe503bcf0b8 36 #elif defined(TARGET_WIZwiki_W7500)
Marc Nijdam 2:bfe503bcf0b8 37 Helium helium(D1, D0);
Marc Nijdam 1:a843f3d9d31c 38 #else
Marc Nijdam 1:a843f3d9d31c 39 #error Please define helium with serial tx/rx
Marc Nijdam 1:a843f3d9d31c 40 #endif
Marc Nijdam 1:a843f3d9d31c 41
Marc Nijdam 1:a843f3d9d31c 42 Channel channel(&helium);
Marc Nijdam 1:a843f3d9d31c 43
Marc Nijdam 0:9c0bcd840b37 44 int main()
Marc Nijdam 0:9c0bcd840b37 45 {
Marc Nijdam 1:a843f3d9d31c 46 printf("Starting\n");
Marc Nijdam 0:9c0bcd840b37 47
Marc Nijdam 1:a843f3d9d31c 48 printf("Info - ");
Marc Nijdam 1:a843f3d9d31c 49 struct helium_info info;
Marc Nijdam 1:a843f3d9d31c 50 int status = helium.info(&info);
Marc Nijdam 1:a843f3d9d31c 51 if (helium_status_OK == status) {
Marc Nijdam 1:a843f3d9d31c 52 printf("%" PRIx64 " - ", info.mac);
Marc Nijdam 1:a843f3d9d31c 53 }
Marc Nijdam 1:a843f3d9d31c 54 report_status(status);
Marc Nijdam 1:a843f3d9d31c 55
Marc Nijdam 1:a843f3d9d31c 56 printf("Connecting - ");
Marc Nijdam 4:03dac69c22c5 57 status = helium.connect();
Marc Nijdam 1:a843f3d9d31c 58 report_status(status);
Marc Nijdam 1:a843f3d9d31c 59
Marc Nijdam 1:a843f3d9d31c 60 printf("Creating Channel - ");
Marc Nijdam 0:9c0bcd840b37 61 int8_t result;
Marc Nijdam 0:9c0bcd840b37 62 status = channel.begin("Helium Cloud MQTT", &result);
Marc Nijdam 0:9c0bcd840b37 63 report_status(status);
Marc Nijdam 0:9c0bcd840b37 64
Marc Nijdam 1:a843f3d9d31c 65 printf("Sending - ");
Marc Nijdam 0:9c0bcd840b37 66 const char *data = "Hello Helium";
Marc Nijdam 0:9c0bcd840b37 67 status = channel.send(data, strlen(data), &result);
Marc Nijdam 0:9c0bcd840b37 68 report_status_result(status, result);
Marc Nijdam 0:9c0bcd840b37 69 }