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

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

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

revision 178 by capela, Tue Jul 6 15:52:25 2004 UTC revision 187 by capela, Wed Jul 7 23:41:07 2004 UTC
# Line 50  lscp_status_t client_callback ( lscp_cli Line 50  lscp_status_t client_callback ( lscp_cli
50    
51  ////////////////////////////////////////////////////////////////////////  ////////////////////////////////////////////////////////////////////////
52    
53    void client_test_int ( int i )
54    {
55        printf("%d\n", i);
56    }
57    
58    void client_test_status ( lscp_status_t s )
59    {
60        const char *pszStatus;
61        
62        switch (s) {
63          case LSCP_OK:         pszStatus = "OK";       break;
64          case LSCP_FAILED:     pszStatus = "FAILED";   break;
65          case LSCP_ERROR:      pszStatus = "ERROR";    break;
66          case LSCP_WARNING:    pszStatus = "WARNING";  break;
67          case LSCP_TIMEOUT:    pszStatus = "TIMEOUT";  break;
68          case LSCP_QUIT:       pszStatus = "QUIT";     break;
69          default:              pszStatus = "NONE";     break;
70        }
71        
72        printf("%s\n", pszStatus);
73    }
74    
75    
76    void client_test_isplit ( int *piSplit )
77    {
78        int i;
79    
80        printf("{");
81        for (i = 0; piSplit && piSplit[i] >= 0; i++) {
82            if (i > 0)
83                printf(",");
84            printf(" %d", piSplit[i]);
85        }
86        printf(" }\n");
87    }
88    
89    void client_test_szsplit ( char **ppszSplit )
90    {
91        int i;
92    
93        printf("{");
94        for (i = 0; ppszSplit && ppszSplit[i]; i++) {
95            if (i > 0)
96                printf(",");
97            printf(" %s", ppszSplit[i]);
98        }
99        printf(" }\n");
100    }
101    
102    void client_test_params ( lscp_param_t *pParams )
103    {
104        int i;
105    
106        printf("{");
107        for (i = 0; pParams && pParams[i].key; i++) {
108            if (i > 0)
109                printf(",");
110            printf(" %s='%s'", pParams[i].key, pParams[i].value);
111        }
112        printf(" }\n");
113    }
114    
115    void client_test_param_info ( lscp_param_info_t *pParamInfo )
116    {
117        const char *pszType;
118        
119        if (pParamInfo == NULL) {
120            printf("(nil)\n");
121            return;
122        }
123        switch (pParamInfo->type) {
124          case LSCP_TYPE_BOOL:      pszType = "BOOL";   break;
125          case LSCP_TYPE_INT:       pszType = "INT";    break;
126          case LSCP_TYPE_FLOAT:     pszType = "FLOAT";  break;
127          case LSCP_TYPE_STRING:    pszType = "STRING"; break;
128          default:                  pszType = "NONE";   break;
129        }
130        printf("{\n");
131        printf("    param_info.type                = %d (%s)\n", (int) pParamInfo->type, pszType);
132        printf("    param_info.description         = %s\n", pParamInfo->description);
133        printf("    param_info.mandatory           = %d\n", pParamInfo->mandatory);
134        printf("    param_info.fix                 = %d\n", pParamInfo->fix);
135        printf("    param_info.multiplicity        = %d\n", pParamInfo->multiplicity);
136        printf("    param_info.depends             = "); client_test_szsplit(pParamInfo->depends);
137        printf("    param_info.defaultv            = %s\n", pParamInfo->defaultv);
138        printf("    param_info.range_min           = %s\n", pParamInfo->range_min);
139        printf("    param_info.range_max           = %s\n", pParamInfo->range_max);
140        printf("    param_info.possibilities       = "); client_test_szsplit(pParamInfo->possibilities);
141        printf("  }\n");
142    }
143    
144    void client_test_driver_info ( lscp_driver_info_t *pDriverInfo )
145    {
146        if (pDriverInfo == NULL) {
147            printf("(nil)\n");
148            return;
149        }
150        printf("{\n");
151        printf("    driver_info.description        = %s\n", pDriverInfo->description);
152        printf("    driver_info.version            = %s\n", pDriverInfo->version);
153        printf("    driver_info.parameters         = "); client_test_szsplit(pDriverInfo->parameters);
154        printf("  }\n");
155    }
156    
157    void client_test_device_info ( lscp_device_info_t *pDeviceInfo )
158    {
159        if (pDeviceInfo == NULL) {
160            printf("(nil)\n");
161            return;
162        }
163        printf("{\n");
164        printf("    device_info.driver             = %s\n", pDeviceInfo->driver);
165        printf("    device_info.params             = "); client_test_params(pDeviceInfo->params);
166        printf("  }\n");
167    }
168    
169    void client_test_device_port_info ( lscp_device_port_info_t *pDevicePortInfo )
170    {
171        if (pDevicePortInfo == NULL) {
172            printf("(nil)\n");
173            return;
174        }
175        printf("{\n");
176        printf("    device_port_info.name          = %s\n", pDevicePortInfo->name);
177        printf("    device_port_info.params        = "); client_test_params(pDevicePortInfo->params);
178        printf("  }\n");
179    }
180    
181    void client_test_engine_info ( lscp_engine_info_t *pEngineInfo )
182    {
183        if (pEngineInfo == NULL) {
184            printf("(nil)\n");
185            return;
186        }
187        printf("{\n");
188        printf("    engine_info.description        = %s\n", pEngineInfo->description);
189        printf("    engine_info.version            = %s\n", pEngineInfo->version);
190        printf("  }\n");
191    }
192    
193    void client_test_channel_info ( lscp_channel_info_t *pChannelInfo )
194    {
195        if (pChannelInfo == NULL) {
196            printf("(nil)\n");
197            return;
198        }
199        printf("{\n");
200        printf("    channel_info.engine_name       = %s\n", pChannelInfo->engine_name);
201        printf("    channel_info.audio_device      = %d\n", pChannelInfo->audio_device);
202        printf("    channel_info.audio_channels    = %d\n", pChannelInfo->audio_channels);
203        printf("    channel_info.audio_routing     = "); client_test_szsplit(pChannelInfo->audio_routing);
204        printf("    channel_info.instrument_file   = %s\n", pChannelInfo->instrument_file);
205        printf("    channel_info.instrument_nr     = %d\n", pChannelInfo->instrument_nr);
206        printf("    channel_info.instrument_status = %d\n", pChannelInfo->instrument_status);
207        printf("    channel_info.midi_device       = %d\n", pChannelInfo->midi_device);
208        printf("    channel_info.midi_port         = %d\n", pChannelInfo->midi_port);
209        printf("    channel_info.midi_channel      = %d\n", pChannelInfo->midi_channel);
210        printf("    channel_info.volume            = %g\n", pChannelInfo->volume);
211        printf("  }\n");
212    }
213    
214    void client_test_buffer_fill ( lscp_buffer_fill_t *pBufferFill )
215    {
216        printf("{ <%p> }\n", pBufferFill);
217    }
218    
219    ////////////////////////////////////////////////////////////////////////
220    
221    static int g_teststep = 0;
222    
223  void  client_test_start   ( clock_t *pclk ) { *pclk = clock(); }  void  client_test_start   ( clock_t *pclk ) { *pclk = clock(); }
224  float client_test_elapsed ( clock_t *pclk ) { return (float) ((long) clock() - *pclk) / (float) CLOCKS_PER_SEC; }  float client_test_elapsed ( clock_t *pclk ) { return (float) ((long) clock() - *pclk) / (float) CLOCKS_PER_SEC; }
225    
226  #define CLIENT_TEST(p, x) { clock_t c; void *v;\  typedef int *                       isplit;
227      printf(#x ":\n"); client_test_start(&c); v = (void *) (x); \  typedef char **                     szsplit;
228      printf("  elapsed=%gs\n", client_test_elapsed(&c)); \  typedef lscp_status_t               status;
229      printf("  ret=%p (%d)\n", v, (int) v); \  typedef lscp_driver_info_t *        driver_info;
230      printf("  errno=%d\n", lscp_client_get_errno(p)); \  typedef lscp_device_info_t *        device_info;
231      printf("  result=\"%s\"\n", lscp_client_get_result(p)); }  typedef lscp_device_port_info_t *   device_port_info;
232    typedef lscp_param_info_t  *        param_info;
233    typedef lscp_engine_info_t *        engine_info;
234    typedef lscp_channel_info_t *       channel_info;
235    typedef lscp_buffer_fill_t *        buffer_fill;
236    
237    #define CLIENT_TEST(p, t, x) { clock_t c; void *v; \
238        printf("\n" #x ":\n"); client_test_start(&c); v = (void *) (x); \
239        printf("  elapsed=%gs  errno=%d  result='%s...' ret=", \
240            client_test_elapsed(&c), \
241            lscp_client_get_errno(p), \
242            lscp_client_get_result(p)); \
243        client_test_##t((t)(v)); \
244        if (g_teststep) getchar(); }
245    
246    
247  void client_test ( lscp_client_t *pClient )  void client_test ( lscp_client_t *pClient )
248  {  {
# Line 68  void client_test ( lscp_client_t *pClien Line 252  void client_test ( lscp_client_t *pClien
252      int iAudioDevice, iMidiDevice;      int iAudioDevice, iMidiDevice;
253      int iSamplerChannel;      int iSamplerChannel;
254    
255      CLIENT_TEST(pClient, ppszAudioDrivers = lscp_get_available_audio_drivers(pClient));      CLIENT_TEST(pClient, szsplit, ppszAudioDrivers = lscp_get_available_audio_drivers(pClient));
256      if (ppszAudioDrivers == NULL) {      if (ppszAudioDrivers == NULL) {
257          fprintf(stderr, "client_test: No audio drivers available.\n");          fprintf(stderr, "client_test: No audio drivers available.\n");
258          return;          return;
259      }      }
260    
261      CLIENT_TEST(pClient, ppszMidiDrivers = lscp_get_available_midi_drivers(pClient));      CLIENT_TEST(pClient, szsplit, ppszMidiDrivers = lscp_get_available_midi_drivers(pClient));
262      if (ppszMidiDrivers == NULL) {      if (ppszMidiDrivers == NULL) {
263          fprintf(stderr, "client_test: No MIDI drivers available.\n");          fprintf(stderr, "client_test: No MIDI drivers available.\n");
264          return;          return;
265      }      }
266    
267      CLIENT_TEST(pClient, ppszEngines = lscp_get_available_engines(pClient));      CLIENT_TEST(pClient, szsplit, ppszEngines = lscp_get_available_engines(pClient));
268      if (ppszEngines == NULL) {      if (ppszEngines == NULL) {
269          fprintf(stderr, "client_test: No engines available.\n");          fprintf(stderr, "client_test: No engines available.\n");
270          return;          return;
271      }      }
272    
273      CLIENT_TEST(pClient, lscp_get_audio_devices(pClient));      CLIENT_TEST(pClient, int, lscp_get_audio_devices(pClient));
274      CLIENT_TEST(pClient, lscp_list_audio_devices(pClient));      CLIENT_TEST(pClient, isplit, lscp_list_audio_devices(pClient));
275    
276      CLIENT_TEST(pClient, lscp_get_midi_devices(pClient));      CLIENT_TEST(pClient, int, lscp_get_midi_devices(pClient));
277      CLIENT_TEST(pClient, lscp_list_midi_devices(pClient));      CLIENT_TEST(pClient, isplit, lscp_list_midi_devices(pClient));
278    
279      for (iAudioDriver = 0; ppszAudioDrivers[iAudioDriver]; iAudioDriver++) {      for (iAudioDriver = 0; ppszAudioDrivers[iAudioDriver]; iAudioDriver++) {
280       pszAudioDriver = ppszAudioDrivers[iAudioDriver];       pszAudioDriver = ppszAudioDrivers[iAudioDriver];
281       printf("\n--- pszAudioDriver=\"%s\" ---\n", pszAudioDriver);       printf("\n--- pszAudioDriver=\"%s\" ---\n", pszAudioDriver);
282       CLIENT_TEST(pClient, lscp_get_audio_driver_info(pClient, pszAudioDriver));       CLIENT_TEST(pClient, driver_info, lscp_get_audio_driver_info(pClient, pszAudioDriver));
283       CLIENT_TEST(pClient, lscp_get_audio_driver_param_info(pClient, pszAudioDriver, "active", NULL));       CLIENT_TEST(pClient, param_info, lscp_get_audio_driver_param_info(pClient, pszAudioDriver, "active", NULL));
284       CLIENT_TEST(pClient, iAudioDevice = lscp_create_audio_device(pClient, pszAudioDriver, NULL));       CLIENT_TEST(pClient, int, iAudioDevice = lscp_create_audio_device(pClient, pszAudioDriver, NULL));
285       CLIENT_TEST(pClient, lscp_get_audio_device_info(pClient, iAudioDevice));       CLIENT_TEST(pClient, device_info, lscp_get_audio_device_info(pClient, iAudioDevice));
286       for (iMidiDriver = 0; ppszMidiDrivers[iMidiDriver]; iMidiDriver++) {       for (iMidiDriver = 0; ppszMidiDrivers[iMidiDriver]; iMidiDriver++) {
287        pszMidiDriver = ppszMidiDrivers[iMidiDriver];        pszMidiDriver = ppszMidiDrivers[iMidiDriver];
288        printf("\n--- pszMidiDriver=\"%s\" ---\n", pszMidiDriver);        printf("\n--- pszMidiDriver=\"%s\" ---\n", pszMidiDriver);
289        CLIENT_TEST(pClient, lscp_get_midi_driver_info(pClient, pszMidiDriver));        CLIENT_TEST(pClient, driver_info, lscp_get_midi_driver_info(pClient, pszMidiDriver));
290        CLIENT_TEST(pClient, lscp_get_midi_driver_param_info(pClient, pszMidiDriver, "active", NULL));        CLIENT_TEST(pClient, param_info, lscp_get_midi_driver_param_info(pClient, pszMidiDriver, "active", NULL));
291        CLIENT_TEST(pClient, iMidiDevice = lscp_create_midi_device(pClient, pszMidiDriver, NULL));        CLIENT_TEST(pClient, int, iMidiDevice = lscp_create_midi_device(pClient, pszMidiDriver, NULL));
292        CLIENT_TEST(pClient, lscp_get_midi_device_info(pClient, iMidiDevice));        CLIENT_TEST(pClient, device_info, lscp_get_midi_device_info(pClient, iMidiDevice));
293        for (iEngine = 0; ppszEngines[iEngine]; iEngine++) {        for (iEngine = 0; ppszEngines[iEngine]; iEngine++) {
294          pszEngine = ppszEngines[iEngine];          pszEngine = ppszEngines[iEngine];
295          printf("\n--- pszEngine=\"%s\" ---\n", pszEngine);          printf("\n--- pszEngine=\"%s\" ---\n", pszEngine);
296          CLIENT_TEST(pClient, lscp_get_engine_info(pClient, pszEngine));          CLIENT_TEST(pClient, engine_info, lscp_get_engine_info(pClient, pszEngine));
297          CLIENT_TEST(pClient, lscp_get_channels(pClient));          CLIENT_TEST(pClient, int, lscp_get_channels(pClient));
298          CLIENT_TEST(pClient, lscp_list_channels(pClient));          CLIENT_TEST(pClient, isplit, lscp_list_channels(pClient));
299          CLIENT_TEST(pClient, iSamplerChannel = lscp_add_channel(pClient));          CLIENT_TEST(pClient, int, iSamplerChannel = lscp_add_channel(pClient));
300          printf(">>> iSamplerChannel=\"%d\"\n", iSamplerChannel);          CLIENT_TEST(pClient, channel_info, lscp_get_channel_info(pClient, iSamplerChannel));
301          CLIENT_TEST(pClient, lscp_get_channel_info(pClient, iSamplerChannel));          CLIENT_TEST(pClient, status, lscp_load_engine(pClient, pszEngine, iSamplerChannel));
302          CLIENT_TEST(pClient, lscp_load_engine(pClient, pszEngine, iSamplerChannel));          CLIENT_TEST(pClient, status, lscp_load_instrument(pClient, "DefaultInstrument.gig", 0, iSamplerChannel));
303          CLIENT_TEST(pClient, lscp_load_instrument(pClient, "DefaultInstrument.gig", 0, iSamplerChannel));          CLIENT_TEST(pClient, int, lscp_get_channel_voice_count(pClient, iSamplerChannel));
304          CLIENT_TEST(pClient, lscp_get_channel_voice_count(pClient, iSamplerChannel));          CLIENT_TEST(pClient, int, lscp_get_channel_stream_count(pClient, iSamplerChannel));
305          CLIENT_TEST(pClient, lscp_get_channel_stream_count(pClient, iSamplerChannel));          CLIENT_TEST(pClient, int, lscp_get_channel_stream_usage(pClient, iSamplerChannel));
306          CLIENT_TEST(pClient, lscp_get_channel_stream_usage(pClient, iSamplerChannel));          CLIENT_TEST(pClient, buffer_fill, lscp_get_channel_buffer_fill(pClient, LSCP_USAGE_BYTES, iSamplerChannel));
307          CLIENT_TEST(pClient, lscp_get_channel_buffer_fill(pClient, LSCP_USAGE_BYTES, iSamplerChannel));          CLIENT_TEST(pClient, buffer_fill, lscp_get_channel_buffer_fill(pClient, LSCP_USAGE_PERCENTAGE, iSamplerChannel));
308          CLIENT_TEST(pClient, lscp_get_channel_buffer_fill(pClient, LSCP_USAGE_PERCENTAGE, iSamplerChannel));          CLIENT_TEST(pClient, status, lscp_set_channel_audio_type(pClient, iSamplerChannel, pszAudioDriver));
309          CLIENT_TEST(pClient, lscp_set_channel_audio_type(pClient, iSamplerChannel, pszAudioDriver));          CLIENT_TEST(pClient, status, lscp_set_channel_audio_device(pClient, iSamplerChannel, 0));
310          CLIENT_TEST(pClient, lscp_set_channel_audio_device(pClient, iSamplerChannel, 0));          CLIENT_TEST(pClient, status, lscp_set_channel_audio_channel(pClient, iSamplerChannel, 0, 1));
311          CLIENT_TEST(pClient, lscp_set_channel_audio_channel(pClient, iSamplerChannel, 0, 1));          CLIENT_TEST(pClient, status, lscp_set_channel_midi_type(pClient, iSamplerChannel, pszMidiDriver));
312          CLIENT_TEST(pClient, lscp_set_channel_midi_type(pClient, iSamplerChannel, pszMidiDriver));          CLIENT_TEST(pClient, status, lscp_set_channel_midi_device(pClient, iSamplerChannel, 0));
313          CLIENT_TEST(pClient, lscp_set_channel_midi_device(pClient, iSamplerChannel, 0));          CLIENT_TEST(pClient, status, lscp_set_channel_midi_channel(pClient, iSamplerChannel, 0));
314          CLIENT_TEST(pClient, lscp_set_channel_midi_channel(pClient, iSamplerChannel, 0));          CLIENT_TEST(pClient, status, lscp_set_channel_midi_port(pClient, iSamplerChannel, 0));
315          CLIENT_TEST(pClient, lscp_set_channel_midi_port(pClient, iSamplerChannel, 0));          CLIENT_TEST(pClient, status, lscp_set_channel_volume(pClient, iSamplerChannel, 0.5));
316          CLIENT_TEST(pClient, lscp_set_channel_volume(pClient, iSamplerChannel, 0.5));          CLIENT_TEST(pClient, channel_info, lscp_get_channel_info(pClient, iSamplerChannel));
317          CLIENT_TEST(pClient, lscp_get_channel_info(pClient, iSamplerChannel));          CLIENT_TEST(pClient, status, lscp_reset_channel(pClient, iSamplerChannel));
318          CLIENT_TEST(pClient, lscp_reset_channel(pClient, iSamplerChannel));          CLIENT_TEST(pClient, status, lscp_remove_channel(pClient, iSamplerChannel));
         CLIENT_TEST(pClient, lscp_remove_channel(pClient, iSamplerChannel));  
319        }        }
320        CLIENT_TEST(pClient, lscp_destroy_midi_device(pClient, iMidiDevice));        CLIENT_TEST(pClient, status, lscp_destroy_midi_device(pClient, iMidiDevice));
321       }       }
322       CLIENT_TEST(pClient, lscp_destroy_audio_device(pClient, iAudioDevice));       CLIENT_TEST(pClient, status, lscp_destroy_audio_device(pClient, iAudioDevice));
323      }      }
324    
325  }  }
# Line 201  int main (int argc, char *argv[] ) Line 384  int main (int argc, char *argv[] )
384          if (strcmp(szLine, "test") == 0)          if (strcmp(szLine, "test") == 0)
385              client_test(pClient);              client_test(pClient);
386          else          else
387            if (strcmp(szLine, "teststep") == 0) {
388                g_teststep = 1;
389                client_test(pClient);
390                g_teststep = 0;
391            }
392            else
393          if (cchLine > 0 && strcmp(szLine, "help") != 0) {          if (cchLine > 0 && strcmp(szLine, "help") != 0) {
394              szLine[cchLine++] = '\r';              szLine[cchLine++] = '\r';
395              szLine[cchLine++] = '\n';              szLine[cchLine++] = '\n';

Legend:
Removed from v.178  
changed lines
  Added in v.187

  ViewVC Help
Powered by ViewVC