MQTT version for enno SDK

Dependencies:   EthernetInterface MQTT mbed-rtos mbed serialzation_lib

Fork of HelloMQTT by MQTT

protocol/enno_api.c

Committer:
weiarm2015
Date:
2015-12-02
Revision:
21:c5f6350a292d
Parent:
20:3858e42b0cd3

File content as of revision 21:c5f6350a292d:

/*
 * enno_api.c
 *
 *  Created on: 2015年11月20日
 *      Author: v-chawei
 */
#include <stdio.h>
#include <stdbool.h>
#include "enno_api.h"
#include "sitewhere.pb.h"
#include "sitewhere.h"
#include "pb_decode.h"
//#include "custom.h"
//#include "raspberrypi.pb.h"

bool registered = false;

void ennoSystemMessageHandler(char* topic, char* payload, int length) {
    Device_Header header;

    pb_istream_t stream = pb_istream_from_buffer(payload, length);

    if (pb_decode_delimited(&stream, Device_Header_fields, &header)) {

        if (header.command == Device_Command_REGISTER_ACK) {
            Device_RegistrationAck ack;
            if (pb_decode_delimited(&stream, Device_RegistrationAck_fields, &ack)) {
                if (ack.state == Device_RegistrationAckState_NEW_REGISTRATION) {
                    printf("Registered new device.\n");
                    registered = true;
                }
                else if (ack.state == Device_RegistrationAckState_ALREADY_REGISTERED) {
                    printf("Device has already registered.\n");
                }
                else if (ack.state == Device_RegistrationAckState_REGISTRATION_ERROR) {
                    printf("Error rigistering device.\n");
                }
            }
        }
    } else {
        printf("Unable to decode system command.\n");
    }
}