Mbed 4dGenie class
Dependents: Genie_Test 039847382-S3_DS1621_and_LCD_V1
This is a work in progress.
4dGenie class to use with 4dLCD screens that are using the genie environment.
There are still some rare occasions where the 4dLCD might crash, for now i have no solution to this except doing a reset of the 4dLCD.
Please make sure to have the most up to date PmmC loaded on the screen.
usage example :
Mbed4dGenie test program
#include "mbed.h" #include "mbed_genie.h" DigitalOut myled(LED1); /* The Mbed4dGenie class requires 3 parameters 1 - Tx pin 2 - Rx pin 3 - Reset pin */ Mbed4dGenie lcd4d(PTE0,PTE1,PTB9); int main() { int temp = 0; printf("Mbed Genie demo \n\r"); lcd4d.Start(); /* for example, in this loop we increment the thermometer0 object from 0 to 100 */ while(1) { if(temp >= 100) { temp = -1; } else { temp++; } lcd4d.genieWriteObject(GENIE_OBJ_LED_DIGITS,1,temp); myled = 1; wait(0.05); myled = 0; wait(0.05); } }
Diff: mbed_genie.cpp
- Revision:
- 9:b74deaac80f9
- Parent:
- 8:b5ba0df2d0db
- Child:
- 10:4d9f1be4a901
--- a/mbed_genie.cpp Sun Jul 06 17:22:32 2014 +0000 +++ b/mbed_genie.cpp Tue Jul 08 15:52:26 2014 +0000 @@ -28,6 +28,10 @@ do { c = _screen.getc(); + if(_t.read_ms() >= RxMaxTimeout && state == CommInProgress) + { + Reset(); + } ManageReceiveData(c); } while(_screen.readable()); @@ -151,7 +155,7 @@ //Here we dont wiat for a typical answer //The screen will respond with an NACK if the command was not understood, otherwise it will send a report object frame - return WaitForReadAnswer(); + return 0;//WaitForReadAnswer(); } void Mbed4dGenie::writec(char data) { @@ -192,8 +196,9 @@ LastResponse = NO_RESPONSE; return ERROR_NAK; } - else if(LastResponse >= timeout) //check if we timed out while waiting for response + else if(_t.read_ms() >= timeout) //check if we timed out while waiting for response { + LastResponse = NO_RESPONSE; return ERROR_TIMEOUT; } @@ -217,8 +222,9 @@ LastResponse = NO_RESPONSE; return ERROR_NAK; } - else if(LastResponse >= timeout) + else if(_t.read_ms() >= timeout) { + printf("Current timer:%d ; timeout:%d\n\r",_t.read_ms(),timeout); LastResponse = NO_RESPONSE; return ERROR_TIMEOUT; }