Smart-Home-TX Test

Dependencies:   4DGL-uLCD-SE PinDetect

Fork of Xbee-Smart-Home-Outside by prana koirala

Committer:
pkoirala3
Date:
Tue Apr 25 22:37:54 2017 +0000
Revision:
1:7d069ab3f551
Parent:
0:9d604b1e5409
Child:
2:b549ccada3c3
Include most of the code except handling jpg image

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pkoirala3 0:9d604b1e5409 1 #include "mbed.h"
pkoirala3 0:9d604b1e5409 2 #include <string>
pkoirala3 1:7d069ab3f551 3 #include <stdio.h>
pkoirala3 0:9d604b1e5409 4 #include "uLCD_4DGL.h"
pkoirala3 1:7d069ab3f551 5 #include "rtos.h"
pkoirala3 1:7d069ab3f551 6 // #include "jpegutil.h"
pkoirala3 1:7d069ab3f551 7
pkoirala3 1:7d069ab3f551 8 Serial pc(USBTX, USBRX);
pkoirala3 1:7d069ab3f551 9 uLCD_4DGL lcd(p28,p27,p24);
pkoirala3 0:9d604b1e5409 10 Serial xbee(p9, p10);
pkoirala3 0:9d604b1e5409 11 DigitalOut reset(p8);
pkoirala3 0:9d604b1e5409 12 DigitalOut led1(LED1);
pkoirala3 0:9d604b1e5409 13 DigitalOut led2(LED2);
pkoirala3 1:7d069ab3f551 14 InterruptIn getStatus(p16);
pkoirala3 1:7d069ab3f551 15 InterruptIn toggleLight(p17);
pkoirala3 1:7d069ab3f551 16
pkoirala3 1:7d069ab3f551 17 // LocalFileSystem local("local"); /
pkoirala3 1:7d069ab3f551 18
pkoirala3 1:7d069ab3f551 19 volatile bool statusReq = false;
pkoirala3 1:7d069ab3f551 20 volatile bool flipLed = false;
pkoirala3 1:7d069ab3f551 21
pkoirala3 1:7d069ab3f551 22 Thread t1;
pkoirala3 1:7d069ab3f551 23 Mutex serialMutex;
pkoirala3 1:7d069ab3f551 24
pkoirala3 1:7d069ab3f551 25 char buffer[50];
pkoirala3 1:7d069ab3f551 26
pkoirala3 1:7d069ab3f551 27 void statusRequest()
pkoirala3 1:7d069ab3f551 28 {
pkoirala3 1:7d069ab3f551 29 statusReq = true;
pkoirala3 1:7d069ab3f551 30 }
pkoirala3 1:7d069ab3f551 31
pkoirala3 1:7d069ab3f551 32 void flipLight()
pkoirala3 1:7d069ab3f551 33 {
pkoirala3 1:7d069ab3f551 34 flipLed = true;
pkoirala3 1:7d069ab3f551 35 }
pkoirala3 1:7d069ab3f551 36
pkoirala3 1:7d069ab3f551 37 void sendcommand(char out)
pkoirala3 1:7d069ab3f551 38 {
pkoirala3 1:7d069ab3f551 39 while(xbee.writeable()) {
pkoirala3 1:7d069ab3f551 40 led2 = 1;
pkoirala3 1:7d069ab3f551 41 char outbuf = out;
pkoirala3 1:7d069ab3f551 42 serialMutex.lock();
pkoirala3 1:7d069ab3f551 43 xbee.putc(outbuf);
pkoirala3 1:7d069ab3f551 44 serialMutex.unlock();
pkoirala3 1:7d069ab3f551 45 led2 = 0;
pkoirala3 1:7d069ab3f551 46 }
pkoirala3 1:7d069ab3f551 47 }
pkoirala3 1:7d069ab3f551 48
pkoirala3 1:7d069ab3f551 49 void getcommand()
pkoirala3 1:7d069ab3f551 50 {
pkoirala3 1:7d069ab3f551 51 while(1) {
pkoirala3 1:7d069ab3f551 52 if(xbee.readable()) {
pkoirala3 1:7d069ab3f551 53 led1 = 1;
pkoirala3 1:7d069ab3f551 54 int x = 0;
pkoirala3 1:7d069ab3f551 55 while(xbee.readable()) {
pkoirala3 1:7d069ab3f551 56 serialMutex.lock();
pkoirala3 1:7d069ab3f551 57 buffer[x] = xbee.getc();
pkoirala3 1:7d069ab3f551 58 x++;
pkoirala3 1:7d069ab3f551 59 serialMutex.unlock();
pkoirala3 1:7d069ab3f551 60 }
pkoirala3 1:7d069ab3f551 61 led1 = 0;
pkoirala3 1:7d069ab3f551 62 const char s[2] = "|";
pkoirala3 1:7d069ab3f551 63 char *token;
pkoirala3 1:7d069ab3f551 64 token = strtok(buffer, s); // get the first token
pkoirala3 1:7d069ab3f551 65 int j = 1;
pkoirala3 1:7d069ab3f551 66 while( token != NULL ) { // walk through other tokens
pkoirala3 1:7d069ab3f551 67 lcd.locate(11,j); // Print in correct place of LCD
pkoirala3 1:7d069ab3f551 68 lcd.printf( "%s", token );
pkoirala3 1:7d069ab3f551 69 token = strtok(NULL, s);
pkoirala3 1:7d069ab3f551 70 j++;
pkoirala3 1:7d069ab3f551 71 }
pkoirala3 1:7d069ab3f551 72 }
pkoirala3 1:7d069ab3f551 73 Thread::wait(1000);
pkoirala3 1:7d069ab3f551 74 }
pkoirala3 1:7d069ab3f551 75 }
pkoirala3 1:7d069ab3f551 76
pkoirala3 0:9d604b1e5409 77 int main()
pkoirala3 0:9d604b1e5409 78 {
pkoirala3 0:9d604b1e5409 79 reset = 0;
pkoirala3 0:9d604b1e5409 80 wait_ms(1);
pkoirala3 0:9d604b1e5409 81 reset = 1;
pkoirala3 0:9d604b1e5409 82 wait_ms(1);
pkoirala3 1:7d069ab3f551 83 getStatus.rise(&statusRequest); //attach address of function on rising edge
pkoirala3 1:7d069ab3f551 84 toggleLight.rise(&flipLight);
pkoirala3 1:7d069ab3f551 85
pkoirala3 1:7d069ab3f551 86 // lcd.baudrate(300000);
pkoirala3 1:7d069ab3f551 87 lcd.cls();
pkoirala3 1:7d069ab3f551 88 lcd.locate(0,0);
pkoirala3 1:7d069ab3f551 89 lcd.line(0, 5, 128, 5, 0xFF0000);
pkoirala3 1:7d069ab3f551 90 lcd.printf("\r\nStatus:");
pkoirala3 1:7d069ab3f551 91 lcd.printf("\r\n");
pkoirala3 1:7d069ab3f551 92 lcd.printf("Temp degC:\r\n");
pkoirala3 1:7d069ab3f551 93 lcd.printf("Humidity %:\r\n");
pkoirala3 1:7d069ab3f551 94 lcd.printf("Lights: \r\n");
pkoirala3 1:7d069ab3f551 95 lcd.line(0, 45, 128, 45, 0xFF0000);
pkoirala3 1:7d069ab3f551 96 // xbee.baud(115200); // May need to latter
pkoirala3 1:7d069ab3f551 97 t1.start(getcommand);
pkoirala3 1:7d069ab3f551 98
pkoirala3 1:7d069ab3f551 99 while(1) {
pkoirala3 1:7d069ab3f551 100 if (statusReq == true) {
pkoirala3 1:7d069ab3f551 101 sendcommand('c');
pkoirala3 1:7d069ab3f551 102 } else if (flipLed == true) {
pkoirala3 1:7d069ab3f551 103 sendcommand('l');
pkoirala3 0:9d604b1e5409 104 }
pkoirala3 1:7d069ab3f551 105 Thread::wait(1000);
pkoirala3 1:7d069ab3f551 106
pkoirala3 0:9d604b1e5409 107 }
pkoirala3 1:7d069ab3f551 108 }
pkoirala3 1:7d069ab3f551 109
pkoirala3 1:7d069ab3f551 110 /*
pkoirala3 1:7d069ab3f551 111 string file = "/local/PICT003.jpg";
pkoirala3 1:7d069ab3f551 112 lcd.locate(0, 6);
pkoirala3 1:7d069ab3f551 113 ReadJPEGFromFile(file.c_str());
pkoirala3 1:7d069ab3f551 114 lcd.printf("Image Displaying:\r\n");
pkoirala3 1:7d069ab3f551 115 lcd.BLIT(0, 60, 60, 80, &color[0]);
pkoirala3 1:7d069ab3f551 116 led1 = 1;
pkoirala3 1:7d069ab3f551 117
pkoirala3 1:7d069ab3f551 118 BLIT(int x, int y, int w, int h, int *colors)
pkoirala3 1:7d069ab3f551 119 x is the left-edge of the region.
pkoirala3 1:7d069ab3f551 120 y is the top-edge of the region.
pkoirala3 1:7d069ab3f551 121 w specifies the width of the region.
pkoirala3 1:7d069ab3f551 122 h specifies the height of the region.
pkoirala3 1:7d069ab3f551 123 colour is a pointer to the array with size = w * h.
pkoirala3 1:7d069ab3f551 124 */