aroarfw
msg.h
Go to the documentation of this file.
1 //msg.h:
2 
3 /*
4  * Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2010-2013
5  *
6  * This file is part of aroarfw, a RoarAudio framework for
7  * embedded systems (µControlers).
8  *
9  * This file is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License version 3
11  * or (at your option) any later version as published by
12  * the Free Software Foundation.
13  *
14  * aroarfw is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this software; see the file COPYING. If not, write to
21  * the Free Software Foundation, 51 Franklin Street, Fifth Floor,
22  * Boston, MA 02110-1301, USA.
23  */
24 
25 #ifndef _AROARFW_MSG_H_
26 #define _AROARFW_MSG_H_
27 
28 #include <aroarfw/types.h>
29 #include <aroarfw/proto.h>
30 #include <aroarfw/byteorder.h>
31 
33 #define RMSG_V0_MAX_HEADER_LEN 10
34 
36 #define RMSG_V1_MAX_HEADER_LEN 11
37 
39 #define RMSG_V2_MAX_HEADER_LEN 20
40 
42 typedef unsigned char rmsg_v0_t[RMSG_V0_MAX_HEADER_LEN];
43 
45 typedef unsigned char rmsg_v1_t[RMSG_V1_MAX_HEADER_LEN];
46 
48 typedef unsigned char rmsg_v2_t[RMSG_V2_MAX_HEADER_LEN];
49 
51 typedef union {
53  unsigned char version;
54 
57 
60 
63 } rmsg_t;
64 
69 //void rmsg0_init (rmsg_v0_t msg, rcmd_t cmd);
70 #define rmsg0_init(msg,cmd) ((msg)[1]= \
71  ((msg)[0]= \
72  (msg)[2]=(msg)[3]= \
73  (msg)[4]=(msg)[5]= \
74  (msg)[6]=(msg)[7]= \
75  (msg)[8]=(msg)[9]= 0) + \
76  (cmd))
77 
82 #define rmsg0_getcmd(msg) (((unsigned char*)(msg))[1])
83 
88 //void rmsg0_setlen(rmsg_v0_t msg, size_t len);
89 #define rmsg0_setlen(msg, len) ((void)RBO_H2NB16(&(((unsigned char*)(msg))[8]), (len)))
90 
95 //size_t rmsg0_getlen(rmsg_v0_t msg);
96 #define rmsg0_getlen(msg) RBO_NB2H16(&(((unsigned char*)(msg))[8]))
97 
102 //void rmsg0_setsid(rmsg_v0_t msg, rsid_t sid);
103 #define rmsg0_setsid(msg, sid) ((void)RBO_H2NB16(&(((unsigned char*)(msg))[2]), (sid)))
104 
109 //rsid_t rmsg0_getsid(rmsg_v0_t msg);
110 #define rmsg0_getsid(msg) RBO_NB2H16(&(((unsigned char*)(msg))[2]))
111 
116 //void rmsg0_setpos(rmsg_v0_t msg, rpos_t pos);
117 #define rmsg0_setpos(msg, pos) ((void)RBO_H2NB32(&(((unsigned char*)(msg))[4]), (pos)))
118 
123 //rpos_t rmsg0_getpos(rmsg_v0_t msg);
124 #define rmsg0_getpos(msg) RBO_NB2H16(&(((unsigned char*)(msg))[4]))
125 
135 //size_t rmsg0_len (rmsg_v0_t msg);
136 #define rmsg0_len(msg) RMSG_V0_MAX_HEADER_LEN
137 
148 #define rmsg0_header(msg) (msg)
149 
150 
151 // Message version independed:
152 
160 #define rmsg_version(msg) (((unsigned char*)msg)[0])
161 
162 #endif
163 
164 //ll