liblscp  0.6.1
device.h
Go to the documentation of this file.
1 // device.h
2 //
3 /****************************************************************************
4  liblscp - LinuxSampler Control Protocol API
5  Copyright (C) 2004-2007, rncbc aka Rui Nuno Capela. All rights reserved.
6 
7  This library is free software; you can redistribute it and/or
8  modify it under the terms of the GNU Lesser General Public
9  License as published by the Free Software Foundation; either
10  version 2.1 of the License, or (at your option) any later version.
11 
12  This library is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  Lesser General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License along
18  with this program; if not, write to the Free Software Foundation, Inc.,
19  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 
21 *****************************************************************************/
22 
23 #ifndef __LSCP_DEVICE_H
24 #define __LSCP_DEVICE_H
25 
26 #include "lscp/client.h"
27 
28 #if defined(__cplusplus)
29 extern "C" {
30 #endif
31 
32 
33 //-------------------------------------------------------------------------
34 // Device driver information structures.
35 
37 typedef enum _lscp_type_t
38 {
39  LSCP_TYPE_NONE = 0,
44 
45 } lscp_type_t;
46 
47 
49 typedef struct _lscp_param_t
50 {
51  char * key;
52  char * value;
53 
54 } lscp_param_t;
55 
56 
58 typedef struct _lscp_param_info_t
59 {
61  char * description;
62  int mandatory;
63  int fix;
65  char ** depends;
66  char * defaultv;
67  char * range_min;
68  char * range_max;
69  char ** possibilities;
70 
72 
73 
75 typedef struct _lscp_driver_info_t
76 {
77  char * description;
78  char * version;
79  char ** parameters;
80 
82 
83 
85 typedef struct _lscp_device_info_t
86 {
87  char * driver;
89 
91 
92 
94 typedef struct _lscp_device_port_info_t
95 {
96  char * name;
98 
100 
101 
102 //-------------------------------------------------------------------------
103 // Audio driver control functions.
104 
106 const char ** lscp_list_available_audio_drivers (lscp_client_t *pClient);
107 
108 lscp_driver_info_t * lscp_get_audio_driver_info (lscp_client_t *pClient, const char *pszAudioDriver);
109 lscp_param_info_t * lscp_get_audio_driver_param_info(lscp_client_t *pClient, const char *pszAudioDriver, const char *pszParam, lscp_param_t *pDepList);
110 
111 //-------------------------------------------------------------------------
112 // Audio device control functions.
113 
114 int lscp_create_audio_device (lscp_client_t *pClient, const char *pszAudioDriver, lscp_param_t *pParams);
115 lscp_status_t lscp_destroy_audio_device (lscp_client_t *pClient, int iAudioDevice);
116 
118 int * lscp_list_audio_devices (lscp_client_t *pClient);
119 lscp_device_info_t * lscp_get_audio_device_info (lscp_client_t *pClient, int iAudioDevice);
120 lscp_status_t lscp_set_audio_device_param (lscp_client_t *pClient, int iAudioDevice, lscp_param_t *pParam);
121 
122 lscp_device_port_info_t *lscp_get_audio_channel_info (lscp_client_t *pClient, int iAudioDevice, int iAudioChannel);
123 
124 lscp_param_info_t * lscp_get_audio_channel_param_info (lscp_client_t *pClient, int iAudioDevice, int iAudioChannel, const char *pszParam);
125 lscp_status_t lscp_set_audio_channel_param (lscp_client_t *pClient, int iAudioDevice, int iAudioChannel, lscp_param_t *pParam);
126 
127 
128 //-------------------------------------------------------------------------
129 // MIDI driver control functions.
130 
132 const char ** lscp_list_available_midi_drivers(lscp_client_t *pClient);
133 
134 lscp_driver_info_t * lscp_get_midi_driver_info (lscp_client_t *pClient, const char *pszMidiDriver);
135 lscp_param_info_t * lscp_get_midi_driver_param_info (lscp_client_t *pClient, const char *pszMidiDriver, const char *pszParam, lscp_param_t *pDepList);
136 
137 //-------------------------------------------------------------------------
138 // MIDI device control functions.
139 
140 int lscp_create_midi_device (lscp_client_t *pClient, const char *pszMidiDriver, lscp_param_t *pParams);
141 lscp_status_t lscp_destroy_midi_device (lscp_client_t *pClient, int iMidiDevice);
142 
143 int lscp_get_midi_devices (lscp_client_t *pClient);
144 int * lscp_list_midi_devices (lscp_client_t *pClient);
145 lscp_device_info_t * lscp_get_midi_device_info (lscp_client_t *pClient, int iMidiDevice);
146 lscp_status_t lscp_set_midi_device_param (lscp_client_t *pClient, int iMidiDevice, lscp_param_t *pParam);
147 
148 lscp_device_port_info_t *lscp_get_midi_port_info (lscp_client_t *pClient, int iMidiDevice, int iMidiPort);
149 
150 lscp_param_info_t * lscp_get_midi_port_param_info (lscp_client_t *pClient, int iMidiDevice, int iMidiPort, const char *pszParam);
151 lscp_status_t lscp_set_midi_port_param (lscp_client_t *pClient, int iMidiDevice, int iMidiPort, lscp_param_t *pParam);
152 
153 //-------------------------------------------------------------------------
154 // Generic parameter list functions.
155 
156 const char * lscp_get_param_value (lscp_param_t *pParams, const char *pszParam);
157 
158 
159 #if defined(__cplusplus)
160 }
161 #endif
162 
163 #endif // __LSCP_DEVICE_H
164 
165 // end of device.h
_lscp_client_t::audio_devices
int * audio_devices
Definition: common.h:67
_lscp_client_t::audio_channel_info
lscp_device_port_info_t audio_channel_info
Definition: common.h:82
_lscp_param_info_t::range_min
char * range_min
Definition: device.h:66
_lscp_device_port_info_t::name
char * name
Definition: device.h:95
_lscp_client_t::audio_channel_param_info
lscp_param_info_t audio_channel_param_info
Definition: common.h:84
lscp_list_available_midi_drivers
const char ** lscp_list_available_midi_drivers(lscp_client_t *pClient)
Definition: device.c:684
lscp_type_t
enum _lscp_type_t lscp_type_t
lscp_get_midi_port_info
lscp_device_port_info_t * lscp_get_midi_port_info(lscp_client_t *pClient, int iMidiDevice, int iMidiPort)
Definition: device.c:948
lscp_get_audio_channel_param_info
lscp_param_info_t * lscp_get_audio_channel_param_info(lscp_client_t *pClient, int iAudioDevice, int iAudioChannel, const char *pszParam)
Definition: device.c:596
_lscp_client_t::audio_device_info
lscp_device_info_t audio_device_info
Definition: common.h:78
_lscp_param_info_t::fix
int fix
Definition: device.h:62
lscp_szsplit_create
char ** lscp_szsplit_create(const char *pszCsv, const char *pszSeps)
Definition: common.c:365
lscp_device_port_info_t
struct _lscp_device_port_info_t lscp_device_port_info_t
lscp_mutex_unlock
#define lscp_mutex_unlock(m)
Definition: thread.h:75
_lscp_driver_info_t
Definition: device.h:74
lscp_set_midi_port_param
lscp_status_t lscp_set_midi_port_param(lscp_client_t *pClient, int iMidiDevice, int iMidiPort, lscp_param_t *pParam)
Definition: device.c:1005
lscp_set_audio_channel_param
lscp_status_t lscp_set_audio_channel_param(lscp_client_t *pClient, int iAudioDevice, int iAudioChannel, lscp_param_t *pParam)
Definition: device.c:625
_lscp_client_t::midi_devices
int * midi_devices
Definition: common.h:68
lscp_list_midi_devices
int * lscp_list_midi_devices(lscp_client_t *pClient)
Definition: device.c:862
lscp_get_midi_port_param_info
lscp_param_info_t * lscp_get_midi_port_param_info(lscp_client_t *pClient, int iMidiDevice, int iMidiPort, const char *pszParam)
Definition: device.c:976
LSCP_FAILED
Definition: thread.h:70
lscp_get_param_value
const char * lscp_get_param_value(lscp_param_t *pParams, const char *pszParam)
Definition: device.c:1026
_lscp_client_t::audio_drivers
char ** audio_drivers
Definition: common.h:65
lscp_create_audio_device
int lscp_create_audio_device(lscp_client_t *pClient, const char *pszAudioDriver, lscp_param_t *pParams)
Definition: device.c:395
LSCP_TYPE_STRING
Definition: device.h:59
_lscp_client_t::midi_driver_info
lscp_driver_info_t midi_driver_info
Definition: common.h:77
lscp_get_available_audio_drivers
int lscp_get_available_audio_drivers(lscp_client_t *pClient)
Definition: device.c:277
lscp_get_available_midi_drivers
int lscp_get_available_midi_drivers(lscp_client_t *pClient)
Definition: device.c:655
lscp_get_midi_device_info
lscp_device_info_t * lscp_get_midi_device_info(lscp_client_t *pClient, int iMidiDevice)
Definition: device.c:897
lscp_set_audio_device_param
lscp_status_t lscp_set_audio_device_param(lscp_client_t *pClient, int iAudioDevice, lscp_param_t *pParam)
Definition: device.c:541
lscp_get_param_value
const char * lscp_get_param_value(lscp_param_t *pParams, const char *pszParam)
Definition: device.c:1026
lscp_isplit_destroy
void lscp_isplit_destroy(int *piSplit)
Definition: common.c:509
lscp_get_audio_driver_info
lscp_driver_info_t * lscp_get_audio_driver_info(lscp_client_t *pClient, const char *pszAudioDriver)
Definition: device.c:341
lscp_unquote_dup
void lscp_unquote_dup(char **ppszDst, char **ppszSrc)
Definition: common.c:325
lscp_set_midi_port_param
lscp_status_t lscp_set_midi_port_param(lscp_client_t *pClient, int iMidiDevice, int iMidiPort, lscp_param_t *pParam)
Definition: device.c:1005
lscp_set_audio_device_param
lscp_status_t lscp_set_audio_device_param(lscp_client_t *pClient, int iAudioDevice, lscp_param_t *pParam)
Definition: device.c:541
lscp_client_get_result
const char * lscp_client_get_result(lscp_client_t *pClient)
Definition: client.c:686
lscp_get_audio_driver_param_info
lscp_param_info_t * lscp_get_audio_driver_param_info(lscp_client_t *pClient, const char *pszAudioDriver, const char *pszParam, lscp_param_t *pDepList)
Definition: device.c:365
lscp_device_info_reset
void lscp_device_info_reset(lscp_device_info_t *pDeviceInfo)
Definition: common.c:966
lscp_param_t
struct _lscp_param_t lscp_param_t
lscp_list_audio_devices
int * lscp_list_audio_devices(lscp_client_t *pClient)
Definition: device.c:482
lscp_get_midi_port_info
lscp_device_port_info_t * lscp_get_midi_port_info(lscp_client_t *pClient, int iMidiDevice, int iMidiPort)
Definition: device.c:948
lscp_get_audio_channel_param_info
lscp_param_info_t * lscp_get_audio_channel_param_info(lscp_client_t *pClient, int iAudioDevice, int iAudioChannel, const char *pszParam)
Definition: device.c:596
_lscp_client_t::midi_drivers
char ** midi_drivers
Definition: common.h:66
lscp_plist_append
void lscp_plist_append(lscp_param_t **ppList, const char *pszKey, const char *pszValue)
Definition: common.c:664
lscp_mutex_lock
#define lscp_mutex_lock(m)
Definition: thread.h:74
lscp_device_info_t
struct _lscp_device_info_t lscp_device_info_t
lscp_create_audio_device
int lscp_create_audio_device(lscp_client_t *pClient, const char *pszAudioDriver, lscp_param_t *pParams)
Definition: device.c:395
_lscp_device_info_t
Definition: device.h:84
lscp_status_t
enum _lscp_status_t lscp_status_t
_lscp_client_t::midi_param_info
lscp_param_info_t midi_param_info
Definition: common.h:81
_lscp_param_info_t::multiplicity
int multiplicity
Definition: device.h:63
lscp_destroy_midi_device
lscp_status_t lscp_destroy_midi_device(lscp_client_t *pClient, int iMidiDevice)
Definition: device.c:809
lscp_unquote
char * lscp_unquote(char **ppsz, int dup)
Definition: common.c:292
_lscp_param_info_t::depends
char ** depends
Definition: device.h:64
lscp_get_audio_driver_info
lscp_driver_info_t * lscp_get_audio_driver_info(lscp_client_t *pClient, const char *pszAudioDriver)
Definition: device.c:341
lscp_get_midi_port_param_info
lscp_param_info_t * lscp_get_midi_port_param_info(lscp_client_t *pClient, int iMidiDevice, int iMidiPort, const char *pszParam)
Definition: device.c:976
lscp_get_audio_device_info
lscp_device_info_t * lscp_get_audio_device_info(lscp_client_t *pClient, int iAudioDevice)
Definition: device.c:517
_lscp_param_t
Definition: device.h:48
_lscp_param_info_t::mandatory
int mandatory
Definition: device.h:61
lscp_list_available_audio_drivers
const char ** lscp_list_available_audio_drivers(lscp_client_t *pClient)
Definition: device.c:306
lscp_list_audio_devices
int * lscp_list_audio_devices(lscp_client_t *pClient)
Definition: device.c:482
lscp_get_midi_device_info
lscp_device_info_t * lscp_get_midi_device_info(lscp_client_t *pClient, int iMidiDevice)
Definition: device.c:897
lscp_set_midi_device_param
lscp_status_t lscp_set_midi_device_param(lscp_client_t *pClient, int iMidiDevice, lscp_param_t *pParam)
Definition: device.c:921
_lscp_client_t::midi_port_param_info
lscp_param_info_t midi_port_param_info
Definition: common.h:85
_lscp_client_t
Definition: common.h:38
lscp_strtok
char * lscp_strtok(char *pchBuffer, const char *pszSeps, char **ppch)
Definition: common.c:338
lscp_param_concat
int lscp_param_concat(char *pszBuffer, int cchMaxBuffer, lscp_param_t *pParams)
Definition: common.c:1038
lscp_list_available_midi_drivers
const char ** lscp_list_available_midi_drivers(lscp_client_t *pClient)
Definition: device.c:684
lscp_set_midi_device_param
lscp_status_t lscp_set_midi_device_param(lscp_client_t *pClient, int iMidiDevice, lscp_param_t *pParam)
Definition: device.c:921
_lscp_device_port_info_t
Definition: device.h:93
_lscp_param_info_t::type
lscp_type_t type
Definition: device.h:59
_lscp_client_t::audio_param_info
lscp_param_info_t audio_param_info
Definition: common.h:80
LSCP_TYPE_FLOAT
Definition: device.h:58
lscp_destroy_audio_device
lscp_status_t lscp_destroy_audio_device(lscp_client_t *pClient, int iAudioDevice)
Definition: device.c:429
_lscp_param_info_t::description
char * description
Definition: device.h:60
_lscp_param_t::value
char * value
Definition: device.h:51
lscp_driver_info_reset
void lscp_driver_info_reset(lscp_driver_info_t *pDriverInfo)
Definition: common.c:943
_lscp_driver_info_t::version
char * version
Definition: device.h:77
lscp_get_midi_driver_info
lscp_driver_info_t * lscp_get_midi_driver_info(lscp_client_t *pClient, const char *pszMidiDriver)
Definition: device.c:719
LSCP_TYPE_INT
Definition: device.h:57
lscp_isplit_create
int * lscp_isplit_create(const char *pszCsv, const char *pszSeps)
Definition: common.c:453
lscp_list_available_audio_drivers
const char ** lscp_list_available_audio_drivers(lscp_client_t *pClient)
Definition: device.c:306
lscp_get_audio_devices
int lscp_get_audio_devices(lscp_client_t *pClient)
Definition: device.c:453
_lscp_device_info_t::driver
char * driver
Definition: device.h:86
lscp_driver_info_t
struct _lscp_driver_info_t lscp_driver_info_t
LSCP_OK
Definition: thread.h:69
lscp_get_available_audio_drivers
int lscp_get_available_audio_drivers(lscp_client_t *pClient)
Definition: device.c:277
lscp_get_audio_device_info
lscp_device_info_t * lscp_get_audio_device_info(lscp_client_t *pClient, int iAudioDevice)
Definition: device.c:517
_lscp_device_port_info_t::params
lscp_param_t * params
Definition: device.h:96
LSCP_BUFSIZ
#define LSCP_BUFSIZ
Definition: socket.h:55
lscp_client_query
lscp_status_t lscp_client_query(lscp_client_t *pClient, const char *pszQuery)
Definition: client.c:658
lscp_get_midi_driver_info
lscp_driver_info_t * lscp_get_midi_driver_info(lscp_client_t *pClient, const char *pszMidiDriver)
Definition: device.c:719
common.h
_lscp_driver_info_t::parameters
char ** parameters
Definition: device.h:78
_lscp_param_info_t
Definition: device.h:57
lscp_get_audio_channel_info
lscp_device_port_info_t * lscp_get_audio_channel_info(lscp_client_t *pClient, int iAudioDevice, int iAudioChannel)
Definition: device.c:568
lscp_get_audio_devices
int lscp_get_audio_devices(lscp_client_t *pClient)
Definition: device.c:453
_lscp_param_info_t::defaultv
char * defaultv
Definition: device.h:65
_lscp_param_info_t::range_max
char * range_max
Definition: device.h:67
lscp_param_info_t
struct _lscp_param_info_t lscp_param_info_t
lscp_get_audio_channel_info
lscp_device_port_info_t * lscp_get_audio_channel_info(lscp_client_t *pClient, int iAudioDevice, int iAudioChannel)
Definition: device.c:568
lscp_list_midi_devices
int * lscp_list_midi_devices(lscp_client_t *pClient)
Definition: device.c:862
_lscp_client_t::midi_device_info
lscp_device_info_t midi_device_info
Definition: common.h:79
lscp_szsplit_destroy
void lscp_szsplit_destroy(char **ppszSplit)
Definition: common.c:421
_lscp_param_t::key
char * key
Definition: device.h:50
_lscp_param_info_t::possibilities
char ** possibilities
Definition: device.h:68
LSCP_TYPE_NONE
Definition: device.h:55
_lscp_type_t
_lscp_type_t
Definition: device.h:36
lscp_device_port_info_reset
void lscp_device_port_info_reset(lscp_device_port_info_t *pDevicePortInfo)
Definition: common.c:989
_lscp_driver_info_t::description
char * description
Definition: device.h:76
lscp_param_info_reset
void lscp_param_info_reset(lscp_param_info_t *pParamInfo)
Definition: common.c:1027
lscp_get_available_midi_drivers
int lscp_get_available_midi_drivers(lscp_client_t *pClient)
Definition: device.c:655
LSCP_TYPE_BOOL
Definition: device.h:56
lscp_get_midi_driver_param_info
lscp_param_info_t * lscp_get_midi_driver_param_info(lscp_client_t *pClient, const char *pszMidiDriver, const char *pszParam, lscp_param_t *pDepList)
Definition: device.c:745
lscp_create_midi_device
int lscp_create_midi_device(lscp_client_t *pClient, const char *pszMidiDriver, lscp_param_t *pParams)
Definition: device.c:775
lscp_get_midi_driver_param_info
lscp_param_info_t * lscp_get_midi_driver_param_info(lscp_client_t *pClient, const char *pszMidiDriver, const char *pszParam, lscp_param_t *pDepList)
Definition: device.c:745
lscp_get_audio_driver_param_info
lscp_param_info_t * lscp_get_audio_driver_param_info(lscp_client_t *pClient, const char *pszAudioDriver, const char *pszParam, lscp_param_t *pDepList)
Definition: device.c:365
lscp_client_call
lscp_status_t lscp_client_call(lscp_client_t *pClient, const char *pszQuery, int iResult)
Definition: common.c:109
_lscp_device_info_t::params
lscp_param_t * params
Definition: device.h:87
lscp_set_audio_channel_param
lscp_status_t lscp_set_audio_channel_param(lscp_client_t *pClient, int iAudioDevice, int iAudioChannel, lscp_param_t *pParam)
Definition: device.c:625
_lscp_client_t::mutex
lscp_mutex_t mutex
Definition: common.h:99
lscp_get_midi_devices
int lscp_get_midi_devices(lscp_client_t *pClient)
Definition: device.c:833
client.h
lscp_destroy_audio_device
lscp_status_t lscp_destroy_audio_device(lscp_client_t *pClient, int iAudioDevice)
Definition: device.c:429
_lscp_client_t::audio_driver_info
lscp_driver_info_t audio_driver_info
Definition: common.h:76
lscp_destroy_midi_device
lscp_status_t lscp_destroy_midi_device(lscp_client_t *pClient, int iMidiDevice)
Definition: device.c:809
lscp_create_midi_device
int lscp_create_midi_device(lscp_client_t *pClient, const char *pszMidiDriver, lscp_param_t *pParams)
Definition: device.c:775
lscp_get_midi_devices
int lscp_get_midi_devices(lscp_client_t *pClient)
Definition: device.c:833
_lscp_client_t::midi_port_info
lscp_device_port_info_t midi_port_info
Definition: common.h:83