/users/dtb26/GITROOT/VetSim-Core/src/examples/timed_latency_messages.h

00001 /*
00002  * timed_latency_messages.h
00003  *
00004  *  Created on: Aug 16, 2012
00005  *      Author: apb18
00006  */
00007 
00008 #ifndef TIMED_LATENCY_MESSAGES_H_
00009 #define TIMED_LATENCY_MESSAGES_H_
00010 
00011 #include <messaging.h>
00012 #include <stdint.h>
00013 
00014 typedef struct Latency_Command_Message {
00015         Message message;
00016         Data fields[5];
00017         uint8_t type;
00018         uint8_t param;
00019         uint8_t group;
00020         uint8_t address;
00021         uint16_t value;
00022 } Latency_Command_Message;
00023 
00024 typedef struct Latency_Data_Message {
00025         Message message;
00026         Data fields[4];
00027         uint64_t send_time;
00028         void * payload;
00029         uint8_t group;
00030         uint8_t address;
00031 } Latency_Data_Message;
00032 
00033 typedef struct Latency_Data_Report_Message {
00034         Message message;
00035         Data fields[4];
00036         uint8_t group;
00037         uint8_t address;
00038         const int64_t * rx_times;
00039         const int64_t * tx_times;
00040 } Latency_Data_Report_Message;
00041 
00042 typedef struct Latency_Command_Join_Request {
00043         void (*init)(Latency_Command_Message * msg);
00044         void (*set_unique_id)(Latency_Command_Message * msg, uint16_t uid);
00045         uint16_t (*get_unique_id)(Message * msg);
00046 } Latency_Command_Join_Request;
00047 
00048 typedef struct Latency_Command_Join {
00049         void (*init)(Latency_Command_Message * msg);
00050         void (*set_unique_id)(Latency_Command_Message * msg, uint16_t uid);
00051         uint16_t (*get_unique_id)(Message * msg);
00052 } Latency_Command_Join;
00053 
00054 typedef struct Latency_Command_Update_Param {
00055         void (*init)(Latency_Command_Message * msg);
00056         void (*set_parameter)(Latency_Command_Message * msg, uint8_t param);
00057         uint8_t (*get_parameter)(Message * msg);
00058         void (*set_value)(Latency_Command_Message * msg, uint16_t value);
00059         uint16_t (*get_value)(Message * msg);
00060 } Latency_Command_Update_Param;
00061 
00062 typedef struct Latency_Command_Start_Execution {
00063         void (*init)(Latency_Command_Message * msg);
00064 } Latency_Command_Start_Execution;
00065 
00066 typedef struct Latency_Command {
00067         void (*set_address)(Latency_Command_Message * msg, uint8_t address);
00068         uint8_t (*get_address)(Message * msg);
00069         void (*set_group)(Latency_Command_Message * msg, uint8_t address);
00070         uint8_t (*get_group)(Message * msg);
00071         uint8_t (*get_type)(Message * msg);
00072         Latency_Command_Join_Request join_request;
00073         Latency_Command_Join join;
00074         Latency_Command_Update_Param update_param;
00075         Latency_Command_Start_Execution start;
00076 } Latency_Command;
00077 
00078 typedef struct Latency_Data {
00079         void (*init)(Latency_Data_Message * data);
00080         void (*set_address)(Latency_Data_Message * msg, uint8_t address);
00081         uint8_t (*get_address)(Message * msg);
00082         void (*set_group)(Latency_Data_Message * msg, uint8_t address);
00083         uint8_t (*get_group)(Message * msg);
00084         void (*set_send_time)(Latency_Data_Message * msg, uint64_t time);
00085         uint64_t (*get_send_time)(Message * msg);
00086         void (*set_payload_length)(Latency_Data_Message * msg, uint16_t length);
00087         uint16_t (*get_payload_length)(Message * msg);
00088         void (*set_payload)(Latency_Data_Message * msg, void * payload);
00089         void *(*get_payload)(Message * msg);
00090 } Latency_Data;
00091 
00092 typedef struct Latency_Data_Report {
00093         void (*init)(Latency_Data_Report_Message * data);
00094         void (*set_address)(Latency_Data_Report_Message * msg, uint8_t address);
00095         uint8_t (*get_address)(Message * msg);
00096         void (*set_group)(Latency_Data_Report_Message * msg, uint8_t address);
00097         uint8_t (*get_group)(Message * msg);
00098         void (*set_length)(Latency_Data_Report_Message * msg, uint16_t length);
00099         uint16_t (*get_length)(Message * msg);
00100         void (*set_tx_times)(Latency_Data_Report_Message * msg, const int64_t * times);
00101         int64_t *(*get_tx_times)(Message * msg);
00102         void (*set_rx_times)(Latency_Data_Report_Message * msg, const int64_t * times);
00103         int64_t *(*get_rx_times)(Message * msg);
00104 } Latency_Data_Report;
00105 
00106 extern const Latency_Command latency_command;
00107 
00108 extern const Latency_Data latency_data;
00109 
00110 extern const Latency_Data_Report latency_report;
00111 
00112 #endif /* TIMED_LATENCY_MESSAGES_H_ */

Generated on Thu Sep 27 11:11:48 2012 for VetSim by  doxygen 1.4.7