/[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 105 by capela, Fri Jun 4 14:48:59 2004 UTC revision 146 by capela, Fri Jun 25 12:00:25 2004 UTC
# Line 38  lscp_status_t server_callback ( lscp_con Line 38  lscp_status_t server_callback ( lscp_con
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) {
# Line 67  lscp_status_t server_callback ( lscp_con Line 68  lscp_status_t server_callback ( lscp_con
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"
# Line 101  lscp_status_t server_callback ( lscp_con Line 103  lscp_status_t server_callback ( lscp_con
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")) {
# Line 122  lscp_status_t server_callback ( lscp_con Line 114  lscp_status_t server_callback ( lscp_con
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.
# Line 167  lscp_status_t server_callback ( lscp_con Line 159  lscp_status_t server_callback ( lscp_con
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")) {
# Line 177  lscp_status_t server_callback ( lscp_con Line 194  lscp_status_t server_callback ( lscp_con
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>
# Line 204  lscp_status_t server_callback ( lscp_con Line 229  lscp_status_t server_callback ( lscp_con
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      }      }
# Line 222  lscp_status_t server_callback ( lscp_con Line 247  lscp_status_t server_callback ( lscp_con
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:
# Line 300  int main (int argc, char *argv[] ) Line 325  int main (int argc, char *argv[] )
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    

Legend:
Removed from v.105  
changed lines
  Added in v.146

  ViewVC Help
Powered by ViewVC