![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Part One of my Project Course. Implementation of simple I/O and a custom defined protocol over UDP/IP.
Dependencies: C12832 LM75B mbed EthernetInterface mbed-rtos
Diff: slave.cpp
- Revision:
- 3:538e17979246
- Parent:
- 2:6bfe732ba6bc
--- a/slave.cpp Mon Mar 19 11:32:54 2018 +0000 +++ b/slave.cpp Fri Mar 23 13:42:13 2018 +0000 @@ -27,9 +27,8 @@ void Slave::handleIncomingFrame(void){ char in_buffer[MAX_PACKET_SIZE]; - //char *command_info[3]; - //char ip_address[] = {'1','9','2','.','1','6','8','.','0','.','x','x','x'}; - char ack_id[3]; + char ack_id[4]; + char response_array[512]; switch(CurrentSlaveState){ case STATE_INIT: { @@ -92,18 +91,15 @@ char *p = strtok(in_buffer, " "); command_info[0] = p; - printf("Eerste strtok: '%s'\r\n", command_info[0]); char *q = strtok(NULL, " "); command_info[1] = q; - printf("Tweede strtok: '%s'\r\n", command_info[1]); char *s = strtok(NULL, '\0'); - command_info[2] = s; - printf("Derde strtok: '%s'\r\n", command_info[2]); - + command_info[2] = s; ack_id[0] = ip_address[10]; ack_id[1] = ip_address[11]; ack_id[2] = ip_address[12]; + ack_id[3] = '\0'; CurrentSlaveState = STATE_HANDLE_REQUEST; break; @@ -115,7 +111,8 @@ temperatureValue = 0.0; potentiometerValue = 0.0; - response = ""; + response.clear(); + memset(&response_array[0], 0, sizeof(response_array)); if(strcmp(command_info[0], "PUT") == 0){ if(strcmp(command_info[1], "/LCD") == 0){ @@ -134,7 +131,7 @@ } else { - response.append("ACK").append(" ").append("4.0").append("").append(ack_id); + response.append("ACK").append(" ").append("4.0").append(" ").append(ack_id); } } @@ -163,9 +160,11 @@ } case STATE_SEND_ACKNOWLEDGEMENT: { - sock_slave.sendTo(master,(char *)response.c_str(), 512); + strcpy(response_array, response.c_str()); + sock_slave.sendTo(master,(char *)response_array, 512); - memset(&response[0], 0, sizeof(response)); + response.clear(); + CurrentSlaveState = STATE_WAIT_FOR_FRAME; break; }