Nurbol Nurdaulet / cmd_io

Dependents:   state_machine_modes_1_12_11_11h

Committer:
Nurbol
Date:
Wed Nov 09 17:08:41 2011 +0000
Revision:
0:1722aea42640
Child:
1:399a68bfe991

        

Who changed what in which revision?

UserRevisionLine numberNew 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