Smart-Home-TX Test
Dependencies: 4DGL-uLCD-SE PinDetect
Fork of Xbee-Smart-Home-Outside by
main.cpp@1:7d069ab3f551, 2017-04-25 (annotated)
- 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?
User | Revision | Line number | New 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 | */ |