38 |
lscp_parser_t tok; |
lscp_parser_t tok; |
39 |
const char *pszResult = NULL; |
const char *pszResult = NULL; |
40 |
char szTemp[256]; |
char szTemp[256]; |
41 |
|
int i; |
42 |
static int iChannel = 0; |
static int iChannel = 0; |
43 |
|
|
44 |
if (pchBuffer == NULL) { |
if (pchBuffer == NULL) { |
68 |
pszResult = "ENGINE_NAME: DummyEngine\r\n" |
pszResult = "ENGINE_NAME: DummyEngine\r\n" |
69 |
"INSTRUMENT_FILE: DummyInstrument.gig\r\n" |
"INSTRUMENT_FILE: DummyInstrument.gig\r\n" |
70 |
"INSTRUMENT_NR: 0\r\n" |
"INSTRUMENT_NR: 0\r\n" |
71 |
|
"INSTRUMENT_STATUS: 100\r\n" |
72 |
"AUDIO_OUTPUT_DEVICE: 0\r\n" |
"AUDIO_OUTPUT_DEVICE: 0\r\n" |
73 |
"AUDIO_OUTPUT_CHANNELS: 2\r\n" |
"AUDIO_OUTPUT_CHANNELS: 2\r\n" |
74 |
"AUDIO_OUTPUT_ROUTING: 0,1\r\n" |
"AUDIO_OUTPUT_ROUTING: 0,1\r\n" |
103 |
} |
} |
104 |
else ret = LSCP_FAILED; |
else ret = LSCP_FAILED; |
105 |
} |
} |
|
else if (lscp_parser_test(&tok, "AUDIO_OUTPUT_TYPE")) { |
|
|
// Getting audio output type: |
|
|
// GET CHANNEL AUDIO_OUTPUT_TYPE <sampler-channel> |
|
|
// (unspecified as of draft 04) |
|
|
} |
|
|
else if (lscp_parser_test(&tok, "AUDIO_OUTPUT_CHANNEL")) { |
|
|
// Getting audio output channel: |
|
|
// GET CHANNEL AUDIO_OUTPUT_CHANNEL <sampler-channel> |
|
|
// (unspecified as of draft 04) |
|
|
} |
|
106 |
else ret = LSCP_FAILED; |
else ret = LSCP_FAILED; |
107 |
} |
} |
108 |
else if (lscp_parser_test(&tok, "CHANNELS")) { |
else if (lscp_parser_test(&tok, "CHANNELS")) { |
114 |
else if (lscp_parser_test(&tok, "AVAILABLE_AUDIO_OUTPUT_DRIVERS")) { |
else if (lscp_parser_test(&tok, "AVAILABLE_AUDIO_OUTPUT_DRIVERS")) { |
115 |
// Getting all available audio output drivers. |
// Getting all available audio output drivers. |
116 |
// GET AVAILABLE_AUDIO_OUTPUT_DRIVERS |
// GET AVAILABLE_AUDIO_OUTPUT_DRIVERS |
117 |
pszResult = "ALSA,JACK\r\n"; |
pszResult = "Alsa,Jack,CoreAudio\r\n"; |
118 |
} |
} |
119 |
else if (lscp_parser_test(&tok, "AVAILABLE_MIDI_INPUT_DRIVERS")) { |
else if (lscp_parser_test(&tok, "AVAILABLE_MIDI_INPUT_DRIVERS")) { |
120 |
// Getting all available MIDI input drivers. |
// Getting all available MIDI input drivers. |
121 |
// GET AVAILABLE_MIDI_INPUT_DRIVERS |
// GET AVAILABLE_MIDI_INPUT_DRIVERS |
122 |
pszResult = "ALSA\r\n"; |
pszResult = "Alsa,MidiShare,CoreMidi\r\n"; |
123 |
} |
} |
124 |
else if (lscp_parser_test2(&tok, "AUDIO_OUTPUT_DRIVER", "INFO")) { |
else if (lscp_parser_test2(&tok, "AUDIO_OUTPUT_DRIVER", "INFO")) { |
125 |
// Getting informations about a specific audio output driver. |
// Getting informations about a specific audio output driver. |
159 |
} |
} |
160 |
else ret = LSCP_FAILED; |
else ret = LSCP_FAILED; |
161 |
} |
} |
162 |
|
else if (lscp_parser_test(&tok, "LIST")) { |
163 |
|
if (lscp_parser_test(&tok, "CHANNELS")) { |
164 |
|
// Getting all created sampler channel list. |
165 |
|
// GET CHANNELS |
166 |
|
if (iChannel > 0) { |
167 |
|
strcpy(szTemp, "0"); |
168 |
|
for (i = 1; i < iChannel; i++) |
169 |
|
sprintf(szTemp + strlen(szTemp), ",%d", i); |
170 |
|
strcat(szTemp, "\r\n"); |
171 |
|
pszResult = szTemp; |
172 |
|
} |
173 |
|
else ret = LSCP_FAILED; |
174 |
|
} |
175 |
|
else if (lscp_parser_test(&tok, "AUDIO_OUTPUT_DEVICES")) { |
176 |
|
// Getting all created audio output device list. |
177 |
|
// GET AUDIO_OUTPUT_DEVICES |
178 |
|
pszResult = "0,1\r\n"; |
179 |
|
} |
180 |
|
else if (lscp_parser_test(&tok, "MIDI_INPUT_DEVICES")) { |
181 |
|
// Getting all created MID input device list. |
182 |
|
// GET MIDI_INPUT_DEVICES |
183 |
|
pszResult = "0\r\n"; |
184 |
|
} |
185 |
|
else ret = LSCP_FAILED; |
186 |
|
} |
187 |
else if (lscp_parser_test(&tok, "SET")) { |
else if (lscp_parser_test(&tok, "SET")) { |
188 |
if (lscp_parser_test(&tok, "CHANNEL")) { |
if (lscp_parser_test(&tok, "CHANNEL")) { |
189 |
if (lscp_parser_test(&tok, "VOLUME")) { |
if (lscp_parser_test(&tok, "VOLUME")) { |
194 |
// Setting audio output type: |
// Setting audio output type: |
195 |
// SET CHANNEL AUDIO_OUTPUT_TYPE <sampler-channel> <audio-output-type> |
// SET CHANNEL AUDIO_OUTPUT_TYPE <sampler-channel> <audio-output-type> |
196 |
} |
} |
197 |
|
else if (lscp_parser_test(&tok, "AUDIO_OUTPUT_DEVICE")) { |
198 |
|
// Setting audio output device: |
199 |
|
// SET CHANNEL AUDIO_OUTPUT_DEVICE <sampler-channel> <device-id> |
200 |
|
} |
201 |
else if (lscp_parser_test(&tok, "AUDIO_OUTPUT_CHANNEL")) { |
else if (lscp_parser_test(&tok, "AUDIO_OUTPUT_CHANNEL")) { |
202 |
// Setting audio output channel: |
// Setting audio output channel: |
203 |
// SET CHANNEL AUDIO_OUTPUT_CHANNEL <sampler-channel> <audio-channel> |
// SET CHANNEL AUDIO_OUTPUT_CHANNEL <sampler-channel> <audio-in> <audio-out> |
204 |
} |
} |
205 |
else if (lscp_parser_test(&tok, "MIDI_INPUT_TYPE")) { |
else if (lscp_parser_test(&tok, "MIDI_INPUT_TYPE")) { |
206 |
// Setting MIDI input type: |
// Setting MIDI input type: |
207 |
// SET CHANNEL MIDI_INPUT_TYPE <sampler-channel> <midi-input-type> |
// SET CHANNEL MIDI_INPUT_TYPE <sampler-channel> <midi-input-type> |
208 |
} |
} |
209 |
|
else if (lscp_parser_test(&tok, "MIDI_INPUT_DEVICE")) { |
210 |
|
// Setting MIDI input device: |
211 |
|
// SET CHANNEL MIDI_INPUT_DEVICE <sampler-channel> <device-id> |
212 |
|
} |
213 |
else if (lscp_parser_test(&tok, "MIDI_INPUT_PORT")) { |
else if (lscp_parser_test(&tok, "MIDI_INPUT_PORT")) { |
214 |
// Setting MIDI input port: |
// Setting MIDI input port: |
215 |
// SET CHANNEL MIDI_INPUT_PORT <sampler-channel> <midi-input-port> |
// SET CHANNEL MIDI_INPUT_PORT <sampler-channel> <midi-input-port> |
229 |
} |
} |
230 |
else if (lscp_parser_test(&tok, "INSTRUMENT")) { |
else if (lscp_parser_test(&tok, "INSTRUMENT")) { |
231 |
// Loading an instrument: |
// Loading an instrument: |
232 |
// LOAD INSTRUMENT <filename> <instr-index> <sampler-channel> |
// LOAD INSTRUMENT [NON_MODAL] <filename> <instr-index> <sampler-channel> |
233 |
} |
} |
234 |
else ret = LSCP_FAILED; |
else ret = LSCP_FAILED; |
235 |
} |
} |
247 |
// Resetting a sampler channel: |
// Resetting a sampler channel: |
248 |
// RESET CHANNEL <sampler-channel> |
// RESET CHANNEL <sampler-channel> |
249 |
} |
} |
250 |
else if (lscp_parser_test2(&tok, "SUBSCRIBE", "NOTIFICATION")) { |
else if (lscp_parser_test(&tok, "SUBSCRIBE")) { |
251 |
// Register frontend for receiving UDP event messages: |
// Register frontend for receiving event notification messages: |
252 |
// SUBSCRIBE NOTIFICATION <udp-port> |
// SUBSCRIBE <event> |
253 |
ret = lscp_server_subscribe(pConnect, lscp_parser_nextint(&tok)); |
ret = lscp_server_subscribe(pConnect, lscp_event_from_text(lscp_parser_next(&tok))); |
254 |
} |
} |
255 |
else if (lscp_parser_test2(&tok, "UNSUBSCRIBE", "NOTIFICATION")) { |
else if (lscp_parser_test(&tok, "UNSUBSCRIBE")) { |
256 |
// Deregister frontend for not receiving UDP event messages anymore: |
// Deregister frontend for not receiving event notification messages anymore: |
257 |
// UNSUBSCRIBE NOTIFICATION <session-id> |
// UNSUBSCRIBE <event> |
258 |
ret = lscp_server_unsubscribe(pConnect, lscp_parser_next(&tok)); |
ret = lscp_server_unsubscribe(pConnect, lscp_event_from_text(lscp_parser_next(&tok))); |
259 |
} |
} |
260 |
else if (lscp_parser_test(&tok, "QUIT")) { |
else if (lscp_parser_test(&tok, "QUIT")) { |
261 |
// Close client connection: |
// Close client connection: |
325 |
else |
else |
326 |
if (strcmp(szLine, "list") == 0) { |
if (strcmp(szLine, "list") == 0) { |
327 |
for (p = pServer->connects.first; p; p = p->next) { |
for (p = pServer->connects.first; p; p = p->next) { |
328 |
printf("client: sock=%d addr=%s tcp.port=%d udp.port=%d ping=%d sessid=%s.\n", |
printf("client: sock=%d addr=%s port=%d events=0x%04x.\n", |
329 |
p->client.sock, |
p->client.sock, |
330 |
inet_ntoa(p->client.addr.sin_addr), |
inet_ntoa(p->client.addr.sin_addr), |
331 |
ntohs(p->client.addr.sin_port), |
ntohs(p->client.addr.sin_port), |
332 |
p->port, |
(int) p->events |
|
p->ping, |
|
|
p->sessid |
|
333 |
); |
); |
334 |
} |
} |
335 |
} |
} |
336 |
else |
else |
337 |
if (cchLine > 0 && strcmp(szLine, "help") != 0) |
if (cchLine > 0 && strcmp(szLine, "help") != 0) |
338 |
lscp_server_broadcast(pServer, szLine, strlen(szLine)); |
lscp_server_broadcast(pServer, LSCP_EVENT_MISCELLANEOUS, szLine, strlen(szLine)); |
339 |
else |
else |
340 |
server_usage(); |
server_usage(); |
341 |
|
|