class library to access fischertechnik interfaces via USB
Dependencies: FatFileSystem mbed myBlueUSB neigbourhood rfcomm sdp
ROBO_TX_FW.h@1:4676e8b9b357, 2013-03-11 (annotated)
- Committer:
- networker
- Date:
- Mon Mar 11 08:04:37 2013 +0000
- Revision:
- 1:4676e8b9b357
- Parent:
- 0:7da612835693
first publication of this experimental class, just for sharing wip
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
networker |
0:7da612835693 | 1 | //============================================================================= |
networker |
0:7da612835693 | 2 | // | |
networker |
0:7da612835693 | 3 | // Headerfile | robo_tx_fw.h |
networker |
0:7da612835693 | 4 | // | |
networker |
0:7da612835693 | 5 | // Description | Header file with definition of the software interface |
networker |
0:7da612835693 | 6 | // | to the ROBO TX Controller firmware. |
networker |
0:7da612835693 | 7 | // | Can be used for building C-programs which can run |
networker |
0:7da612835693 | 8 | // | under control of the ROBO TX Controller firmware in |
networker |
0:7da612835693 | 9 | // | download (local) mode or for building PC-programs which |
networker |
0:7da612835693 | 10 | // | can communicate with the ROBO TX Controller firmware in |
networker |
0:7da612835693 | 11 | // | online mode. |
networker |
0:7da612835693 | 12 | // | |
networker |
0:7da612835693 | 13 | //----------------------------------------------------------------------------- |
networker |
0:7da612835693 | 14 | // Disclaimer - Exclusion of Liability |
networker |
0:7da612835693 | 15 | // |
networker |
0:7da612835693 | 16 | // This software is distributed in the hope that it will be useful,but WITHOUT |
networker |
0:7da612835693 | 17 | // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
networker |
0:7da612835693 | 18 | // FITNESS FOR A PARTICULAR PURPOSE. It can be used an modified by anyone |
networker |
0:7da612835693 | 19 | // free of any license obligations or authoring rights. |
networker |
0:7da612835693 | 20 | //============================================================================= |
networker |
0:7da612835693 | 21 | |
networker |
0:7da612835693 | 22 | #ifndef __ROBO_TX_FW_H__ |
networker |
0:7da612835693 | 23 | #define __ROBO_TX_FW_H__ |
networker |
0:7da612835693 | 24 | |
networker |
0:7da612835693 | 25 | |
networker |
0:7da612835693 | 26 | #define N_CNT 4 // number of counters |
networker |
0:7da612835693 | 27 | #define N_PWM_CHAN 8 // number of PWM channels |
networker |
0:7da612835693 | 28 | #define N_MOTOR 4 // number of motors |
networker |
0:7da612835693 | 29 | #define N_UNI 8 // number of universal inputs |
networker |
0:7da612835693 | 30 | |
networker |
0:7da612835693 | 31 | // 5kOhm Range |
networker |
0:7da612835693 | 32 | #define R_MIN 10 // [Ohm] |
networker |
0:7da612835693 | 33 | #define R_MAX 4999 // [Ohm] |
networker |
0:7da612835693 | 34 | #define R_OVR 5000 // [Ohm] overload |
networker |
0:7da612835693 | 35 | |
networker |
0:7da612835693 | 36 | // 10V Range |
networker |
0:7da612835693 | 37 | #define U_MIN 0 // [mV] |
networker |
0:7da612835693 | 38 | #define U_MAX 9999 // [mV] |
networker |
0:7da612835693 | 39 | #define U_OVR 10000 // [mV] overload |
networker |
0:7da612835693 | 40 | |
networker |
0:7da612835693 | 41 | // Ultrasonic Sensor Range |
networker |
0:7da612835693 | 42 | #define ULTRASONIC_MIN 2 // [cm] |
networker |
0:7da612835693 | 43 | #define ULTRASONIC_MAX 1023 // [cm] |
networker |
0:7da612835693 | 44 | #define ULTRASONIC_OVR 1024 // [cm] overload |
networker |
0:7da612835693 | 45 | #define NO_ULTRASONIC 4096 // not present |
networker |
0:7da612835693 | 46 | |
networker |
0:7da612835693 | 47 | // Length of strings |
networker |
0:7da612835693 | 48 | #define DEV_NAME_LEN 16 // "ROBO TX-xxxxxxxx" |
networker |
0:7da612835693 | 49 | #define BLUETOOTH_ADDR_LEN 17 // "xx:xx:xx:xx:xx:xx" |
networker |
0:7da612835693 | 50 | #define DISPL_MSG_LEN_MAX 64 // max length of a pop-up display message |
networker |
0:7da612835693 | 51 | |
networker |
0:7da612835693 | 52 | |
networker |
0:7da612835693 | 53 | // Identifiers of the Transfer Area parts |
networker |
0:7da612835693 | 54 | enum ta_id_e |
networker |
0:7da612835693 | 55 | { |
networker |
0:7da612835693 | 56 | TA_LOCAL = 0, // Local part of Transfer Area. Corresponds to the device on which |
networker |
0:7da612835693 | 57 | // program is currently running in download (local) mode or to the |
networker |
0:7da612835693 | 58 | // remotely controlled device (seen from controlled device not from |
networker |
0:7da612835693 | 59 | // controlling device) in online mode. |
networker |
0:7da612835693 | 60 | TA_EXT_1, // Extension 1 part of Transfer Area |
networker |
0:7da612835693 | 61 | TA_EXT_2, // Extension 2 part of Transfer Area |
networker |
0:7da612835693 | 62 | TA_EXT_3, // Extension 3 part of Transfer Area |
networker |
0:7da612835693 | 63 | TA_EXT_4, // Extension 4 part of Transfer Area |
networker |
0:7da612835693 | 64 | TA_EXT_5, // Extension 5 part of Transfer Area |
networker |
0:7da612835693 | 65 | TA_EXT_6, // Extension 6 part of Transfer Area |
networker |
0:7da612835693 | 66 | TA_EXT_7, // Extension 7 part of Transfer Area |
networker |
0:7da612835693 | 67 | TA_EXT_8, // Extension 8 part of Transfer Area |
networker |
0:7da612835693 | 68 | TA_N_PARTS // Number of Transfer Area parts |
networker |
0:7da612835693 | 69 | }; |
networker |
0:7da612835693 | 70 | |
networker |
0:7da612835693 | 71 | #define N_EXT_DEV (TA_N_PARTS - 1) // Number of extension devices = 8 |
networker |
0:7da612835693 | 72 | |
networker |
0:7da612835693 | 73 | |
networker |
0:7da612835693 | 74 | // Device functioning modes |
networker |
0:7da612835693 | 75 | enum dev_mode_e |
networker |
0:7da612835693 | 76 | { |
networker |
0:7da612835693 | 77 | DEV_MODE_LOCAL = 0, |
networker |
0:7da612835693 | 78 | DEV_MODE_ONLINE, |
networker |
0:7da612835693 | 79 | DEV_MODE_INVALID |
networker |
0:7da612835693 | 80 | }; |
networker |
0:7da612835693 | 81 | |
networker |
0:7da612835693 | 82 | |
networker |
0:7da612835693 | 83 | // State of connection to an extension device |
networker |
0:7da612835693 | 84 | enum ext_dev_connect_state_e |
networker |
0:7da612835693 | 85 | { |
networker |
0:7da612835693 | 86 | EXT_DEV_OFFLINE = 0, |
networker |
0:7da612835693 | 87 | EXT_DEV_ONLINE, |
networker |
0:7da612835693 | 88 | EXT_DEV_INVALID |
networker |
0:7da612835693 | 89 | }; |
networker |
0:7da612835693 | 90 | |
networker |
0:7da612835693 | 91 | |
networker |
0:7da612835693 | 92 | // Modes of universal inputs |
networker |
0:7da612835693 | 93 | enum input_mode_e |
networker |
0:7da612835693 | 94 | { |
networker |
0:7da612835693 | 95 | MODE_U = 0, |
networker |
0:7da612835693 | 96 | MODE_R = 1, |
networker |
0:7da612835693 | 97 | MODE_ULTRASONIC = 3, |
networker |
0:7da612835693 | 98 | MODE_INVALID |
networker |
0:7da612835693 | 99 | }; |
networker |
0:7da612835693 | 100 | |
networker |
0:7da612835693 | 101 | |
networker |
0:7da612835693 | 102 | // Program states |
networker |
0:7da612835693 | 103 | enum pgm_state_e |
networker |
0:7da612835693 | 104 | { |
networker |
0:7da612835693 | 105 | PGM_STATE_INVALID = 0, |
networker |
0:7da612835693 | 106 | PGM_STATE_RUN, |
networker |
0:7da612835693 | 107 | PGM_STATE_STOP |
networker |
0:7da612835693 | 108 | }; |
networker |
0:7da612835693 | 109 | |
networker |
0:7da612835693 | 110 | |
networker |
0:7da612835693 | 111 | // Timer units for GetSystemTime hook function |
networker |
0:7da612835693 | 112 | enum TimerUnit |
networker |
0:7da612835693 | 113 | { |
networker |
0:7da612835693 | 114 | TIMER_UNIT_INVALID = 0, |
networker |
0:7da612835693 | 115 | TIMER_UNIT_SECONDS = 2, |
networker |
0:7da612835693 | 116 | TIMER_UNIT_MILLISECONDS = 3, |
networker |
0:7da612835693 | 117 | TIMER_UNIT_MICROSECONDS = 4 |
networker |
0:7da612835693 | 118 | }; |
networker |
0:7da612835693 | 119 | |
networker |
0:7da612835693 | 120 | |
networker |
0:7da612835693 | 121 | //============================================================================= |
networker |
0:7da612835693 | 122 | // Structures for Transfer Area (TA) |
networker |
0:7da612835693 | 123 | //============================================================================= |
networker |
0:7da612835693 | 124 | |
networker |
0:7da612835693 | 125 | |
networker |
0:7da612835693 | 126 | // Program information, 8 bytes |
networker |
0:7da612835693 | 127 | typedef struct |
networker |
0:7da612835693 | 128 | { |
networker |
0:7da612835693 | 129 | char * name; // name of a program with a full path, for example, "/ramdisk/Program_1" |
networker |
0:7da612835693 | 130 | UINT8 state; // enum pgm_state_e |
networker |
0:7da612835693 | 131 | char reserved[3]; |
networker |
0:7da612835693 | 132 | } PGM_INFO; |
networker |
0:7da612835693 | 133 | |
networker |
0:7da612835693 | 134 | |
networker |
0:7da612835693 | 135 | // Display message, 68 bytes. Used to show pop-up message box on the boards display |
networker |
0:7da612835693 | 136 | typedef struct |
networker |
0:7da612835693 | 137 | { |
networker |
0:7da612835693 | 138 | unsigned char id; // should be increased by 1 each time a new pop-up message is to be shown |
networker |
0:7da612835693 | 139 | char text[DISPL_MSG_LEN_MAX + 1]; |
networker |
0:7da612835693 | 140 | char reserved[2]; |
networker |
0:7da612835693 | 141 | } DISPLAY_MSG; |
networker |
0:7da612835693 | 142 | |
networker |
0:7da612835693 | 143 | |
networker |
0:7da612835693 | 144 | // Display frame, 8 bytes. Used to refresh boards display with a bitmap image frame |
networker |
0:7da612835693 | 145 | typedef struct |
networker |
0:7da612835693 | 146 | { |
networker |
0:7da612835693 | 147 | unsigned char * frame; // contents of a frame as a 128x64 pixels bitmap |
networker |
0:7da612835693 | 148 | UINT16 id; // should be increased by 1 each time a new display frame is to be shown |
networker |
0:7da612835693 | 149 | BOOL16 is_pgm_master_of_display; // ++ if program wants to have control over display, |
networker |
0:7da612835693 | 150 | // i.e. image frame is displayed over firmware menus; |
networker |
0:7da612835693 | 151 | // -- if program wants to return control over display |
networker |
0:7da612835693 | 152 | // to the firmware menus |
networker |
0:7da612835693 | 153 | } DISPLAY_FRAME; |
networker |
0:7da612835693 | 154 | |
networker |
0:7da612835693 | 155 | |
networker |
0:7da612835693 | 156 | // Version structure definition, 4 bytes |
networker |
0:7da612835693 | 157 | typedef union |
networker |
0:7da612835693 | 158 | { |
networker |
0:7da612835693 | 159 | unsigned long abcd; |
networker |
0:7da612835693 | 160 | struct |
networker |
0:7da612835693 | 161 | { |
networker |
0:7da612835693 | 162 | unsigned char a; |
networker |
0:7da612835693 | 163 | unsigned char b; |
networker |
0:7da612835693 | 164 | unsigned char c; |
networker |
0:7da612835693 | 165 | unsigned char d; |
networker |
0:7da612835693 | 166 | } part; |
networker |
0:7da612835693 | 167 | } FT_VER; |
networker |
0:7da612835693 | 168 | |
networker |
0:7da612835693 | 169 | |
networker |
0:7da612835693 | 170 | // Versions of hardware and firmware components, 16 bytes |
networker |
0:7da612835693 | 171 | typedef struct |
networker |
0:7da612835693 | 172 | { |
networker |
0:7da612835693 | 173 | FT_VER hardware; // version of hardware (hardware.part.a = 'A' or 'B' or 'C') |
networker |
0:7da612835693 | 174 | FT_VER firmware; // version of firmware ("V %d.%02d", firmware.part.c, firmware.part.d) |
networker |
0:7da612835693 | 175 | FT_VER ta; // version of transfer area ("V %d.%02d", ta.part.c, ta.part.d) |
networker |
0:7da612835693 | 176 | char reserved[4]; |
networker |
0:7da612835693 | 177 | } FT_VERSION; |
networker |
0:7da612835693 | 178 | |
networker |
0:7da612835693 | 179 | |
networker |
0:7da612835693 | 180 | // Info structure, 64 bytes |
networker |
0:7da612835693 | 181 | typedef struct |
networker |
0:7da612835693 | 182 | { |
networker |
0:7da612835693 | 183 | char device_name[DEV_NAME_LEN + 1]; |
networker |
0:7da612835693 | 184 | char bt_addr[BLUETOOTH_ADDR_LEN + 1]; |
networker |
0:7da612835693 | 185 | char reserved; |
networker |
0:7da612835693 | 186 | unsigned long ta_start_addr; |
networker |
0:7da612835693 | 187 | unsigned long pgm_area_start_addr; |
networker |
0:7da612835693 | 188 | unsigned long pgm_area_size; |
networker |
0:7da612835693 | 189 | FT_VERSION version; |
networker |
0:7da612835693 | 190 | } TA_INFO; |
networker |
0:7da612835693 | 191 | |
networker |
0:7da612835693 | 192 | |
networker |
0:7da612835693 | 193 | // State structure, 36 bytes |
networker |
0:7da612835693 | 194 | typedef struct |
networker |
0:7da612835693 | 195 | { |
networker |
0:7da612835693 | 196 | // Used by local program |
networker |
0:7da612835693 | 197 | BOOL8 pgm_initialized; |
networker |
0:7da612835693 | 198 | char reserved_1[7]; |
networker |
0:7da612835693 | 199 | |
networker |
0:7da612835693 | 200 | // Public state info |
networker |
0:7da612835693 | 201 | BOOL8 dev_mode; // enum dev_mode_e |
networker |
0:7da612835693 | 202 | UCHAR8 id; // Should be increased by 1 each time something (except id fields) |
networker |
0:7da612835693 | 203 | // is changed in this state structure |
networker |
0:7da612835693 | 204 | UCHAR8 info_id; // Should be increased by 1 each time something is changed in info structure |
networker |
0:7da612835693 | 205 | UCHAR8 config_id; // Should be increased by 1 each time something is changed in config structure |
networker |
0:7da612835693 | 206 | BOOL8 ext_dev_connect_state[N_EXT_DEV]; // enum ext_dev_connect_state_e |
networker |
0:7da612835693 | 207 | char reserved_2[8]; |
networker |
0:7da612835693 | 208 | PGM_INFO local_pgm; // Corresponds to the program currently being in the program memory |
networker |
0:7da612835693 | 209 | } TA_STATE; |
networker |
0:7da612835693 | 210 | |
networker |
0:7da612835693 | 211 | |
networker |
0:7da612835693 | 212 | // Universal inputs configuration, 4 bytes |
networker |
0:7da612835693 | 213 | typedef struct |
networker |
0:7da612835693 | 214 | { |
networker |
0:7da612835693 | 215 | UINT8 mode; // enum input_mode_e |
networker |
0:7da612835693 | 216 | BOOL8 digital; // FALSE = analog input, TRUE = digital input |
networker |
0:7da612835693 | 217 | unsigned char reserved[2]; |
networker |
0:7da612835693 | 218 | } UNI_CONFIG; |
networker |
0:7da612835693 | 219 | |
networker |
0:7da612835693 | 220 | |
networker |
0:7da612835693 | 221 | // Counter inputs configuration, 4 bytes |
networker |
0:7da612835693 | 222 | typedef struct |
networker |
0:7da612835693 | 223 | { |
networker |
0:7da612835693 | 224 | UINT8 mode; // enum input_mode_e |
networker |
0:7da612835693 | 225 | unsigned char reserved[3]; |
networker |
0:7da612835693 | 226 | } CNT_CONFIG; |
networker |
0:7da612835693 | 227 | |
networker |
0:7da612835693 | 228 | |
networker |
0:7da612835693 | 229 | // Config structure, 88 bytes |
networker |
0:7da612835693 | 230 | typedef struct |
networker |
0:7da612835693 | 231 | { |
networker |
0:7da612835693 | 232 | UINT8 pgm_state_req; // enum pgm_state_e |
networker |
0:7da612835693 | 233 | char reserved_1[3]; |
networker |
0:7da612835693 | 234 | BOOL8 motor[N_MOTOR]; |
networker |
0:7da612835693 | 235 | UNI_CONFIG uni[N_UNI]; |
networker |
0:7da612835693 | 236 | CNT_CONFIG cnt[N_CNT]; |
networker |
0:7da612835693 | 237 | char reserved_2[32]; |
networker |
0:7da612835693 | 238 | } TA_CONFIG; |
networker |
0:7da612835693 | 239 | |
networker |
0:7da612835693 | 240 | |
networker |
0:7da612835693 | 241 | // Input structure, 40 bytes |
networker |
0:7da612835693 | 242 | typedef struct |
networker |
0:7da612835693 | 243 | { |
networker |
0:7da612835693 | 244 | INT16 uni[N_UNI]; |
networker |
0:7da612835693 | 245 | INT16 cnt_in[N_CNT]; |
networker |
0:7da612835693 | 246 | INT16 counter[N_CNT]; |
networker |
0:7da612835693 | 247 | // Number of milliseconds during which the left display button is being kept pressed |
networker |
0:7da612835693 | 248 | INT16 display_button_left; |
networker |
0:7da612835693 | 249 | // Number of milliseconds during which the right display button is being kept pressed |
networker |
0:7da612835693 | 250 | INT16 display_button_right; |
networker |
0:7da612835693 | 251 | // Set to 1 by motor control if target position is reached |
networker |
0:7da612835693 | 252 | INT16 motor_pos_reached[N_MOTOR]; |
networker |
0:7da612835693 | 253 | } TA_INPUT; |
networker |
0:7da612835693 | 254 | |
networker |
0:7da612835693 | 255 | |
networker |
0:7da612835693 | 256 | // Output structure, 36 bytes |
networker |
0:7da612835693 | 257 | typedef struct |
networker |
0:7da612835693 | 258 | { |
networker |
0:7da612835693 | 259 | // Counter reset requests |
networker |
0:7da612835693 | 260 | BOOL8 cnt_reset[N_CNT]; |
networker |
0:7da612835693 | 261 | // If not 0, synchronize this channel with the given channel (1:channel 0, ...) |
networker |
0:7da612835693 | 262 | UINT8 master[N_MOTOR]; |
networker |
0:7da612835693 | 263 | // Selected motor PWM values |
networker |
0:7da612835693 | 264 | INT16 duty[N_PWM_CHAN]; |
networker |
0:7da612835693 | 265 | // Selected distane (counter value) at which motor shall stop |
networker |
0:7da612835693 | 266 | UINT16 distance[N_MOTOR]; |
networker |
0:7da612835693 | 267 | char reserved[4]; |
networker |
0:7da612835693 | 268 | } TA_OUTPUT; |
networker |
0:7da612835693 | 269 | |
networker |
0:7da612835693 | 270 | |
networker |
0:7da612835693 | 271 | // Display structure, 76 bytes |
networker |
0:7da612835693 | 272 | typedef struct |
networker |
0:7da612835693 | 273 | { |
networker |
0:7da612835693 | 274 | DISPLAY_MSG display_msg; |
networker |
0:7da612835693 | 275 | DISPLAY_FRAME display_frame; |
networker |
0:7da612835693 | 276 | } TA_DISPLAY; |
networker |
0:7da612835693 | 277 | |
networker |
0:7da612835693 | 278 | |
networker |
0:7da612835693 | 279 | // Change structure (only for ftMscLib), 8 bytes |
networker |
0:7da612835693 | 280 | typedef struct |
networker |
0:7da612835693 | 281 | { |
networker |
0:7da612835693 | 282 | char reserved_1[2]; |
networker |
0:7da612835693 | 283 | UINT8 ChangeStatus; |
networker |
0:7da612835693 | 284 | UINT8 ChangeUni; |
networker |
0:7da612835693 | 285 | UINT8 ChangeCntIn; |
networker |
0:7da612835693 | 286 | UINT8 ChangeCounter; |
networker |
0:7da612835693 | 287 | char reserved_2[2]; |
networker |
0:7da612835693 | 288 | } TA_CHANGE; |
networker |
0:7da612835693 | 289 | |
networker |
0:7da612835693 | 290 | |
networker |
0:7da612835693 | 291 | // 16-bit timers, 12 bytes |
networker |
0:7da612835693 | 292 | typedef struct |
networker |
0:7da612835693 | 293 | { |
networker |
0:7da612835693 | 294 | UINT16 Timer1ms; |
networker |
0:7da612835693 | 295 | UINT16 Timer10ms; |
networker |
0:7da612835693 | 296 | UINT16 Timer100ms; |
networker |
0:7da612835693 | 297 | UINT16 Timer1s; |
networker |
0:7da612835693 | 298 | UINT16 Timer10s; |
networker |
0:7da612835693 | 299 | UINT16 Timer1min; |
networker |
0:7da612835693 | 300 | } TA_TIMER; |
networker |
0:7da612835693 | 301 | |
networker |
0:7da612835693 | 302 | |
networker |
0:7da612835693 | 303 | // Hook table with pointers to the firmware functions, |
networker |
0:7da612835693 | 304 | // that can be called by local program, 4 bytes |
networker |
0:7da612835693 | 305 | typedef struct |
networker |
0:7da612835693 | 306 | { |
networker |
0:7da612835693 | 307 | INT32 (*IsRunAllowed) (void); |
networker |
0:7da612835693 | 308 | UINT32 (*GetSystemTime)(enum TimerUnit unit); |
networker |
0:7da612835693 | 309 | } TA_HOOK_TABLE; |
networker |
0:7da612835693 | 310 | |
networker |
0:7da612835693 | 311 | |
networker |
0:7da612835693 | 312 | |
networker |
0:7da612835693 | 313 | // ============================================================================ |
networker |
0:7da612835693 | 314 | // Transfer Area (TA) of ROBO TX Controller (one part of TA_N_PARTS) |
networker |
0:7da612835693 | 315 | // ============================================================================ |
networker |
0:7da612835693 | 316 | #define RESERVED_1_SIZE 4 |
networker |
0:7da612835693 | 317 | #define RESERVED_2_SIZE 28 |
networker |
0:7da612835693 | 318 | #define RESERVED_3_SIZE \ |
networker |
0:7da612835693 | 319 | (512 - ( \ |
networker |
0:7da612835693 | 320 | sizeof(TA_INFO) + \ |
networker |
0:7da612835693 | 321 | sizeof(TA_STATE) + \ |
networker |
0:7da612835693 | 322 | sizeof(TA_CONFIG) + \ |
networker |
0:7da612835693 | 323 | sizeof(TA_INPUT) + \ |
networker |
0:7da612835693 | 324 | sizeof(TA_OUTPUT) + \ |
networker |
0:7da612835693 | 325 | sizeof(TA_DISPLAY) + \ |
networker |
0:7da612835693 | 326 | RESERVED_1_SIZE + \ |
networker |
0:7da612835693 | 327 | sizeof(TA_CHANGE) + \ |
networker |
0:7da612835693 | 328 | sizeof(TA_TIMER) + \ |
networker |
0:7da612835693 | 329 | RESERVED_2_SIZE + \ |
networker |
0:7da612835693 | 330 | sizeof(TA_HOOK_TABLE) \ |
networker |
0:7da612835693 | 331 | )) |
networker |
0:7da612835693 | 332 | |
networker |
0:7da612835693 | 333 | |
networker |
0:7da612835693 | 334 | typedef struct |
networker |
0:7da612835693 | 335 | { |
networker |
0:7da612835693 | 336 | TA_INFO info; // info structure |
networker |
0:7da612835693 | 337 | TA_STATE state; // state structure |
networker |
0:7da612835693 | 338 | TA_CONFIG config; // config structure |
networker |
0:7da612835693 | 339 | TA_INPUT input; // input structure |
networker |
0:7da612835693 | 340 | TA_OUTPUT output; // output structure |
networker |
0:7da612835693 | 341 | TA_DISPLAY display; // display structure |
networker |
0:7da612835693 | 342 | |
networker |
0:7da612835693 | 343 | char reserved_1[RESERVED_1_SIZE]; |
networker |
0:7da612835693 | 344 | |
networker |
0:7da612835693 | 345 | TA_CHANGE change; // change structure |
networker |
0:7da612835693 | 346 | TA_TIMER timer; // 16-bit timers |
networker |
0:7da612835693 | 347 | |
networker |
0:7da612835693 | 348 | char reserved_2[RESERVED_2_SIZE]; |
networker |
0:7da612835693 | 349 | |
networker |
0:7da612835693 | 350 | TA_HOOK_TABLE hook_table; // hook table with functions pointers |
networker |
0:7da612835693 | 351 | |
networker |
0:7da612835693 | 352 | char reserved_3[RESERVED_3_SIZE]; |
networker |
0:7da612835693 | 353 | } TA; |
networker |
0:7da612835693 | 354 | |
networker |
0:7da612835693 | 355 | |
networker |
0:7da612835693 | 356 | #endif // __ROBO_TX_FW_H__ |