337 |
lscp_device_port_info_init(&(pClient->midi_port_info)); |
lscp_device_port_info_init(&(pClient->midi_port_info)); |
338 |
lscp_param_info_init(&(pClient->audio_channel_param_info)); |
lscp_param_info_init(&(pClient->audio_channel_param_info)); |
339 |
lscp_param_info_init(&(pClient->midi_port_param_info)); |
lscp_param_info_init(&(pClient->midi_port_param_info)); |
340 |
|
lscp_server_info_init(&(pClient->server_info)); |
341 |
lscp_engine_info_init(&(pClient->engine_info)); |
lscp_engine_info_init(&(pClient->engine_info)); |
342 |
lscp_channel_info_init(&(pClient->channel_info)); |
lscp_channel_info_init(&(pClient->channel_info)); |
343 |
// Initialize error stuff. |
// Initialize error stuff. |
401 |
// Free up all cached members. |
// Free up all cached members. |
402 |
lscp_channel_info_free(&(pClient->channel_info)); |
lscp_channel_info_free(&(pClient->channel_info)); |
403 |
lscp_engine_info_free(&(pClient->engine_info)); |
lscp_engine_info_free(&(pClient->engine_info)); |
404 |
|
lscp_server_info_free(&(pClient->server_info)); |
405 |
lscp_param_info_free(&(pClient->midi_port_param_info)); |
lscp_param_info_free(&(pClient->midi_port_param_info)); |
406 |
lscp_param_info_free(&(pClient->audio_channel_param_info)); |
lscp_param_info_free(&(pClient->audio_channel_param_info)); |
407 |
lscp_device_port_info_free(&(pClient->midi_port_info)); |
lscp_device_port_info_free(&(pClient->midi_port_info)); |
1469 |
} |
} |
1470 |
|
|
1471 |
|
|
1472 |
|
/** |
1473 |
|
* Getting information about the server. |
1474 |
|
* GET SERVER INFO |
1475 |
|
* |
1476 |
|
* @param pClient Pointer to client instance structure. |
1477 |
|
* |
1478 |
|
* @returns A pointer to a @ref lscp_server_info_t structure, with all the |
1479 |
|
* information of the current connected server, or NULL in case of failure. |
1480 |
|
*/ |
1481 |
|
lscp_server_info_t *lscp_get_server_info ( lscp_client_t *pClient ) |
1482 |
|
{ |
1483 |
|
lscp_server_info_t *pServerInfo; |
1484 |
|
const char *pszResult; |
1485 |
|
const char *pszSeps = ":"; |
1486 |
|
const char *pszCrlf = "\r\n"; |
1487 |
|
char *pszToken; |
1488 |
|
char *pch; |
1489 |
|
|
1490 |
|
// Lock this section up. |
1491 |
|
lscp_mutex_lock(pClient->mutex); |
1492 |
|
|
1493 |
|
pServerInfo = &(pClient->server_info); |
1494 |
|
lscp_engine_info_reset(pServerInfo); |
1495 |
|
|
1496 |
|
if (lscp_client_call(pClient, "GET SERVER INFO\r\n") == LSCP_OK) { |
1497 |
|
pszResult = lscp_client_get_result(pClient); |
1498 |
|
pszToken = lscp_strtok((char *) pszResult, pszSeps, &(pch)); |
1499 |
|
while (pszToken) { |
1500 |
|
if (strcasecmp(pszToken, "DESCRIPTION") == 0) { |
1501 |
|
pszToken = lscp_strtok(NULL, pszCrlf, &(pch)); |
1502 |
|
if (pszToken) |
1503 |
|
lscp_unquote_dup(&(pServerInfo->description), &pszToken); |
1504 |
|
} |
1505 |
|
else if (strcasecmp(pszToken, "VERSION") == 0) { |
1506 |
|
pszToken = lscp_strtok(NULL, pszCrlf, &(pch)); |
1507 |
|
if (pszToken) |
1508 |
|
lscp_unquote_dup(&(pServerInfo->version), &pszToken); |
1509 |
|
} |
1510 |
|
pszToken = lscp_strtok(NULL, pszSeps, &(pch)); |
1511 |
|
} |
1512 |
|
} |
1513 |
|
else pServerInfo = NULL; |
1514 |
|
|
1515 |
|
// Unlock this section down. |
1516 |
|
lscp_mutex_unlock(pClient->mutex); |
1517 |
|
|
1518 |
|
return pServerInfo; |
1519 |
|
} |
1520 |
|
|
1521 |
|
|
1522 |
// end of client.c |
// end of client.c |