Robin Mechele / Mbed 2 deprecated Project_mbed

Dependencies:   EthernetInterface LM75B mbed-rtos mbed

Committer:
RobinMechele
Date:
Fri Mar 16 16:11:17 2018 +0000
Revision:
3:fbf3c92f10ee
Parent:
2:ecc0c5c14bc1
Child:
7:2de256f902c8
Alles werkt nu zoals het moet, nog juist de comments btw fzo;

Who changed what in which revision?

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