project for iot vives

Dependencies:   mbed C12832 LM75B FXOS8700Q

Committer:
tweagle
Date:
Wed Nov 04 12:41:46 2020 +0000
Revision:
0:3c9cd556e510
project1-iot-simondeneve

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tweagle 0:3c9cd556e510 1 #include "StateMachine.h"
tweagle 0:3c9cd556e510 2 #include "mbed.h"
tweagle 0:3c9cd556e510 3 #include "EthernetInterface.h"
tweagle 0:3c9cd556e510 4 #include "LM75B.h"
tweagle 0:3c9cd556e510 5
tweagle 0:3c9cd556e510 6 uint16_t temperature =(sensor.read());
tweagle 0:3c9cd556e510 7 char upper = (temperature >> 8) & 0x00FF;
tweagle 0:3c9cd556e510 8 char lower = temperature & 0x00FF;
tweagle 0:3c9cd556e510 9 char pwm = (char)(pot1);
tweagle 0:3c9cd556e510 10 char id = 0x14;
tweagle 0:3c9cd556e510 11
tweagle 0:3c9cd556e510 12 char payload[4] = {upper, lower, pwm, id};
tweagle 0:3c9cd556e510 13
tweagle 0:3c9cd556e510 14 StateMachine::StateMachine(){
tweagle 0:3c9cd556e510 15 r = new PwmOut(D5);
tweagle 0:3c9cd556e510 16 g = new PwmOut(D9);
tweagle 0:3c9cd556e510 17 b = new PwmOut(D8);
tweagle 0:3c9cd556e510 18
tweagle 0:3c9cd556e510 19 pot1 = new AnalogIn (A0);
tweagle 0:3c9cd556e510 20 pot2 = new AnalogIn(A1);
tweagle 0:3c9cd556e510 21 up = new DigitalIn(A2);
tweagle 0:3c9cd556e510 22 down = new DigitalIn(A3);
tweagle 0:3c9cd556e510 23 left = new DigitalIn(A4);
tweagle 0:3c9cd556e510 24 right = new DigitalIn(A5);
tweagle 0:3c9cd556e510 25
tweagle 0:3c9cd556e510 26 lcd = new C12832(D11, D13, D12, D7, D10);
tweagle 0:3c9cd556e510 27
tweagle 0:3c9cd556e510 28 sensor = new LM75B(D14,D15);
tweagle 0:3c9cd556e510 29
tweagle 0:3c9cd556e510 30 led = new DigitalOut(LED1);
tweagle 0:3c9cd556e510 31
tweagle 0:3c9cd556e510 32
tweagle 0:3c9cd556e510 33 currentState = INIT;
tweagle 0:3c9cd556e510 34 }
tweagle 0:3c9cd556e510 35
tweagle 0:3c9cd556e510 36 StateMachine::~StateMachine(){
tweagle 0:3c9cd556e510 37 delete r;
tweagle 0:3c9cd556e510 38 delete g;
tweagle 0:3c9cd556e510 39 delete b;
tweagle 0:3c9cd556e510 40 delete pot1;
tweagle 0:3c9cd556e510 41 delete pot2;
tweagle 0:3c9cd556e510 42 delete up;
tweagle 0:3c9cd556e510 43 delete down;
tweagle 0:3c9cd556e510 44 delete left;
tweagle 0:3c9cd556e510 45 delete right;
tweagle 0:3c9cd556e510 46
tweagle 0:3c9cd556e510 47 delete lcd;
tweagle 0:3c9cd556e510 48
tweagle 0:3c9cd556e510 49 delete sensor;
tweagle 0:3c9cd556e510 50
tweagle 0:3c9cd556e510 51 delete led;
tweagle 0:3c9cd556e510 52 }
tweagle 0:3c9cd556e510 53
tweagle 0:3c9cd556e510 54 void StateMachine::start()
tweagle 0:3c9cd556e510 55 {
tweagle 0:3c9cd556e510 56 while(true)
tweagle 0:3c9cd556e510 57 {
tweagle 0:3c9cd556e510 58 // switch(currentState) {
tweagle 0:3c9cd556e510 59 // case INIT:
tweagle 0:3c9cd556e510 60 // actionInit();
tweagle 0:3c9cd556e510 61 // currentstate =;
tweagle 0:3c9cd556e510 62 // break;
tweagle 0:3c9cd556e510 63 // case BLUE:
tweagle 0:3c9cd556e510 64 // actionBlue();
tweagle 0:3c9cd556e510 65 // currentState = INIT;
tweagle 0:3c9cd556e510 66 // break;
tweagle 0:3c9cd556e510 67 // case GREEN:
tweagle 0:3c9cd556e510 68 // actionGreen();
tweagle 0:3c9cd556e510 69 // currentState = INIT;
tweagle 0:3c9cd556e510 70 // break;
tweagle 0:3c9cd556e510 71 // default:
tweagle 0:3c9cd556e510 72 // currentState = CERROR;
tweagle 0:3c9cd556e510 73 // return;
tweagle 0:3c9cd556e510 74 if(currentState == INIT){actionInit();}
tweagle 0:3c9cd556e510 75 if(currentState == SERVER) {actionServer();}
tweagle 0:3c9cd556e510 76 if(currentState == CLIENT) {actionClient();}
tweagle 0:3c9cd556e510 77 }
tweagle 0:3c9cd556e510 78 }
tweagle 0:3c9cd556e510 79
tweagle 0:3c9cd556e510 80 void StateMachine::actionInit(){
tweagle 0:3c9cd556e510 81 printf("Select left for server, right for client.");
tweagle 0:3c9cd556e510 82 if(left){currentState = SERVER;}
tweagle 0:3c9cd556e510 83 if(right){currentState = CLIENT;}
tweagle 0:3c9cd556e510 84 wait(1.0);
tweagle 0:3c9cd556e510 85 }
tweagle 0:3c9cd556e510 86
tweagle 0:3c9cd556e510 87 void StateMachine::actionClient(){
tweagle 0:3c9cd556e510 88
tweagle 0:3c9cd556e510 89 printf("Client example\n\r");
tweagle 0:3c9cd556e510 90
tweagle 0:3c9cd556e510 91 EthernetInterface eth;
tweagle 0:3c9cd556e510 92 eth.set_network("192.168.0.20","255.255.255.0","192.168.0.1");
tweagle 0:3c9cd556e510 93 eth.connect();
tweagle 0:3c9cd556e510 94
tweagle 0:3c9cd556e510 95 printf("The client IP address is '%s'\n\r", eth.get_ip_address());
tweagle 0:3c9cd556e510 96
tweagle 0:3c9cd556e510 97 TCPSocket socket;
tweagle 0:3c9cd556e510 98 socket.open(&eth);
tweagle 0:3c9cd556e510 99 socket.connect("192.168.0.28",4000);
tweagle 0:3c9cd556e510 100
tweagle 0:3c9cd556e510 101
tweagle 0:3c9cd556e510 102
tweagle 0:3c9cd556e510 103 payload[0] = upper;
tweagle 0:3c9cd556e510 104 payload[1] = lower;
tweagle 0:3c9cd556e510 105 payload[2] = pwm;
tweagle 0:3c9cd556e510 106 payload[3] = id;
tweagle 0:3c9cd556e510 107
tweagle 0:3c9cd556e510 108 printf("%d\n", upper);
tweagle 0:3c9cd556e510 109 printf("%d\n", lower);
tweagle 0:3c9cd556e510 110
tweagle 0:3c9cd556e510 111 // print hex value of temperature on lcd
tweagle 0:3c9cd556e510 112 lcd.printf("Temp %.1x\n", sensor.read() );
tweagle 0:3c9cd556e510 113 printf(payload);
tweagle 0:3c9cd556e510 114
tweagle 0:3c9cd556e510 115 socket.send(payload, 4);
tweagle 0:3c9cd556e510 116 socket.close();
tweagle 0:3c9cd556e510 117 wait(1.0);
tweagle 0:3c9cd556e510 118 }
tweagle 0:3c9cd556e510 119
tweagle 0:3c9cd556e510 120 void StateMachine::actionServer(){
tweagle 0:3c9cd556e510 121 printf("Server example\n\r");
tweagle 0:3c9cd556e510 122
tweagle 0:3c9cd556e510 123 EthernetInterface eth;
tweagle 0:3c9cd556e510 124 eth.set_network("192.168.0.28","255.255.255.0","192.168.0.1");
tweagle 0:3c9cd556e510 125 eth.connect();
tweagle 0:3c9cd556e510 126
tweagle 0:3c9cd556e510 127 printf("The Server IP address is '%s'\n\r", eth.get_ip_address());
tweagle 0:3c9cd556e510 128
tweagle 0:3c9cd556e510 129 TCPServer srv(&eth);
tweagle 0:3c9cd556e510 130
tweagle 0:3c9cd556e510 131 srv.bind(4000);
tweagle 0:3c9cd556e510 132
tweagle 0:3c9cd556e510 133 srv.listen();
tweagle 0:3c9cd556e510 134
tweagle 0:3c9cd556e510 135 while(true){
tweagle 0:3c9cd556e510 136 TCPSocket client;
tweagle 0:3c9cd556e510 137 SocketAddress client_addr;
tweagle 0:3c9cd556e510 138 char *buffer = "Hello TCP client!\r\n";
tweagle 0:3c9cd556e510 139
tweagle 0:3c9cd556e510 140 srv.accept(&client, &client_addr);
tweagle 0:3c9cd556e510 141
tweagle 0:3c9cd556e510 142 printf("Accepted %s:%d\n\r", client_addr.get_ip_address(),
tweagle 0:3c9cd556e510 143 client_addr.get_port());
tweagle 0:3c9cd556e510 144
tweagle 0:3c9cd556e510 145 client.send(buffer, 256);
tweagle 0:3c9cd556e510 146
tweagle 0:3c9cd556e510 147 char rbuffer[4];
tweagle 0:3c9cd556e510 148 client.recv(rbuffer, sizeof rbuffer);
tweagle 0:3c9cd556e510 149
tweagle 0:3c9cd556e510 150 uint8_t upper = rbuffer[0];
tweagle 0:3c9cd556e510 151 uint8_t lower = rbuffer[1];
tweagle 0:3c9cd556e510 152 uint8_t PWM = rbuffer[2];
tweagle 0:3c9cd556e510 153 uint8_t ID = rbuffer[3];
tweagle 0:3c9cd556e510 154
tweagle 0:3c9cd556e510 155 float temp = ((upper << 8) | lower) / 256.00;
tweagle 0:3c9cd556e510 156
tweagle 0:3c9cd556e510 157 printf("Temperature is %f\n", temp);
tweagle 0:3c9cd556e510 158
tweagle 0:3c9cd556e510 159 client.close();
tweagle 0:3c9cd556e510 160 wait(1.0);
tweagle 0:3c9cd556e510 161 }
tweagle 0:3c9cd556e510 162 }