added clap

Dependencies:   mbed HTTPServer RemoteIR mbed-rtos SDFileSystem EthernetInterface mbed-rpc

Committer:
thelegen27
Date:
Thu Jan 24 08:56:41 2019 +0000
Revision:
17:18d94b50ab39
Parent:
16:2d23297857bc
Fixed Clap

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donatien 0:5630d7e58a0b 1 #include "mbed.h"
sammacjunkie 4:36e0aa194b45 2 #include "EthernetInterface.h"
donatien 0:5630d7e58a0b 3 #include "HTTPServer.h"
sammacjunkie 4:36e0aa194b45 4 #include "FsHandler.h"
sammacjunkie 4:36e0aa194b45 5 #include "RpcHandler.h"
sammacjunkie 4:36e0aa194b45 6 #include "rtos.h"
sammacjunkie 16:2d23297857bc 7 #include <string>
donatien 0:5630d7e58a0b 8
sammacjunkie 6:70a0af38edcc 9 DigitalOut led1(LED1);
sammacjunkie 14:2b63c0f795cb 10 DigitalOut led2(LED2);
thelegen27 17:18d94b50ab39 11 DigitalIn clap_censor(p20);
sammacjunkie 6:70a0af38edcc 12
sammacjunkie 4:36e0aa194b45 13 //Start IR
sammacjunkie 4:36e0aa194b45 14 #include "ReceiverIR.h"
sammacjunkie 4:36e0aa194b45 15 #include "TransmitterIR.h"
sammacjunkie 4:36e0aa194b45 16 #include "IR.h"
sammacjunkie 4:36e0aa194b45 17 //END IR
sarvagyavaish 3:a3b4d032f48f 18
sarvagyavaish 12:20ba5378ede2 19
sarvagyavaish 3:a3b4d032f48f 20 // Start DB
sarvagyavaish 3:a3b4d032f48f 21 #include <stdio.h>
sarvagyavaish 3:a3b4d032f48f 22 #include <stdlib.h>
sarvagyavaish 3:a3b4d032f48f 23 #include "SDFileSystem.h"
sarvagyavaish 3:a3b4d032f48f 24 #include "db.h"
sarvagyavaish 3:a3b4d032f48f 25 // End DB
sarvagyavaish 3:a3b4d032f48f 26
sarvagyavaish 12:20ba5378ede2 27
sarvagyavaish 3:a3b4d032f48f 28 // Start RPC
sarvagyavaish 3:a3b4d032f48f 29 #include "RPCVariable.h"
sammacjunkie 4:36e0aa194b45 30 int Request = 0;
sarvagyavaish 3:a3b4d032f48f 31 int Learn = 0;
thelegen27 17:18d94b50ab39 32 int Clap = 1;
thelegen27 17:18d94b50ab39 33 int ClapStatus = 0;
thelegen27 17:18d94b50ab39 34 int LastClapStatus = 0;
sammacjunkie 7:7b3f53b5e737 35 char Learn_name0;
sammacjunkie 7:7b3f53b5e737 36 char Learn_name1;
sammacjunkie 7:7b3f53b5e737 37 char Learn_name2;
sammacjunkie 7:7b3f53b5e737 38 char Learn_name3;
sammacjunkie 7:7b3f53b5e737 39 char Learn_name4;
sammacjunkie 7:7b3f53b5e737 40 char Learn_name5;
sammacjunkie 7:7b3f53b5e737 41 char Learn_name6;
sammacjunkie 7:7b3f53b5e737 42 char Learn_name7;
sammacjunkie 7:7b3f53b5e737 43 char Learn_name8;
sammacjunkie 7:7b3f53b5e737 44 char Learn_name9;
sarvagyavaish 12:20ba5378ede2 45
sarvagyavaish 3:a3b4d032f48f 46 //Make these variables accessible over RPC by attaching them to an RPCVariable
sammacjunkie 4:36e0aa194b45 47 RPCVariable<int> RPCRequest(&Request, "Request");
sammacjunkie 4:36e0aa194b45 48 RPCVariable<int> RPCLearn(&Learn, "Learn");
thelegen27 17:18d94b50ab39 49 RPCVariable<int> RPCClap(&Clap, "Clap");
sammacjunkie 7:7b3f53b5e737 50 RPCVariable<char> RPCLearner0(&Learn_name0, "Learn_name0");
sammacjunkie 7:7b3f53b5e737 51 RPCVariable<char> RPCLearner1(&Learn_name1, "Learn_name1");
sammacjunkie 7:7b3f53b5e737 52 RPCVariable<char> RPCLearner2(&Learn_name2, "Learn_name2");
sammacjunkie 7:7b3f53b5e737 53 RPCVariable<char> RPCLearner3(&Learn_name3, "Learn_name3");
sammacjunkie 7:7b3f53b5e737 54 RPCVariable<char> RPCLearner4(&Learn_name4, "Learn_name4");
sammacjunkie 7:7b3f53b5e737 55 RPCVariable<char> RPCLearner5(&Learn_name5, "Learn_name5");
sammacjunkie 7:7b3f53b5e737 56 RPCVariable<char> RPCLearner6(&Learn_name6, "Learn_name6");
sammacjunkie 7:7b3f53b5e737 57 RPCVariable<char> RPCLearner7(&Learn_name7, "Learn_name7");
sammacjunkie 7:7b3f53b5e737 58 RPCVariable<char> RPCLearner8(&Learn_name8, "Learn_name8");
sammacjunkie 7:7b3f53b5e737 59 RPCVariable<char> RPCLearner9(&Learn_name9, "Learn_name9");
sarvagyavaish 12:20ba5378ede2 60 // End RPC
sammacjunkie 7:7b3f53b5e737 61
sammacjunkie 7:7b3f53b5e737 62
sammacjunkie 4:36e0aa194b45 63 Serial pc(USBTX, USBRX, "pc");
sarvagyavaish 3:a3b4d032f48f 64
sammacjunkie 4:36e0aa194b45 65 // Instantiate a HTTPServer to handle incoming requests
sammacjunkie 4:36e0aa194b45 66 HTTPServer svr;
sammacjunkie 4:36e0aa194b45 67 // Instantiate a local file system handler named 'local' which will be used later to access files on the mbed.
sammacjunkie 4:36e0aa194b45 68 LocalFileSystem local("local");
donatien 0:5630d7e58a0b 69
sammacjunkie 4:36e0aa194b45 70 SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed
donatien 0:5630d7e58a0b 71
sarvagyavaish 3:a3b4d032f48f 72 int main()
sarvagyavaish 3:a3b4d032f48f 73 {
sammacjunkie 4:36e0aa194b45 74
sammacjunkie 4:36e0aa194b45 75 printf("Setting up Apache...\n \r");
sammacjunkie 4:36e0aa194b45 76
sammacjunkie 4:36e0aa194b45 77 HTTPFsRequestHandler::mount("/local/", "/");
sammacjunkie 13:12749822ba56 78 HTTPFsRequestHandler::mount("/sd/", "/sd/");
sammacjunkie 4:36e0aa194b45 79 svr.addHandler<HTTPFsRequestHandler>("/");
sammacjunkie 4:36e0aa194b45 80 svr.addHandler<HTTPRpcRequestHandler>("/rpc");
sammacjunkie 4:36e0aa194b45 81
sammacjunkie 4:36e0aa194b45 82 EthernetInterface eth;
sammacjunkie 4:36e0aa194b45 83 eth.init(); //Use DHCP
sammacjunkie 13:12749822ba56 84 eth.connect();
sammacjunkie 4:36e0aa194b45 85
sammacjunkie 4:36e0aa194b45 86 // Now start the server on port 80.
sammacjunkie 4:36e0aa194b45 87 if (!svr.start(80, &eth)) {
sammacjunkie 4:36e0aa194b45 88 error("Server not starting !");
sammacjunkie 4:36e0aa194b45 89 exit(0);
sarvagyavaish 3:a3b4d032f48f 90 }
sarvagyavaish 3:a3b4d032f48f 91
sammacjunkie 4:36e0aa194b45 92 printf("IP: %s\n \r", eth.getIPAddress());
sammacjunkie 4:36e0aa194b45 93 printf("Setup OK\n \r");
sammacjunkie 4:36e0aa194b45 94
sammacjunkie 4:36e0aa194b45 95
sarvagyavaish 3:a3b4d032f48f 96
sarvagyavaish 3:a3b4d032f48f 97
sarvagyavaish 3:a3b4d032f48f 98 // DB Init
sarvagyavaish 3:a3b4d032f48f 99 mkdir("/sd/SmartRemote", 0777);
sarvagyavaish 3:a3b4d032f48f 100
sarvagyavaish 12:20ba5378ede2 101 char tuple_code[128];
sarvagyavaish 12:20ba5378ede2 102 char tuple_name[128];
sarvagyavaish 12:20ba5378ede2 103 char tuple_bitlength[128];
sammacjunkie 14:2b63c0f795cb 104 char tuple_format[128];
sammacjunkie 13:12749822ba56 105 char temp[20];
sarvagyavaish 15:c8074f5f241a 106 int n;
sarvagyavaish 3:a3b4d032f48f 107 //End DB init
sarvagyavaish 3:a3b4d032f48f 108
sarvagyavaish 3:a3b4d032f48f 109
sammacjunkie 4:36e0aa194b45 110 //IR Init
sammacjunkie 4:36e0aa194b45 111 uint8_t buf1[32];
sammacjunkie 4:36e0aa194b45 112 uint8_t buf2[32];
sammacjunkie 4:36e0aa194b45 113 int bitlength1;
sammacjunkie 4:36e0aa194b45 114 int bitlength2;
sammacjunkie 16:2d23297857bc 115 char tempstr[3];
sammacjunkie 4:36e0aa194b45 116 RemoteIR::Format format;
sammacjunkie 4:36e0aa194b45 117 memset(buf1, 0x00, sizeof(buf1));
sammacjunkie 4:36e0aa194b45 118 memset(buf2, 0x00, sizeof(buf2));
sammacjunkie 4:36e0aa194b45 119 //END IR Init
sammacjunkie 4:36e0aa194b45 120
sammacjunkie 4:36e0aa194b45 121 printf("Listening...\n \r");
sammacjunkie 4:36e0aa194b45 122
sarvagyavaish 3:a3b4d032f48f 123
sarvagyavaish 3:a3b4d032f48f 124 Timer tm;
sarvagyavaish 3:a3b4d032f48f 125 tm.start();
sarvagyavaish 3:a3b4d032f48f 126 //Listen indefinitely
sarvagyavaish 3:a3b4d032f48f 127 while(true) {
sammacjunkie 4:36e0aa194b45 128 svr.poll();
sarvagyavaish 3:a3b4d032f48f 129 if(tm.read()>.5) {
sarvagyavaish 3:a3b4d032f48f 130 tm.start();
sarvagyavaish 3:a3b4d032f48f 131 }
sammacjunkie 6:70a0af38edcc 132 if (Learn) {
sarvagyavaish 12:20ba5378ede2 133 // Debug LED
sammacjunkie 6:70a0af38edcc 134 led1 = 1;
sammacjunkie 13:12749822ba56 135
sarvagyavaish 12:20ba5378ede2 136 // Receive the code
sammacjunkie 6:70a0af38edcc 137 {
sammacjunkie 6:70a0af38edcc 138 bitlength1 = receive(&format, buf1, sizeof(buf1));
sammacjunkie 6:70a0af38edcc 139 if (bitlength1 < 0) {
sammacjunkie 6:70a0af38edcc 140 continue;
sammacjunkie 6:70a0af38edcc 141 }
sammacjunkie 6:70a0af38edcc 142 display_status("RECV", bitlength1);
sammacjunkie 6:70a0af38edcc 143 display_data(buf1, bitlength1);
sammacjunkie 6:70a0af38edcc 144 //display_format(format);
sammacjunkie 6:70a0af38edcc 145 }
sarvagyavaish 12:20ba5378ede2 146 // Reset
sammacjunkie 6:70a0af38edcc 147 led1 = 0;
sammacjunkie 6:70a0af38edcc 148 Learn = 0;
sammacjunkie 13:12749822ba56 149
sammacjunkie 13:12749822ba56 150
sammacjunkie 13:12749822ba56 151
sammacjunkie 13:12749822ba56 152 // Set up the variables
sammacjunkie 13:12749822ba56 153 sprintf(tuple_name, "%c%c%c%c%c%c%c%c%c%c", Learn_name0,Learn_name1,Learn_name2,Learn_name3,Learn_name4,Learn_name5,Learn_name6,Learn_name7,Learn_name8,Learn_name9);
sammacjunkie 13:12749822ba56 154 //sprintf(tuple_code, "%X", buf1);
sammacjunkie 13:12749822ba56 155 sprintf(tuple_bitlength, "%d", bitlength1);
sammacjunkie 13:12749822ba56 156 sprintf(tuple_format, "%d", format);
sammacjunkie 13:12749822ba56 157 for (int i = 0; i < 10; i++) {
sammacjunkie 13:12749822ba56 158 if (tuple_name[i] == '~') tuple_name[i] = ' ';
sammacjunkie 13:12749822ba56 159 }
sammacjunkie 14:2b63c0f795cb 160
sammacjunkie 13:12749822ba56 161 const int n = bitlength1 / 8 + (((bitlength1 % 8) != 0) ? 1 : 0);
sammacjunkie 13:12749822ba56 162 strcpy(tuple_code, "");
sammacjunkie 13:12749822ba56 163 for (int i = 0; i < n; i++) {
sammacjunkie 13:12749822ba56 164 sprintf(temp, "%02X", buf1[i]);
sammacjunkie 14:2b63c0f795cb 165 strcat(tuple_code, temp);
sammacjunkie 13:12749822ba56 166 }
sammacjunkie 13:12749822ba56 167
sammacjunkie 13:12749822ba56 168 // Insert into DB
sammacjunkie 13:12749822ba56 169 db_insert_tuple(tuple_name, tuple_code, tuple_bitlength, tuple_format);
sammacjunkie 13:12749822ba56 170
sammacjunkie 6:70a0af38edcc 171 }
sammacjunkie 6:70a0af38edcc 172
sammacjunkie 14:2b63c0f795cb 173 if ( Request != 0) {
sammacjunkie 14:2b63c0f795cb 174 led2 = 1;
sammacjunkie 14:2b63c0f795cb 175 db_find_tuple(Request, tuple_name, tuple_code, tuple_bitlength, tuple_format);
sarvagyavaish 15:c8074f5f241a 176
sarvagyavaish 15:c8074f5f241a 177 n = atoi(tuple_bitlength) / 8 + (((atoi(tuple_bitlength) % 8) != 0) ? 1 : 0);
sarvagyavaish 15:c8074f5f241a 178 memset(buf1, 0x00, sizeof(buf1));
sammacjunkie 16:2d23297857bc 179 int j = 0 ;
sammacjunkie 16:2d23297857bc 180 for (int i = 0; i < 2*n; i+=2) {
sammacjunkie 16:2d23297857bc 181
sarvagyavaish 15:c8074f5f241a 182 // printf("%02X", buf[i]);
sarvagyavaish 15:c8074f5f241a 183 // buf1[i] = (uint8_t)(atoi( tuple_code.substr(i, 2) ));
sammacjunkie 16:2d23297857bc 184 sprintf(tempstr,"%c%c", tuple_code[i],tuple_code[i+1] );
sammacjunkie 16:2d23297857bc 185 printf("%s - ", tempstr);
sammacjunkie 16:2d23297857bc 186 printf("%02X\n", (uint8_t)strtol(tempstr,NULL,16) );
sammacjunkie 16:2d23297857bc 187 buf1[j] = (uint8_t)strtol(tempstr,NULL,16);
sammacjunkie 16:2d23297857bc 188 j++;
sarvagyavaish 15:c8074f5f241a 189 }
sammacjunkie 16:2d23297857bc 190 display_data(buf1,atoi(tuple_bitlength));
sarvagyavaish 15:c8074f5f241a 191
sammacjunkie 14:2b63c0f795cb 192 {
sammacjunkie 14:2b63c0f795cb 193 RemoteIR::Format f = static_cast<RemoteIR::Format>(atoi(tuple_format));
sammacjunkie 16:2d23297857bc 194 bitlength1 = transmit(f, buf1, atoi(tuple_bitlength));
sammacjunkie 14:2b63c0f795cb 195 if (bitlength1 < 0) {
sammacjunkie 14:2b63c0f795cb 196 continue;
sammacjunkie 14:2b63c0f795cb 197 }
sammacjunkie 14:2b63c0f795cb 198 display_status("TRAN", bitlength1);
sammacjunkie 14:2b63c0f795cb 199 //display_data(buf1, bitlength1);
sammacjunkie 14:2b63c0f795cb 200 //display_format(format);
sammacjunkie 14:2b63c0f795cb 201 }
sammacjunkie 14:2b63c0f795cb 202 led2 = 0;
sammacjunkie 14:2b63c0f795cb 203 Request = 0;
sammacjunkie 14:2b63c0f795cb 204
sammacjunkie 14:2b63c0f795cb 205 }
thelegen27 17:18d94b50ab39 206
thelegen27 17:18d94b50ab39 207 if( Clap == 1)
thelegen27 17:18d94b50ab39 208 {
thelegen27 17:18d94b50ab39 209 ClapStatus = clap_censor.read();
thelegen27 17:18d94b50ab39 210 if(ClapStatus != LastClapStatus)
thelegen27 17:18d94b50ab39 211 {
thelegen27 17:18d94b50ab39 212 //Do Shit
thelegen27 17:18d94b50ab39 213 //button id 4 = on, button id 3 = off
thelegen27 17:18d94b50ab39 214 if(ClapStatus == 1){
thelegen27 17:18d94b50ab39 215 Request = 4; //ON
thelegen27 17:18d94b50ab39 216 }else{
thelegen27 17:18d94b50ab39 217 Request = 3; //OFF
thelegen27 17:18d94b50ab39 218 }
thelegen27 17:18d94b50ab39 219 LastClapStatus = ClapStatus;
thelegen27 17:18d94b50ab39 220 }
thelegen27 17:18d94b50ab39 221 }
sammacjunkie 14:2b63c0f795cb 222
donatien 0:5630d7e58a0b 223 }
sarvagyavaish 3:a3b4d032f48f 224
sarvagyavaish 3:a3b4d032f48f 225 return 0;
donatien 0:5630d7e58a0b 226 }
sammacjunkie 4:36e0aa194b45 227