This is the final version of Mini Gateway for Automation and Security desgined for Renesas GR Peach Design Contest

Dependencies:   GR-PEACH_video GraphicsFramework HTTPServer R_BSP mbed-rpc mbed-rtos Socket lwip-eth lwip-sys lwip FATFileSystem

Fork of mbed-os-example-mbed5-blinky by mbed-os-examples

Committer:
vipinranka
Date:
Wed Jan 11 11:41:30 2017 +0000
Revision:
12:9a20164dcc47
Parent:
8:bb09890333fe
This is the final version MGAS Project for Renesas GR Peach Design Contest

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vipinranka 12:9a20164dcc47 1 #include "mbed.h"
vipinranka 12:9a20164dcc47 2 #include "RF24.h"
vipinranka 12:9a20164dcc47 3 #include "ILI9486.h"
vipinranka 12:9a20164dcc47 4 #include "DisplayBace.h"
vipinranka 12:9a20164dcc47 5 #include "SDFileSystem.h"
vipinranka 12:9a20164dcc47 6 #include "JPEG_Converter.h"
vipinranka 12:9a20164dcc47 7
vipinranka 12:9a20164dcc47 8 #include "HTTPServer.h"
vipinranka 12:9a20164dcc47 9 #include "FsHandler.h"
vipinranka 12:9a20164dcc47 10
vipinranka 12:9a20164dcc47 11 #include "rtos.h"
vipinranka 12:9a20164dcc47 12
vipinranka 12:9a20164dcc47 13 #include "stdio.h"
vipinranka 12:9a20164dcc47 14 #include "string"
vipinranka 12:9a20164dcc47 15 #include "Arial12x12.h"
vipinranka 12:9a20164dcc47 16 #include "Arial28x28.h"
vipinranka 12:9a20164dcc47 17 #include "Arial24x23.h"
vipinranka 12:9a20164dcc47 18 //#include "Terminal6x8.h"
vipinranka 12:9a20164dcc47 19 #include "Arial43x48_numb.h"
vipinranka 12:9a20164dcc47 20 #include "pict.h"
vipinranka 12:9a20164dcc47 21 #include "pavement_48x34.h"
vipinranka 12:9a20164dcc47 22 #include "Touch.h"
vipinranka 12:9a20164dcc47 23
vipinranka 12:9a20164dcc47 24 #include "camera.h"
vipinranka 12:9a20164dcc47 25 #include "EthernetInterface.h"
vipinranka 12:9a20164dcc47 26
vipinranka 12:9a20164dcc47 27 //Initialization
vipinranka 12:9a20164dcc47 28 Serial uart(USBTX, USBRX);
vipinranka 12:9a20164dcc47 29 ILI9486 myLCD(SPI_16, 16000000, P4_6, NC, P4_4, P4_5, P2_14, P8_1,"myLCD"); // Spi 16bit, 12MHz, mosi, miso, sclk, cs, reset, dc
vipinranka 12:9a20164dcc47 30 TouchScreenADS7843 TP(P4_6 ,P4_7 ,P4_4 ,P2_9 ,P7_15, &myLCD);// ADS7843 -> mosi, miso, sclk, cs, irq, SPI_myLCD
vipinranka 12:9a20164dcc47 31 SDFileSystem sd(P8_5, P8_6, P8_3, P8_4, "sd");
vipinranka 12:9a20164dcc47 32 RF24 radio(P10_14,P10_15, P10_12,P8_14, P10_13); // mosi, miso, sck, csn, ce, irq
vipinranka 12:9a20164dcc47 33
vipinranka 12:9a20164dcc47 34 AnalogIn temp(A4);
vipinranka 12:9a20164dcc47 35 DigitalOut led3(LED3);
vipinranka 12:9a20164dcc47 36 int temp_count=0,in_pic=0;
vipinranka 12:9a20164dcc47 37
vipinranka 12:9a20164dcc47 38 struct Screen {
vipinranka 12:9a20164dcc47 39 int16_t title[60*320];
vipinranka 12:9a20164dcc47 40 int titlex,titley;
vipinranka 12:9a20164dcc47 41 int16_t logo[80*320];
vipinranka 12:9a20164dcc47 42 int logox,logoy;
vipinranka 12:9a20164dcc47 43 int16_t hc[157*156];
vipinranka 12:9a20164dcc47 44 int hcx,hcy,hch,hcw;
vipinranka 12:9a20164dcc47 45 int16_t aut[158*156];
vipinranka 12:9a20164dcc47 46 int autx,auty,autw,auth;
vipinranka 12:9a20164dcc47 47 int16_t sec[157*158];
vipinranka 12:9a20164dcc47 48 int secx,secy,secw,sech;
vipinranka 12:9a20164dcc47 49 int16_t ind[158*158];
vipinranka 12:9a20164dcc47 50 int indx,indy,indw,indh;
vipinranka 12:9a20164dcc47 51 int indsize;
vipinranka 12:9a20164dcc47 52 int secsize;
vipinranka 12:9a20164dcc47 53 int autsize;
vipinranka 12:9a20164dcc47 54 int hcsize;
vipinranka 12:9a20164dcc47 55 int logosize;
vipinranka 12:9a20164dcc47 56 int titlesize;
vipinranka 12:9a20164dcc47 57 } dis_nav;
vipinranka 12:9a20164dcc47 58
vipinranka 12:9a20164dcc47 59 //Variables
vipinranka 12:9a20164dcc47 60 unsigned short backgroundcolor=Black;
vipinranka 12:9a20164dcc47 61 unsigned short foregroundcolor=Red;
vipinranka 12:9a20164dcc47 62 int pos[4];
vipinranka 12:9a20164dcc47 63 int16_t colors[16]= {
vipinranka 12:9a20164dcc47 64 0x000F,0x0000,0x03E0,0x03EF,0x7800,0x780F,0x7BE0,0xC618,0x7BEF,0x001F,0x07E0,0x07FF,0xF800,0xF81F,0xFFE0,0xFFFF
vipinranka 12:9a20164dcc47 65 };
vipinranka 12:9a20164dcc47 66 int color_count=0;
vipinranka 12:9a20164dcc47 67 int cam_sel=0;
vipinranka 12:9a20164dcc47 68 int ind_speed=0;
vipinranka 12:9a20164dcc47 69 int ind_of=0;
vipinranka 12:9a20164dcc47 70 int16_t prev_col=0;
vipinranka 12:9a20164dcc47 71 EthernetInterface network;
vipinranka 12:9a20164dcc47 72 HTTPServer svr;
vipinranka 12:9a20164dcc47 73 TCPSocketServer rf_server;
vipinranka 12:9a20164dcc47 74 TCPSocketConnection client;
vipinranka 12:9a20164dcc47 75
vipinranka 12:9a20164dcc47 76
vipinranka 12:9a20164dcc47 77 static unsigned short col_buf[PIXEL_VW][PIXEL_HW]__attribute((section("NC_BSS"),aligned(8))); //8 bytes aligned!;
vipinranka 12:9a20164dcc47 78 static uint8_t JCUBuffer_OUTPUT[PIXEL_HW * VIDEO_BUFFER_HEIGHT*4]__attribute((section("NC_BSS"),aligned(8))); //8 bytes aligned!;
vipinranka 12:9a20164dcc47 79
vipinranka 12:9a20164dcc47 80
vipinranka 12:9a20164dcc47 81
vipinranka 12:9a20164dcc47 82 //Init LCD and touch
vipinranka 12:9a20164dcc47 83 void Init_lcd_touch()
vipinranka 12:9a20164dcc47 84 {
vipinranka 12:9a20164dcc47 85 Matrix matrix;
vipinranka 12:9a20164dcc47 86 Coordinate ScreenSample[3];
vipinranka 12:9a20164dcc47 87 myLCD.set_orientation(2);
vipinranka 12:9a20164dcc47 88 // myLCD.claim(stdout); // send stdout to the LCD display
vipinranka 12:9a20164dcc47 89 //myLCD.claim(stderr); // send stderr to the LCD display
vipinranka 12:9a20164dcc47 90 myLCD.background(backgroundcolor); // set background to black
vipinranka 12:9a20164dcc47 91 myLCD.foreground(foregroundcolor); // set chars to white
vipinranka 12:9a20164dcc47 92 myLCD.cls();
vipinranka 12:9a20164dcc47 93 myLCD.set_font((unsigned char*) Arial12x12);
vipinranka 12:9a20164dcc47 94 myLCD.locate(0,20);
vipinranka 12:9a20164dcc47 95 TP.TouchPanel_Calibrate();
vipinranka 12:9a20164dcc47 96
vipinranka 12:9a20164dcc47 97 // myLCD.set_orientation(0);
vipinranka 12:9a20164dcc47 98 // Display calibration values
vipinranka 12:9a20164dcc47 99 TP.GetCalibration(&matrix, &ScreenSample[0]);
vipinranka 12:9a20164dcc47 100 myLCD.cls();
vipinranka 12:9a20164dcc47 101 myLCD.locate(0,20);
vipinranka 12:9a20164dcc47 102 // read calibration results
vipinranka 12:9a20164dcc47 103 printf("Read calibration results.\n");
vipinranka 12:9a20164dcc47 104 printf("matrix.An = %d\n", matrix.An);
vipinranka 12:9a20164dcc47 105 printf("matrix.Bn = %d\n", matrix.Bn);
vipinranka 12:9a20164dcc47 106 printf("matrix.Cn = %d\n", matrix.Cn);
vipinranka 12:9a20164dcc47 107 printf("matrix.Dn = %d\n", matrix.Dn);
vipinranka 12:9a20164dcc47 108 printf("matrix.En = %d\n", matrix.En);
vipinranka 12:9a20164dcc47 109 printf("matrix.Fn = %d\n", matrix.Fn);
vipinranka 12:9a20164dcc47 110 printf("matrix.Di = %d\n", matrix.Divider);
vipinranka 12:9a20164dcc47 111 for (int i=0; i<3; i++)
vipinranka 12:9a20164dcc47 112 printf("sample x[%d] = %d\nsample y[%d] = %d\n", i, ScreenSample[i].x, i, ScreenSample[i].y);
vipinranka 12:9a20164dcc47 113 // Write calibration results
vipinranka 12:9a20164dcc47 114 printf("\nWrite calibration results...\n");
vipinranka 12:9a20164dcc47 115 TP.SetCalibration(&matrix, &ScreenSample[0]);
vipinranka 12:9a20164dcc47 116 printf("Done.\nTouch panel to start\n");
vipinranka 12:9a20164dcc47 117 while(TP._tp_irq);
vipinranka 12:9a20164dcc47 118 }
vipinranka 12:9a20164dcc47 119
vipinranka 12:9a20164dcc47 120 int get_xy()
vipinranka 12:9a20164dcc47 121 {
vipinranka 12:9a20164dcc47 122 int x=0;
vipinranka 12:9a20164dcc47 123 if(!TP._tp_irq) {
vipinranka 12:9a20164dcc47 124 if (TP.Read_Ads7843()) {
vipinranka 12:9a20164dcc47 125 TP.getDisplayPoint() ;
vipinranka 12:9a20164dcc47 126 //myLCD.cls();
vipinranka 12:9a20164dcc47 127 //myLCD.locate(20,0);
vipinranka 12:9a20164dcc47 128 // TP.TP_DrawPoint(TP.display.x,TP.display.y, Blue);
vipinranka 12:9a20164dcc47 129 x=1;
vipinranka 12:9a20164dcc47 130 }
vipinranka 12:9a20164dcc47 131 }
vipinranka 12:9a20164dcc47 132 wait(0.1);
vipinranka 12:9a20164dcc47 133 return x;
vipinranka 12:9a20164dcc47 134 }
vipinranka 12:9a20164dcc47 135
vipinranka 12:9a20164dcc47 136 void init_dis_nav()
vipinranka 12:9a20164dcc47 137 {
vipinranka 12:9a20164dcc47 138 dis_nav.indsize=158*158;
vipinranka 12:9a20164dcc47 139 dis_nav.secsize=157*158;
vipinranka 12:9a20164dcc47 140 dis_nav.autsize=158*156;
vipinranka 12:9a20164dcc47 141 dis_nav.hcsize=157*156;
vipinranka 12:9a20164dcc47 142 dis_nav.logosize=80*320;
vipinranka 12:9a20164dcc47 143 dis_nav.titlesize=60*320;
vipinranka 12:9a20164dcc47 144 myLCD.BMP_16(0,0,"/sd/gui/title.bmp",dis_nav.title);
vipinranka 12:9a20164dcc47 145 dis_nav.titlex=0;
vipinranka 12:9a20164dcc47 146 dis_nav.titley=0;
vipinranka 12:9a20164dcc47 147 myLCD.BMP_16(0,400,"/sd/gui/logo.bmp",dis_nav.logo);
vipinranka 12:9a20164dcc47 148 dis_nav.logox=0;
vipinranka 12:9a20164dcc47 149 dis_nav.logoy=400;
vipinranka 12:9a20164dcc47 150 myLCD.BMP_16(0,81,"/sd/gui/hc.bmp",dis_nav.hc);
vipinranka 12:9a20164dcc47 151 dis_nav.hcx=0;
vipinranka 12:9a20164dcc47 152 dis_nav.hcy=81;
vipinranka 12:9a20164dcc47 153 dis_nav.hcw=157;
vipinranka 12:9a20164dcc47 154 dis_nav.hch=158;
vipinranka 12:9a20164dcc47 155 //myLCD.fillrect(161,81,319,237,White);
vipinranka 12:9a20164dcc47 156 myLCD.BMP_16(dis_nav.autx=161,dis_nav.auty=81,"/sd/gui/auto.bmp",dis_nav.aut);
vipinranka 12:9a20164dcc47 157 dis_nav.autw=158;
vipinranka 12:9a20164dcc47 158 dis_nav.auth=156;
vipinranka 12:9a20164dcc47 159 //myLCD.fillrect(0,241,157,399,White);
vipinranka 12:9a20164dcc47 160 myLCD.BMP_16(dis_nav.secx=0,dis_nav.secy=241,"/sd/gui/secu.bmp",dis_nav.sec);
vipinranka 12:9a20164dcc47 161 dis_nav.secw=157;
vipinranka 12:9a20164dcc47 162 dis_nav.sech=158;
vipinranka 12:9a20164dcc47 163 //myLCD.fillrect(161,241,319,399,White);
vipinranka 12:9a20164dcc47 164 myLCD.BMP_16(dis_nav.indx=161,dis_nav.indy=241,"/sd/gui/indus.bmp",dis_nav.ind);
vipinranka 12:9a20164dcc47 165 dis_nav.indw=158;
vipinranka 12:9a20164dcc47 166 dis_nav.indh=158;
vipinranka 12:9a20164dcc47 167 }
vipinranka 12:9a20164dcc47 168
vipinranka 12:9a20164dcc47 169 void init_gui()
vipinranka 12:9a20164dcc47 170 {
vipinranka 12:9a20164dcc47 171 init_dis_nav();
vipinranka 12:9a20164dcc47 172 myLCD.cls();
vipinranka 12:9a20164dcc47 173 myLCD.BMP_disp(dis_nav.titlex,dis_nav.titley,dis_nav.title,dis_nav.titlesize,0,60);
vipinranka 12:9a20164dcc47 174 myLCD.BMP_disp(dis_nav.logox,dis_nav.logoy,dis_nav.logo,dis_nav.logosize,0,80);
vipinranka 12:9a20164dcc47 175 myLCD.rect(0,60,319,80,Red);
vipinranka 12:9a20164dcc47 176 myLCD.rect(1,61,318,79,Red);
vipinranka 12:9a20164dcc47 177 myLCD.locate(4,65);
vipinranka 12:9a20164dcc47 178 // myLCD.fillrect(0,81,157,237,White);
vipinranka 12:9a20164dcc47 179 myLCD.BMP_disp(dis_nav.hcx,dis_nav.hcy,dis_nav.hc,dis_nav.hcsize,dis_nav.hcw,dis_nav.hch);
vipinranka 12:9a20164dcc47 180 //myLCD.fillrect(161,81,319,237,White);
vipinranka 12:9a20164dcc47 181 myLCD.BMP_disp(dis_nav.autx,dis_nav.auty,dis_nav.aut,dis_nav.autsize,dis_nav.autw,dis_nav.auth);
vipinranka 12:9a20164dcc47 182 //myLCD.fillrect(0,241,157,399,White);
vipinranka 12:9a20164dcc47 183 myLCD.BMP_disp(dis_nav.secx,dis_nav.secy,dis_nav.sec,dis_nav.secsize,dis_nav.secw,dis_nav.sech);
vipinranka 12:9a20164dcc47 184 //myLCD.fillrect(161,241,319,399,White);
vipinranka 12:9a20164dcc47 185 myLCD.BMP_disp(dis_nav.indx,dis_nav.indy,dis_nav.ind,dis_nav.indsize,dis_nav.indw,dis_nav.indh);
vipinranka 12:9a20164dcc47 186 myLCD.set_font((unsigned char*) Arial12x12);
vipinranka 12:9a20164dcc47 187 myLCD.printf("Select a menu");
vipinranka 12:9a20164dcc47 188 for(int i=158; i<160; i++) {
vipinranka 12:9a20164dcc47 189 myLCD.line(i,80,i,400,Blue);
vipinranka 12:9a20164dcc47 190 }
vipinranka 12:9a20164dcc47 191 for(int i=238; i<240; i++) {
vipinranka 12:9a20164dcc47 192 myLCD.line(0,i,319,i,Blue);
vipinranka 12:9a20164dcc47 193 }
vipinranka 12:9a20164dcc47 194
vipinranka 12:9a20164dcc47 195 }
vipinranka 12:9a20164dcc47 196
vipinranka 12:9a20164dcc47 197
vipinranka 12:9a20164dcc47 198 void set_ind(int o_f,int speed)
vipinranka 12:9a20164dcc47 199 {
vipinranka 12:9a20164dcc47 200 uint8_t add[]= {0xe7,0xe7,0xe7,0xe7,0xe8};
vipinranka 12:9a20164dcc47 201 radio.stopListening();
vipinranka 12:9a20164dcc47 202 radio.openWritingPipe(add);
vipinranka 12:9a20164dcc47 203 wait_ms(2);
vipinranka 12:9a20164dcc47 204
vipinranka 12:9a20164dcc47 205 int count=0;
vipinranka 12:9a20164dcc47 206 char c[20];
vipinranka 12:9a20164dcc47 207 sprintf(c,"NEO,1,%d,%d,1\n",o_f,speed);
vipinranka 12:9a20164dcc47 208 myLCD.fillrect(2,62,317,78,Black);
vipinranka 12:9a20164dcc47 209 myLCD.locate(4,65);
vipinranka 12:9a20164dcc47 210 myLCD.set_font((unsigned char*) Arial12x12);
vipinranka 12:9a20164dcc47 211 myLCD.printf("Writing %s",c);
vipinranka 12:9a20164dcc47 212 while (!radio.write( &c, 20 )) {
vipinranka 12:9a20164dcc47 213 myLCD.fillrect(2,62,317,78,Black);
vipinranka 12:9a20164dcc47 214 myLCD.locate(4,65);
vipinranka 12:9a20164dcc47 215 myLCD.set_font((unsigned char*) Arial12x12);
vipinranka 12:9a20164dcc47 216 myLCD.printf("Failed");
vipinranka 12:9a20164dcc47 217 count++;
vipinranka 12:9a20164dcc47 218 if(count>=10)
vipinranka 12:9a20164dcc47 219 break;
vipinranka 12:9a20164dcc47 220 wait(0.1);
vipinranka 12:9a20164dcc47 221 }
vipinranka 12:9a20164dcc47 222 wait_ms(2);
vipinranka 12:9a20164dcc47 223 radio.startListening();
vipinranka 12:9a20164dcc47 224 wait_ms(1);
vipinranka 12:9a20164dcc47 225 }
vipinranka 12:9a20164dcc47 226
vipinranka 12:9a20164dcc47 227 void set_color(char r,char g,char b)
vipinranka 12:9a20164dcc47 228 {
vipinranka 12:9a20164dcc47 229 uint8_t add[]= {0xe7,0xe7,0xe7,0xe8,0xe8};
vipinranka 12:9a20164dcc47 230 radio.stopListening();
vipinranka 12:9a20164dcc47 231 radio.openWritingPipe(add);
vipinranka 12:9a20164dcc47 232 wait_ms(2);
vipinranka 12:9a20164dcc47 233
vipinranka 12:9a20164dcc47 234 int count=0;
vipinranka 12:9a20164dcc47 235 char c[20];
vipinranka 12:9a20164dcc47 236 sprintf(c,"N,5,%d,%d,%d,%d,1\n",0x01,(r<<3),(g<<2),(b<<3));
vipinranka 12:9a20164dcc47 237 myLCD.fillrect(2,62,317,78,Black);
vipinranka 12:9a20164dcc47 238 myLCD.locate(4,65);
vipinranka 12:9a20164dcc47 239 myLCD.set_font((unsigned char*) Arial12x12);
vipinranka 12:9a20164dcc47 240 myLCD.printf("Writing %s",c);
vipinranka 12:9a20164dcc47 241 while (!radio.write( &c, 20 )) {
vipinranka 12:9a20164dcc47 242 myLCD.fillrect(2,62,317,78,Black);
vipinranka 12:9a20164dcc47 243 myLCD.locate(4,65);
vipinranka 12:9a20164dcc47 244 myLCD.set_font((unsigned char*) Arial12x12);
vipinranka 12:9a20164dcc47 245 myLCD.printf("Failed");
vipinranka 12:9a20164dcc47 246 count++;
vipinranka 12:9a20164dcc47 247 if(count>=10)
vipinranka 12:9a20164dcc47 248 break;
vipinranka 12:9a20164dcc47 249 wait(0.1);
vipinranka 12:9a20164dcc47 250 }
vipinranka 12:9a20164dcc47 251 wait_ms(2);
vipinranka 12:9a20164dcc47 252 radio.startListening();
vipinranka 12:9a20164dcc47 253 wait_ms(1);
vipinranka 12:9a20164dcc47 254 }
vipinranka 12:9a20164dcc47 255
vipinranka 12:9a20164dcc47 256 void take_pic_jpg(int name)
vipinranka 12:9a20164dcc47 257 {
vipinranka 12:9a20164dcc47 258 led2=1;
vipinranka 12:9a20164dcc47 259 JPEG_Converter encoder;
vipinranka 12:9a20164dcc47 260 JPEG_Converter::bitmap_buff_info_t aBitmapData;
vipinranka 12:9a20164dcc47 261 size_t EncodeSize;
vipinranka 12:9a20164dcc47 262 FILE * wr_fp = NULL;
vipinranka 12:9a20164dcc47 263
vipinranka 12:9a20164dcc47 264 aBitmapData.width = PIXEL_HW;
vipinranka 12:9a20164dcc47 265 aBitmapData.height = VIDEO_BUFFER_HEIGHT;
vipinranka 12:9a20164dcc47 266 aBitmapData.format = JPEG_Converter::WR_RD_YCbCr422; //YCbCr[0] & ARGB8888[1] is 4byte, not RGB565[2] is 2byte
vipinranka 12:9a20164dcc47 267 aBitmapData.buffer_address = (void *)save_buff_addr;
vipinranka 12:9a20164dcc47 268 if (encoder.encode(&aBitmapData, JCUBuffer_OUTPUT, &EncodeSize) == JPEG_Converter::JPEG_CONV_OK) {
vipinranka 12:9a20164dcc47 269
vipinranka 12:9a20164dcc47 270 char c[20];
vipinranka 12:9a20164dcc47 271 sprintf(c,"/sd/abc%d.jpg",name);
vipinranka 12:9a20164dcc47 272 wr_fp = fopen(c, "w");
vipinranka 12:9a20164dcc47 273 fwrite(JCUBuffer_OUTPUT, sizeof(char), EncodeSize, wr_fp);
vipinranka 12:9a20164dcc47 274 fclose(wr_fp);
vipinranka 12:9a20164dcc47 275 led2=0;
vipinranka 12:9a20164dcc47 276 }
vipinranka 12:9a20164dcc47 277
vipinranka 12:9a20164dcc47 278 }
vipinranka 12:9a20164dcc47 279
vipinranka 12:9a20164dcc47 280 unsigned short yuvtorgb(int y,int u,int v)
vipinranka 12:9a20164dcc47 281 {
vipinranka 12:9a20164dcc47 282 unsigned short rgb=0;
vipinranka 12:9a20164dcc47 283 int r = y + (1.402 * (v-128));
vipinranka 12:9a20164dcc47 284 int g = y - (0.34414 * (u-128)) - (0.71414 * (v-128));
vipinranka 12:9a20164dcc47 285 int b = y + (1.772* (u-128));
vipinranka 12:9a20164dcc47 286 if(r<0)r=0;
vipinranka 12:9a20164dcc47 287 else if(r>255)r=255;
vipinranka 12:9a20164dcc47 288 if(g<0)g=0;
vipinranka 12:9a20164dcc47 289 else if(g>255)g=255;
vipinranka 12:9a20164dcc47 290 if(b<0)b=0;
vipinranka 12:9a20164dcc47 291 else if(b>255)b=255;
vipinranka 12:9a20164dcc47 292 r=r>>3;
vipinranka 12:9a20164dcc47 293 g=g>>2;
vipinranka 12:9a20164dcc47 294 b=b>>3;
vipinranka 12:9a20164dcc47 295 rgb=(r<<11)|(g<<5)|b;
vipinranka 12:9a20164dcc47 296 return rgb;
vipinranka 12:9a20164dcc47 297
vipinranka 12:9a20164dcc47 298 }
vipinranka 12:9a20164dcc47 299 void take_picture()
vipinranka 12:9a20164dcc47 300 {
vipinranka 12:9a20164dcc47 301 // uint8_t col_buf[PIXEL_HW * VIDEO_BUFFER_HEIGHT*4];
vipinranka 12:9a20164dcc47 302 pos[2]=pos[1]=pos[0]=pos[3]=0;
vipinranka 12:9a20164dcc47 303 DisplayBase::graphics_error_t error;
vipinranka 12:9a20164dcc47 304 in_pic=1;
vipinranka 12:9a20164dcc47 305 led1 = 1;
vipinranka 12:9a20164dcc47 306
vipinranka 12:9a20164dcc47 307 if (write_buff_addr == FrameBuffer_Video_A) {
vipinranka 12:9a20164dcc47 308 write_buff_addr = FrameBuffer_Video_B;
vipinranka 12:9a20164dcc47 309 save_buff_addr = FrameBuffer_Video_A;
vipinranka 12:9a20164dcc47 310 } else {
vipinranka 12:9a20164dcc47 311 write_buff_addr = FrameBuffer_Video_A;
vipinranka 12:9a20164dcc47 312 save_buff_addr = FrameBuffer_Video_B;
vipinranka 12:9a20164dcc47 313 }
vipinranka 12:9a20164dcc47 314
vipinranka 12:9a20164dcc47 315 /* Change write buffer */
vipinranka 12:9a20164dcc47 316 error = Display.Video_Write_Change(
vipinranka 12:9a20164dcc47 317 VIDEO_INPUT_CH,
vipinranka 12:9a20164dcc47 318 write_buff_addr,
vipinranka 12:9a20164dcc47 319 VIDEO_BUFFER_STRIDE);
vipinranka 12:9a20164dcc47 320 if (error != DisplayBase::GRAPHICS_OK) {
vipinranka 12:9a20164dcc47 321 uart.printf("Line %d, error %d\n", __LINE__, error);
vipinranka 12:9a20164dcc47 322 while (1);
vipinranka 12:9a20164dcc47 323 }
vipinranka 12:9a20164dcc47 324 /* Wait 2 Vfield(Top or bottom field) */
vipinranka 12:9a20164dcc47 325
vipinranka 12:9a20164dcc47 326 WaitVfield(2);
vipinranka 12:9a20164dcc47 327
vipinranka 12:9a20164dcc47 328 myLCD.WindowMax();
vipinranka 12:9a20164dcc47 329 int j=0,k=0;
vipinranka 12:9a20164dcc47 330 for(int i=0; i<VIDEO_BUFFER_STRIDE * VIDEO_BUFFER_HEIGHT; i++) {
vipinranka 12:9a20164dcc47 331 unsigned short rgb1=0,rgb2=0;
vipinranka 12:9a20164dcc47 332 int yb=save_buff_addr[i];
vipinranka 12:9a20164dcc47 333 int v=save_buff_addr[i+1];
vipinranka 12:9a20164dcc47 334 int ya=save_buff_addr[i+2];
vipinranka 12:9a20164dcc47 335 int u=save_buff_addr[i+3];
vipinranka 12:9a20164dcc47 336 i=i+3;
vipinranka 12:9a20164dcc47 337 rgb1=yuvtorgb(ya,u,v);
vipinranka 12:9a20164dcc47 338 rgb2=yuvtorgb(yb,u,v);
vipinranka 12:9a20164dcc47 339 col_buf[j][k++]=rgb2;
vipinranka 12:9a20164dcc47 340 col_buf[j][k++]=rgb1;
vipinranka 12:9a20164dcc47 341 if(k==320) {
vipinranka 12:9a20164dcc47 342 j++;
vipinranka 12:9a20164dcc47 343 k=0;
vipinranka 12:9a20164dcc47 344 }
vipinranka 12:9a20164dcc47 345 }
vipinranka 12:9a20164dcc47 346
vipinranka 12:9a20164dcc47 347 for(int i=0; i<480; i++) {
vipinranka 12:9a20164dcc47 348 for(int j=0; j<320; j++) {
vipinranka 12:9a20164dcc47 349 for(int k=3; k>=0; k--) {
vipinranka 12:9a20164dcc47 350 myLCD.wr_gram(col_buf[i][k+j]);
vipinranka 12:9a20164dcc47 351 }
vipinranka 12:9a20164dcc47 352 j=j+3;
vipinranka 12:9a20164dcc47 353 }
vipinranka 12:9a20164dcc47 354 }
vipinranka 12:9a20164dcc47 355
vipinranka 12:9a20164dcc47 356 led1=0;
vipinranka 12:9a20164dcc47 357
vipinranka 12:9a20164dcc47 358 take_pic_jpg(10);
vipinranka 12:9a20164dcc47 359
vipinranka 12:9a20164dcc47 360 }
vipinranka 12:9a20164dcc47 361
vipinranka 12:9a20164dcc47 362
vipinranka 12:9a20164dcc47 363 void navigate(int x,int y)
vipinranka 12:9a20164dcc47 364 {
vipinranka 12:9a20164dcc47 365 if(in_pic==1) {
vipinranka 12:9a20164dcc47 366 in_pic=0;
vipinranka 12:9a20164dcc47 367 myLCD.cls();
vipinranka 12:9a20164dcc47 368 myLCD.BMP_disp(dis_nav.titlex,dis_nav.titley,dis_nav.title,dis_nav.titlesize,0,60);
vipinranka 12:9a20164dcc47 369 myLCD.BMP_disp(dis_nav.logox,dis_nav.logoy,dis_nav.logo,dis_nav.logosize,0,80);
vipinranka 12:9a20164dcc47 370 myLCD.rect(0,60,319,80,Red);
vipinranka 12:9a20164dcc47 371 myLCD.rect(1,61,318,79,Red);
vipinranka 12:9a20164dcc47 372 myLCD.BMP_disp(dis_nav.indx,dis_nav.indy,dis_nav.ind,dis_nav.indsize,dis_nav.indw,dis_nav.indh);
vipinranka 12:9a20164dcc47 373 myLCD.BMP_disp(dis_nav.secx,dis_nav.secy,dis_nav.sec,dis_nav.secsize,dis_nav.secw,dis_nav.sech);
vipinranka 12:9a20164dcc47 374 myLCD.BMP_disp(dis_nav.autx,dis_nav.auty,dis_nav.aut,dis_nav.autsize,dis_nav.autw,dis_nav.auth);
vipinranka 12:9a20164dcc47 375 myLCD.BMP_disp(dis_nav.hcx,dis_nav.hcy,dis_nav.hc,dis_nav.hcsize,dis_nav.hcw,dis_nav.hch);
vipinranka 12:9a20164dcc47 376 pos[0]=pos[1]=pos[2]=pos[3]=0;
vipinranka 12:9a20164dcc47 377 return;
vipinranka 12:9a20164dcc47 378 }
vipinranka 12:9a20164dcc47 379 if(y>85 && y<235) {
vipinranka 12:9a20164dcc47 380 if(x<155) { //Healthcare Navigation
vipinranka 12:9a20164dcc47 381 if(pos[0]==0) {
vipinranka 12:9a20164dcc47 382 myLCD.fillrect(0,81,157,237,Black);
vipinranka 12:9a20164dcc47 383 myLCD.BMP_16(2,82,"/sd/gui/heart.bmp");
vipinranka 12:9a20164dcc47 384 myLCD.BMP_16(2,170,"/sd/gui/temp.bmp");
vipinranka 12:9a20164dcc47 385 myLCD.BMP_16(58,136,"/sd/gui/b_but.bmp");
vipinranka 12:9a20164dcc47 386 myLCD.set_font((unsigned char*) Arial28x28);
vipinranka 12:9a20164dcc47 387 myLCD.foreground(Red);
vipinranka 12:9a20164dcc47 388 //myLCD.set_font_zoom(2,2);
vipinranka 12:9a20164dcc47 389 // myLCD.rect(96,96,144,128,Red);
vipinranka 12:9a20164dcc47 390 // myLCD.locate(100,100);
vipinranka 12:9a20164dcc47 391 // myLCD.printf("92");
vipinranka 12:9a20164dcc47 392 // myLCD.locate(78,194);
vipinranka 12:9a20164dcc47 393 // myLCD.printf("32");
vipinranka 12:9a20164dcc47 394 // // myLCD.rect(76,188,152,225,Red);
vipinranka 12:9a20164dcc47 395 // myLCD.circle(116,197,3,Red);
vipinranka 12:9a20164dcc47 396 // myLCD.locate(124,194);
vipinranka 12:9a20164dcc47 397 // myLCD.printf("C");
vipinranka 12:9a20164dcc47 398 pos[0]=1;
vipinranka 12:9a20164dcc47 399 } else {
vipinranka 12:9a20164dcc47 400 if(x>58&& x<108 && y>136 && y<176) {
vipinranka 12:9a20164dcc47 401 myLCD.BMP_disp(dis_nav.hcx,dis_nav.hcy,dis_nav.hc,dis_nav.hcsize,dis_nav.hcw,dis_nav.hch);
vipinranka 12:9a20164dcc47 402 pos[0]=0;
vipinranka 12:9a20164dcc47 403 }
vipinranka 12:9a20164dcc47 404 }
vipinranka 12:9a20164dcc47 405
vipinranka 12:9a20164dcc47 406 } else {
vipinranka 12:9a20164dcc47 407 if(pos[1]==0) { //Automation Navigation
vipinranka 12:9a20164dcc47 408 myLCD.fillrect(161,81,319,237,Black);
vipinranka 12:9a20164dcc47 409 myLCD.BMP_16(280,88,"/sd/gui/b_but.bmp");
vipinranka 12:9a20164dcc47 410 myLCD.BMP_16(207,82,"/sd/gui/bulb.bmp");
vipinranka 12:9a20164dcc47 411 myLCD.circle(190,105,15,White);
vipinranka 12:9a20164dcc47 412 myLCD.fillcircle(190,105,13,prev_col);
vipinranka 12:9a20164dcc47 413 int count=0;
vipinranka 12:9a20164dcc47 414 for(int i=0; i<3; i++) {
vipinranka 12:9a20164dcc47 415 for(int j=0; j<5; j++) {
vipinranka 12:9a20164dcc47 416 int a=164+(j*30);
vipinranka 12:9a20164dcc47 417 int b=138+(i*30);
vipinranka 12:9a20164dcc47 418 myLCD.fillrect(a,b,a+30,b+30,colors[count++]);
vipinranka 12:9a20164dcc47 419 }
vipinranka 12:9a20164dcc47 420 }
vipinranka 12:9a20164dcc47 421 pos[1]=1;
vipinranka 12:9a20164dcc47 422 } else {
vipinranka 12:9a20164dcc47 423 if(x>275 && x<319 && y>84 &&y<130) {
vipinranka 12:9a20164dcc47 424 myLCD.BMP_disp(dis_nav.autx,dis_nav.auty,dis_nav.aut,dis_nav.autsize,dis_nav.autw,dis_nav.auth);
vipinranka 12:9a20164dcc47 425 pos[1]=0;
vipinranka 12:9a20164dcc47 426 } else if(x>164 && x<319 && y>138 && y<236) {
vipinranka 12:9a20164dcc47 427 int a=(x-164)/30;
vipinranka 12:9a20164dcc47 428 int b=(y-138)/30;
vipinranka 12:9a20164dcc47 429 int c=a+(b*5);
vipinranka 12:9a20164dcc47 430 myLCD.fillcircle(190,105,13,colors[c]);
vipinranka 12:9a20164dcc47 431 char r=(char)((colors[c]>>11)&0x1f);
vipinranka 12:9a20164dcc47 432 char g=(char)((colors[c]>>5)&0x3f);
vipinranka 12:9a20164dcc47 433 char bl=(char)((colors[c])&0x1f);
vipinranka 12:9a20164dcc47 434 set_color(r,g,bl);
vipinranka 12:9a20164dcc47 435 prev_col=colors[c];
vipinranka 12:9a20164dcc47 436
vipinranka 12:9a20164dcc47 437 }
vipinranka 12:9a20164dcc47 438
vipinranka 12:9a20164dcc47 439 }
vipinranka 12:9a20164dcc47 440 }
vipinranka 12:9a20164dcc47 441 } else if(y>238 && y<400) {
vipinranka 12:9a20164dcc47 442 if(x<155) { //Security Navigation
vipinranka 12:9a20164dcc47 443 if(pos[2]==0) {
vipinranka 12:9a20164dcc47 444 myLCD.fillrect(dis_nav.secx,dis_nav.secy,dis_nav.secw+dis_nav.secx,dis_nav.sech+dis_nav.secy,Black);
vipinranka 12:9a20164dcc47 445 myLCD.BMP_16(10,245,"/sd/gui/d_close.bmp");
vipinranka 12:9a20164dcc47 446 myLCD.BMP_16(113,245,"/sd/gui/b_but.bmp");
vipinranka 12:9a20164dcc47 447 myLCD.rect(10,365,35,390,White);
vipinranka 12:9a20164dcc47 448 myLCD.rect(11,366,34,389,White);
vipinranka 12:9a20164dcc47 449 myLCD.locate(45,365);
vipinranka 12:9a20164dcc47 450 myLCD.set_font((unsigned char*) Arial24x23);
vipinranka 12:9a20164dcc47 451 myLCD.printf("Camera");
vipinranka 12:9a20164dcc47 452 pos[2]=1;
vipinranka 12:9a20164dcc47 453 } else {
vipinranka 12:9a20164dcc47 454 if(x>9 && y >364 && x<36 && y<391) {
vipinranka 12:9a20164dcc47 455 if(cam_sel==0) {
vipinranka 12:9a20164dcc47 456 myLCD.fillrect(12,367,33,388,Blue);
vipinranka 12:9a20164dcc47 457 cam_sel=1;
vipinranka 12:9a20164dcc47 458 } else {
vipinranka 12:9a20164dcc47 459 myLCD.fillrect(12,367,33,388,Black);
vipinranka 12:9a20164dcc47 460 cam_sel=0;
vipinranka 12:9a20164dcc47 461 }
vipinranka 12:9a20164dcc47 462 } else if(x>112 && y>244 && x<154 && y<286) {
vipinranka 12:9a20164dcc47 463 myLCD.BMP_disp(dis_nav.secx,dis_nav.secy,dis_nav.sec,dis_nav.secsize,dis_nav.secw,dis_nav.sech);
vipinranka 12:9a20164dcc47 464 pos[2]=0;
vipinranka 12:9a20164dcc47 465 }
vipinranka 12:9a20164dcc47 466 }
vipinranka 12:9a20164dcc47 467
vipinranka 12:9a20164dcc47 468
vipinranka 12:9a20164dcc47 469 } else { // Industry
vipinranka 12:9a20164dcc47 470 if(pos[3]==0) {
vipinranka 12:9a20164dcc47 471 myLCD.fillrect(dis_nav.indx,dis_nav.indy,dis_nav.indw+dis_nav.indx,dis_nav.indh+dis_nav.indy,Black);
vipinranka 12:9a20164dcc47 472 myLCD.BMP_16(278,245,"/sd/gui/b_but.bmp");
vipinranka 12:9a20164dcc47 473 myLCD.BMP_16(200,250,"/sd/gui/blower.bmp");
vipinranka 12:9a20164dcc47 474 myLCD.BMP_16(163,345,"/sd/gui/minus.bmp");
vipinranka 12:9a20164dcc47 475 if(ind_of==0)
vipinranka 12:9a20164dcc47 476 myLCD.BMP_16(214,335,"/sd/gui/b_p_off.bmp");
vipinranka 12:9a20164dcc47 477 else
vipinranka 12:9a20164dcc47 478 myLCD.BMP_16(214,335,"/sd/gui/b_p_on.bmp");
vipinranka 12:9a20164dcc47 479 myLCD.BMP_16(266,345,"/sd/gui/plus.bmp");
vipinranka 12:9a20164dcc47 480 myLCD.locate(170,270);
vipinranka 12:9a20164dcc47 481 myLCD.set_font((unsigned char*) Arial28x28);
vipinranka 12:9a20164dcc47 482 myLCD.printf("%d",ind_speed);
vipinranka 12:9a20164dcc47 483 pos[3]=1;
vipinranka 12:9a20164dcc47 484 } else {
vipinranka 12:9a20164dcc47 485 if(x>=266 && y>=345 && x<=316 && y<=395) {
vipinranka 12:9a20164dcc47 486 ind_speed++;
vipinranka 12:9a20164dcc47 487 if(ind_speed>9)
vipinranka 12:9a20164dcc47 488 ind_speed=9;
vipinranka 12:9a20164dcc47 489
vipinranka 12:9a20164dcc47 490 set_ind(ind_of,ind_speed);
vipinranka 12:9a20164dcc47 491 myLCD.locate(170,270);
vipinranka 12:9a20164dcc47 492 myLCD.set_font((unsigned char*) Arial28x28);
vipinranka 12:9a20164dcc47 493 myLCD.printf("%d",ind_speed);
vipinranka 12:9a20164dcc47 494 } else if(x>=163 && y>=345 && x<=213 && y<=395) {
vipinranka 12:9a20164dcc47 495 ind_speed--;
vipinranka 12:9a20164dcc47 496 if(ind_speed<0)
vipinranka 12:9a20164dcc47 497 ind_speed=0;
vipinranka 12:9a20164dcc47 498 set_ind(ind_of,ind_speed);
vipinranka 12:9a20164dcc47 499 myLCD.locate(170,270);
vipinranka 12:9a20164dcc47 500 myLCD.set_font((unsigned char*) Arial28x28);
vipinranka 12:9a20164dcc47 501 myLCD.printf("%d",ind_speed);
vipinranka 12:9a20164dcc47 502 } else if(x>=214 && y>=335 && x<=264 && y<=385) {
vipinranka 12:9a20164dcc47 503 if(ind_of==0) {
vipinranka 12:9a20164dcc47 504 myLCD.BMP_16(214,335,"/sd/gui/b_p_on.bmp");
vipinranka 12:9a20164dcc47 505 ind_of=1;
vipinranka 12:9a20164dcc47 506 set_ind(ind_of,ind_speed);
vipinranka 12:9a20164dcc47 507 } else {
vipinranka 12:9a20164dcc47 508 myLCD.BMP_16(214,335,"/sd/gui/b_p_off.bmp");
vipinranka 12:9a20164dcc47 509 ind_of=0;
vipinranka 12:9a20164dcc47 510 set_ind(ind_of,ind_speed);
vipinranka 12:9a20164dcc47 511 }
vipinranka 12:9a20164dcc47 512 } else if(x>=278 && y>=245 && x<=318 && y<=285) {
vipinranka 12:9a20164dcc47 513
vipinranka 12:9a20164dcc47 514 myLCD.BMP_disp(dis_nav.indx,dis_nav.indy,dis_nav.ind,dis_nav.indsize,dis_nav.indw,dis_nav.indh);
vipinranka 12:9a20164dcc47 515 pos[3]=0;
vipinranka 12:9a20164dcc47 516 }
vipinranka 12:9a20164dcc47 517 }
vipinranka 12:9a20164dcc47 518
vipinranka 12:9a20164dcc47 519 }
vipinranka 12:9a20164dcc47 520 } else if(y>400) {
vipinranka 12:9a20164dcc47 521 myLCD.BMP_disp(dis_nav.indx,dis_nav.indy,dis_nav.ind,dis_nav.indsize,dis_nav.indw,dis_nav.indh);
vipinranka 12:9a20164dcc47 522 myLCD.BMP_disp(dis_nav.secx,dis_nav.secy,dis_nav.sec,dis_nav.secsize,dis_nav.secw,dis_nav.sech);
vipinranka 12:9a20164dcc47 523 myLCD.BMP_disp(dis_nav.autx,dis_nav.auty,dis_nav.aut,dis_nav.autsize,dis_nav.autw,dis_nav.auth);
vipinranka 12:9a20164dcc47 524 myLCD.BMP_disp(dis_nav.hcx,dis_nav.hcy,dis_nav.hc,dis_nav.hcsize,dis_nav.hcw,dis_nav.hch);
vipinranka 12:9a20164dcc47 525 pos[0]=pos[1]=pos[2]=pos[3]=0;
vipinranka 12:9a20164dcc47 526 }
vipinranka 12:9a20164dcc47 527 wait(0.1);
vipinranka 12:9a20164dcc47 528 }
vipinranka 12:9a20164dcc47 529
vipinranka 12:9a20164dcc47 530 void init_radio()
vipinranka 12:9a20164dcc47 531 {
vipinranka 12:9a20164dcc47 532 uint8_t hb[]= {0xe7,0xe7,0xe7,0xe8,0xe9};
vipinranka 12:9a20164dcc47 533 uint8_t sec[]= {0xe8,0xe7,0xe7,0xe8,0xe9};
vipinranka 12:9a20164dcc47 534 radio.begin();
vipinranka 12:9a20164dcc47 535 radio.setAutoAck(1);
vipinranka 12:9a20164dcc47 536 radio.setChannel(100);
vipinranka 12:9a20164dcc47 537 radio.setDataRate(RF24_1MBPS);
vipinranka 12:9a20164dcc47 538 radio.enableAckPayload(); // Allow optional ack payloads
vipinranka 12:9a20164dcc47 539 radio.setRetries(15, 15);
vipinranka 12:9a20164dcc47 540 radio.setPALevel(RF24_PA_MAX);
vipinranka 12:9a20164dcc47 541 radio.enableDynamicPayloads();
vipinranka 12:9a20164dcc47 542 radio.openReadingPipe(1,hb);
vipinranka 12:9a20164dcc47 543 radio.openReadingPipe(2,sec);
vipinranka 12:9a20164dcc47 544 radio.startListening();
vipinranka 12:9a20164dcc47 545
vipinranka 12:9a20164dcc47 546 }
vipinranka 12:9a20164dcc47 547
vipinranka 12:9a20164dcc47 548 void cli_decode(char *c)
vipinranka 12:9a20164dcc47 549 {
vipinranka 12:9a20164dcc47 550 int count=0;
vipinranka 12:9a20164dcc47 551 string s[10];
vipinranka 12:9a20164dcc47 552 char c1[20];
vipinranka 12:9a20164dcc47 553 int s_count=0;
vipinranka 12:9a20164dcc47 554 for(int i=0; i<20; i++) {
vipinranka 12:9a20164dcc47 555 if(c[i]=='\n')
vipinranka 12:9a20164dcc47 556 break;
vipinranka 12:9a20164dcc47 557 if(c[i]==',') {
vipinranka 12:9a20164dcc47 558 s_count++;
vipinranka 12:9a20164dcc47 559 continue;
vipinranka 12:9a20164dcc47 560 }
vipinranka 12:9a20164dcc47 561 s[s_count]+=c[i];
vipinranka 12:9a20164dcc47 562 }
vipinranka 12:9a20164dcc47 563
vipinranka 12:9a20164dcc47 564 if(s[0]!="NEO"&&s[0]!="N")
vipinranka 12:9a20164dcc47 565 return;
vipinranka 12:9a20164dcc47 566 myLCD.fillrect(2,62,317,78,Black);
vipinranka 12:9a20164dcc47 567 myLCD.locate(4,65);
vipinranka 12:9a20164dcc47 568 myLCD.set_font((unsigned char*) Arial12x12);
vipinranka 12:9a20164dcc47 569 myLCD.printf("Writing %s",c);
vipinranka 12:9a20164dcc47 570 if(s[1]=="1") {
vipinranka 12:9a20164dcc47 571 sprintf(c1,"%s,%s,%s,%s,1\n",s[0].c_str(),s[1].c_str(),s[2].c_str(),s[3].c_str());
vipinranka 12:9a20164dcc47 572 uint8_t add[]= {0xe7,0xe7,0xe7,0xe7,0xe8};
vipinranka 12:9a20164dcc47 573 radio.stopListening();
vipinranka 12:9a20164dcc47 574 radio.openWritingPipe(add);
vipinranka 12:9a20164dcc47 575 wait_ms(2);
vipinranka 12:9a20164dcc47 576 while (!radio.write( &c1, 20 )) {
vipinranka 12:9a20164dcc47 577 myLCD.fillrect(2,62,317,78,Black);
vipinranka 12:9a20164dcc47 578 myLCD.locate(4,65);
vipinranka 12:9a20164dcc47 579 myLCD.set_font((unsigned char*) Arial12x12);
vipinranka 12:9a20164dcc47 580 myLCD.printf("Failed");
vipinranka 12:9a20164dcc47 581 count++;
vipinranka 12:9a20164dcc47 582 if(count>=10)
vipinranka 12:9a20164dcc47 583 break;
vipinranka 12:9a20164dcc47 584 wait(0.1);
vipinranka 12:9a20164dcc47 585 }
vipinranka 12:9a20164dcc47 586 wait_ms(2);
vipinranka 12:9a20164dcc47 587 radio.startListening();
vipinranka 12:9a20164dcc47 588 wait_ms(1);
vipinranka 12:9a20164dcc47 589
vipinranka 12:9a20164dcc47 590 } else if(s[1]=="5") {
vipinranka 12:9a20164dcc47 591 sprintf(c1,"%s,%s,%s,%s,%s,%s,1\n",s[0].c_str(),s[1].c_str(),s[2].c_str(),s[3].c_str(),s[4].c_str(),s[5].c_str());
vipinranka 12:9a20164dcc47 592 uint8_t add[]= {0xe7,0xe7,0xe7,0xe8,0xe8};
vipinranka 12:9a20164dcc47 593 radio.stopListening();
vipinranka 12:9a20164dcc47 594 radio.openWritingPipe(add);
vipinranka 12:9a20164dcc47 595 wait_ms(2);
vipinranka 12:9a20164dcc47 596 int count=0;
vipinranka 12:9a20164dcc47 597 while (!radio.write( &c1, 20 )) {
vipinranka 12:9a20164dcc47 598 myLCD.fillrect(2,62,317,78,Black);
vipinranka 12:9a20164dcc47 599 myLCD.locate(4,65);
vipinranka 12:9a20164dcc47 600 myLCD.set_font((unsigned char*) Arial12x12);
vipinranka 12:9a20164dcc47 601 myLCD.printf("Failed");
vipinranka 12:9a20164dcc47 602 count++;
vipinranka 12:9a20164dcc47 603 if(count>=10)
vipinranka 12:9a20164dcc47 604 break;
vipinranka 12:9a20164dcc47 605 wait(0.1);
vipinranka 12:9a20164dcc47 606 }
vipinranka 12:9a20164dcc47 607 wait_ms(2);
vipinranka 12:9a20164dcc47 608 radio.startListening();
vipinranka 12:9a20164dcc47 609 wait_ms(1);
vipinranka 12:9a20164dcc47 610
vipinranka 12:9a20164dcc47 611
vipinranka 12:9a20164dcc47 612 }
vipinranka 12:9a20164dcc47 613 }
vipinranka 12:9a20164dcc47 614
vipinranka 12:9a20164dcc47 615 void rf_decode(char *c)
vipinranka 12:9a20164dcc47 616 {
vipinranka 12:9a20164dcc47 617 string s[10];
vipinranka 12:9a20164dcc47 618 c[19]='\n';
vipinranka 12:9a20164dcc47 619
vipinranka 12:9a20164dcc47 620 int s_count=0;
vipinranka 12:9a20164dcc47 621 for(int i=0; i<20; i++) {
vipinranka 12:9a20164dcc47 622 if(c[i]=='\n')
vipinranka 12:9a20164dcc47 623 break;
vipinranka 12:9a20164dcc47 624 if(c[i]==',') {
vipinranka 12:9a20164dcc47 625 s_count++;
vipinranka 12:9a20164dcc47 626 continue;
vipinranka 12:9a20164dcc47 627 }
vipinranka 12:9a20164dcc47 628 s[s_count]+=c[i];
vipinranka 12:9a20164dcc47 629 }
vipinranka 12:9a20164dcc47 630 if(s[0]!="NEO")
vipinranka 12:9a20164dcc47 631 return;
vipinranka 12:9a20164dcc47 632 char send_cli[20];
vipinranka 12:9a20164dcc47 633 sprintf(send_cli,"%s,%s,%s,%s,%s\n",s[0].c_str(),s[1].c_str(),s[2].c_str(),s[3].c_str(),"1");
vipinranka 12:9a20164dcc47 634 if(client.is_connected()==true) {
vipinranka 12:9a20164dcc47 635 client.send(send_cli,strlen(send_cli));
vipinranka 12:9a20164dcc47 636 }
vipinranka 12:9a20164dcc47 637
vipinranka 12:9a20164dcc47 638 if(s[1]=="2") {
vipinranka 12:9a20164dcc47 639
vipinranka 12:9a20164dcc47 640 if(pos[0]==1) {
vipinranka 12:9a20164dcc47 641 myLCD.set_font((unsigned char*) Arial28x28);
vipinranka 12:9a20164dcc47 642 myLCD.locate(86,100);
vipinranka 12:9a20164dcc47 643 if(atoi(s[2].c_str())<100)
vipinranka 12:9a20164dcc47 644 myLCD.printf("0%s",s[2].c_str());
vipinranka 12:9a20164dcc47 645 else
vipinranka 12:9a20164dcc47 646 myLCD.printf("%s",s[2].c_str());
vipinranka 12:9a20164dcc47 647 }
vipinranka 12:9a20164dcc47 648 } else if(s[1]=="3") {
vipinranka 12:9a20164dcc47 649 if(pos[2]==1) {
vipinranka 12:9a20164dcc47 650 if(s[2]=="1") {
vipinranka 12:9a20164dcc47 651 myLCD.BMP_16(10,245,"/sd/gui/d_open.bmp");
vipinranka 12:9a20164dcc47 652 if(cam_sel==1)
vipinranka 12:9a20164dcc47 653 take_picture();
vipinranka 12:9a20164dcc47 654 } else
vipinranka 12:9a20164dcc47 655 myLCD.BMP_16(10,245,"/sd/gui/d_close.bmp");
vipinranka 12:9a20164dcc47 656 }
vipinranka 12:9a20164dcc47 657 }
vipinranka 12:9a20164dcc47 658
vipinranka 12:9a20164dcc47 659 }
vipinranka 12:9a20164dcc47 660
vipinranka 12:9a20164dcc47 661
vipinranka 12:9a20164dcc47 662 void init_internet()
vipinranka 12:9a20164dcc47 663 {
vipinranka 12:9a20164dcc47 664 network.init("192.168.0.100","255.255.255.0","192.168.0.254"); //Use DHCP
vipinranka 12:9a20164dcc47 665 network.connect();
vipinranka 12:9a20164dcc47 666 myLCD.fillrect(2,62,317,78,Black);
vipinranka 12:9a20164dcc47 667 myLCD.locate(4,65);
vipinranka 12:9a20164dcc47 668 myLCD.set_font((unsigned char*) Arial12x12);
vipinranka 12:9a20164dcc47 669 myLCD.printf("IP Address is %s\n", network.getIPAddress());
vipinranka 12:9a20164dcc47 670
vipinranka 12:9a20164dcc47 671 }
vipinranka 12:9a20164dcc47 672
vipinranka 12:9a20164dcc47 673 void init_fs()
vipinranka 12:9a20164dcc47 674 {
vipinranka 12:9a20164dcc47 675 char indexPage[256];
vipinranka 12:9a20164dcc47 676 sprintf(indexPage,"<HTML><HEAD><META content=\"text/html\" http-equiv=Content-Type><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" /> </HEAD><BODY><img src=\"abc10.jpg\" alt=\"Smiley face\" height=\"480\" width=\"320\"></BODY></HTML>\r\n\r\n");
vipinranka 12:9a20164dcc47 677 FILE *fp;
vipinranka 12:9a20164dcc47 678 fp = fopen("/sd/index.htm", "w");
vipinranka 12:9a20164dcc47 679 fwrite(indexPage, sizeof(char), strlen(indexPage), fp);
vipinranka 12:9a20164dcc47 680 fclose(fp);
vipinranka 12:9a20164dcc47 681 }
vipinranka 12:9a20164dcc47 682
vipinranka 12:9a20164dcc47 683
vipinranka 12:9a20164dcc47 684
vipinranka 12:9a20164dcc47 685
vipinranka 12:9a20164dcc47 686 void init_m_connect()
vipinranka 12:9a20164dcc47 687 {
vipinranka 12:9a20164dcc47 688 if(rf_server.bind(10101)<0) {
vipinranka 12:9a20164dcc47 689 myLCD.fillrect(2,62,317,78,Black);
vipinranka 12:9a20164dcc47 690 myLCD.locate(4,65);
vipinranka 12:9a20164dcc47 691 myLCD.set_font((unsigned char*) Arial12x12);
vipinranka 12:9a20164dcc47 692 myLCD.printf("Error in RF Server%s\n", network.getIPAddress());
vipinranka 12:9a20164dcc47 693 while(1);
vipinranka 12:9a20164dcc47 694 }
vipinranka 12:9a20164dcc47 695 if(rf_server.listen(1)<0) {
vipinranka 12:9a20164dcc47 696 myLCD.fillrect(2,62,317,78,Black);
vipinranka 12:9a20164dcc47 697 myLCD.locate(4,65);
vipinranka 12:9a20164dcc47 698 myLCD.set_font((unsigned char*) Arial12x12);
vipinranka 12:9a20164dcc47 699 myLCD.printf("Failed to listen", network.getIPAddress());
vipinranka 12:9a20164dcc47 700 while(1);
vipinranka 12:9a20164dcc47 701 }
vipinranka 12:9a20164dcc47 702 rf_server.set_blocking(false,100);
vipinranka 12:9a20164dcc47 703
vipinranka 12:9a20164dcc47 704 }
vipinranka 12:9a20164dcc47 705
vipinranka 12:9a20164dcc47 706 void poll_rfserver()
vipinranka 12:9a20164dcc47 707 {
vipinranka 12:9a20164dcc47 708 char a_buf[256];
vipinranka 12:9a20164dcc47 709 if(client.is_connected()==false) {
vipinranka 12:9a20164dcc47 710 led3=0;
vipinranka 12:9a20164dcc47 711 if(rf_server.accept(client)<0) {
vipinranka 12:9a20164dcc47 712 return;
vipinranka 12:9a20164dcc47 713 }
vipinranka 12:9a20164dcc47 714 } else {
vipinranka 12:9a20164dcc47 715
vipinranka 12:9a20164dcc47 716 int len=0;
vipinranka 12:9a20164dcc47 717 led3=1;
vipinranka 12:9a20164dcc47 718 client.set_blocking(false,100);
vipinranka 12:9a20164dcc47 719 if((len=client.receive(a_buf,256))>0) {
vipinranka 12:9a20164dcc47 720 a_buf[len+1]='\0';
vipinranka 12:9a20164dcc47 721 a_buf[len]='\n';
vipinranka 12:9a20164dcc47 722
vipinranka 12:9a20164dcc47 723 myLCD.fillrect(2,62,317,78,Black);
vipinranka 12:9a20164dcc47 724 myLCD.locate(4,65);
vipinranka 12:9a20164dcc47 725 myLCD.set_font((unsigned char*) Arial12x12);
vipinranka 12:9a20164dcc47 726 myLCD.printf("Received from client %s", a_buf);
vipinranka 12:9a20164dcc47 727 cli_decode(a_buf);
vipinranka 12:9a20164dcc47 728 }
vipinranka 12:9a20164dcc47 729 }
vipinranka 12:9a20164dcc47 730
vipinranka 12:9a20164dcc47 731 }
vipinranka 12:9a20164dcc47 732
vipinranka 12:9a20164dcc47 733
vipinranka 12:9a20164dcc47 734 int main()
vipinranka 12:9a20164dcc47 735 {
vipinranka 12:9a20164dcc47 736 uart.baud (115200);
vipinranka 12:9a20164dcc47 737 Init_lcd_touch();
vipinranka 12:9a20164dcc47 738 init_gui();
vipinranka 12:9a20164dcc47 739 pos[0]=pos[1]=pos[2]=pos[3]=0;
vipinranka 12:9a20164dcc47 740 init_radio();
vipinranka 12:9a20164dcc47 741 init_camera();
vipinranka 12:9a20164dcc47 742 init_internet();
vipinranka 12:9a20164dcc47 743 init_fs();
vipinranka 12:9a20164dcc47 744 HTTPFsRequestHandler::mount("/sd/", "/");
vipinranka 12:9a20164dcc47 745 svr.addHandler<HTTPFsRequestHandler>("/");
vipinranka 12:9a20164dcc47 746 if (!svr.start(80,&network)) {
vipinranka 12:9a20164dcc47 747 myLCD.fillrect(2,62,317,78,Black);
vipinranka 12:9a20164dcc47 748 myLCD.locate(4,65);
vipinranka 12:9a20164dcc47 749 myLCD.set_font((unsigned char*) Arial12x12);
vipinranka 12:9a20164dcc47 750 myLCD.printf("Error in http server start", network.getIPAddress());
vipinranka 12:9a20164dcc47 751 while(1);
vipinranka 12:9a20164dcc47 752 }
vipinranka 12:9a20164dcc47 753 init_m_connect();
vipinranka 12:9a20164dcc47 754 char c[20];
vipinranka 12:9a20164dcc47 755 while(1) {
vipinranka 12:9a20164dcc47 756 if(network.getIPAddress()==NULL) {
vipinranka 12:9a20164dcc47 757 init_internet();
vipinranka 12:9a20164dcc47 758 if (!svr.start(80,&network)) {
vipinranka 12:9a20164dcc47 759 myLCD.fillrect(2,62,317,78,Black);
vipinranka 12:9a20164dcc47 760 myLCD.locate(4,65);
vipinranka 12:9a20164dcc47 761 myLCD.set_font((unsigned char*) Arial12x12);
vipinranka 12:9a20164dcc47 762 myLCD.printf("Error in http server start", network.getIPAddress());
vipinranka 12:9a20164dcc47 763 while(1);
vipinranka 12:9a20164dcc47 764 }
vipinranka 12:9a20164dcc47 765 init_m_connect();
vipinranka 12:9a20164dcc47 766
vipinranka 12:9a20164dcc47 767 }
vipinranka 12:9a20164dcc47 768 svr.poll();
vipinranka 12:9a20164dcc47 769 poll_rfserver();
vipinranka 12:9a20164dcc47 770 if(get_xy()==1) {
vipinranka 12:9a20164dcc47 771 navigate(TP.display.x,TP.display.y);
vipinranka 12:9a20164dcc47 772 }
vipinranka 12:9a20164dcc47 773 if(radio.available()) {
vipinranka 12:9a20164dcc47 774 while(radio.available()) {
vipinranka 12:9a20164dcc47 775 radio.read(&c,20);
vipinranka 12:9a20164dcc47 776 c[19]='\0';
vipinranka 12:9a20164dcc47 777 if(in_pic!=1) {
vipinranka 12:9a20164dcc47 778 myLCD.fillrect(2,62,317,78,Black);
vipinranka 12:9a20164dcc47 779 myLCD.locate(4,65);
vipinranka 12:9a20164dcc47 780 myLCD.set_font((unsigned char*) Arial12x12);
vipinranka 12:9a20164dcc47 781 myLCD.printf("Reading %s",c);
vipinranka 12:9a20164dcc47 782 }
vipinranka 12:9a20164dcc47 783 rf_decode(c);
vipinranka 12:9a20164dcc47 784 }
vipinranka 12:9a20164dcc47 785 }
vipinranka 12:9a20164dcc47 786 temp_count++;
vipinranka 12:9a20164dcc47 787 if(temp_count>=10) {
vipinranka 12:9a20164dcc47 788 temp_count=0;
vipinranka 12:9a20164dcc47 789 char c[20];
vipinranka 12:9a20164dcc47 790 float tem=temp.read()*3.3*100;
vipinranka 12:9a20164dcc47 791 sprintf(c,"NEO,5,%2.0f,0,1\n",tem);
vipinranka 12:9a20164dcc47 792 if(client.is_connected()==true) {
vipinranka 12:9a20164dcc47 793 client.send(c,strlen(c));
vipinranka 12:9a20164dcc47 794 }
vipinranka 12:9a20164dcc47 795 if(pos[0]==1 && in_pic!=1) {
vipinranka 12:9a20164dcc47 796 myLCD.set_font((unsigned char*) Arial28x28);
vipinranka 12:9a20164dcc47 797
vipinranka 12:9a20164dcc47 798 myLCD.locate(78,194);
vipinranka 12:9a20164dcc47 799 myLCD.printf("%2.0f",tem);
vipinranka 12:9a20164dcc47 800 // myLCD.rect(76,188,152,225,Red);
vipinranka 12:9a20164dcc47 801 myLCD.circle(116,197,3,Red);
vipinranka 12:9a20164dcc47 802 myLCD.locate(124,194);
vipinranka 12:9a20164dcc47 803 myLCD.printf("C");
vipinranka 12:9a20164dcc47 804 pos[0]=1;
vipinranka 12:9a20164dcc47 805 }
vipinranka 12:9a20164dcc47 806 }
vipinranka 12:9a20164dcc47 807 }
vipinranka 12:9a20164dcc47 808 }