Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _AROARFW_MSG_H_
00026 #define _AROARFW_MSG_H_
00027
00028 #include <aroarfw/types.h>
00029 #include <aroarfw/proto.h>
00030 #include <aroarfw/byteorder.h>
00031
00033 #define RMSG_V0_MAX_HEADER_LEN 10
00034
00036 #define RMSG_V1_MAX_HEADER_LEN 11
00037
00039 #define RMSG_V2_MAX_HEADER_LEN 20
00040
00042 typedef unsigned char rmsg_v0_t[RMSG_V0_MAX_HEADER_LEN];
00043
00045 typedef unsigned char rmsg_v1_t[RMSG_V1_MAX_HEADER_LEN];
00046
00048 typedef unsigned char rmsg_v2_t[RMSG_V2_MAX_HEADER_LEN];
00049
00051 typedef union {
00053 unsigned char version;
00054
00056 rmsg_v0_t v0;
00057
00059 rmsg_v1_t v1;
00060
00062 rmsg_v2_t v2;
00063 } rmsg_t;
00064
00069
00070 #define rmsg0_init(msg,cmd) ((msg)[1]= \
00071 ((msg)[0]= \
00072 (msg)[2]=(msg)[3]= \
00073 (msg)[4]=(msg)[5]= \
00074 (msg)[6]=(msg)[7]= \
00075 (msg)[8]=(msg)[9]= 0) + \
00076 (cmd))
00077
00082 #define rmsg0_getcmd(msg) (((unsigned char*)(msg))[1])
00083
00088
00089 #define rmsg0_setlen(msg, len) ((void)RBO_H2NB16(&(((unsigned char*)(msg))[8]), (len)))
00090
00095
00096 #define rmsg0_getlen(msg) RBO_NB2H16(&(((unsigned char*)(msg))[8]))
00097
00102
00103 #define rmsg0_setsid(msg, sid) ((void)RBO_H2NB16(&(((unsigned char*)(msg))[2]), (sid)))
00104
00109
00110 #define rmsg0_getsid(msg) RBO_NB2H16(&(((unsigned char*)(msg))[8]))
00111
00116
00117 #define rmsg0_setpos(msg, pos) ((void)RBO_H2NB32(&(((unsigned char*)(msg))[4]), (pos)))
00118
00123
00124 #define rmsg0_getpos(msg) RBO_NB2H16(&(((unsigned char*)(msg))[4]))
00125
00135
00136 #define rmsg0_len(msg) RMSG_V0_MAX_HEADER_LEN
00137
00148 #define rmsg0_header(msg) (msg)
00149
00150
00151
00152
00160 #define rmsg_version(msg) (((unsigned char*)msg)[0])
00161
00162 #endif
00163
00164