A basic setup and connect sample for the Helium Atom

main.cpp

Committer:
Marc Nijdam
Date:
2017-07-10
Revision:
10:e666766643d2
Parent:
9:15075df34b31
Child:
13:90f88e66f0aa

File content as of revision 10:e666766643d2:

/*
 * Copyright 2017, Helium Systems, Inc.
 * All Rights Reserved. See LICENSE.txt for license information
 */

#include "mbed.h"
#include "Helium.h"
#define __STDC_FORMAT_MACROS
#include <inttypes.h>

void report_status(int status)
{
    if (helium_status_OK == status) {
        printf("Succeeded\n");
    } else {
        printf("Failed (status %d)\n", status);
    }
}

void report_status_result(int status, int result)
{
    if (helium_status_OK == status) {
        if (result == 0) {
            printf("Succeeded\n");
        } else {
            printf("Failed - %d", result);
        }
    } else {
        printf("Failed (status %d)\n", status);
    }
}


#if defined(TARGET_K64F)
Helium helium(D9, D7); // TX:D9, RX:D7
#elif defined(TARGET_WIZwiki_W7500)
Helium helium(D1, D0);
#else
#error Please define helium with serial tx/rx
#endif

Channel channel(&helium);

int main()
{
    printf("Starting\n");

    // Let the Atom start up
    wait(0.1);

    printf("Info - ");
    struct helium_info info;
    int status = helium.info(&info);
    if (helium_status_OK == status) {
        printf("%" PRIx64 " - ", info.mac);
    }
    report_status(status);

    printf("Connecting - ");
    status = helium.connect();
    report_status(status);

    printf("Creating Channel - ");
    int8_t result;
    status = channel.begin("Helium MQTT", &result);
    report_status(status);

    printf("Sending - ");
    const char *data = "Hello Helium";
    status = channel.send(data, strlen(data), &result);
    report_status_result(status, result);
}