Own fork of MbedSmartRestMain

Dependencies:   C027_Support C12832 LM75B MMA7660 MbedSmartRest mbed-rtos mbed

Fork of MbedSmartRestMain by Cumulocity Official

operation/ReportThread.cpp

Committer:
xinlei
Date:
2015-05-07
Revision:
98:e369fc75c000
Parent:
94:010b0f7a0a1a
Child:
105:c61f0d62b625

File content as of revision 98:e369fc75c000:

#include "ReportThread.h"
#include "logging.h"

const char *fmt2 = "111,%ld,%s\r\n";

void ReportThread::threadFunc()
{
    sock.set_blocking(false);
    while (true) {
        osEvent e = ipool.get();
        if (e.status == osEventMail) {
            Operation *op = (Operation*)e.value.p;
            long id = op->identifier;
            OperationState state = op->state;
            ipool.free(op);
            int l = snprintf(buf2, sizeof(buf2), fmt2, id, strOperationState(state));
            for (unsigned short i = 0; i < 10; ++i) {
                osEvent e = ipool.get(200);
                if (e.status == osEventMail) {
                    op = (Operation*)e.value.p;
                    id = op->identifier;
                    OperationState state = op->state;
                    ipool.free(op);
                    l += snprintf(buf2+l, SMARRESTBODY_SIZE-l, fmt2, id, strOperationState(state));
                } else {
                    break;
                }
            }
            l = snprintf(buf, sizeof(buf), fmtSmartRest, uri, l, buf2);
            l = sock.sendOnly(buf, l);
            if (l < 0) {
                aError("Report: <%ld, %s>\n", id, strOperationState(state));
            }
        }
    }
}