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

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?

UserRevisionLine numberNew 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