Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: EthernetInterface LM75B mbed-rtos mbed
Slave.cpp@3:fbf3c92f10ee, 2018-03-16 (annotated)
- 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?
User | Revision | Line number | New 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 | } |