
code for gateway node connecting by wifi with backend and by radio with sensor nodes
main.cpp
- Committer:
- thewiztory
- Date:
- 2019-01-25
- Revision:
- 1:605fa4405e4f
- Parent:
- 0:544925185af9
- Child:
- 2:73331442c00e
File content as of revision 1:605fa4405e4f:
#include "mbed.h" #include "coapServer.h" #include "radioWrapper.h" #include <string> #include "dbg.h" #include "msg.h" #include "itoa.h" int channel = 4; unsigned long long txAdress = 0xABCDEF08; unsigned long long rxAdress[] = {0xABCDEF11, 0xABCDEF12, 0xABCDEF13}; Serial pc(USBTX, USBRX); // tx, rx InterruptIn button(USER_BUTTON); bool start = false; void send_packet() { start = true; } int main() { pc.baud(115200); std::string uris[] = {"/dist", "/temp", "/hum", "/moist", "/conf/dist", "/conf/temp", "/conf/hum", "/conf/moist"}; CoapServer coapServer = CoapServer(32, 1000, uris, 8, channel, txAdress, rxAdress); button.rise(&send_packet); uint8_t buffer[32]; CoapServer::METHOD method; int uriNum = -1; pc.printf("Server initialized \r\n"); int pipe = -1; while (1) { while (start) { int ret = coapServer.listen(buffer, 32, &method, &uriNum, &pipe); pc.printf("Code : %d \r\n", ret); if (ret >= 0) { pc.printf("Recieved: %s \r\n", buffer); pc.printf("*****Pipe: %d", pipe); int resLen = 0; if (method == CoapServer::POST) { resLen = coapServer.respond(uriNum, NULL, 0, CoapPDU::COAP_CREATED, pipe); int data = 0; uint8_t sensor = 1; Msg::deconstruct_data_msg(&sensor, &data, buffer, ret); switch (uriNum % 4) { case 0: DBG("dist %d", data); break; case 1: DBG("TEMP %d", data); break; case 2: DBG("HUM %d", data); break; case 3: DBG("MOIST %d", data); break; } } else if (method == CoapServer::GET) { uint8_t response[10]; switch (uriNum % 4) { case 0: Msg::construct_data_msg(0, 5, response, 10); //itoa(10, (char*)response, 10); break; case 1: Msg::construct_data_msg(0, 5, response, 10); break; case 2: Msg::construct_data_msg(0, 13, response, 10); break; case 3: Msg::construct_data_msg(0, 8, response, 10); break; } pc.printf("*****response:\r\n"); for (int i = 0; i < 10; i++) { pc.printf("%d ", response[i]); } pc.printf("\r\n"); resLen = coapServer.respond(uriNum, response, 10, CoapPDU::COAP_CONTENT, pipe); } DBG("RESPONDED WITH %d", resLen); } } } }