Table controller for piswarm-office

Dependencies:   mbed

Fork of PiSwarmTableController by piswarm

Committer:
hee502
Date:
Thu Aug 14 09:06:31 2014 +0000
Revision:
5:68a1ce96bfeb
Parent:
2:c81f4ef63132
Table controller for piswarm-office

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jah128 2:c81f4ef63132 1 /*******************************************************************************************
jah128 2:c81f4ef63132 2 *
jah128 2:c81f4ef63132 3 * University of York Robot Lab Pi Swarm Library: Swarm Communications Handler
jah128 2:c81f4ef63132 4 *
jah128 2:c81f4ef63132 5 * (C) Dr James Hilder, Dept. Electronics & Computer Science, University of York
jah128 2:c81f4ef63132 6 *
jah128 2:c81f4ef63132 7 * Version 0.5 February 2014
jah128 2:c81f4ef63132 8 *
jah128 2:c81f4ef63132 9 * Designed for use with the Pi Swarm Board (enhanced MBED sensor board) v1.2
jah128 2:c81f4ef63132 10 *
jah128 2:c81f4ef63132 11 ******************************************************************************************/
jah128 2:c81f4ef63132 12
jah128 2:c81f4ef63132 13 #ifndef COMMUNICATIONS_H
jah128 2:c81f4ef63132 14 #define COMMUNICATIONS_H
jah128 2:c81f4ef63132 15
jah128 2:c81f4ef63132 16 // The swarm_member struct is used by the communication stack to store the status and results for RF commands and requests
jah128 2:c81f4ef63132 17 // that have been sent. An array of [SWARM_SIZE] swarm_members is created. This contains a status flag for all of the
jah128 2:c81f4ef63132 18 // standard requests and commands and a set of variables for data which can be collected.
jah128 2:c81f4ef63132 19 //
jah128 2:c81f4ef63132 20 // The status flags are set to the following values:
jah128 2:c81f4ef63132 21 // 0 : "unused" - before any requests are sent
jah128 2:c81f4ef63132 22 // 1 : "waiting" - a request or command has been sent and the result is not yet known
jah128 2:c81f4ef63132 23 // 2 : "received" - a valid response to a request or command has been received
jah128 2:c81f4ef63132 24 // 3 : "invalid" - an invalid response to a request or command has been received
jah128 2:c81f4ef63132 25 struct swarm_member {
jah128 2:c81f4ef63132 26 char status_rf_request_null;
jah128 2:c81f4ef63132 27 char status_rf_request_left_motor_speed;
jah128 2:c81f4ef63132 28 char status_rf_request_right_motor_speed;
jah128 2:c81f4ef63132 29 char status_rf_request_button_state;
jah128 2:c81f4ef63132 30 char status_rf_request_led_colour;
jah128 2:c81f4ef63132 31 char status_rf_request_led_states;
jah128 2:c81f4ef63132 32 char status_rf_request_battery;
jah128 2:c81f4ef63132 33 char status_rf_request_light_sensor;
jah128 2:c81f4ef63132 34 char status_rf_request_accelerometer;
jah128 2:c81f4ef63132 35 char status_rf_request_gyroscope;
jah128 2:c81f4ef63132 36 char status_rf_request_background_ir;
jah128 2:c81f4ef63132 37 char status_rf_request_reflected_ir;
jah128 2:c81f4ef63132 38 char status_rf_request_distance_ir;
jah128 2:c81f4ef63132 39 char status_rf_request_line_following_ir;
jah128 2:c81f4ef63132 40 char status_rf_request_uptime;
jah128 2:c81f4ef63132 41 char status_rf_command_stop;
jah128 2:c81f4ef63132 42 char status_rf_command_forward;
jah128 2:c81f4ef63132 43 char status_rf_command_backward;
jah128 2:c81f4ef63132 44 char status_rf_command_left;
jah128 2:c81f4ef63132 45 char status_rf_command_right;
jah128 2:c81f4ef63132 46 char status_rf_command_left_motor;
jah128 2:c81f4ef63132 47 char status_rf_command_right_motor;
jah128 2:c81f4ef63132 48 char status_rf_command_oled_colour;
jah128 2:c81f4ef63132 49 char status_rf_command_cled_colour;
jah128 2:c81f4ef63132 50 char status_rf_command_oled_state;
jah128 2:c81f4ef63132 51 char status_rf_command_cled_state;
jah128 2:c81f4ef63132 52 char status_rf_command_set_oled;
jah128 2:c81f4ef63132 53 char status_rf_command_play_tune;
jah128 2:c81f4ef63132 54 char status_rf_command_sync_time;
jah128 2:c81f4ef63132 55 float left_motor_speed;
jah128 2:c81f4ef63132 56 float right_motor_speed;
jah128 2:c81f4ef63132 57 char button_state;
jah128 2:c81f4ef63132 58 char outer_led_colour [3];
jah128 2:c81f4ef63132 59 char center_led_colour [3];
jah128 2:c81f4ef63132 60 char led_states[2];
jah128 2:c81f4ef63132 61 float battery;
jah128 2:c81f4ef63132 62 float light_sensor;
jah128 2:c81f4ef63132 63 float accelerometer[3];
jah128 2:c81f4ef63132 64 float gyro;
jah128 2:c81f4ef63132 65 unsigned short background_ir[8];
jah128 2:c81f4ef63132 66 unsigned short reflected_ir[8];
jah128 2:c81f4ef63132 67 float distance_ir[8];
jah128 2:c81f4ef63132 68 };
jah128 2:c81f4ef63132 69
jah128 2:c81f4ef63132 70 void send_rf_message(char target, char command, char * data, char length);
jah128 2:c81f4ef63132 71 void setup_communications(void);
jah128 2:c81f4ef63132 72 void decodeMessage(char sender, char target, char id, char command, char * data, char length);
jah128 2:c81f4ef63132 73 void send_response(char target, char is_broadcast, char success, char id, char is_command, char function, char * data, char length);
jah128 2:c81f4ef63132 74 void tdma_response();
jah128 2:c81f4ef63132 75 void handle_command(char sender, char is_broadcast, char request_response, char id, char function, char * data, char length);
jah128 2:c81f4ef63132 76 void handle_request(char sender, char is_broadcast, char request_response, char id, char function);
jah128 2:c81f4ef63132 77 void processRadioData(char * data, char length);
jah128 2:c81f4ef63132 78 void errormessage(int index);
jah128 2:c81f4ef63132 79 void handle_response(char sender, char is_broadcast, char success, char id, char is_command, char function, char * data, char length);
jah128 2:c81f4ef63132 80
jah128 2:c81f4ef63132 81 void send_rf_request_null ( char target );
jah128 2:c81f4ef63132 82 void send_rf_request_left_motor_speed ( char target );
jah128 2:c81f4ef63132 83 void send_rf_request_right_motor_speed ( char target );
jah128 2:c81f4ef63132 84 void send_rf_request_button_state ( char target );
jah128 2:c81f4ef63132 85 void send_rf_request_led_colour ( char target );
jah128 2:c81f4ef63132 86 void send_rf_request_led_states ( char target );
jah128 2:c81f4ef63132 87 void send_rf_request_battery ( char target );
jah128 2:c81f4ef63132 88 void send_rf_request_light_sensor ( char target );
jah128 2:c81f4ef63132 89 void send_rf_request_accelerometer ( char target );
jah128 2:c81f4ef63132 90 void send_rf_request_gyroscope ( char target );
jah128 2:c81f4ef63132 91 void send_rf_request_background_ir ( char target );
jah128 2:c81f4ef63132 92 void send_rf_request_reflected_ir ( char target );
jah128 2:c81f4ef63132 93 void send_rf_request_distance_ir ( char target );
jah128 2:c81f4ef63132 94 void send_rf_request_line_following_ir ( char target );
jah128 2:c81f4ef63132 95 void send_rf_request_uptime ( char target );
jah128 2:c81f4ef63132 96 void send_rf_command_stop ( char target, char request_response );
jah128 2:c81f4ef63132 97 void send_rf_command_forward ( char target, char request_response, float speed );
jah128 2:c81f4ef63132 98 void send_rf_command_backward ( char target, char request_response, float speed );
jah128 2:c81f4ef63132 99 void send_rf_command_left ( char target, char request_response, float speed );
jah128 2:c81f4ef63132 100 void send_rf_command_right ( char target, char request_response, float speed );
jah128 2:c81f4ef63132 101 void send_rf_command_left_motor ( char target, char request_response, float speed );
jah128 2:c81f4ef63132 102 void send_rf_command_right_motor ( char target, char request_response, float speed );
jah128 2:c81f4ef63132 103 void send_rf_command_oled_colour ( char target, char request_response, char red, char green, char blue );
jah128 2:c81f4ef63132 104 void send_rf_command_cled_colour ( char target, char request_response, char red, char green, char blue );
jah128 2:c81f4ef63132 105 void send_rf_command_oled_state ( char target, char request_response, char led0, char led1, char led2, char led3, char led4, char led5, char led6, char led7, char led8, char led9 );
jah128 2:c81f4ef63132 106 void send_rf_command_cled_state ( char target, char request_response, char enable );
jah128 2:c81f4ef63132 107 void send_rf_command_set_oled ( char target, char request_response, char oled, char enable );
jah128 2:c81f4ef63132 108 void send_rf_command_play_tune ( char target, char request_response, char * data, char length );
jah128 2:c81f4ef63132 109 void send_rf_command_sync_time ( char target, char request_response );
jah128 2:c81f4ef63132 110
jah128 2:c81f4ef63132 111
jah128 2:c81f4ef63132 112 const char * const requests_array[] = { "Req.Ack", "Req.LM", "Req.RM", "Req.But","Req.LEDCol","Req.LED","Req.Lgt","Req.Acc","Req.Gyro","Req.BIR","Req.RIR","Req.DIR","Req.LFS","Req.UpT","Req.???","Req.???"};
jah128 2:c81f4ef63132 113 const char * const commands_array[] = { "Cm.Stop","Cm.Fward","Cm.Bward","Cm.Left","Cm.Right","Cm.LMot","Cm.RMot","Cm.OLEDC","Cm.CLEDC","Cm.OLEDS","Cm.CLEDS","Cm.SetLED","Cm.Play","Cm.Sync","Cm.???","Cm.???"};
jah128 2:c81f4ef63132 114
jah128 2:c81f4ef63132 115 #endif //COMMUNICATIONS_H