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);
    }
}
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
     //