00001
00002
00003
00004
00005
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