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
master.cpp@0:88d3b9015f7c, 2018-02-26 (annotated)
- Committer:
- bertgereels
- Date:
- Mon Feb 26 11:25:59 2018 +0000
- Revision:
- 0:88d3b9015f7c
- Child:
- 1:b5c534165dfe
First Commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bertgereels | 0:88d3b9015f7c | 1 | #include "master.h" |
bertgereels | 0:88d3b9015f7c | 2 | #include "command.h" |
bertgereels | 0:88d3b9015f7c | 3 | #include <string.h> |
bertgereels | 0:88d3b9015f7c | 4 | #include <stdio.h> |
bertgereels | 0:88d3b9015f7c | 5 | |
bertgereels | 0:88d3b9015f7c | 6 | namespace ProjectOne{ |
bertgereels | 0:88d3b9015f7c | 7 | |
bertgereels | 0:88d3b9015f7c | 8 | Serial pc(USBTX, USBRX); |
bertgereels | 0:88d3b9015f7c | 9 | |
bertgereels | 0:88d3b9015f7c | 10 | Master::Master(void){ |
bertgereels | 0:88d3b9015f7c | 11 | CurrentMasterState = STATE_INIT; |
bertgereels | 0:88d3b9015f7c | 12 | inputCommandArrayPtr = inputCommandArray; |
bertgereels | 0:88d3b9015f7c | 13 | } |
bertgereels | 0:88d3b9015f7c | 14 | |
bertgereels | 0:88d3b9015f7c | 15 | void Master::handlePcData(void){ |
bertgereels | 0:88d3b9015f7c | 16 | sendMessageToPc("Listening for commands.\r\n"); |
bertgereels | 0:88d3b9015f7c | 17 | switch(CurrentMasterState){ |
bertgereels | 0:88d3b9015f7c | 18 | case STATE_INIT: |
bertgereels | 0:88d3b9015f7c | 19 | { |
bertgereels | 0:88d3b9015f7c | 20 | //TO DO UDP init |
bertgereels | 0:88d3b9015f7c | 21 | pc.baud(9600); |
bertgereels | 0:88d3b9015f7c | 22 | sendMessageToPc("--------------------------------"); |
bertgereels | 0:88d3b9015f7c | 23 | sendMessageToPc("Initiating serial Communication."); |
bertgereels | 0:88d3b9015f7c | 24 | sendMessageToPc("--------------------------------"); |
bertgereels | 0:88d3b9015f7c | 25 | CurrentMasterState = STATE_RECEIVING; |
bertgereels | 0:88d3b9015f7c | 26 | break; |
bertgereels | 0:88d3b9015f7c | 27 | } |
bertgereels | 0:88d3b9015f7c | 28 | case STATE_RECEIVING: |
bertgereels | 0:88d3b9015f7c | 29 | { |
bertgereels | 0:88d3b9015f7c | 30 | sendMessageToPc("In state receiving.\r\n"); |
bertgereels | 0:88d3b9015f7c | 31 | char temp; |
bertgereels | 0:88d3b9015f7c | 32 | |
bertgereels | 0:88d3b9015f7c | 33 | sendMessageToPc("In state receiving in if loop.\r\n"); |
bertgereels | 0:88d3b9015f7c | 34 | char_counter = 0; |
bertgereels | 0:88d3b9015f7c | 35 | for(int i = 0; i <= 19; i ++){ |
bertgereels | 0:88d3b9015f7c | 36 | temp = pc.getc(); |
bertgereels | 0:88d3b9015f7c | 37 | if((int)temp == 13){ |
bertgereels | 0:88d3b9015f7c | 38 | sendMessageToPc("Enter detected.\r\n"); |
bertgereels | 0:88d3b9015f7c | 39 | CurrentMasterState = STATE_HANDLE_STRING; |
bertgereels | 0:88d3b9015f7c | 40 | break; |
bertgereels | 0:88d3b9015f7c | 41 | } |
bertgereels | 0:88d3b9015f7c | 42 | //appendChar(inputCommandArray, temp, char_counter); |
bertgereels | 0:88d3b9015f7c | 43 | inputCommandArray[char_counter] = temp; |
bertgereels | 0:88d3b9015f7c | 44 | sendMessageToPc("Appending character to array.\r\n"); |
bertgereels | 0:88d3b9015f7c | 45 | char_counter++; |
bertgereels | 0:88d3b9015f7c | 46 | } |
bertgereels | 0:88d3b9015f7c | 47 | CurrentMasterState = STATE_HANDLE_STRING; |
bertgereels | 0:88d3b9015f7c | 48 | |
bertgereels | 0:88d3b9015f7c | 49 | break; |
bertgereels | 0:88d3b9015f7c | 50 | } |
bertgereels | 0:88d3b9015f7c | 51 | case STATE_HANDLE_STRING: |
bertgereels | 0:88d3b9015f7c | 52 | { |
bertgereels | 0:88d3b9015f7c | 53 | sendMessageToPc("In state handle string.\r\n"); |
bertgereels | 0:88d3b9015f7c | 54 | char_counter = 0; |
bertgereels | 0:88d3b9015f7c | 55 | |
bertgereels | 0:88d3b9015f7c | 56 | sendMessageToPc(inputCommandArray); |
bertgereels | 0:88d3b9015f7c | 57 | |
bertgereels | 0:88d3b9015f7c | 58 | char command_type[3]; |
bertgereels | 0:88d3b9015f7c | 59 | char command[17]; |
bertgereels | 0:88d3b9015f7c | 60 | |
bertgereels | 0:88d3b9015f7c | 61 | strncpy(command_type, inputCommandArray, 3); |
bertgereels | 0:88d3b9015f7c | 62 | strncpy(command, inputCommandArray + 4, 17); |
bertgereels | 0:88d3b9015f7c | 63 | |
bertgereels | 0:88d3b9015f7c | 64 | sendMessageToPc(command_type); //type command PUT of GET |
bertgereels | 0:88d3b9015f7c | 65 | sendMessageToPc(command); //Welke command |
bertgereels | 0:88d3b9015f7c | 66 | |
bertgereels | 0:88d3b9015f7c | 67 | //Van hieruit frame maken en verzenden naar andere mbed met commando |
bertgereels | 0:88d3b9015f7c | 68 | |
bertgereels | 0:88d3b9015f7c | 69 | memset(&inputCommandArray[0], 0, sizeof(inputCommandArray)); |
bertgereels | 0:88d3b9015f7c | 70 | CurrentMasterState = STATE_RECEIVING; |
bertgereels | 0:88d3b9015f7c | 71 | break; |
bertgereels | 0:88d3b9015f7c | 72 | } |
bertgereels | 0:88d3b9015f7c | 73 | } |
bertgereels | 0:88d3b9015f7c | 74 | } |
bertgereels | 0:88d3b9015f7c | 75 | |
bertgereels | 0:88d3b9015f7c | 76 | //ACK 2.05 = 1, ACK 2.04 = 2, ACK 4.00 = 3 |
bertgereels | 0:88d3b9015f7c | 77 | void Master::sendAcknowledgement(int ack_type, int value_to_include){ //dit moet in UDP klasse |
bertgereels | 0:88d3b9015f7c | 78 | |
bertgereels | 0:88d3b9015f7c | 79 | } |
bertgereels | 0:88d3b9015f7c | 80 | |
bertgereels | 0:88d3b9015f7c | 81 | void Master::sendMessageToPc(char *message_to_pc){ |
bertgereels | 0:88d3b9015f7c | 82 | printf(message_to_pc); |
bertgereels | 0:88d3b9015f7c | 83 | printf("\r\n"); |
bertgereels | 0:88d3b9015f7c | 84 | } |
bertgereels | 0:88d3b9015f7c | 85 | |
bertgereels | 0:88d3b9015f7c | 86 | void Master::appendChar(char array[], char charToAppend, int position){ |
bertgereels | 0:88d3b9015f7c | 87 | |
bertgereels | 0:88d3b9015f7c | 88 | } |
bertgereels | 0:88d3b9015f7c | 89 | |
bertgereels | 0:88d3b9015f7c | 90 | |
bertgereels | 0:88d3b9015f7c | 91 | } |
bertgereels | 0:88d3b9015f7c | 92 | |
bertgereels | 0:88d3b9015f7c | 93 | |
bertgereels | 0:88d3b9015f7c | 94 | |
bertgereels | 0:88d3b9015f7c | 95 | |
bertgereels | 0:88d3b9015f7c | 96 | |
bertgereels | 0:88d3b9015f7c | 97 |