Official reference client implementation for Cumulocity SmartREST on u-blox C027.
Dependencies: C027_Support C12832 LM75B MMA7660 MbedSmartRest mbed-rtos mbed
Fork of MbedSmartRestMain by
operation/ReportThread.cpp@135:c4009ecaf5c0, 2015-08-10 (annotated)
- Committer:
- xinlei
- Date:
- Mon Aug 10 14:18:05 2015 +0000
- Revision:
- 135:c4009ecaf5c0
- Parent:
- 126:e1fcf720c63a
various clean-ups
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
xinlei | 94:61d44636f020 | 1 | #include "ReportThread.h" |
xinlei | 94:61d44636f020 | 2 | #include "logging.h" |
xinlei | 94:61d44636f020 | 3 | |
xinlei | 106:c61f0d62b625 | 4 | static const char *fmt2 = "111,%ld,%s\r\n"; |
xinlei | 94:61d44636f020 | 5 | |
xinlei | 94:61d44636f020 | 6 | void ReportThread::threadFunc() |
xinlei | 94:61d44636f020 | 7 | { |
xinlei | 94:61d44636f020 | 8 | while (true) { |
xinlei | 109:2ec12f10ebf4 | 9 | dict.clear(); |
xinlei | 94:61d44636f020 | 10 | osEvent e = ipool.get(); |
xinlei | 94:61d44636f020 | 11 | if (e.status == osEventMail) { |
xinlei | 94:61d44636f020 | 12 | Operation *op = (Operation*)e.value.p; |
xinlei | 109:2ec12f10ebf4 | 13 | dict.set(op->identifier, op->state); |
xinlei | 94:61d44636f020 | 14 | ipool.free(op); |
xinlei | 109:2ec12f10ebf4 | 15 | while (!dict.full()) { |
xinlei | 95:010b0f7a0a1a | 16 | osEvent e = ipool.get(200); |
xinlei | 95:010b0f7a0a1a | 17 | if (e.status == osEventMail) { |
xinlei | 95:010b0f7a0a1a | 18 | op = (Operation*)e.value.p; |
xinlei | 109:2ec12f10ebf4 | 19 | dict.set(op->identifier, op->state); |
xinlei | 95:010b0f7a0a1a | 20 | ipool.free(op); |
xinlei | 95:010b0f7a0a1a | 21 | } else { |
xinlei | 95:010b0f7a0a1a | 22 | break; |
xinlei | 95:010b0f7a0a1a | 23 | } |
xinlei | 95:010b0f7a0a1a | 24 | } |
xinlei | 109:2ec12f10ebf4 | 25 | int l = 0; |
xinlei | 109:2ec12f10ebf4 | 26 | for (unsigned short i = 0; i < dict.size(); ++i) { |
xinlei | 109:2ec12f10ebf4 | 27 | const long id = dict[i].identifier; |
xinlei | 109:2ec12f10ebf4 | 28 | const OperationState state = dict[i].state; |
xinlei | 109:2ec12f10ebf4 | 29 | l += snprintf(buf2+l, sizeof(buf2)-l, fmt2, id, strOperationState(state)); |
xinlei | 109:2ec12f10ebf4 | 30 | } |
xinlei | 99:e369fc75c000 | 31 | l = snprintf(buf, sizeof(buf), fmtSmartRest, uri, l, buf2); |
xinlei | 109:2ec12f10ebf4 | 32 | for (unsigned i = 0; i < 3; ++i) { |
xinlei | 122:68217ccb8cd1 | 33 | sock.setBlocking(3000); |
xinlei | 109:2ec12f10ebf4 | 34 | int l2 = sock.sendOnly(buf, l); |
xinlei | 109:2ec12f10ebf4 | 35 | if (l2 < 0) { |
xinlei | 109:2ec12f10ebf4 | 36 | aError("Report: op state\n"); |
xinlei | 109:2ec12f10ebf4 | 37 | Thread::wait(3000); |
xinlei | 135:c4009ecaf5c0 | 38 | } else { |
xinlei | 109:2ec12f10ebf4 | 39 | break; |
xinlei | 135:c4009ecaf5c0 | 40 | } |
xinlei | 94:61d44636f020 | 41 | } |
xinlei | 94:61d44636f020 | 42 | } |
xinlei | 94:61d44636f020 | 43 | } |
xinlei | 94:61d44636f020 | 44 | } |