liblscp  0.5.7
common.h
Go to the documentation of this file.
1 // common.h
2 //
3 /****************************************************************************
4  liblscp - LinuxSampler Control Protocol API
5  Copyright (C) 2004-2007, rncbc aka Rui Nuno Capela. All rights reserved.
6 
7  This library is free software; you can redistribute it and/or
8  modify it under the terms of the GNU Lesser General Public
9  License as published by the Free Software Foundation; either
10  version 2.1 of the License, or (at your option) any later version.
11 
12  This library is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  Lesser General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License along
18  with this program; if not, write to the Free Software Foundation, Inc.,
19  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 
21 *****************************************************************************/
22 
23 #ifndef __LSCP_COMMON_H
24 #define __LSCP_COMMON_H
25 
26 #include "lscp/client.h"
27 #include "lscp/device.h"
28 
29 
30 // Case unsensitive comparison substitutes.
31 #if defined(WIN32)
32 #define strcasecmp stricmp
33 #define strncasecmp strnicmp
34 #endif
35 
36 //-------------------------------------------------------------------------
37 // Client opaque descriptor struct.
38 
40 {
41  // Client socket stuff.
43  void * pvData;
46  // Subscribed events.
48  // Client struct persistent caches.
49  char ** audio_drivers;
50  char ** midi_drivers;
52  int * midi_devices;
53  char ** engines;
54  int * channels;
55  int * fxsends;
57  int * midi_maps;
58  char * midi_map_name;
59  // Client struct volatile caches.
75  // Result and error status.
76  char * pszResult;
77  int iErrno;
78  // Stream buffers status.
81  // Transaction call timeout (msecs).
82  int iTimeout;
85  // Flag last transaction timedout.
87 };
88 
89 
90 //-------------------------------------------------------------------------
91 // Local client request executive.
92 
93 lscp_status_t lscp_client_recv (lscp_client_t *pClient, char *pchBuffer, int *pcchBuffer, int iTimeout);
94 lscp_status_t lscp_client_call (lscp_client_t *pClient, const char *pszQuery, int iResult);
95 void lscp_client_set_result (lscp_client_t *pClient, char *pszResult, int iErrno);
96 
97 //-------------------------------------------------------------------------
98 // General utility function prototypes.
99 
100 char * lscp_strtok (char *pchBuffer, const char *pszSeps, char **ppch);
101 char * lscp_ltrim (char *psz);
102 char * lscp_unquote (char **ppsz, int dup);
103 void lscp_unquote_dup (char **ppszDst, char **ppszSrc);
104 
105 char ** lscp_szsplit_create (const char *pszCsv, const char *pszSeps);
106 void lscp_szsplit_destroy (char **ppszSplit);
107 #ifdef LSCP_SZSPLIT_COUNT
108 int lscp_szsplit_count (char **ppszSplit);
109 int lscp_szsplit_size (char **ppszSplit);
110 #endif
111 
112 int * lscp_isplit_create (const char *pszCsv, const char *pszSeps);
113 void lscp_isplit_destroy (int *piSplit);
114 #ifdef LSCP_ISPLIT_COUNT
115 int lscp_isplit_count (int *piSplit);
116 int lscp_isplit_size (int *piSplit);
117 #endif
118 
119 lscp_param_t * lscp_psplit_create (const char *pszCsv, const char *pszSep1, const char *pszSep2);
120 void lscp_psplit_destroy (lscp_param_t *ppSplit);
121 #ifdef LSCP_PSPLIT_COUNT
122 int lscp_psplit_count (lscp_param_t *ppSplit);
123 int lscp_psplit_size (lscp_param_t *ppSplit);
124 #endif
125 
126 void lscp_plist_alloc (lscp_param_t **ppList);
127 void lscp_plist_free (lscp_param_t **ppList);
128 void lscp_plist_append (lscp_param_t **ppList, const char *pszKey, const char *pszValue);
129 #ifdef LSCP_PLIST_COUNT
130 int lscp_plist_count (lscp_param_t **ppList);
131 int lscp_plist_size (lscp_param_t **ppList);
132 #endif
133 
136 #ifdef LSCP_MIDI_INSTRUMENTS_COUNT
137 int lscp_midi_instruments_count (lscp_midi_instrument_t *pInstrs);
138 int lscp_midi_instruments_size (lscp_midi_instrument_t *pInstrs);
139 #endif
140 
141 
142 //-------------------------------------------------------------------------
143 // Server struct helper functions.
144 
145 void lscp_server_info_init (lscp_server_info_t *pServerInfo);
146 void lscp_server_info_free (lscp_server_info_t *pServerInfo);
147 void lscp_server_info_reset (lscp_server_info_t *pServerInfo);
148 
149 //-------------------------------------------------------------------------
150 // Engine struct helper functions.
151 
152 void lscp_engine_info_init (lscp_engine_info_t *pEngineInfo);
153 void lscp_engine_info_free (lscp_engine_info_t *pEngineInfo);
154 void lscp_engine_info_reset (lscp_engine_info_t *pEngineInfo);
155 
156 //-------------------------------------------------------------------------
157 // Channel struct helper functions.
158 
159 void lscp_channel_info_init (lscp_channel_info_t *pChannelInfo);
160 void lscp_channel_info_free (lscp_channel_info_t *pChannelInfo);
161 void lscp_channel_info_reset (lscp_channel_info_t *pChannelInfo);
162 
163 //-------------------------------------------------------------------------
164 // Driver struct helper functions.
165 
166 void lscp_driver_info_init (lscp_driver_info_t *pDriverInfo);
167 void lscp_driver_info_free (lscp_driver_info_t *pDriverInfo);
168 void lscp_driver_info_reset (lscp_driver_info_t *pDriverInfo);
169 
170 //-------------------------------------------------------------------------
171 // Device struct helper functions.
172 
173 void lscp_device_info_init (lscp_device_info_t *pDeviceInfo);
174 void lscp_device_info_free (lscp_device_info_t *pDeviceInfo);
175 void lscp_device_info_reset (lscp_device_info_t *pDeviceInfo);
176 
177 //-------------------------------------------------------------------------
178 // Device channel/port struct helper functions.
179 
183 
184 //-------------------------------------------------------------------------
185 // Parameter struct helper functions.
186 
187 void lscp_param_info_init (lscp_param_info_t *pParamInfo);
188 void lscp_param_info_free (lscp_param_info_t *pParamInfo);
189 void lscp_param_info_reset (lscp_param_info_t *pParamInfo);
190 
191 //-------------------------------------------------------------------------
192 // Concatenate a parameter list (key='value'...) into a string.
193 
194 int lscp_param_concat (char *pszBuffer, int cchMaxBuffer, lscp_param_t *pParams);
195 
196 //-------------------------------------------------------------------------
197 // Effect struct helper functions.
198 
199 void lscp_fxsend_info_init (lscp_fxsend_info_t *pFxSendInfo);
200 void lscp_fxsend_info_free (lscp_fxsend_info_t *pFxSendInfo);
201 void lscp_fxsend_info_reset (lscp_fxsend_info_t *pFxSendInfo);
202 
203 //-------------------------------------------------------------------------
204 // MIDI instrument info struct helper functions.
205 
209 
210 
211 #endif // __LSCP_COMMON_H
212 
213 // end of common.h
Definition: client.h:53
char * lscp_unquote(char **ppsz, int dup)
Definition: common.c:293
int iTimeout
Definition: common.h:82
Definition: client.h:113
int * audio_devices
Definition: common.h:51
int * midi_maps
Definition: common.h:57
int iTimeoutCount
Definition: common.h:86
void lscp_device_port_info_reset(lscp_device_port_info_t *pDevicePortInfo)
Definition: common.c:990
char * lscp_strtok(char *pchBuffer, const char *pszSeps, char **ppch)
Definition: common.c:339
void lscp_channel_info_free(lscp_channel_info_t *pChannelInfo)
Definition: common.c:906
lscp_status_t lscp_client_call(lscp_client_t *pClient, const char *pszQuery, int iResult)
Definition: common.c:110
lscp_param_t * lscp_psplit_create(const char *pszCsv, const char *pszSeps1, const char *pszSeps2)
Definition: common.c:538
void lscp_device_port_info_init(lscp_device_port_info_t *pDevicePortInfo)
Definition: common.c:977
int iErrno
Definition: common.h:77
void lscp_engine_info_reset(lscp_engine_info_t *pEngineInfo)
Definition: common.c:877
lscp_mutex_t mutex
Definition: common.h:83
void lscp_param_info_init(lscp_param_info_t *pParamInfo)
Definition: common.c:1000
lscp_midi_instrument_info_t midi_instrument_info
Definition: common.h:74
Definition: client.h:43
lscp_param_info_t midi_port_param_info
Definition: common.h:69
int * midi_devices
Definition: common.h:52
Definition: device.h:85
lscp_param_info_t audio_param_info
Definition: common.h:64
void lscp_driver_info_reset(lscp_driver_info_t *pDriverInfo)
Definition: common.c:944
lscp_device_port_info_t audio_channel_info
Definition: common.h:66
lscp_driver_info_t midi_driver_info
Definition: common.h:61
enum _lscp_status_t lscp_status_t
lscp_cond_t cond
Definition: common.h:84
Definition: socket.h:68
int iStreamCount
Definition: common.h:80
void lscp_device_info_free(lscp_device_info_t *pDeviceInfo)
Definition: common.c:960
lscp_param_info_t audio_channel_param_info
Definition: common.h:68
int lscp_param_concat(char *pszBuffer, int cchMaxBuffer, lscp_param_t *pParams)
Definition: common.c:1039
char ** lscp_szsplit_create(const char *pszCsv, const char *pszSeps)
Definition: common.c:366
int * channels
Definition: common.h:54
void lscp_midi_instruments_destroy(lscp_midi_instrument_t *pInstrs)
Definition: common.c:807
lscp_device_port_info_t midi_port_info
Definition: common.h:67
lscp_socket_agent_t evt
Definition: common.h:45
lscp_device_info_t audio_device_info
Definition: common.h:62
lscp_engine_info_t engine_info
Definition: common.h:71
pthread_mutex_t lscp_mutex_t
Definition: thread.h:72
void lscp_szsplit_destroy(char **ppszSplit)
Definition: common.c:422
void lscp_server_info_reset(lscp_server_info_t *pServerInfo)
Definition: common.c:853
lscp_status_t lscp_client_recv(lscp_client_t *pClient, char *pchBuffer, int *pcchBuffer, int iTimeout)
Definition: common.c:54
void lscp_server_info_free(lscp_server_info_t *pServerInfo)
Definition: common.c:843
Definition: device.h:58
void lscp_param_info_free(lscp_param_info_t *pParamInfo)
Definition: common.c:1014
Definition: client.h:134
lscp_param_info_t midi_param_info
Definition: common.h:65
lscp_buffer_fill_t * buffer_fill
Definition: common.h:79
char ** audio_drivers
Definition: common.h:49
void lscp_psplit_destroy(lscp_param_t *ppSplit)
Definition: common.c:595
char ** engines
Definition: common.h:53
char * pszResult
Definition: common.h:76
lscp_midi_instrument_t * midi_instruments
Definition: common.h:56
lscp_fxsend_info_t fxsend_info
Definition: common.h:73
char * midi_map_name
Definition: common.h:58
void lscp_device_info_reset(lscp_device_info_t *pDeviceInfo)
Definition: common.c:967
void lscp_midi_instrument_info_free(lscp_midi_instrument_info_t *pInstrInfo)
Definition: common.c:1105
void lscp_midi_instrument_info_reset(lscp_midi_instrument_info_t *pInstrInfo)
Definition: common.c:1117
void lscp_channel_info_init(lscp_channel_info_t *pChannelInfo)
Definition: common.c:887
void lscp_device_info_init(lscp_device_info_t *pDeviceInfo)
Definition: common.c:954
enum _lscp_event_t lscp_event_t
void lscp_isplit_destroy(int *piSplit)
Definition: common.c:510
void lscp_fxsend_info_free(lscp_fxsend_info_t *pFxSendInfo)
Definition: common.c:1076
void lscp_unquote_dup(char **ppszDst, char **ppszSrc)
Definition: common.c:326
char * lscp_ltrim(char *psz)
Definition: common.c:285
char ** midi_drivers
Definition: common.h:50
lscp_status_t(* lscp_client_proc_t)(struct _lscp_client_t *pClient, lscp_event_t event, const char *pchData, int cchData, void *pvData)
Definition: client.h:165
void lscp_server_info_init(lscp_server_info_t *pServerInfo)
Definition: common.c:836
pthread_cond_t lscp_cond_t
Definition: thread.h:89
void lscp_param_info_reset(lscp_param_info_t *pParamInfo)
Definition: common.c:1028
void lscp_plist_append(lscp_param_t **ppList, const char *pszKey, const char *pszValue)
Definition: common.c:665
void lscp_fxsend_info_init(lscp_fxsend_info_t *pFxSendInfo)
Definition: common.c:1068
void * pvData
Definition: common.h:43
void lscp_device_port_info_free(lscp_device_port_info_t *pDevicePortInfo)
Definition: common.c:983
Definition: client.h:84
lscp_device_info_t midi_device_info
Definition: common.h:63
int * fxsends
Definition: common.h:55
Definition: device.h:94
void lscp_driver_info_free(lscp_driver_info_t *pDriverInfo)
Definition: common.c:935
Definition: device.h:49
void lscp_channel_info_reset(lscp_channel_info_t *pChannelInfo)
Definition: common.c:918
void lscp_driver_info_init(lscp_driver_info_t *pDriverInfo)
Definition: common.c:928
void lscp_plist_alloc(lscp_param_t **ppList)
Definition: common.c:625
void lscp_client_set_result(lscp_client_t *pClient, char *pszResult, int iErrno)
Definition: common.c:40
Definition: common.h:39
lscp_client_proc_t pfnCallback
Definition: common.h:42
Definition: client.h:102
lscp_channel_info_t channel_info
Definition: common.h:72
lscp_socket_agent_t cmd
Definition: common.h:44
lscp_event_t events
Definition: common.h:47
Definition: client.h:62
lscp_driver_info_t audio_driver_info
Definition: common.h:60
int * lscp_isplit_create(const char *pszCsv, const char *pszSeps)
Definition: common.c:454
lscp_server_info_t server_info
Definition: common.h:70
void lscp_plist_free(lscp_param_t **ppList)
Definition: common.c:645
void lscp_engine_info_free(lscp_engine_info_t *pEngineInfo)
Definition: common.c:869
void lscp_midi_instrument_info_init(lscp_midi_instrument_info_t *pInstrInfo)
Definition: common.c:1094
void lscp_fxsend_info_reset(lscp_fxsend_info_t *pFxSendInfo)
Definition: common.c:1084
Definition: device.h:75
lscp_midi_instrument_t * lscp_midi_instruments_create(const char *pszCsv)
Definition: common.c:728
void lscp_engine_info_init(lscp_engine_info_t *pEngineInfo)
Definition: common.c:863