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.h
- Revision:
- 3:11c49c49cd1a
- Parent:
- 2:f283764fe9b7
- Child:
- 6:f4d3977b0eae
--- a/mbed_genie.h Sun Feb 23 01:34:05 2014 +0000 +++ b/mbed_genie.h Sun Feb 23 17:32:37 2014 +0000 @@ -136,35 +136,36 @@ class Mbed4dGenie{ public: - Mbed4dGenie(PinName TxPin,PinName RxPin); - void genieAttachEventHandler (genieUserEventHandlerPtr handler); + Mbed4dGenie(PinName TxPin,PinName RxPin, PinName resetpin); + void genieAttachEventHandler (genieUserEventHandlerPtr handler); + uint16_t genieWriteStrU (uint16_t index, char *string); + uint16_t genieWriteStr (uint16_t index, char *string); + void genieWriteContrast (uint16_t value); + uint16_t genieWriteObject (uint16_t object, uint16_t index, uint16_t data); + bool genieDequeueEvent(genieFrame * buff); + uint16_t genieGetEventData (genieFrame * e); + bool genieEventIs(genieFrame * e, uint8_t cmd, uint8_t object, uint8_t index); + bool GenieReadable(void); + uint16_t genieDoEvents (void); + private: + void RxIrqHandler(void); uint8_t _genieGetchar(void); void _geniePutchar (uint8_t c); uint16_t _genieGetLinkState (void); void _genieSetLinkState (uint16_t newstate); bool _genieEnqueueEvent (uint8_t * data); - uint16_t genieWriteStrU (uint16_t index, char *string); - uint16_t genieWriteStr (uint16_t index, char *string); int _genieWriteStrX (uint16_t code, uint16_t index, char *string); - void genieWriteContrast (uint16_t value); - uint16_t genieWriteObject (uint16_t object, uint16_t index, uint16_t data); void _genieWaitForIdle (void); - bool genieDequeueEvent(genieFrame * buff); - uint16_t genieGetEventData (genieFrame * e); - bool genieEventIs(genieFrame * e, uint8_t cmd, uint8_t object, uint8_t index); void _geniePushLinkState (uint8_t newstate); void _geniePopLinkState (void); void _genieFlushSerialInput(void); void _handleError (void); void _genieFlushEventQueue(void); - bool GenieReadable(void); - uint16_t genieDoEvents (void); - - private: - void RxIrqHandler(void); + Serial _screen; Timer _t; + DigitalOut _reset; ////////////////////////////////////////////////////////////// // Pointer to the user's event handler function //