Robin Mechele / Mbed 2 deprecated Project_mbed

Dependencies:   EthernetInterface LM75B mbed-rtos mbed

Committer:
RobinMechele
Date:
Wed Mar 14 14:38:43 2018 +0000
Revision:
1:db9b9bec0133
Child:
2:ecc0c5c14bc1
Alles werkt yayyyy, nu nog bitj kushn;

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 1:db9b9bec0133 55 else if(strcmp(command, "PUT") == 0)
RobinMechele 1:db9b9bec0133 56 {
RobinMechele 1:db9b9bec0133 57 putRequest(action);
RobinMechele 1:db9b9bec0133 58 }
RobinMechele 1:db9b9bec0133 59 else
RobinMechele 1:db9b9bec0133 60 {
RobinMechele 1:db9b9bec0133 61 answerAppend("ACK 4.0 ID");
RobinMechele 1:db9b9bec0133 62 }
RobinMechele 1:db9b9bec0133 63 }
RobinMechele 1:db9b9bec0133 64
RobinMechele 1:db9b9bec0133 65 void Slave::getRequest(char* action)
RobinMechele 1:db9b9bec0133 66 {
RobinMechele 1:db9b9bec0133 67 char temp[8];
RobinMechele 1:db9b9bec0133 68 if(strcmp(action, "/temperature") == 0)
RobinMechele 1:db9b9bec0133 69 {
RobinMechele 1:db9b9bec0133 70 sprintf(temp, "%.3f", temperature.getTemperature());
RobinMechele 1:db9b9bec0133 71 answerAppend("ACK 2.05 ID ");
RobinMechele 1:db9b9bec0133 72 answerAppend(temp);
RobinMechele 1:db9b9bec0133 73 }
RobinMechele 1:db9b9bec0133 74 else
RobinMechele 1:db9b9bec0133 75 if(strcmp(action, "/potentiometer") == 0)
RobinMechele 1:db9b9bec0133 76 {
RobinMechele 1:db9b9bec0133 77 sprintf(temp, "%.0f", potentiometer.getPotentiometer()*255);
RobinMechele 1:db9b9bec0133 78 answerAppend("ACK 2.05 ID ");
RobinMechele 1:db9b9bec0133 79 answerAppend(temp);
RobinMechele 1:db9b9bec0133 80 }
RobinMechele 1:db9b9bec0133 81 else
RobinMechele 1:db9b9bec0133 82 {
RobinMechele 1:db9b9bec0133 83 answerAppend("ACK 4.0 ID");
RobinMechele 1:db9b9bec0133 84 }
RobinMechele 1:db9b9bec0133 85 }
RobinMechele 1:db9b9bec0133 86
RobinMechele 1:db9b9bec0133 87 void Slave::putRequest(char* action)
RobinMechele 1:db9b9bec0133 88 {
RobinMechele 1:db9b9bec0133 89 if(strcmp(action, "/lcd") == 0)
RobinMechele 1:db9b9bec0133 90 {
RobinMechele 1:db9b9bec0133 91 answerAppend("ACK 2.04 ID");
RobinMechele 1:db9b9bec0133 92 screen.lcdSlave(strtok(NULL, "\0"));
RobinMechele 1:db9b9bec0133 93 }
RobinMechele 1:db9b9bec0133 94 else
RobinMechele 1:db9b9bec0133 95 if(strcmp(action, "/led") == 0)
RobinMechele 1:db9b9bec0133 96 {
RobinMechele 1:db9b9bec0133 97 answerAppend("ACK 2.04 ID");
RobinMechele 1:db9b9bec0133 98 led.setColor(strtok(NULL, " "));
RobinMechele 1:db9b9bec0133 99 }
RobinMechele 1:db9b9bec0133 100 else
RobinMechele 1:db9b9bec0133 101 if(strcmp(action, "/buzzer") == 0)
RobinMechele 1:db9b9bec0133 102 {
RobinMechele 1:db9b9bec0133 103 answerAppend("ACK 2.04 ID");
RobinMechele 1:db9b9bec0133 104 int one = atoi(strtok(NULL, " -"));
RobinMechele 1:db9b9bec0133 105 int two = atoi(strtok(NULL, " -"));
RobinMechele 1:db9b9bec0133 106 printf("%d %d", one,two);
RobinMechele 1:db9b9bec0133 107 buzzer.playBuzzer(one, two);
RobinMechele 1:db9b9bec0133 108 }
RobinMechele 1:db9b9bec0133 109 else
RobinMechele 1:db9b9bec0133 110 {
RobinMechele 1:db9b9bec0133 111 answerAppend("ACK 4.0 ID");
RobinMechele 1:db9b9bec0133 112 }
RobinMechele 1:db9b9bec0133 113 }
RobinMechele 1:db9b9bec0133 114
RobinMechele 1:db9b9bec0133 115 void Slave::answerAppend(char* append)
RobinMechele 1:db9b9bec0133 116 {
RobinMechele 1:db9b9bec0133 117 strcat(answer, append);
RobinMechele 1:db9b9bec0133 118 }
RobinMechele 1:db9b9bec0133 119
RobinMechele 1:db9b9bec0133 120 void Slave::answerReset(){
RobinMechele 1:db9b9bec0133 121 for(int i = 0; i < 512; i++)
RobinMechele 1:db9b9bec0133 122 {
RobinMechele 1:db9b9bec0133 123 answer[i] = NULL;
RobinMechele 1:db9b9bec0133 124 }
RobinMechele 1:db9b9bec0133 125 }