1 | //porto.h: |
---|
2 | |
---|
3 | /* |
---|
4 | * Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2008-2010 |
---|
5 | * |
---|
6 | * This file is part of RoarAudio, |
---|
7 | * a cross-platform sound system for both, home and professional use. |
---|
8 | * See README for details. |
---|
9 | * |
---|
10 | * This file is free software; you can redistribute it and/or modify |
---|
11 | * it under the terms of the GNU Lesser General Public License version 3 |
---|
12 | * as published by the Free Software Foundation. |
---|
13 | * |
---|
14 | * RoarAudio 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 Lesser General Public License for more details. |
---|
18 | * |
---|
19 | * You should have received a copy of the GNU Lesser 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 | * NOTE: Even though this file is LGPLed it (may) include GPLed files |
---|
25 | * so the license of this file is/may therefore downgraded to GPL. |
---|
26 | * See HACKING for details. |
---|
27 | */ |
---|
28 | |
---|
29 | #ifndef _ROARAUDIO_PORTO_H_ |
---|
30 | #define _ROARAUDIO_PORTO_H_ |
---|
31 | |
---|
32 | #define ROAR_CMD_EOL -1 /* end of list */ |
---|
33 | #define ROAR_CMD_NOOP 0 /* do nothing */ |
---|
34 | #define ROAR_CMD_IDENTIFY 1 /* after connect we have to identify ourself */ |
---|
35 | #define ROAR_CMD_AUTH 2 /* send an auth cookie */ |
---|
36 | #define ROAR_CMD_NEW_STREAM 3 /* request a new stream id */ |
---|
37 | #define ROAR_CMD_SET_META 4 /* update meta data of streamed data */ |
---|
38 | #define ROAR_CMD_EXEC_STREAM 5 /* close all data channels and make the controll socket a raw data socket */ |
---|
39 | #define ROAR_CMD_QUIT 6 /* quits the connection */ |
---|
40 | |
---|
41 | #define ROAR_CMD_GET_STANDBY 7 |
---|
42 | #define ROAR_CMD_SET_STANDBY 8 |
---|
43 | |
---|
44 | #define ROAR_CMD_SERVER_INFO 9 /* Server version ... */ |
---|
45 | #define ROAR_CMD_SERVER_STATS 10 /* Server stats: number of clients, streams,.. */ |
---|
46 | #define ROAR_CMD_SERVER_OINFO 11 /* Output info, roar_audio_info sa */ |
---|
47 | |
---|
48 | #define ROAR_CMD_ADD_DATA 12 /* add some data to the input buffer */ |
---|
49 | |
---|
50 | //#define ROAR_CMD_ |
---|
51 | |
---|
52 | #define ROAR_CMD_EXIT 13 /* make the server quit */ |
---|
53 | #define ROAR_CMD_LIST_STREAMS 14 /* list all streams (not only playback streams like esd does) */ |
---|
54 | #define ROAR_CMD_LIST_CLIENTS 15 /* list all clients */ |
---|
55 | |
---|
56 | #define ROAR_CMD_GET_CLIENT 16 /* get infos about a client */ |
---|
57 | #define ROAR_CMD_GET_STREAM 17 /* get infos about a stream */ |
---|
58 | |
---|
59 | #define ROAR_CMD_KICK 18 /* kick a client, stream, sample or source */ |
---|
60 | |
---|
61 | #define ROAR_CMD_SET_VOL 19 /* change volume */ |
---|
62 | #define ROAR_CMD_GET_VOL 20 /* get volume */ |
---|
63 | |
---|
64 | #define ROAR_CMD_CON_STREAM 21 /* let the server connect to something to get data for a new stream */ |
---|
65 | |
---|
66 | #define ROAR_CMD_GET_META 22 /* get meta data of streamed data */ |
---|
67 | #define ROAR_CMD_LIST_META 23 /* get list of meta data of streamed data */ |
---|
68 | |
---|
69 | #define ROAR_CMD_BEEP 24 /* send an beep */ |
---|
70 | |
---|
71 | #define ROAR_GET_ACL 25 /* get ACL, may have subtypes */ |
---|
72 | #define ROAR_SET_ACL 26 /* set ACL, may have subtypes */ |
---|
73 | |
---|
74 | #define ROAR_CMD_GET_STREAM_PARA 27 /* Get addition stream parameters like blocksizes */ |
---|
75 | #define ROAR_CMD_SET_STREAM_PARA 28 /* set specal stream parameter */ |
---|
76 | |
---|
77 | #define ROAR_CMD_ATTACH 29 /* attach a OUTPUT or source */ |
---|
78 | #define ROAR_CMD_DETACH ROAR_CMD_KICK /* just to have an alias */ |
---|
79 | |
---|
80 | #define ROAR_CMD_PASSFH 30 /* send an fh via UNIX Domain Socket to the roard */ |
---|
81 | |
---|
82 | #define ROAR_CMD_GETTIMEOFDAY 31 |
---|
83 | |
---|
84 | #define ROAR_CMD_WHOAMI 32 |
---|
85 | |
---|
86 | |
---|
87 | // Reserved for RAUM project: |
---|
88 | #define ROAR_CMD_RAUM_SEEKTABLE 201 |
---|
89 | // End of reserved block |
---|
90 | |
---|
91 | #define ROAR_CMD_EPERM 252 /* error: permition denided */ |
---|
92 | #define ROAR_CMD_OK_STOP 253 /* used internaly in the serveer: */ |
---|
93 | // ROAR_CMD_OK but do not queue the client again within the block |
---|
94 | #define ROAR_CMD_OK 254 /* return value OK */ |
---|
95 | #define ROAR_CMD_ERROR 255 /* return value ERROR */ |
---|
96 | |
---|
97 | |
---|
98 | #define ROAR_STANDBY_ACTIVE 1 |
---|
99 | #define ROAR_STANDBY_INACTIVE 0 |
---|
100 | |
---|
101 | // object types... |
---|
102 | #define ROAR_OT_CLIENT 1 |
---|
103 | #define ROAR_OT_STREAM 2 |
---|
104 | #define ROAR_OT_SOURCE 3 |
---|
105 | #define ROAR_OT_SAMPLE 4 |
---|
106 | |
---|
107 | // auth types... |
---|
108 | #define ROAR_AUTH_T_AUTO -1 |
---|
109 | #define ROAR_AUTH_T_NONE 0 /* do not auth */ |
---|
110 | #define ROAR_AUTH_T_COOKIE 1 /* use cookie */ |
---|
111 | #define ROAR_AUTH_T_TRUST 2 /* trust: used for UNIX Domain sockets, */ |
---|
112 | /* same uid = trusted, diffrent uid = public */ |
---|
113 | #define ROAR_AUTH_T_PASSWORD 3 /* use password */ |
---|
114 | #define ROAR_AUTH_T_SYSUSER 4 /* use local/NIS/PAM userdatabase */ |
---|
115 | #define ROAR_AUTH_T_OPENPGP_SIGN 5 |
---|
116 | #define ROAR_AUTH_T_OPENPGP_ENCRYPT 6 |
---|
117 | #define ROAR_AUTH_T_OPENPGP_AUTH 7 |
---|
118 | #define ROAR_AUTH_T_KERBEROS 8 |
---|
119 | #define ROAR_AUTH_T_RHOST 9 |
---|
120 | #define ROAR_AUTH_T_XAUTH 10 |
---|
121 | #define ROAR_AUTH_T_IDENT 11 |
---|
122 | |
---|
123 | |
---|
124 | // attach types... |
---|
125 | #define ROAR_ATTACH_SIMPLE 1 /* move a stream from one to another client (attach the stream to it) */ |
---|
126 | #define ROAR_ATTACH_SOURCE 2 /* attach a new source to the server */ |
---|
127 | #define ROAR_ATTACH_OUTPUT 3 /* attach a new output stream to the server */ |
---|
128 | |
---|
129 | // modes for ROAR_CMD_?ET_STREAM_PARA... |
---|
130 | #define ROAR_STREAM_PARA_INFO 1 |
---|
131 | #define ROAR_STREAM_PARA_FLAGS 2 |
---|
132 | #define ROAR_STREAM_PARA_NAME 3 |
---|
133 | #define ROAR_STREAM_PARA_CHANMAP 4 |
---|
134 | #define ROAR_STREAM_PARA_ROLE 5 |
---|
135 | #define ROAR_STREAM_PARA_HASHTABLE 6 |
---|
136 | #define ROAR_STREAM_PARA_WININFO 7 |
---|
137 | #define ROAR_STREAM_PARA_PROPTABLE 8 |
---|
138 | #define ROAR_STREAM_PARA_LTM 9 |
---|
139 | |
---|
140 | // Message flags: |
---|
141 | #define ROAR_MF_NONE 0x00000000 /* No flags set | Versions: *ALL* */ |
---|
142 | #define ROAR_MF_SID 0x00000001 /* Stream ID | Versions: 1 */ |
---|
143 | #define ROAR_MF_SPOS 0x00000002 /* Stream Possition | Versions: 1 */ |
---|
144 | #define ROAR_MF_DL 0x00000004 /* Data Length | Versions: 1 */ |
---|
145 | #define ROAR_MF_LSID 0x00000008 /* Long Stream ID | Versions: 1 */ |
---|
146 | #define ROAR_MF_LSPOS 0x00000010 /* Long Stream Possition | Versions: 1,2 */ |
---|
147 | #define ROAR_MF_LDL 0x00000020 /* Long Data Length | Versions: 1 */ |
---|
148 | #define ROAR_MF_ED 0x00000040 /* Error Detection | Versions: 1,2 */ |
---|
149 | #define ROAR_MF_MF 0x00000080 /* Meta Framing | Versions: 1 */ |
---|
150 | #define ROAR_MF_UNIID 0x00000100 /* Stream ID is Universal ID | Versions: 2 */ |
---|
151 | |
---|
152 | struct roar_timeofday { |
---|
153 | int64_t t_sec; // secund part of system time |
---|
154 | uint64_t t_nsec; // nano-secund part of system time // we use a int64 here so all types are int64... |
---|
155 | uint64_t c_nhz; // system hi res timer freq in nHz |
---|
156 | uint64_t d_nsps; // clock drift in nano secs per sec |
---|
157 | }; |
---|
158 | |
---|
159 | #endif |
---|
160 | |
---|
161 | //ll |
---|