aroarfw
|
00001 //msg.h: 00002 00003 /* 00004 * Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2010-2012 00005 * 00006 * This file is part of aroarfw, a RoarAudio framework for 00007 * embedded systems (µControlers). 00008 * 00009 * This file is free software; you can redistribute it and/or modify 00010 * it under the terms of the GNU General Public License version 3 00011 * or (at your option) any later version as published by 00012 * the Free Software Foundation. 00013 * 00014 * aroarfw is distributed in the hope that it will be useful, 00015 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 * GNU General Public License for more details. 00018 * 00019 * You should have received a copy of the GNU General Public License 00020 * along with this software; see the file COPYING. If not, write to 00021 * the Free Software Foundation, 51 Franklin Street, Fifth Floor, 00022 * Boston, MA 02110-1301, USA. 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 //void rmsg0_init (rmsg_v0_t msg, rcmd_t cmd); 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 //void rmsg0_setlen(rmsg_v0_t msg, size_t len); 00089 #define rmsg0_setlen(msg, len) ((void)RBO_H2NB16(&(((unsigned char*)(msg))[8]), (len))) 00090 00095 //size_t rmsg0_getlen(rmsg_v0_t msg); 00096 #define rmsg0_getlen(msg) RBO_NB2H16(&(((unsigned char*)(msg))[8])) 00097 00102 //void rmsg0_setsid(rmsg_v0_t msg, rsid_t sid); 00103 #define rmsg0_setsid(msg, sid) ((void)RBO_H2NB16(&(((unsigned char*)(msg))[2]), (sid))) 00104 00109 //rsid_t rmsg0_getsid(rmsg_v0_t msg); 00110 #define rmsg0_getsid(msg) RBO_NB2H16(&(((unsigned char*)(msg))[2])) 00111 00116 //void rmsg0_setpos(rmsg_v0_t msg, rpos_t pos); 00117 #define rmsg0_setpos(msg, pos) ((void)RBO_H2NB32(&(((unsigned char*)(msg))[4]), (pos))) 00118 00123 //rpos_t rmsg0_getpos(rmsg_v0_t msg); 00124 #define rmsg0_getpos(msg) RBO_NB2H16(&(((unsigned char*)(msg))[4])) 00125 00135 //size_t rmsg0_len (rmsg_v0_t msg); 00136 #define rmsg0_len(msg) RMSG_V0_MAX_HEADER_LEN 00137 00148 #define rmsg0_header(msg) (msg) 00149 00150 00151 // Message version independed: 00152 00160 #define rmsg_version(msg) (((unsigned char*)msg)[0]) 00161 00162 #endif 00163 00164 //ll