Helium / Mbed OS helium_basic
Committer:
Marc Nijdam
Date:
Wed Jul 05 09:36:16 2017 -0700
Revision:
1:a843f3d9d31c
Parent:
0:9c0bcd840b37
Child:
2:bfe503bcf0b8
Working basic example

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 0:9c0bcd840b37 3 * All Rights Reserved. See LICENCE.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 1:a843f3d9d31c 8 #include <inttypes.h>
Marc Nijdam 0:9c0bcd840b37 9
Marc Nijdam 0:9c0bcd840b37 10 void report_status(int status)
Marc Nijdam 0:9c0bcd840b37 11 {
Marc Nijdam 0:9c0bcd840b37 12 if (helium_status_OK == status) {
Marc Nijdam 0:9c0bcd840b37 13 printf("Succeeded\n");
Marc Nijdam 0:9c0bcd840b37 14 } else {
Marc Nijdam 1:a843f3d9d31c 15 printf("Failed (status %d)\n", status);
Marc Nijdam 0:9c0bcd840b37 16 }
Marc Nijdam 0:9c0bcd840b37 17 }
Marc Nijdam 0:9c0bcd840b37 18
Marc Nijdam 0:9c0bcd840b37 19 void report_status_result(int status, int result)
Marc Nijdam 0:9c0bcd840b37 20 {
Marc Nijdam 0:9c0bcd840b37 21 if (helium_status_OK == status) {
Marc Nijdam 0:9c0bcd840b37 22 if (result == 0) {
Marc Nijdam 0:9c0bcd840b37 23 printf("Succeeded\n");
Marc Nijdam 0:9c0bcd840b37 24 } else {
Marc Nijdam 0:9c0bcd840b37 25 printf("Failed - %d", result);
Marc Nijdam 0:9c0bcd840b37 26 }
Marc Nijdam 0:9c0bcd840b37 27 } else {
Marc Nijdam 1:a843f3d9d31c 28 printf("Failed (status %d)\n", status);
Marc Nijdam 0:9c0bcd840b37 29 }
Marc Nijdam 0:9c0bcd840b37 30 }
Marc Nijdam 0:9c0bcd840b37 31
Marc Nijdam 0:9c0bcd840b37 32
Marc Nijdam 1:a843f3d9d31c 33 #if defined(TARGET_K64F)
Marc Nijdam 1:a843f3d9d31c 34 Helium helium(PTC4, PTC3); // TX:D9, RX:D7
Marc Nijdam 1:a843f3d9d31c 35 #else
Marc Nijdam 1:a843f3d9d31c 36 #error Please define helium with serial tx/rx
Marc Nijdam 1:a843f3d9d31c 37 #endif
Marc Nijdam 1:a843f3d9d31c 38
Marc Nijdam 1:a843f3d9d31c 39 Channel channel(&helium);
Marc Nijdam 1:a843f3d9d31c 40
Marc Nijdam 0:9c0bcd840b37 41 int main()
Marc Nijdam 0:9c0bcd840b37 42 {
Marc Nijdam 1:a843f3d9d31c 43 printf("Starting\n");
Marc Nijdam 0:9c0bcd840b37 44
Marc Nijdam 1:a843f3d9d31c 45 printf("Info - ");
Marc Nijdam 1:a843f3d9d31c 46 struct helium_info info;
Marc Nijdam 1:a843f3d9d31c 47 int status = helium.info(&info);
Marc Nijdam 1:a843f3d9d31c 48 if (helium_status_OK == status) {
Marc Nijdam 1:a843f3d9d31c 49 printf("%" PRIx64 " - ", info.mac);
Marc Nijdam 1:a843f3d9d31c 50 }
Marc Nijdam 1:a843f3d9d31c 51 report_status(status);
Marc Nijdam 1:a843f3d9d31c 52
Marc Nijdam 1:a843f3d9d31c 53 printf("Connecting - ");
Marc Nijdam 1:a843f3d9d31c 54 status = helium.connect(NULL, HELIUM_POLL_RETRIES_5S * 10);
Marc Nijdam 1:a843f3d9d31c 55 report_status(status);
Marc Nijdam 1:a843f3d9d31c 56
Marc Nijdam 1:a843f3d9d31c 57 printf("Creating Channel - ");
Marc Nijdam 0:9c0bcd840b37 58 int8_t result;
Marc Nijdam 0:9c0bcd840b37 59 status = channel.begin("Helium Cloud MQTT", &result);
Marc Nijdam 0:9c0bcd840b37 60 report_status(status);
Marc Nijdam 0:9c0bcd840b37 61
Marc Nijdam 1:a843f3d9d31c 62 printf("Sending - ");
Marc Nijdam 0:9c0bcd840b37 63 const char *data = "Hello Helium";
Marc Nijdam 0:9c0bcd840b37 64 status = channel.send(data, strlen(data), &result);
Marc Nijdam 0:9c0bcd840b37 65 report_status_result(status, result);
Marc Nijdam 0:9c0bcd840b37 66 }