programme bts

Dependencies:   mbed ID12RFID SDFileSystem

Committer:
valentinbruchet
Date:
Wed May 05 08:13:43 2021 +0000
Revision:
5:e104ec24b3fa
Programme BTS;

Who changed what in which revision?

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