Nurbol Nurdaulet / cmd_io

Dependents:   state_machine_modes_1_12_11_11h

Committer:
Nurbol
Date:
Thu Nov 24 17:20:24 2011 +0000
Revision:
1:399a68bfe991
Parent:
0:1722aea42640
Child:
2:04ce6f583f44

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Nurbol 1:399a68bfe991 1 //
Nurbol 1:399a68bfe991 2 // cmd_io.h : Common definitions
Nurbol 1:399a68bfe991 3 // ========
Nurbol 1:399a68bfe991 4 //
Nurbol 1:399a68bfe991 5 #include "mbed.h"
Nurbol 1:399a68bfe991 6
Nurbol 1:399a68bfe991 7 #ifndef CMD_IO_H // used to prevent 'cmd_io.h' being
Nurbol 1:399a68bfe991 8 #define CMD_IO_H // included multiple time during a compilation
Nurbol 1:399a68bfe991 9 //
Nurbol 1:399a68bfe991 10 // Constants
Nurbol 1:399a68bfe991 11 //
Nurbol 1:399a68bfe991 12 #define CMD_STR_BUFFER_SZ 100
Nurbol 1:399a68bfe991 13 #define MAX_SERVO_NUMBER 5
Nurbol 1:399a68bfe991 14 #define MIN_SERVO_ANGLE 0
Nurbol 1:399a68bfe991 15 #define MAX_SERVO_ANGLE 90
Nurbol 1:399a68bfe991 16 //
Nurbol 1:399a68bfe991 17 // Use 'enum' construct to create list of return codes.
Nurbol 1:399a68bfe991 18 // Each entry will be defined as 1 more than the previous entry
Nurbol 1:399a68bfe991 19 //
Nurbol 1:399a68bfe991 20 enum {
Nurbol 1:399a68bfe991 21 OK = 0, // should start at 0 by default but set to 0 to be safe
Nurbol 1:399a68bfe991 22 CMD_BAD_CHARACTER,
Nurbol 1:399a68bfe991 23 CMD_BAD_NUMBER_OF_PARAMETERS,
Nurbol 1:399a68bfe991 24 CMD_BAD_SERVO_NUMBER,
Nurbol 1:399a68bfe991 25 CMD_BAD_SERVO_VALUE,
Nurbol 1:399a68bfe991 26 CMD_BAD_SERVO_SPEED_VALUE,
Nurbol 1:399a68bfe991 27 CMD_NO_TERMINATOR,
Nurbol 1:399a68bfe991 28 CMD_UNKNOWN_COMMAND
Nurbol 1:399a68bfe991 29 };
Nurbol 1:399a68bfe991 30
Nurbol 1:399a68bfe991 31 //
Nurbol 1:399a68bfe991 32 // command set
Nurbol 1:399a68bfe991 33 //
Nurbol 1:399a68bfe991 34 #define SERVO_CMD 's'
Nurbol 1:399a68bfe991 35 #define TEXT_CMD 'T'
Nurbol 1:399a68bfe991 36 #define READ_CMD 'r'
Nurbol 1:399a68bfe991 37
Nurbol 1:399a68bfe991 38 //
Nurbol 1:399a68bfe991 39 // Misc defines
Nurbol 1:399a68bfe991 40 //
Nurbol 1:399a68bfe991 41 #define SERVO_UNKNOWN 9999
Nurbol 1:399a68bfe991 42
Nurbol 1:399a68bfe991 43 //************************************************************************
Nurbol 1:399a68bfe991 44 // definition of a structure to hold a PC command, its parameteres
Nurbol 1:399a68bfe991 45 // its results and status.
Nurbol 1:399a68bfe991 46 //
Nurbol 1:399a68bfe991 47 typedef struct {
Nurbol 1:399a68bfe991 48 char cmd_str[CMD_STR_BUFFER_SZ];
Nurbol 1:399a68bfe991 49 uint32_t char_cnt; // number of characters in string
Nurbol 1:399a68bfe991 50 uint32_t cmd_code; // extracted command code
Nurbol 1:399a68bfe991 51 uint32_t param[4]; // command parameters
Nurbol 1:399a68bfe991 52 uint32_t nos_params; // number of parameters
Nurbol 1:399a68bfe991 53 uint32_t result_data[3]; // data resulting from command execution
Nurbol 1:399a68bfe991 54 uint32_t nos_data; // number of data items
Nurbol 1:399a68bfe991 55 uint32_t result_status; // status
Nurbol 1:399a68bfe991 56 } CMD_STRUCT;
Nurbol 1:399a68bfe991 57
Nurbol 1:399a68bfe991 58 //************************************************************************
Nurbol 1:399a68bfe991 59 // definition of a structure to hold complete status return
Nurbol 1:399a68bfe991 60 //
Nurbol 1:399a68bfe991 61 typedef struct {
Nurbol 1:399a68bfe991 62 uint8_t status;
Nurbol 1:399a68bfe991 63 union { // union allows one data item to be viewed in different ways
Nurbol 1:399a68bfe991 64 uint8_t byte[4];
Nurbol 1:399a68bfe991 65 int16_t value16[2];
Nurbol 1:399a68bfe991 66 int32_t value32;
Nurbol 1:399a68bfe991 67 } parameter;
Nurbol 1:399a68bfe991 68 uint8_t result;
Nurbol 1:399a68bfe991 69 } STAT_STRUCT;
Nurbol 1:399a68bfe991 70
Nurbol 1:399a68bfe991 71 //************************************************************************
Nurbol 1:399a68bfe991 72 // function prototypes : list of functions in file 'cmd_io.cpp"
Nurbol 1:399a68bfe991 73 //
Nurbol 1:399a68bfe991 74 uint32_t get_cmd(CMD_STRUCT *command);
Nurbol 1:399a68bfe991 75 void init_sys(void);
Nurbol 1:399a68bfe991 76 uint32_t parse_cmd(CMD_STRUCT *command);
Nurbol 1:399a68bfe991 77 void reply_to_cmd(CMD_STRUCT *command);
Nurbol 1:399a68bfe991 78 void send_status(uint32_t value);
Nurbol 1:399a68bfe991 79 void send_data(CMD_STRUCT *command);
Nurbol 1:399a68bfe991 80 uint32_t process_cmd(CMD_STRUCT *command);
Nurbol 1:399a68bfe991 81
Nurbol 0:1722aea42640 82 #endif // end of multiple include protection facility