Nurbol Nurdaulet / cmd_io

Dependents:   state_machine_modes_1_12_11_11h

Committer:
Nurbol
Date:
Thu Dec 01 08:40:20 2011 +0000
Revision:
9:30c4e3e11cb5
Parent:
8:d841cc27ebf9

        

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 5:9aa646406402 15 #define MAX_SERVO_ANGLE 200
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 3:9f108fca5c3b 38 #define MAINT_MODE 'z' //add define to receive mode value
Nurbol 3:9f108fca5c3b 39 #define SORT_MODE 'y' //add define to receive mode value
Nurbol 9:30c4e3e11cb5 40 #define URGENCY 'u' //add define to receive the urgency mode
Nurbol 9:30c4e3e11cb5 41 #define EXIT 'e' //add define to receive the exit mode
Nurbol 9:30c4e3e11cb5 42 #define VALUE_LED1 'a' //add define to send data of the value led 2p
Nurbol 9:30c4e3e11cb5 43 #define VALUE_LED2 'b' //add define to send data of the value led 1p
Nurbol 9:30c4e3e11cb5 44 #define COUNTER1P 'c' //add define to send data of the counter 1p
Nurbol 9:30c4e3e11cb5 45 #define COUNTER2P 'd' //add define to send data of the counter 2p
Nurbol 9:30c4e3e11cb5 46 #define POSITION1_1P 'f' //add define to send data of the position1 1p
Nurbol 9:30c4e3e11cb5 47 #define POSITION1_2P 'g' //add define to send data of the position1 2p
Nurbol 9:30c4e3e11cb5 48 #define MOTOR 'h' //add define to send data of the motor
Nurbol 2:04ce6f583f44 49
Nurbol 1:399a68bfe991 50 //
Nurbol 1:399a68bfe991 51 // Misc defines
Nurbol 1:399a68bfe991 52 //
Nurbol 1:399a68bfe991 53 #define SERVO_UNKNOWN 9999
Nurbol 1:399a68bfe991 54
Nurbol 1:399a68bfe991 55 //************************************************************************
Nurbol 1:399a68bfe991 56 // definition of a structure to hold a PC command, its parameteres
Nurbol 1:399a68bfe991 57 // its results and status.
Nurbol 1:399a68bfe991 58 //
Nurbol 1:399a68bfe991 59 typedef struct {
Nurbol 1:399a68bfe991 60 char cmd_str[CMD_STR_BUFFER_SZ];
Nurbol 1:399a68bfe991 61 uint32_t char_cnt; // number of characters in string
Nurbol 1:399a68bfe991 62 uint32_t cmd_code; // extracted command code
Nurbol 1:399a68bfe991 63 uint32_t param[4]; // command parameters
Nurbol 1:399a68bfe991 64 uint32_t nos_params; // number of parameters
Nurbol 9:30c4e3e11cb5 65 uint32_t result_data[4]; // data resulting from command execution
Nurbol 1:399a68bfe991 66 uint32_t nos_data; // number of data items
Nurbol 1:399a68bfe991 67 uint32_t result_status; // status
Nurbol 1:399a68bfe991 68 } CMD_STRUCT;
Nurbol 1:399a68bfe991 69
Nurbol 1:399a68bfe991 70 //************************************************************************
Nurbol 1:399a68bfe991 71 // definition of a structure to hold complete status return
Nurbol 1:399a68bfe991 72 //
Nurbol 1:399a68bfe991 73 typedef struct {
Nurbol 1:399a68bfe991 74 uint8_t status;
Nurbol 1:399a68bfe991 75 union { // union allows one data item to be viewed in different ways
Nurbol 1:399a68bfe991 76 uint8_t byte[4];
Nurbol 1:399a68bfe991 77 int16_t value16[2];
Nurbol 1:399a68bfe991 78 int32_t value32;
Nurbol 1:399a68bfe991 79 } parameter;
Nurbol 1:399a68bfe991 80 uint8_t result;
Nurbol 1:399a68bfe991 81 } STAT_STRUCT;
Nurbol 1:399a68bfe991 82
Nurbol 1:399a68bfe991 83 //************************************************************************
Nurbol 1:399a68bfe991 84 // function prototypes : list of functions in file 'cmd_io.cpp"
Nurbol 1:399a68bfe991 85 //
Nurbol 1:399a68bfe991 86 uint32_t get_cmd(CMD_STRUCT *command);
Nurbol 1:399a68bfe991 87 void init_sys(void);
Nurbol 1:399a68bfe991 88 uint32_t parse_cmd(CMD_STRUCT *command);
Nurbol 1:399a68bfe991 89 void reply_to_cmd(CMD_STRUCT *command);
Nurbol 1:399a68bfe991 90 void send_status(uint32_t value);
Nurbol 1:399a68bfe991 91 void send_data(CMD_STRUCT *command);
Nurbol 1:399a68bfe991 92 uint32_t process_cmd(CMD_STRUCT *command);
Nurbol 1:399a68bfe991 93
Nurbol 0:1722aea42640 94 #endif // end of multiple include protection facility