Robin Mechele / Mbed 2 deprecated Project_mbed

Dependencies:   EthernetInterface LM75B mbed-rtos mbed

Committer:
RobinMechele
Date:
Fri Mar 16 13:05:57 2018 +0000
Revision:
2:ecc0c5c14bc1
Parent:
1:db9b9bec0133
Child:
3:fbf3c92f10ee
Console interface gemaakt master

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RobinMechele 1:db9b9bec0133 1 #include "slave.h"
RobinMechele 1:db9b9bec0133 2 #include "string.h"
RobinMechele 1:db9b9bec0133 3 #include "temperature.h"
RobinMechele 1:db9b9bec0133 4 #include "potentiometer.h"
RobinMechele 1:db9b9bec0133 5 #include "lcdcontrol.h"
RobinMechele 1:db9b9bec0133 6 #include "led.h"
RobinMechele 1:db9b9bec0133 7 #include "buzzer.h"
RobinMechele 1:db9b9bec0133 8
RobinMechele 1:db9b9bec0133 9 Temperature temperature;
RobinMechele 1:db9b9bec0133 10 Potentiometer potentiometer;
RobinMechele 1:db9b9bec0133 11 LcdControl screen;
RobinMechele 1:db9b9bec0133 12 Led led;
RobinMechele 1:db9b9bec0133 13 Buzzer buzzer;
RobinMechele 1:db9b9bec0133 14
RobinMechele 1:db9b9bec0133 15 Slave::Slave()
RobinMechele 1:db9b9bec0133 16 :answer()
RobinMechele 1:db9b9bec0133 17 {
RobinMechele 1:db9b9bec0133 18 //Constructor
RobinMechele 1:db9b9bec0133 19 }
RobinMechele 1:db9b9bec0133 20
RobinMechele 1:db9b9bec0133 21 void Slave::slaveRun(const char* ip)
RobinMechele 1:db9b9bec0133 22 {
RobinMechele 1:db9b9bec0133 23 EthernetInterface ethernet;
RobinMechele 1:db9b9bec0133 24 ethernet.init(ip,"255.255.255.0", "192.168.0.1");
RobinMechele 1:db9b9bec0133 25 ethernet.connect();
RobinMechele 1:db9b9bec0133 26 printf("Your ip is: %s", ethernet.getIPAddress());
RobinMechele 1:db9b9bec0133 27
RobinMechele 1:db9b9bec0133 28 UDPSocket slave;
RobinMechele 1:db9b9bec0133 29 slave.bind(4000);
RobinMechele 1:db9b9bec0133 30 Endpoint master;
RobinMechele 1:db9b9bec0133 31
RobinMechele 1:db9b9bec0133 32 while(1){
RobinMechele 1:db9b9bec0133 33 char buffer[512] = {0};
RobinMechele 1:db9b9bec0133 34 printf("\nWaiting for UDP packet...\n\r");
RobinMechele 1:db9b9bec0133 35
RobinMechele 1:db9b9bec0133 36 int n = slave.receiveFrom(master, buffer, sizeof(buffer));
RobinMechele 1:db9b9bec0133 37 buffer[n] = '\0';
RobinMechele 1:db9b9bec0133 38
RobinMechele 1:db9b9bec0133 39 printf("Received packet from: %s\n\r", master.get_address());
RobinMechele 1:db9b9bec0133 40 printf("Received: '%s'\r\n", buffer);
RobinMechele 1:db9b9bec0133 41 actionSlave(buffer);
RobinMechele 1:db9b9bec0133 42
RobinMechele 1:db9b9bec0133 43 slave.sendTo(master, answer, 50);
RobinMechele 1:db9b9bec0133 44 answerReset();
RobinMechele 1:db9b9bec0133 45 }
RobinMechele 1:db9b9bec0133 46 }
RobinMechele 1:db9b9bec0133 47
RobinMechele 1:db9b9bec0133 48 void Slave::actionSlave(const char* bufferke){
RobinMechele 1:db9b9bec0133 49 char* command = strtok((char*)bufferke, " ");
RobinMechele 1:db9b9bec0133 50 char* action = strtok(NULL, " ");
RobinMechele 1:db9b9bec0133 51 if(strcmp(command, "GET") == 0)
RobinMechele 1:db9b9bec0133 52 {
RobinMechele 1:db9b9bec0133 53 getRequest(action);
RobinMechele 1:db9b9bec0133 54 }
RobinMechele 2:ecc0c5c14bc1 55 else
RobinMechele 2:ecc0c5c14bc1 56 if(strcmp(command, "PUT") == 0)
RobinMechele 1:db9b9bec0133 57 {
RobinMechele 1:db9b9bec0133 58 putRequest(action);
RobinMechele 1:db9b9bec0133 59 }
RobinMechele 1:db9b9bec0133 60 else
RobinMechele 1:db9b9bec0133 61 {
RobinMechele 1:db9b9bec0133 62 answerAppend("ACK 4.0 ID");
RobinMechele 1:db9b9bec0133 63 }
RobinMechele 1:db9b9bec0133 64 }
RobinMechele 1:db9b9bec0133 65
RobinMechele 1:db9b9bec0133 66 void Slave::getRequest(char* action)
RobinMechele 1:db9b9bec0133 67 {
RobinMechele 1:db9b9bec0133 68 char temp[8];
RobinMechele 1:db9b9bec0133 69 if(strcmp(action, "/temperature") == 0)
RobinMechele 1:db9b9bec0133 70 {
RobinMechele 1:db9b9bec0133 71 sprintf(temp, "%.3f", temperature.getTemperature());
RobinMechele 1:db9b9bec0133 72 answerAppend("ACK 2.05 ID ");
RobinMechele 1:db9b9bec0133 73 answerAppend(temp);
RobinMechele 1:db9b9bec0133 74 }
RobinMechele 1:db9b9bec0133 75 else
RobinMechele 1:db9b9bec0133 76 if(strcmp(action, "/potentiometer") == 0)
RobinMechele 1:db9b9bec0133 77 {
RobinMechele 1:db9b9bec0133 78 sprintf(temp, "%.0f", potentiometer.getPotentiometer()*255);
RobinMechele 1:db9b9bec0133 79 answerAppend("ACK 2.05 ID ");
RobinMechele 1:db9b9bec0133 80 answerAppend(temp);
RobinMechele 1:db9b9bec0133 81 }
RobinMechele 1:db9b9bec0133 82 else
RobinMechele 1:db9b9bec0133 83 {
RobinMechele 1:db9b9bec0133 84 answerAppend("ACK 4.0 ID");
RobinMechele 1:db9b9bec0133 85 }
RobinMechele 1:db9b9bec0133 86 }
RobinMechele 1:db9b9bec0133 87
RobinMechele 1:db9b9bec0133 88 void Slave::putRequest(char* action)
RobinMechele 1:db9b9bec0133 89 {
RobinMechele 1:db9b9bec0133 90 if(strcmp(action, "/lcd") == 0)
RobinMechele 1:db9b9bec0133 91 {
RobinMechele 1:db9b9bec0133 92 answerAppend("ACK 2.04 ID");
RobinMechele 1:db9b9bec0133 93 screen.lcdSlave(strtok(NULL, "\0"));
RobinMechele 1:db9b9bec0133 94 }
RobinMechele 1:db9b9bec0133 95 else
RobinMechele 1:db9b9bec0133 96 if(strcmp(action, "/led") == 0)
RobinMechele 1:db9b9bec0133 97 {
RobinMechele 1:db9b9bec0133 98 answerAppend("ACK 2.04 ID");
RobinMechele 1:db9b9bec0133 99 led.setColor(strtok(NULL, " "));
RobinMechele 1:db9b9bec0133 100 }
RobinMechele 1:db9b9bec0133 101 else
RobinMechele 1:db9b9bec0133 102 if(strcmp(action, "/buzzer") == 0)
RobinMechele 1:db9b9bec0133 103 {
RobinMechele 1:db9b9bec0133 104 answerAppend("ACK 2.04 ID");
RobinMechele 1:db9b9bec0133 105 int one = atoi(strtok(NULL, " -"));
RobinMechele 1:db9b9bec0133 106 int two = atoi(strtok(NULL, " -"));
RobinMechele 1:db9b9bec0133 107 printf("%d %d", one,two);
RobinMechele 1:db9b9bec0133 108 buzzer.playBuzzer(one, two);
RobinMechele 1:db9b9bec0133 109 }
RobinMechele 1:db9b9bec0133 110 else
RobinMechele 1:db9b9bec0133 111 {
RobinMechele 1:db9b9bec0133 112 answerAppend("ACK 4.0 ID");
RobinMechele 1:db9b9bec0133 113 }
RobinMechele 1:db9b9bec0133 114 }
RobinMechele 1:db9b9bec0133 115
RobinMechele 1:db9b9bec0133 116 void Slave::answerAppend(char* append)
RobinMechele 1:db9b9bec0133 117 {
RobinMechele 1:db9b9bec0133 118 strcat(answer, append);
RobinMechele 1:db9b9bec0133 119 }
RobinMechele 1:db9b9bec0133 120
RobinMechele 1:db9b9bec0133 121 void Slave::answerReset(){
RobinMechele 1:db9b9bec0133 122 for(int i = 0; i < 512; i++)
RobinMechele 1:db9b9bec0133 123 {
RobinMechele 1:db9b9bec0133 124 answer[i] = NULL;
RobinMechele 1:db9b9bec0133 125 }
RobinMechele 1:db9b9bec0133 126 }