
code for gateway node connecting by wifi with backend and by radio with sensor nodes
main.cpp@0:544925185af9, 2019-01-24 (annotated)
- Committer:
- Ka_myk
- Date:
- Thu Jan 24 16:27:29 2019 +0000
- Revision:
- 0:544925185af9
- Child:
- 1:605fa4405e4f
Gateway code
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Ka_myk | 0:544925185af9 | 1 | #include "mbed.h" |
Ka_myk | 0:544925185af9 | 2 | #include "coapServer.h" |
Ka_myk | 0:544925185af9 | 3 | #include "radioWrapper.h" |
Ka_myk | 0:544925185af9 | 4 | #include <string> |
Ka_myk | 0:544925185af9 | 5 | #include "dbg.h" |
Ka_myk | 0:544925185af9 | 6 | #include "msg.h" |
Ka_myk | 0:544925185af9 | 7 | #include "itoa.h" |
Ka_myk | 0:544925185af9 | 8 | |
Ka_myk | 0:544925185af9 | 9 | int channel = 4; |
Ka_myk | 0:544925185af9 | 10 | |
Ka_myk | 0:544925185af9 | 11 | unsigned long long txAdress = 0xABCDEF08; |
Ka_myk | 0:544925185af9 | 12 | unsigned long long rxAdress[] = {0xABCDEF11, 0xABCDEF12, 0xABCDEF13}; |
Ka_myk | 0:544925185af9 | 13 | |
Ka_myk | 0:544925185af9 | 14 | |
Ka_myk | 0:544925185af9 | 15 | Serial pc(USBTX, USBRX); // tx, rx |
Ka_myk | 0:544925185af9 | 16 | InterruptIn button(USER_BUTTON); |
Ka_myk | 0:544925185af9 | 17 | bool start = false; |
Ka_myk | 0:544925185af9 | 18 | |
Ka_myk | 0:544925185af9 | 19 | void send_packet() { |
Ka_myk | 0:544925185af9 | 20 | start = true; |
Ka_myk | 0:544925185af9 | 21 | } |
Ka_myk | 0:544925185af9 | 22 | |
Ka_myk | 0:544925185af9 | 23 | int main() { |
Ka_myk | 0:544925185af9 | 24 | pc.baud(115200); |
Ka_myk | 0:544925185af9 | 25 | std::string uris[] = {"/dist", "/temp", "/hum", "/conf/dist", "/conf/temp", "/conf/hum"}; |
Ka_myk | 0:544925185af9 | 26 | CoapServer coapServer = CoapServer(32, 1000, uris, 6, channel, txAdress, rxAdress); |
Ka_myk | 0:544925185af9 | 27 | button.rise(&send_packet); |
Ka_myk | 0:544925185af9 | 28 | uint8_t buffer[32]; |
Ka_myk | 0:544925185af9 | 29 | CoapServer::METHOD method; |
Ka_myk | 0:544925185af9 | 30 | int uriNum = -1; |
Ka_myk | 0:544925185af9 | 31 | pc.printf("Server initialized \r\n"); |
Ka_myk | 0:544925185af9 | 32 | int pipe = -1; |
Ka_myk | 0:544925185af9 | 33 | while (1) { |
Ka_myk | 0:544925185af9 | 34 | while (start) { |
Ka_myk | 0:544925185af9 | 35 | int ret = coapServer.listen(buffer, 32, &method, &uriNum, &pipe); |
Ka_myk | 0:544925185af9 | 36 | pc.printf("Code : %d \r\n", ret); |
Ka_myk | 0:544925185af9 | 37 | if (ret >= 0) { |
Ka_myk | 0:544925185af9 | 38 | pc.printf("Recieved: %s \r\n", buffer); |
Ka_myk | 0:544925185af9 | 39 | int resLen = 0; |
Ka_myk | 0:544925185af9 | 40 | if (method == CoapServer::POST) { |
Ka_myk | 0:544925185af9 | 41 | resLen = coapServer.respond(uriNum, NULL, 0, CoapPDU::COAP_CREATED, pipe); |
Ka_myk | 0:544925185af9 | 42 | int data = 0; |
Ka_myk | 0:544925185af9 | 43 | uint8_t sensor = 1; |
Ka_myk | 0:544925185af9 | 44 | Msg::deconstruct_data_msg(&sensor, &data, buffer, ret); |
Ka_myk | 0:544925185af9 | 45 | switch (uriNum % 3) { |
Ka_myk | 0:544925185af9 | 46 | case 0: |
Ka_myk | 0:544925185af9 | 47 | DBG("dist %d", data); |
Ka_myk | 0:544925185af9 | 48 | break; |
Ka_myk | 0:544925185af9 | 49 | case 1: |
Ka_myk | 0:544925185af9 | 50 | DBG("TEMP %d", data); |
Ka_myk | 0:544925185af9 | 51 | break; |
Ka_myk | 0:544925185af9 | 52 | case 2: |
Ka_myk | 0:544925185af9 | 53 | DBG("HUM %d", data); |
Ka_myk | 0:544925185af9 | 54 | break; |
Ka_myk | 0:544925185af9 | 55 | } |
Ka_myk | 0:544925185af9 | 56 | } else if (method == CoapServer::GET) { |
Ka_myk | 0:544925185af9 | 57 | uint8_t response[32]; |
Ka_myk | 0:544925185af9 | 58 | switch (uriNum % 3) { |
Ka_myk | 0:544925185af9 | 59 | case 0: |
Ka_myk | 0:544925185af9 | 60 | itoa(10, (char*)response, 10); |
Ka_myk | 0:544925185af9 | 61 | break; |
Ka_myk | 0:544925185af9 | 62 | case 1: |
Ka_myk | 0:544925185af9 | 63 | itoa(20, (char*)response, 10); |
Ka_myk | 0:544925185af9 | 64 | break; |
Ka_myk | 0:544925185af9 | 65 | case 2: |
Ka_myk | 0:544925185af9 | 66 | itoa(30, (char*)response, 10); |
Ka_myk | 0:544925185af9 | 67 | break; |
Ka_myk | 0:544925185af9 | 68 | } |
Ka_myk | 0:544925185af9 | 69 | |
Ka_myk | 0:544925185af9 | 70 | resLen = coapServer.respond(uriNum, response, std::strlen((char*)response), CoapPDU::COAP_CONTENT, pipe); |
Ka_myk | 0:544925185af9 | 71 | } |
Ka_myk | 0:544925185af9 | 72 | DBG("RESPONDED WITH %d", resLen); |
Ka_myk | 0:544925185af9 | 73 | } |
Ka_myk | 0:544925185af9 | 74 | } |
Ka_myk | 0:544925185af9 | 75 | } |
Ka_myk | 0:544925185af9 | 76 | } |