/[svn]/liblscp/trunk/examples/example_server.c
ViewVC logotype

Diff of /liblscp/trunk/examples/example_server.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 177 by capela, Tue Jul 6 14:06:17 2004 UTC revision 564 by capela, Sun May 22 22:02:00 2005 UTC
# Line 1  Line 1 
1  // example_server.c  // example_server.c
2  //  //
3  /****************************************************************************  /****************************************************************************
4     Copyright (C) 2004, rncbc aka Rui Nuno Capela. All rights reserved.     Copyright (C) 2004-2005, rncbc aka Rui Nuno Capela. All rights reserved.
5    
6     This program is free software; you can redistribute it and/or     This program is free software; you can redistribute it and/or
7     modify it under the terms of the GNU General Public License     modify it under the terms of the GNU General Public License
# Line 70  lscp_status_t server_callback ( lscp_con Line 70  lscp_status_t server_callback ( lscp_con
70                  pszResult = "ENGINE_NAME: DummyEngine\r\n"                  pszResult = "ENGINE_NAME: DummyEngine\r\n"
71                              "INSTRUMENT_FILE: DummyInstrument.gig\r\n"                              "INSTRUMENT_FILE: DummyInstrument.gig\r\n"
72                              "INSTRUMENT_NR: 0\r\n"                              "INSTRUMENT_NR: 0\r\n"
73                                "INSTRUMENT_NAME: Dummy Instrument\r\n"
74                              "INSTRUMENT_STATUS: 100\r\n"                              "INSTRUMENT_STATUS: 100\r\n"
75                              "AUDIO_OUTPUT_DEVICE: 0\r\n"                              "AUDIO_OUTPUT_DEVICE: 0\r\n"
76                              "AUDIO_OUTPUT_CHANNELS: 2\r\n"                              "AUDIO_OUTPUT_CHANNELS: 2\r\n"
# Line 114  lscp_status_t server_callback ( lscp_con Line 115  lscp_status_t server_callback ( lscp_con
115              pszResult = szTemp;              pszResult = szTemp;
116          }          }
117          else if (lscp_parser_test(&tok, "AVAILABLE_AUDIO_OUTPUT_DRIVERS")) {          else if (lscp_parser_test(&tok, "AVAILABLE_AUDIO_OUTPUT_DRIVERS")) {
118              // Getting all available audio output drivers.              // Getting all available audio output driver count.
119              // GET AVAILABLE_AUDIO_OUTPUT_DRIVERS              // GET AVAILABLE_AUDIO_OUTPUT_DRIVERS
120              pszResult = "Alsa,Jack,CoreAudio\r\n";              pszResult = "2\r\n";
121          }          }
122          else if (lscp_parser_test(&tok, "AVAILABLE_MIDI_INPUT_DRIVERS")) {          else if (lscp_parser_test(&tok, "AVAILABLE_MIDI_INPUT_DRIVERS")) {
123              // Getting all available MIDI input drivers.              // Getting all available MIDI input driver count.
124              // GET AVAILABLE_MIDI_INPUT_DRIVERS              // GET AVAILABLE_MIDI_INPUT_DRIVERS
125              pszResult = "Alsa,MidiShare,CoreMidi\r\n";              pszResult = "1\r\n";
126          }          }
127          else if (lscp_parser_test2(&tok, "AUDIO_OUTPUT_DRIVER", "INFO")) {          else if (lscp_parser_test2(&tok, "AUDIO_OUTPUT_DRIVER", "INFO")) {
128              // Getting informations about a specific audio output driver.              // Getting informations about a specific audio output driver.
# Line 129  lscp_status_t server_callback ( lscp_con Line 130  lscp_status_t server_callback ( lscp_con
130              if (lscp_parser_test(&tok, "Alsa")) {              if (lscp_parser_test(&tok, "Alsa")) {
131                  pszResult = "DESCRIPTION: 'ALSA PCM'\r\n"                  pszResult = "DESCRIPTION: 'ALSA PCM'\r\n"
132                              "VERSION: '1.0'\r\n"                              "VERSION: '1.0'\r\n"
133                              "PARAMETERS: channels,samplerate,active,card\r\n";                              "PARAMETERS: channels,samplerate,active\r\n";
134              }              }
135              else if (lscp_parser_test(&tok, "Jack")) {              else if (lscp_parser_test(&tok, "Jack")) {
136                  pszResult = "DESCRIPTION: JACK Audio Connection Kit\r\n"                  pszResult = "DESCRIPTION: JACK Audio Connection Kit\r\n"
# Line 151  lscp_status_t server_callback ( lscp_con Line 152  lscp_status_t server_callback ( lscp_con
152          else if (lscp_parser_test2(&tok, "AUDIO_OUTPUT_DRIVER_PARAMETER", "INFO")) {          else if (lscp_parser_test2(&tok, "AUDIO_OUTPUT_DRIVER_PARAMETER", "INFO")) {
153              // Getting informations about a specific audio output driver parameter.              // Getting informations about a specific audio output driver parameter.
154              // GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO <audio-output-type> <param>              // GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO <audio-output-type> <param>
155              if (lscp_parser_test2(&tok, "Alsa", "active")) {              if (lscp_parser_test(&tok, "Alsa")) {
156                  pszResult = "DESCRIPTION: 'ALSA PCM device active state'\r\n"                  if (lscp_parser_test(&tok, "active")) {
157                              "TYPE: BOOL\r\n"                      pszResult = "DESCRIPTION: 'ALSA PCM active state'\r\n"
158                              "MANDATORY: TRUE\r\n"                                  "TYPE: BOOL\r\n"
159                              "FIX: TRUE\r\n"                                  "MANDATORY: TRUE\r\n"
160                              "MULTIPLICITY: FALSE\r\n"                                  "FIX: TRUE\r\n"
161                              "DEPENDS: channels,samplerate,card\r\n"                                  "MULTIPLICITY: FALSE\r\n"
162                              "DEFAULT: TRUE\r\n"                                  "DEPENDS: channels,samplerate,card\r\n"
163                              "RANGE_MIN: FALSE\r\n"                                  "DEFAULT: TRUE\r\n"
164                              "RANGE_MIN: TRUE\r\n"                                  "RANGE_MIN: FALSE\r\n"
165                              "POSSIBILITIES: FALSE,TRUE\r\n";                                  "RANGE_MAX: TRUE\r\n"
166              }                                  "POSSIBILITIES: FALSE,TRUE\r\n";
167              else if (lscp_parser_test2(&tok, "Jack", "active")) {                  }
168                  pszResult = "DESCRIPTION: 'JACK device active state'\r\n"                  else if (lscp_parser_test(&tok, "channels")) {
169                              "TYPE: BOOL\r\n"                      pszResult = "DESCRIPTION: 'Number of ALSA PCM channels'\r\n"
170                              "MANDATORY: TRUE\r\n"                                  "TYPE: INT\r\n"
171                              "FIX: TRUE\r\n"                                  "MANDATORY: TRUE\r\n"
172                              "MULTIPLICITY: FALSE\r\n"                                  "FIX: TRUE\r\n"
173                              "DEPENDS: channels,samplerate\r\n"                                  "MULTIPLICITY: FALSE\r\n"
174                              "DEFAULT: TRUE\r\n"                                  "DEFAULT: 2\r\n";
175                              "RANGE_MIN: FALSE\r\n"                  }
176                              "RANGE_MIN: TRUE\r\n"                  else if (lscp_parser_test(&tok, "samplerate")) {
177                              "POSSIBILITIES: FALSE,TRUE\r\n";                      pszResult = "DESCRIPTION: 'ALSA PCM sample rate'\r\n"
178                                    "TYPE: INT\r\n"
179                                    "MANDATORY: TRUE\r\n"
180                                    "FIX: TRUE\r\n"
181                                    "MULTIPLICITY: TRUE\r\n"
182                                    "DEFAULT: 44100\r\n"
183                                    "POSSIBILITIES: 44100,48000,96000\r\n";
184                    }
185                    else ret = LSCP_FAILED;
186                }
187                else if (lscp_parser_test(&tok, "Jack")) {
188                    if (lscp_parser_test(&tok, "active")) {
189                        pszResult = "DESCRIPTION: 'JACK active state'\r\n"
190                                    "TYPE: BOOL\r\n"
191                                    "MANDATORY: TRUE\r\n"
192                                    "FIX: TRUE\r\n"
193                                    "MULTIPLICITY: FALSE\r\n"
194                                    "DEPENDS: channels,samplerate\r\n"
195                                    "DEFAULT: TRUE\r\n"
196                                    "RANGE_MIN: FALSE\r\n"
197                                    "RANGE_MAX: TRUE\r\n"
198                                    "POSSIBILITIES: FALSE,TRUE\r\n";
199                    }
200                    else if (lscp_parser_test(&tok, "channels")) {
201                        pszResult = "DESCRIPTION: 'Number of JACK audio channels'\r\n"
202                                    "TYPE: INT\r\n"
203                                    "MANDATORY: TRUE\r\n"
204                                    "FIX: TRUE\r\n"
205                                    "MULTIPLICITY: FALSE\r\n"
206                                    "DEFAULT: 2\r\n";
207                    }
208                    else if (lscp_parser_test(&tok, "samplerate")) {
209                        pszResult = "DESCRIPTION: 'JACK sample rate'\r\n"
210                                    "TYPE: INT\r\n"
211                                    "MANDATORY: TRUE\r\n"
212                                    "FIX: TRUE\r\n"
213                                    "MULTIPLICITY: TRUE\r\n"
214                                    "DEFAULT: 44100\r\n"
215                                    "POSSIBILITIES: 44100,48000,96000\r\n";
216                    }
217                    else ret = LSCP_FAILED;
218              }              }
219              else ret = LSCP_FAILED;              else ret = LSCP_FAILED;
220          }          }
221          else if (lscp_parser_test2(&tok, "MIDI_INPUT_DRIVER_PARAMETER", "INFO")) {          else if (lscp_parser_test2(&tok, "MIDI_INPUT_DRIVER_PARAMETER", "INFO")) {
222              // Getting informations about a specific MIDI input driver parameter.              // Getting informations about a specific MIDI input driver parameter.
223              // GET MIDI_INPUT_DRIVER_PARAMETER INFO <midi-input-type> <param>              // GET MIDI_INPUT_DRIVER_PARAMETER INFO <midi-input-type> <param>
224              if (lscp_parser_test2(&tok, "Alsa", "active")) {              if (lscp_parser_test(&tok, "Alsa")) {
225                  pszResult = "DESCRIPTION: 'ALSA Sequencer device active state'\r\n"                  if (lscp_parser_test(&tok, "active")) {
226                              "TYPE: BOOL\r\n"                      pszResult = "DESCRIPTION: 'ALSA Sequencer device active state'\r\n"
227                              "MANDATORY: TRUE\r\n"                                  "TYPE: BOOL\r\n"
228                              "FIX: TRUE\r\n"                                  "MANDATORY: TRUE\r\n"
229                              "MULTIPLICITY: FALSE\r\n"                                  "FIX: TRUE\r\n"
230                              "DEPENDS: channels,ports\r\n"                                  "MULTIPLICITY: FALSE\r\n"
231                              "DEFAULT: TRUE\r\n"                                  "DEPENDS: channels,ports\r\n"
232                              "RANGE_MIN: FALSE\r\n"                                  "DEFAULT: TRUE\r\n"
233                              "RANGE_MIN: TRUE\r\n"                                  "RANGE_MIN: FALSE\r\n"
234                              "POSSIBILITIES: FALSE,TRUE\r\n";                                  "RANGE_MAX: TRUE\r\n"
235                                    "POSSIBILITIES: FALSE,TRUE\r\n";
236                    }
237                    else if (lscp_parser_test(&tok, "ports")) {
238                        pszResult = "DESCRIPTION: 'Number of ALSA Sequencer ports'\r\n"
239                                    "TYPE: INT\r\n"
240                                    "MANDATORY: FALSE\r\n"
241                                    "FIX: FALSE\r\n"
242                                    "MULTIPLICITY: FALSE\r\n"
243                                    "DEFAULT: 1\r\n"
244                                    "RANGE_MIN: 1\r\n"
245                                    "RANGE_MAX: 4\r\n";
246                    }
247                    else ret = LSCP_FAILED;
248              }              }
249              else ret = LSCP_FAILED;              else ret = LSCP_FAILED;
250          }          }
# Line 216  lscp_status_t server_callback ( lscp_con Line 270  lscp_status_t server_callback ( lscp_con
270              }              }
271              else ret = LSCP_FAILED;              else ret = LSCP_FAILED;
272          }          }
273            else if (lscp_parser_test2(&tok, "AUDIO_OUTPUT_CHANNEL", "INFO")) {
274                // Getting informations about an audio channel.
275                // GET AUDIO_OUTPUT_CHANNEL INFO <audio-device-id> <audio-channel>
276                if (lscp_parser_nextint(&tok) < iAudioDevice) {
277                    pszResult = "name: DummyMonitor\r\n"
278                                "is_mix_channel: FALSE\r\n"
279                                "mix_channel_destination: 0\r\n";
280                }
281                else ret = LSCP_FAILED;
282            }
283            else if (lscp_parser_test2(&tok, "MIDI_INPUT_PORT", "INFO")) {
284                // Getting informations about a MIDI port.
285                // GET MIDI_INPUT_PORT INFO <midi-device-id> <midi-port>
286                if (lscp_parser_nextint(&tok) < iMidiDevice) {
287                    pszResult = "name: DummyKeyboard\r\n"
288                                "alsa_seq_bindings: '64:0'\r\n";
289                }
290                else ret = LSCP_FAILED;
291            }
292            else if (lscp_parser_test2(&tok, "AUDIO_OUTPUT_CHANNEL_PARAMETER", "INFO")) {
293                // Getting informations about specific audio channel parameter.
294                // GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO <audio-device-id> <audio-channel> <param>
295                if (lscp_parser_nextint(&tok) < iAudioDevice) {
296                    lscp_parser_nextint(&tok);
297                    if (lscp_parser_test(&tok, "is_mix_channel")) {
298                        pszResult = "DESCRIPTION: 'Whether this is an audio mix channel'\r\n"
299                                    "TYPE: BOOL\r\n"
300                                    "MANDATORY: TRUE\r\n"
301                                    "FIX: FALSE\r\n"
302                                    "MULTIPLICITY: FALSE\r\n"
303                                    "POSSIBILITIES: FALSE,TRUE\r\n";
304                    }
305                    else if (lscp_parser_test(&tok, "mix_channel_destination")) {
306                        pszResult = "DESCRIPTION: 'Audio mix channel destination'\r\n"
307                                    "TYPE: INT\r\n"
308                                    "MANDATORY: TRUE\r\n"
309                                    "FIX: FALSE\r\n"
310                                    "MULTIPLICITY: TRUE\r\n"
311                                    "POSSIBILITIES: 0,1\r\n";
312                    }
313                    else ret = LSCP_FAILED;
314                }
315                else ret = LSCP_FAILED;
316            }
317            else if (lscp_parser_test2(&tok, "MIDI_INPUT_PORT_PARAMETER", "INFO")) {
318                // Getting informations about specific MIDI port parameter.
319                // GET MIDI_INPUT_PORT_PARAMETER INFO <midi-device-id> <midi-port> <param>
320                if (lscp_parser_nextint(&tok) < iMidiDevice) {
321                    lscp_parser_nextint(&tok);
322                    if (lscp_parser_test(&tok, "alsa_seq_bindings")) {
323                        pszResult = "DESCRIPTION: 'Alsa sequencer port bindings'\r\n"
324                                    "TYPE: STRING\r\n"
325                                    "MANDATORY: TRUE\r\n"
326                                    "FIX: FALSE\r\n"
327                                    "MULTIPLICITY: TRUE\r\n"
328                                    "POSSIBILITIES: '64:0','68:0','68:1'\r\n";
329                    }
330                    else ret = LSCP_FAILED;
331                }
332                else ret = LSCP_FAILED;
333            }
334            else if (lscp_parser_test(&tok, "AUDIO_OUTPUT_DEVICES")) {
335                // Getting all created audio output device count.
336                // GET AUDIO_OUTPUT_DEVICES
337                sprintf(szTemp, "%d\r\n", iAudioDevice);
338                pszResult = szTemp;
339            }
340            else if (lscp_parser_test(&tok, "MIDI_INPUT_DEVICES")) {
341                // Getting all created MID input device count.
342                // GET MIDI_INPUT_DEVICES
343                sprintf(szTemp, "%d\r\n", iMidiDevice);
344                pszResult = szTemp;
345            }
346          else if (lscp_parser_test(&tok, "AVAILABLE_ENGINES")) {          else if (lscp_parser_test(&tok, "AVAILABLE_ENGINES")) {
347              // Getting all available engines:              // Getting all available engine count:
348              // GET AVAILABLE_ENGINES              // GET AVAILABLE_ENGINES
349              pszResult = "GigEngine,DLSEngine,AkaiEngine\r\n";              pszResult = "3\r\n";
350            }
351            else if (lscp_parser_test2(&tok, "SERVER", "INFO")) {
352                // Getting information about the server.
353                // GET SERVER INFO
354                sprintf(szTemp, "DESCRIPTION: example_server (%s) %s\r\n"
355                    "VERSION: %s\r\n", lscp_server_package(),
356                    lscp_server_build(), lscp_server_version());
357                pszResult = szTemp;
358          }          }
359          else if (lscp_parser_test2(&tok, "ENGINE", "INFO")) {          else if (lscp_parser_test2(&tok, "ENGINE", "INFO")) {
360              // Getting information about an engine.              // Getting information about an engine.
# Line 243  lscp_status_t server_callback ( lscp_con Line 378  lscp_status_t server_callback ( lscp_con
378      else if (lscp_parser_test(&tok, "LIST")) {      else if (lscp_parser_test(&tok, "LIST")) {
379          if (lscp_parser_test(&tok, "CHANNELS")) {          if (lscp_parser_test(&tok, "CHANNELS")) {
380              // Getting all created sampler channel list.              // Getting all created sampler channel list.
381              // GET CHANNELS              // LIST CHANNELS
382              if (iSamplerChannel > 0) {              if (iSamplerChannel > 0) {
383                  strcpy(szTemp, "0");                  strcpy(szTemp, "0");
384                  for (i = 1; i < iSamplerChannel && strlen(szTemp) < sizeof(szTemp) - 8; i++)                  for (i = 1; i < iSamplerChannel && strlen(szTemp) < sizeof(szTemp) - 8; i++)
# Line 253  lscp_status_t server_callback ( lscp_con Line 388  lscp_status_t server_callback ( lscp_con
388              }              }
389              else ret = LSCP_FAILED;              else ret = LSCP_FAILED;
390          }          }
391            else if (lscp_parser_test(&tok, "AVAILABLE_ENGINES")) {
392                // Getting all available engines:
393                // LIST AVAILABLE_ENGINES
394                pszResult = "GigEngine,DLSEngine,AkaiEngine\r\n";
395            }
396            else if (lscp_parser_test(&tok, "AVAILABLE_AUDIO_OUTPUT_DRIVERS")) {
397                // Getting all available audio output drivers.
398                // LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS
399                pszResult = "ALSA,JACK\r\n";
400            }
401            else if (lscp_parser_test(&tok, "AVAILABLE_MIDI_INPUT_DRIVERS")) {
402                // Getting all available MIDI input drivers.
403                // LIST AVAILABLE_MIDI_INPUT_DRIVERS
404                pszResult = "ALSA\r\n";
405            }
406          else if (lscp_parser_test(&tok, "AUDIO_OUTPUT_DEVICES")) {          else if (lscp_parser_test(&tok, "AUDIO_OUTPUT_DEVICES")) {
407              // Getting all created audio output device list.              // Getting all created audio output device list.
408              // GET AUDIO_OUTPUT_DEVICES              // LIST AUDIO_OUTPUT_DEVICES
409              if (iAudioDevice > 0) {              if (iAudioDevice > 0) {
410                  strcpy(szTemp, "0");                  strcpy(szTemp, "0");
411                  for (i = 1; i < iAudioDevice && strlen(szTemp) < sizeof(szTemp) - 8; i++)                  for (i = 1; i < iAudioDevice && strlen(szTemp) < sizeof(szTemp) - 8; i++)
# Line 267  lscp_status_t server_callback ( lscp_con Line 417  lscp_status_t server_callback ( lscp_con
417          }          }
418          else if (lscp_parser_test(&tok, "MIDI_INPUT_DEVICES")) {          else if (lscp_parser_test(&tok, "MIDI_INPUT_DEVICES")) {
419              // Getting all created MID input device list.              // Getting all created MID input device list.
420              // GET MIDI_INPUT_DEVICES              // LIST MIDI_INPUT_DEVICES
421              if (iMidiDevice > 0) {              if (iMidiDevice > 0) {
422                  strcpy(szTemp, "0");                  strcpy(szTemp, "0");
423                  for (i = 1; i < iMidiDevice && strlen(szTemp) < sizeof(szTemp) - 8; i++)                  for (i = 1; i < iMidiDevice && strlen(szTemp) < sizeof(szTemp) - 8; i++)
# Line 331  lscp_status_t server_callback ( lscp_con Line 481  lscp_status_t server_callback ( lscp_con
481      else if (lscp_parser_test2(&tok, "ADD", "CHANNEL")) {      else if (lscp_parser_test2(&tok, "ADD", "CHANNEL")) {
482          // Adding a new sampler channel:          // Adding a new sampler channel:
483          // ADD CHANNEL          // ADD CHANNEL
484          sprintf(szTemp, "OK[%d]", iSamplerChannel++);          if (iSamplerChannel < 16) {
485          pszResult = szTemp;              sprintf(szTemp, "OK[%d]", iSamplerChannel++);
486                pszResult = szTemp;
487            } else {
488                iSamplerChannel = 0;
489                ret = LSCP_FAILED;
490            }
491      }      }
492      else if (lscp_parser_test2(&tok, "REMOVE", "CHANNEL")) {      else if (lscp_parser_test2(&tok, "REMOVE", "CHANNEL")) {
493          // Removing a sampler channel:          // Removing a sampler channel:
494          // REMOVE CHANNEL <sampler-channel>          // REMOVE CHANNEL <sampler-channel>
495          if (lscp_parser_nextint(&tok) > iSamplerChannel)          if (lscp_parser_nextint(&tok) < iSamplerChannel)
496                iSamplerChannel--;
497            else
498              ret = LSCP_FAILED;              ret = LSCP_FAILED;
499      }      }
500      else if (lscp_parser_test2(&tok, "RESET", "CHANNEL")) {      else if (lscp_parser_test(&tok, "RESET")) {
501          // Resetting a sampler channel:          if (lscp_parser_test(&tok, "CHANNEL")) {
502          // RESET CHANNEL <sampler-channel>              // Resetting a sampler channel:
503          if (lscp_parser_nextint(&tok) > iSamplerChannel)              // RESET CHANNEL <sampler-channel>
504              ret = LSCP_FAILED;              if (lscp_parser_nextint(&tok) > iSamplerChannel)
505                    ret = LSCP_FAILED;
506            } else {
507                // Reset sampler:
508                // RESET
509                iSamplerChannel = 0;
510                iAudioDevice = 0;
511                iMidiDevice = 0;
512            }
513      }      }
514      else if (lscp_parser_test(&tok, "CREATE")) {      else if (lscp_parser_test(&tok, "CREATE")) {
515          if (lscp_parser_test(&tok, "AUDIO_OUTPUT_DEVICE")) {          if (lscp_parser_test(&tok, "AUDIO_OUTPUT_DEVICE")) {
516              // Creating an audio output device.              // Creating an audio output device.
517              // CREATE AUDIO_OUTPUT_DEVICE <audio-output-driver> [<params>]              // CREATE AUDIO_OUTPUT_DEVICE <audio-output-driver> [<params>]
518              sprintf(szTemp, "OK[%d]", iAudioDevice++);              if (iAudioDevice < 8) {
519              pszResult = szTemp;                  sprintf(szTemp, "OK[%d]", iAudioDevice++);
520                    pszResult = szTemp;
521                } else {
522                    iAudioDevice = 0;
523                    ret = LSCP_FAILED;
524                }
525          }          }
526          else if (lscp_parser_test(&tok, "MIDI_INPUT_DEVICE")) {          else if (lscp_parser_test(&tok, "MIDI_INPUT_DEVICE")) {
527              // Creating an MIDI input device.              // Creating an MIDI input device.
528              // CREATE MIDI_INPUT_DEVICE <midi-input-driver> [<params>]              // CREATE MIDI_INPUT_DEVICE <midi-input-driver> [<params>]
529              sprintf(szTemp, "OK[%d]", iMidiDevice++);              if (iMidiDevice < 8) {
530              pszResult = szTemp;                  sprintf(szTemp, "OK[%d]", iMidiDevice++);
531                    pszResult = szTemp;
532                } else {
533                    iMidiDevice = 0;
534                    ret = LSCP_FAILED;
535                }
536          }          }
537          else ret = LSCP_FAILED;          else ret = LSCP_FAILED;
538      }      }
# Line 365  lscp_status_t server_callback ( lscp_con Line 540  lscp_status_t server_callback ( lscp_con
540          if (lscp_parser_test(&tok, "AUDIO_OUTPUT_DEVICE")) {          if (lscp_parser_test(&tok, "AUDIO_OUTPUT_DEVICE")) {
541              // Destroying an audio output device.              // Destroying an audio output device.
542              // DESTROY AUDIO_OUTPUT_DEVICE <audio-device-id>              // DESTROY AUDIO_OUTPUT_DEVICE <audio-device-id>
543              if (lscp_parser_nextint(&tok) > iAudioDevice)              if (lscp_parser_nextint(&tok) < iAudioDevice)
544                    iAudioDevice--;
545                else
546                  ret = LSCP_FAILED;                  ret = LSCP_FAILED;
547          }          }
548          else if (lscp_parser_test(&tok, "MIDI_INPUT_DEVICE")) {          else if (lscp_parser_test(&tok, "MIDI_INPUT_DEVICE")) {
549              // Destroying an MIDI intput device.              // Destroying an MIDI intput device.
550              // DESTROY MIDI_INPUT_DEVICE <midi-device-id>              // DESTROY MIDI_INPUT_DEVICE <midi-device-id>
551              if (lscp_parser_nextint(&tok) > iMidiDevice)              if (lscp_parser_nextint(&tok) < iMidiDevice)
552                    iMidiDevice--;
553                else
554                  ret = LSCP_FAILED;                  ret = LSCP_FAILED;
555          }          }
556          else ret = LSCP_FAILED;          else ret = LSCP_FAILED;
# Line 406  lscp_status_t server_callback ( lscp_con Line 585  lscp_status_t server_callback ( lscp_con
585    
586  ////////////////////////////////////////////////////////////////////////  ////////////////////////////////////////////////////////////////////////
587    
588    
589  void server_usage (void)  void server_usage (void)
590  {  {
591      printf("\n  %s %s (Build: %s)\n", lscp_server_package(), lscp_server_version(), lscp_server_build());      printf("\n  %s %s (Build: %s)\n", lscp_server_package(), lscp_server_version(), lscp_server_build());

Legend:
Removed from v.177  
changed lines
  Added in v.564

  ViewVC Help
Powered by ViewVC