A basic setup and connect sample for the Helium Atom

Committer:
Marc Nijdam
Date:
Mon Jul 10 14:54:51 2017 -0700
Revision:
9:15075df34b31
Parent:
6:65411183b48a
Child:
10:e666766643d2
Update helium lib, tiny delay on boot to wait for atom to start

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 9:15075df34b31 48 // Let the Atom start up
Marc Nijdam 9:15075df34b31 49 wait(0.1);
Marc Nijdam 9:15075df34b31 50
Marc Nijdam 1:a843f3d9d31c 51 printf("Info - ");
Marc Nijdam 1:a843f3d9d31c 52 struct helium_info info;
Marc Nijdam 1:a843f3d9d31c 53 int status = helium.info(&info);
Marc Nijdam 1:a843f3d9d31c 54 if (helium_status_OK == status) {
Marc Nijdam 1:a843f3d9d31c 55 printf("%" PRIx64 " - ", info.mac);
Marc Nijdam 1:a843f3d9d31c 56 }
Marc Nijdam 1:a843f3d9d31c 57 report_status(status);
Marc Nijdam 1:a843f3d9d31c 58
Marc Nijdam 1:a843f3d9d31c 59 printf("Connecting - ");
Marc Nijdam 4:03dac69c22c5 60 status = helium.connect();
Marc Nijdam 1:a843f3d9d31c 61 report_status(status);
Marc Nijdam 1:a843f3d9d31c 62
Marc Nijdam 1:a843f3d9d31c 63 printf("Creating Channel - ");
Marc Nijdam 0:9c0bcd840b37 64 int8_t result;
Marc Nijdam 0:9c0bcd840b37 65 status = channel.begin("Helium Cloud MQTT", &result);
Marc Nijdam 0:9c0bcd840b37 66 report_status(status);
Marc Nijdam 0:9c0bcd840b37 67
Marc Nijdam 1:a843f3d9d31c 68 printf("Sending - ");
Marc Nijdam 0:9c0bcd840b37 69 const char *data = "Hello Helium";
Marc Nijdam 0:9c0bcd840b37 70 status = channel.send(data, strlen(data), &result);
Marc Nijdam 0:9c0bcd840b37 71 report_status_result(status, result);
Marc Nijdam 0:9c0bcd840b37 72 }