Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: state_machine_modes_1_12_11_11h
cmd_io.h@0:1722aea42640, 2011-11-09 (annotated)
- Committer:
- Nurbol
- Date:
- Wed Nov 09 17:08:41 2011 +0000
- Revision:
- 0:1722aea42640
- Child:
- 1:399a68bfe991
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Nurbol | 0:1722aea42640 | 1 | // |
| Nurbol | 0:1722aea42640 | 2 | // cmd_io.h : Common definitions |
| Nurbol | 0:1722aea42640 | 3 | // ======== |
| Nurbol | 0:1722aea42640 | 4 | // |
| Nurbol | 0:1722aea42640 | 5 | #include "mbed.h" |
| Nurbol | 0:1722aea42640 | 6 | |
| Nurbol | 0:1722aea42640 | 7 | #ifndef CMD_IO_H // used to prevent 'cmd_io.h' being |
| Nurbol | 0:1722aea42640 | 8 | #define CMD_IO_H // included multiple time during a compilation |
| Nurbol | 0:1722aea42640 | 9 | // |
| Nurbol | 0:1722aea42640 | 10 | // Constants |
| Nurbol | 0:1722aea42640 | 11 | // |
| Nurbol | 0:1722aea42640 | 12 | #define CMD_STR_BUFFER_SZ 100 |
| Nurbol | 0:1722aea42640 | 13 | #define MAX_SERVO_NUMBER 5 |
| Nurbol | 0:1722aea42640 | 14 | #define MIN_SERVO_ANGLE 0 |
| Nurbol | 0:1722aea42640 | 15 | #define MAX_SERVO_ANGLE 90 |
| Nurbol | 0:1722aea42640 | 16 | // |
| Nurbol | 0:1722aea42640 | 17 | // Use 'enum' construct to create list of return codes. |
| Nurbol | 0:1722aea42640 | 18 | // Each entry will be defined as 1 more than the previous entry |
| Nurbol | 0:1722aea42640 | 19 | // |
| Nurbol | 0:1722aea42640 | 20 | enum { |
| Nurbol | 0:1722aea42640 | 21 | OK = 0, // should start at 0 by default but set to 0 to be safe |
| Nurbol | 0:1722aea42640 | 22 | CMD_BAD_CHARACTER, |
| Nurbol | 0:1722aea42640 | 23 | CMD_BAD_NUMBER_OF_PARAMETERS, |
| Nurbol | 0:1722aea42640 | 24 | CMD_BAD_SERVO_NUMBER, |
| Nurbol | 0:1722aea42640 | 25 | CMD_BAD_SERVO_VALUE, |
| Nurbol | 0:1722aea42640 | 26 | CMD_BAD_SERVO_SPEED_VALUE, |
| Nurbol | 0:1722aea42640 | 27 | CMD_NO_TERMINATOR, |
| Nurbol | 0:1722aea42640 | 28 | CMD_UNKNOWN_COMMAND |
| Nurbol | 0:1722aea42640 | 29 | }; |
| Nurbol | 0:1722aea42640 | 30 | |
| Nurbol | 0:1722aea42640 | 31 | // |
| Nurbol | 0:1722aea42640 | 32 | // command set |
| Nurbol | 0:1722aea42640 | 33 | // |
| Nurbol | 0:1722aea42640 | 34 | #define SERVO_CMD 's' |
| Nurbol | 0:1722aea42640 | 35 | #define TEXT_CMD 'T' |
| Nurbol | 0:1722aea42640 | 36 | #define READ_CMD 'r' |
| Nurbol | 0:1722aea42640 | 37 | // |
| Nurbol | 0:1722aea42640 | 38 | // Misc defines |
| Nurbol | 0:1722aea42640 | 39 | // |
| Nurbol | 0:1722aea42640 | 40 | #define SERVO_UNKNOWN 9999 |
| Nurbol | 0:1722aea42640 | 41 | |
| Nurbol | 0:1722aea42640 | 42 | //************************************************************************ |
| Nurbol | 0:1722aea42640 | 43 | // definition of a structure to hold a PC command, its parameteres |
| Nurbol | 0:1722aea42640 | 44 | // its results and status. |
| Nurbol | 0:1722aea42640 | 45 | // |
| Nurbol | 0:1722aea42640 | 46 | typedef struct { |
| Nurbol | 0:1722aea42640 | 47 | char cmd_str[CMD_STR_BUFFER_SZ]; |
| Nurbol | 0:1722aea42640 | 48 | uint32_t char_cnt; // number of characters in string |
| Nurbol | 0:1722aea42640 | 49 | uint32_t cmd_code; // extracted command code |
| Nurbol | 0:1722aea42640 | 50 | uint32_t param[4]; // command parameters |
| Nurbol | 0:1722aea42640 | 51 | uint32_t nos_params; // number of parameters |
| Nurbol | 0:1722aea42640 | 52 | uint32_t result_data[3]; // data resulting from command execution |
| Nurbol | 0:1722aea42640 | 53 | uint32_t nos_data; // number of data items |
| Nurbol | 0:1722aea42640 | 54 | uint32_t result_status; // status |
| Nurbol | 0:1722aea42640 | 55 | } CMD_STRUCT; |
| Nurbol | 0:1722aea42640 | 56 | |
| Nurbol | 0:1722aea42640 | 57 | //************************************************************************ |
| Nurbol | 0:1722aea42640 | 58 | // definition of a structure to hold complete status return |
| Nurbol | 0:1722aea42640 | 59 | // |
| Nurbol | 0:1722aea42640 | 60 | typedef struct { |
| Nurbol | 0:1722aea42640 | 61 | uint8_t status; |
| Nurbol | 0:1722aea42640 | 62 | union { // union allows one data item to be viewed in different ways |
| Nurbol | 0:1722aea42640 | 63 | uint8_t byte[4]; |
| Nurbol | 0:1722aea42640 | 64 | int16_t value16[2]; |
| Nurbol | 0:1722aea42640 | 65 | int32_t value32; |
| Nurbol | 0:1722aea42640 | 66 | } parameter; |
| Nurbol | 0:1722aea42640 | 67 | uint8_t result; |
| Nurbol | 0:1722aea42640 | 68 | } STAT_STRUCT; |
| Nurbol | 0:1722aea42640 | 69 | |
| Nurbol | 0:1722aea42640 | 70 | //************************************************************************ |
| Nurbol | 0:1722aea42640 | 71 | // function prototypes : list of functions in file 'cmd_io.cpp" |
| Nurbol | 0:1722aea42640 | 72 | // |
| Nurbol | 0:1722aea42640 | 73 | uint32_t get_cmd(CMD_STRUCT *command); |
| Nurbol | 0:1722aea42640 | 74 | void init_sys(void); |
| Nurbol | 0:1722aea42640 | 75 | uint32_t parse_cmd(CMD_STRUCT *command); |
| Nurbol | 0:1722aea42640 | 76 | void reply_to_cmd(CMD_STRUCT *command); |
| Nurbol | 0:1722aea42640 | 77 | void send_status(uint32_t value); |
| Nurbol | 0:1722aea42640 | 78 | void send_data(CMD_STRUCT *command); |
| Nurbol | 0:1722aea42640 | 79 | uint32_t process_cmd(CMD_STRUCT *command); |
| Nurbol | 0:1722aea42640 | 80 | |
| Nurbol | 0:1722aea42640 | 81 | #endif // end of multiple include protection facility |