project met UDP IP

Dependencies:   EthernetInterface LM75B mbed-rtos mbed

Fork of communication by Jelle Raes

Committer:
JelleRaes
Date:
Tue Mar 13 09:40:51 2018 +0000
Revision:
0:52e944ca21ea
Child:
1:550192b4ae8e
voorlopig beste versie;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JelleRaes 0:52e944ca21ea 1 #include "mbed.h"
JelleRaes 0:52e944ca21ea 2 #include "slave.h"
JelleRaes 0:52e944ca21ea 3 #include "C12832A1Z.h"
JelleRaes 0:52e944ca21ea 4 #include "led.h"
JelleRaes 0:52e944ca21ea 5 #include "LM75B.h"
JelleRaes 0:52e944ca21ea 6 #include <string.h>
JelleRaes 0:52e944ca21ea 7 #include "EthernetInterface.h"
JelleRaes 0:52e944ca21ea 8
JelleRaes 0:52e944ca21ea 9 LM75B sensor(p28,p27);
JelleRaes 0:52e944ca21ea 10 Serial slavepc(USBTX, USBRX);
JelleRaes 0:52e944ca21ea 11 led mijnobject;
JelleRaes 0:52e944ca21ea 12 C12832A1Z slaveLCD(p5, p7, p6, p8, p11);
JelleRaes 0:52e944ca21ea 13
JelleRaes 0:52e944ca21ea 14 PwmOut r(p23);
JelleRaes 0:52e944ca21ea 15 PwmOut g(p24);
JelleRaes 0:52e944ca21ea 16 PwmOut b(p25);
JelleRaes 0:52e944ca21ea 17
JelleRaes 0:52e944ca21ea 18 AnalogIn p1(p19);
JelleRaes 0:52e944ca21ea 19 AnalogIn p2(p20);
JelleRaes 0:52e944ca21ea 20
JelleRaes 0:52e944ca21ea 21 PwmOut spkr(p26);
JelleRaes 0:52e944ca21ea 22
JelleRaes 0:52e944ca21ea 23 float freq[]={0,110,110,110,98,130,110,98,130,110,165,165,165,175,130,104,98,130};
JelleRaes 0:52e944ca21ea 24 float length[]={0,480,480,480,360,120,480,360,120,960,480,480,480,360,120,480,360,120};
JelleRaes 0:52e944ca21ea 25 float delay[]={0,100,100,100,75,100,100,75,100,100,100,100,100,75,100,100,75,100};
JelleRaes 0:52e944ca21ea 26
JelleRaes 0:52e944ca21ea 27 void startSlave(const char *ip){
JelleRaes 0:52e944ca21ea 28 EthernetInterface eth;
JelleRaes 0:52e944ca21ea 29 eth.init(ip, "255.255.255.0", "192.168.0.1");
JelleRaes 0:52e944ca21ea 30 eth.connect();
JelleRaes 0:52e944ca21ea 31 slavepc.printf("ip = %s\n\r",eth.getIPAddress());
JelleRaes 0:52e944ca21ea 32 slavepc.printf("gateway = %s\n\r",eth.getGateway());
JelleRaes 0:52e944ca21ea 33 slavepc.printf("mask = %s\n\r",eth.getNetworkMask());
JelleRaes 0:52e944ca21ea 34
JelleRaes 0:52e944ca21ea 35 UDPSocket server;
JelleRaes 0:52e944ca21ea 36 server.bind(4000);
JelleRaes 0:52e944ca21ea 37
JelleRaes 0:52e944ca21ea 38 Endpoint client;
JelleRaes 0:52e944ca21ea 39
JelleRaes 0:52e944ca21ea 40 while (true){
JelleRaes 0:52e944ca21ea 41 char slaveBuffer[512]={NULL};
JelleRaes 0:52e944ca21ea 42 slavepc.printf("\nWaiting for UDP packet...\n\r");
JelleRaes 0:52e944ca21ea 43 int n = server.receiveFrom(client, slaveBuffer, sizeof(slaveBuffer));
JelleRaes 0:52e944ca21ea 44 slaveBuffer[n] = '\0';
JelleRaes 0:52e944ca21ea 45
JelleRaes 0:52e944ca21ea 46 slavepc.printf("Received packet from: %s\n\r", client.get_address());
JelleRaes 0:52e944ca21ea 47 slavepc.printf("Packet contents : '%s'\n\r",slaveBuffer);
JelleRaes 0:52e944ca21ea 48
JelleRaes 0:52e944ca21ea 49 slavepc.printf("Sending Packet back to Client\n\r");
JelleRaes 0:52e944ca21ea 50 server.sendTo(client, getResponse(slaveBuffer), 20);
JelleRaes 0:52e944ca21ea 51 }
JelleRaes 0:52e944ca21ea 52 }
JelleRaes 0:52e944ca21ea 53 char *getResponse(const char *buffer){
JelleRaes 0:52e944ca21ea 54 char *request = strtok((char*)buffer," ");//{buffer[0],buffer[1],buffer[2],'\0'};
JelleRaes 0:52e944ca21ea 55 char *resource = strtok(NULL," ");
JelleRaes 0:52e944ca21ea 56 slavepc.printf("resource =%s",resource);
JelleRaes 0:52e944ca21ea 57 if(strcmp(request,"GET")==0){
JelleRaes 0:52e944ca21ea 58 if(strcmp(resource,"/TEMPERATURE")==0){
JelleRaes 0:52e944ca21ea 59 char *tempbuffer;
JelleRaes 0:52e944ca21ea 60 sprintf(tempbuffer,"okditisdom%9f",getTemp());
JelleRaes 0:52e944ca21ea 61 slavepc.printf("%s",tempbuffer);
JelleRaes 0:52e944ca21ea 62 return tempbuffer;
JelleRaes 0:52e944ca21ea 63 }
JelleRaes 0:52e944ca21ea 64 else if(strcmp(resource,"/POTENTIOMETER")==0){
JelleRaes 0:52e944ca21ea 65 char *tempbuffer;
JelleRaes 0:52e944ca21ea 66 slavepc.printf("%f",getPot());
JelleRaes 0:52e944ca21ea 67 sprintf(tempbuffer,"potwaarde%9f",getPot());
JelleRaes 0:52e944ca21ea 68 slavepc.printf("%s",tempbuffer);
JelleRaes 0:52e944ca21ea 69 return tempbuffer;
JelleRaes 0:52e944ca21ea 70 }
JelleRaes 0:52e944ca21ea 71 else{
JelleRaes 0:52e944ca21ea 72 return "get request failed";
JelleRaes 0:52e944ca21ea 73 }
JelleRaes 0:52e944ca21ea 74 }
JelleRaes 0:52e944ca21ea 75 else if(strcmp(request,"PUT")==0){
JelleRaes 0:52e944ca21ea 76 if(strcmp(resource,"/BUZZER")==0){
JelleRaes 0:52e944ca21ea 77 char *eerste = strtok(NULL," -");
JelleRaes 0:52e944ca21ea 78 char *tweede = strtok(NULL," -");
JelleRaes 0:52e944ca21ea 79 int first = atoi(eerste);
JelleRaes 0:52e944ca21ea 80 int last = atoi(tweede);
JelleRaes 0:52e944ca21ea 81 putBuzzer(first,last);
JelleRaes 0:52e944ca21ea 82 return "put buz request received";
JelleRaes 0:52e944ca21ea 83 }
JelleRaes 0:52e944ca21ea 84 else if(strcmp(resource,"/LED")==0){
JelleRaes 0:52e944ca21ea 85 putLED(strtok(NULL,'\0'));
JelleRaes 0:52e944ca21ea 86 return "put led request received";
JelleRaes 0:52e944ca21ea 87 }
JelleRaes 0:52e944ca21ea 88 else if(strcmp(resource,"/LCD")==0){
JelleRaes 0:52e944ca21ea 89 putLCD(strtok(NULL,'\0'));
JelleRaes 0:52e944ca21ea 90 return "put lcd request received";
JelleRaes 0:52e944ca21ea 91 }
JelleRaes 0:52e944ca21ea 92 else{
JelleRaes 0:52e944ca21ea 93 return "put request failed";
JelleRaes 0:52e944ca21ea 94 }
JelleRaes 0:52e944ca21ea 95 }
JelleRaes 0:52e944ca21ea 96 else{
JelleRaes 0:52e944ca21ea 97 return "failed";
JelleRaes 0:52e944ca21ea 98 }
JelleRaes 0:52e944ca21ea 99 }
JelleRaes 0:52e944ca21ea 100
JelleRaes 0:52e944ca21ea 101
JelleRaes 0:52e944ca21ea 102
JelleRaes 0:52e944ca21ea 103
JelleRaes 0:52e944ca21ea 104
JelleRaes 0:52e944ca21ea 105 float getTemp(){
JelleRaes 0:52e944ca21ea 106 return sensor.read();
JelleRaes 0:52e944ca21ea 107 }
JelleRaes 0:52e944ca21ea 108
JelleRaes 0:52e944ca21ea 109 float getPot(){
JelleRaes 0:52e944ca21ea 110 return p1.read();
JelleRaes 0:52e944ca21ea 111 }
JelleRaes 0:52e944ca21ea 112
JelleRaes 0:52e944ca21ea 113 void putLCD(char *str){
JelleRaes 0:52e944ca21ea 114 slaveLCD.printf("%s",str);
JelleRaes 0:52e944ca21ea 115 }
JelleRaes 0:52e944ca21ea 116
JelleRaes 0:52e944ca21ea 117 void putLED(char *color){
JelleRaes 0:52e944ca21ea 118 r=mijnobject.getCOLOR(color).redValue;
JelleRaes 0:52e944ca21ea 119 g=mijnobject.getCOLOR(color).greenValue;
JelleRaes 0:52e944ca21ea 120 b=mijnobject.getCOLOR(color).blueValue;
JelleRaes 0:52e944ca21ea 121 }
JelleRaes 0:52e944ca21ea 122
JelleRaes 0:52e944ca21ea 123 void putLED(float red, float green, float blue){
JelleRaes 0:52e944ca21ea 124 r= red;
JelleRaes 0:52e944ca21ea 125 g= green;
JelleRaes 0:52e944ca21ea 126 b= blue;
JelleRaes 0:52e944ca21ea 127 }
JelleRaes 0:52e944ca21ea 128
JelleRaes 0:52e944ca21ea 129 void putBuzzer(int start,int einde){
JelleRaes 0:52e944ca21ea 130 for(start; start<einde+1;++start){
JelleRaes 0:52e944ca21ea 131 spkr.period(1/freq[start]);
JelleRaes 0:52e944ca21ea 132 spkr=0.5;
JelleRaes 0:52e944ca21ea 133 wait(length[start]/1000);
JelleRaes 0:52e944ca21ea 134 spkr=0;
JelleRaes 0:52e944ca21ea 135 wait(delay[start]/1000);
JelleRaes 0:52e944ca21ea 136 }
JelleRaes 0:52e944ca21ea 137 }