Maxime Kmiec / Mbed 2 deprecated PROJECT

Dependencies:   mbed SDFileSystem

Committer:
adragar
Date:
Tue May 04 12:30:39 2021 +0000
Revision:
4:a73ad3555745
Code Maxime

Who changed what in which revision?

UserRevisionLine numberNew contents of line
adragar 4:a73ad3555745 1 #undef GENIE_DEBUG
adragar 4:a73ad3555745 2
adragar 4:a73ad3555745 3 #define GENIE_VERSION "GenieMbed 17-Nov-2013"
adragar 4:a73ad3555745 4
adragar 4:a73ad3555745 5 // Genie commands & replys:
adragar 4:a73ad3555745 6
adragar 4:a73ad3555745 7 #define GENIE_ACK 0x06
adragar 4:a73ad3555745 8 #define GENIE_NAK 0x15
adragar 4:a73ad3555745 9
adragar 4:a73ad3555745 10 #define TIMEOUT_PERIOD 500
adragar 4:a73ad3555745 11 #define RESYNC_PERIOD 100
adragar 4:a73ad3555745 12
adragar 4:a73ad3555745 13 #define GENIE_READ_OBJ 0
adragar 4:a73ad3555745 14 #define GENIE_WRITE_OBJ 1
adragar 4:a73ad3555745 15 #define GENIE_WRITE_STR 2
adragar 4:a73ad3555745 16 #define GENIE_WRITE_STRU 3
adragar 4:a73ad3555745 17 #define GENIE_WRITE_CONTRAST 4
adragar 4:a73ad3555745 18 #define GENIE_REPORT_OBJ 5
adragar 4:a73ad3555745 19 #define GENIE_REPORT_EVENT 7
adragar 4:a73ad3555745 20
adragar 4:a73ad3555745 21 // Objects
adragar 4:a73ad3555745 22 // the manual says:
adragar 4:a73ad3555745 23 // Note: Object IDs may change with future releases; it is not
adragar 4:a73ad3555745 24 // advisable to code their values as constants.
adragar 4:a73ad3555745 25
adragar 4:a73ad3555745 26 #define GENIE_OBJ_DIPSW 0
adragar 4:a73ad3555745 27 #define GENIE_OBJ_KNOB 1
adragar 4:a73ad3555745 28 #define GENIE_OBJ_ROCKERSW 2
adragar 4:a73ad3555745 29 #define GENIE_OBJ_ROTARYSW 3
adragar 4:a73ad3555745 30 #define GENIE_OBJ_SLIDER 4
adragar 4:a73ad3555745 31 #define GENIE_OBJ_TRACKBAR 5
adragar 4:a73ad3555745 32 #define GENIE_OBJ_WINBUTTON 6
adragar 4:a73ad3555745 33 #define GENIE_OBJ_ANGULAR_METER 7
adragar 4:a73ad3555745 34 #define GENIE_OBJ_COOL_GAUGE 8
adragar 4:a73ad3555745 35 #define GENIE_OBJ_CUSTOM_DIGITS 9
adragar 4:a73ad3555745 36 #define GENIE_OBJ_FORM 10
adragar 4:a73ad3555745 37 #define GENIE_OBJ_GAUGE 11
adragar 4:a73ad3555745 38 #define GENIE_OBJ_IMAGE 12
adragar 4:a73ad3555745 39 #define GENIE_OBJ_KEYBOARD 13
adragar 4:a73ad3555745 40 #define GENIE_OBJ_LED 14
adragar 4:a73ad3555745 41 #define GENIE_OBJ_LED_DIGITS 15
adragar 4:a73ad3555745 42 #define GENIE_OBJ_METER 16
adragar 4:a73ad3555745 43 #define GENIE_OBJ_STRINGS 17
adragar 4:a73ad3555745 44 #define GENIE_OBJ_THERMOMETER 18
adragar 4:a73ad3555745 45 #define GENIE_OBJ_USER_LED 19
adragar 4:a73ad3555745 46 #define GENIE_OBJ_VIDEO 20
adragar 4:a73ad3555745 47 #define GENIE_OBJ_STATIC_TEXT 21
adragar 4:a73ad3555745 48 #define GENIE_OBJ_SOUND 22
adragar 4:a73ad3555745 49 #define GENIE_OBJ_TIMER 23
adragar 4:a73ad3555745 50 #define GENIE_OBJ_SPECTRUM 24
adragar 4:a73ad3555745 51 #define GENIE_OBJ_SCOPE 25
adragar 4:a73ad3555745 52 #define GENIE_OBJ_TANK 26
adragar 4:a73ad3555745 53 #define GENIE_OBJ_USERIMAGES 27
adragar 4:a73ad3555745 54 #define GENIE_OBJ_PINOUTPUT 28
adragar 4:a73ad3555745 55 #define GENIE_OBJ_PININPUT 29
adragar 4:a73ad3555745 56 #define GENIE_OBJ_4DBUTTON 30
adragar 4:a73ad3555745 57 #define GENIE_OBJ_ANIBUTTON 31
adragar 4:a73ad3555745 58 #define GENIE_OBJ_COLORPICKER 32
adragar 4:a73ad3555745 59 #define GENIE_OBJ_USERBUTTON 33
adragar 4:a73ad3555745 60
adragar 4:a73ad3555745 61 // Structure to store replys returned from a display
adragar 4:a73ad3555745 62
adragar 4:a73ad3555745 63 #define GENIE_FRAME_SIZE 6
adragar 4:a73ad3555745 64 struct genieFrameReportObj {
adragar 4:a73ad3555745 65 uint8_t cmd;
adragar 4:a73ad3555745 66 uint8_t object;
adragar 4:a73ad3555745 67 uint8_t index;
adragar 4:a73ad3555745 68 uint8_t data_msb;
adragar 4:a73ad3555745 69 uint8_t data_lsb;
adragar 4:a73ad3555745 70 };
adragar 4:a73ad3555745 71
adragar 4:a73ad3555745 72 /////////////////////////////////////////////////////////////////////
adragar 4:a73ad3555745 73 // The Genie frame definition
adragar 4:a73ad3555745 74 //
adragar 4:a73ad3555745 75 // The union allows the data to be referenced as an array of uint8_t
adragar 4:a73ad3555745 76 // or a structure of type genieFrameReportObj, eg
adragar 4:a73ad3555745 77 //
adragar 4:a73ad3555745 78 // genieFrame f;
adragar 4:a73ad3555745 79 // f.bytes[4];
adragar 4:a73ad3555745 80 // f.reportObject.data_lsb
adragar 4:a73ad3555745 81 //
adragar 4:a73ad3555745 82 // both methods get the same byte
adragar 4:a73ad3555745 83 //
adragar 4:a73ad3555745 84 union genieFrame {
adragar 4:a73ad3555745 85 uint8_t bytes[GENIE_FRAME_SIZE];
adragar 4:a73ad3555745 86 genieFrameReportObj reportObject;
adragar 4:a73ad3555745 87 };
adragar 4:a73ad3555745 88
adragar 4:a73ad3555745 89 #define MAX_GENIE_EVENTS 16 // MUST be a power of 2
adragar 4:a73ad3555745 90 #define MAX_GENIE_FATALS 10
adragar 4:a73ad3555745 91
adragar 4:a73ad3555745 92 struct genieEventQueueStruct {
adragar 4:a73ad3555745 93 genieFrame frames[MAX_GENIE_EVENTS];
adragar 4:a73ad3555745 94 uint8_t rd_index;
adragar 4:a73ad3555745 95 uint8_t wr_index;
adragar 4:a73ad3555745 96 uint8_t n_events;
adragar 4:a73ad3555745 97 };
adragar 4:a73ad3555745 98
adragar 4:a73ad3555745 99 typedef void (*geniePutCharFuncPtr) (uint8_t c, uint32_t baud);
adragar 4:a73ad3555745 100 typedef uint16_t (*genieGetCharFuncPtr) (void);
adragar 4:a73ad3555745 101 typedef void (*genieUserEventHandlerPtr) (void);
adragar 4:a73ad3555745 102
adragar 4:a73ad3555745 103 #define ERROR_NONE 0
adragar 4:a73ad3555745 104 #define ERROR_TIMEOUT -1 // 255 0xFF
adragar 4:a73ad3555745 105 #define ERROR_NOHANDLER -2 // 254 0xFE
adragar 4:a73ad3555745 106 #define ERROR_NOCHAR -3 // 253 0xFD
adragar 4:a73ad3555745 107 #define ERROR_NAK -4 // 252 0xFC
adragar 4:a73ad3555745 108 #define ERROR_REPLY_OVR -5 // 251 0xFB
adragar 4:a73ad3555745 109 #define ERROR_RESYNC -6 // 250 0xFA
adragar 4:a73ad3555745 110 #define ERROR_NODISPLAY -7 // 249 0xF9
adragar 4:a73ad3555745 111 #define ERROR_BAD_CS -8 // 248 0xF8
adragar 4:a73ad3555745 112
adragar 4:a73ad3555745 113 #define GENIE_LINK_IDLE 0
adragar 4:a73ad3555745 114 #define GENIE_LINK_WFAN 1 // waiting for Ack or Nak
adragar 4:a73ad3555745 115 #define GENIE_LINK_WF_RXREPORT 2 // waiting for a report frame
adragar 4:a73ad3555745 116 #define GENIE_LINK_RXREPORT 3 // receiving a report frame
adragar 4:a73ad3555745 117 #define GENIE_LINK_RXEVENT 4 // receiving an event frame
adragar 4:a73ad3555745 118 #define GENIE_LINK_SHDN 5
adragar 4:a73ad3555745 119
adragar 4:a73ad3555745 120 #define GENIE_EVENT_NONE 0
adragar 4:a73ad3555745 121 #define GENIE_EVENT_RXCHAR 1
adragar 4:a73ad3555745 122
adragar 4:a73ad3555745 123 #ifndef TRUE
adragar 4:a73ad3555745 124 #define TRUE (1==1)
adragar 4:a73ad3555745 125 #define FALSE (!TRUE)
adragar 4:a73ad3555745 126 #endif
adragar 4:a73ad3555745 127
adragar 4:a73ad3555745 128 void SetupGenie(void);
adragar 4:a73ad3555745 129 void genieAttachEventHandler (genieUserEventHandlerPtr handler);
adragar 4:a73ad3555745 130 extern bool genieDequeueEvent (genieFrame * buff);
adragar 4:a73ad3555745 131 extern bool genieEventIs (genieFrame * e, uint8_t cmd, uint8_t object, uint8_t index);
adragar 4:a73ad3555745 132 extern uint16_t genieGetEventData (genieFrame * e);
adragar 4:a73ad3555745 133 extern uint16_t genieWriteObject (uint16_t object, uint16_t index, uint16_t data);
adragar 4:a73ad3555745 134 extern uint16_t genieWriteStr (uint16_t index, char *string);
adragar 4:a73ad3555745 135 extern void genieWriteContrast (uint16_t value);
adragar 4:a73ad3555745 136