liblscp  0.9.11.2
device.h
Go to the documentation of this file.
1 // device.h
2 //
3 /****************************************************************************
4  liblscp - LinuxSampler Control Protocol API
5  Copyright (C) 2004-2021, 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 
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_param_info_t::range_min
char * range_min
Definition: device.h:67
_lscp_device_port_info_t::name
char * name
Definition: device.h:96
lscp_list_available_midi_drivers
const char ** lscp_list_available_midi_drivers(lscp_client_t *pClient)
Definition: device.c:685
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:949
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:597
_lscp_param_info_t::fix
int fix
Definition: device.h:63
lscp_mutex_unlock
#define lscp_mutex_unlock(m)
Definition: thread.h:76
_lscp_driver_info_t
Definition: device.h:75
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:1006
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:626
lscp_list_midi_devices
int * lscp_list_midi_devices(lscp_client_t *pClient)
Definition: device.c:863
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:977
LSCP_FAILED
@ LSCP_FAILED
Definition: thread.h:72
lscp_get_param_value
const char * lscp_get_param_value(lscp_param_t *pParams, const char *pszParam)
Definition: device.c:1027
lscp_create_audio_device
int lscp_create_audio_device(lscp_client_t *pClient, const char *pszAudioDriver, lscp_param_t *pParams)
Definition: device.c:396
LSCP_TYPE_STRING
@ LSCP_TYPE_STRING
Definition: device.h:61
lscp_get_available_audio_drivers
int lscp_get_available_audio_drivers(lscp_client_t *pClient)
Definition: device.c:278
lscp_get_available_midi_drivers
int lscp_get_available_midi_drivers(lscp_client_t *pClient)
Definition: device.c:656
lscp_get_midi_device_info
lscp_device_info_t * lscp_get_midi_device_info(lscp_client_t *pClient, int iMidiDevice)
Definition: device.c:898
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:542
lscp_get_param_value
const char * lscp_get_param_value(lscp_param_t *pParams, const char *pszParam)
Definition: device.c:1027
lscp_get_audio_driver_info
lscp_driver_info_t * lscp_get_audio_driver_info(lscp_client_t *pClient, const char *pszAudioDriver)
Definition: device.c:342
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:1006
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:542
lscp_client_get_result
const char * lscp_client_get_result(lscp_client_t *pClient)
Definition: client.c:710
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:366
lscp_list_audio_devices
int * lscp_list_audio_devices(lscp_client_t *pClient)
Definition: device.c:483
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:949
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:597
lscp_mutex_lock
#define lscp_mutex_lock(m)
Definition: thread.h:75
lscp_create_audio_device
int lscp_create_audio_device(lscp_client_t *pClient, const char *pszAudioDriver, lscp_param_t *pParams)
Definition: device.c:396
_lscp_device_info_t
Definition: device.h:85
_lscp_param_info_t::multiplicity
int multiplicity
Definition: device.h:64
lscp_destroy_midi_device
lscp_status_t lscp_destroy_midi_device(lscp_client_t *pClient, int iMidiDevice)
Definition: device.c:810
_lscp_param_info_t::depends
char ** depends
Definition: device.h:65
lscp_get_audio_driver_info
lscp_driver_info_t * lscp_get_audio_driver_info(lscp_client_t *pClient, const char *pszAudioDriver)
Definition: device.c:342
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:977
lscp_get_audio_device_info
lscp_device_info_t * lscp_get_audio_device_info(lscp_client_t *pClient, int iAudioDevice)
Definition: device.c:518
lscp_type_t
enum _lscp_type_t lscp_type_t
_lscp_param_t
Definition: device.h:49
_lscp_param_info_t::mandatory
int mandatory
Definition: device.h:62
lscp_list_available_audio_drivers
const char ** lscp_list_available_audio_drivers(lscp_client_t *pClient)
Definition: device.c:307
lscp_list_audio_devices
int * lscp_list_audio_devices(lscp_client_t *pClient)
Definition: device.c:483
lscp_get_midi_device_info
lscp_device_info_t * lscp_get_midi_device_info(lscp_client_t *pClient, int iMidiDevice)
Definition: device.c:898
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:922
lscp_list_available_midi_drivers
const char ** lscp_list_available_midi_drivers(lscp_client_t *pClient)
Definition: device.c:685
lscp_status_t
enum _lscp_status_t lscp_status_t
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:922
_lscp_device_port_info_t
Definition: device.h:94
_lscp_param_info_t::type
lscp_type_t type
Definition: device.h:60
LSCP_TYPE_FLOAT
@ LSCP_TYPE_FLOAT
Definition: device.h:60
lscp_destroy_audio_device
lscp_status_t lscp_destroy_audio_device(lscp_client_t *pClient, int iAudioDevice)
Definition: device.c:430
_lscp_param_info_t::description
char * description
Definition: device.h:61
_lscp_param_t::value
char * value
Definition: device.h:52
_lscp_driver_info_t::version
char * version
Definition: device.h:78
lscp_get_midi_driver_info
lscp_driver_info_t * lscp_get_midi_driver_info(lscp_client_t *pClient, const char *pszMidiDriver)
Definition: device.c:720
LSCP_TYPE_INT
@ LSCP_TYPE_INT
Definition: device.h:59
lscp_list_available_audio_drivers
const char ** lscp_list_available_audio_drivers(lscp_client_t *pClient)
Definition: device.c:307
lscp_get_audio_devices
int lscp_get_audio_devices(lscp_client_t *pClient)
Definition: device.c:454
lscp_param_t
struct _lscp_param_t lscp_param_t
_lscp_device_info_t::driver
char * driver
Definition: device.h:87
lscp_driver_info_t
struct _lscp_driver_info_t lscp_driver_info_t
LSCP_OK
@ LSCP_OK
Definition: thread.h:71
lscp_client_t
struct _lscp_client_t lscp_client_t
Definition: client.h:162
lscp_get_available_audio_drivers
int lscp_get_available_audio_drivers(lscp_client_t *pClient)
Definition: device.c:278
lscp_get_audio_device_info
lscp_device_info_t * lscp_get_audio_device_info(lscp_client_t *pClient, int iAudioDevice)
Definition: device.c:518
_lscp_device_port_info_t::params
lscp_param_t * params
Definition: device.h:97
lscp_device_port_info_t
struct _lscp_device_port_info_t lscp_device_port_info_t
LSCP_BUFSIZ
#define LSCP_BUFSIZ
Definition: socket.h:56
lscp_client_query
lscp_status_t lscp_client_query(lscp_client_t *pClient, const char *pszQuery)
Definition: client.c:682
lscp_get_midi_driver_info
lscp_driver_info_t * lscp_get_midi_driver_info(lscp_client_t *pClient, const char *pszMidiDriver)
Definition: device.c:720
_lscp_driver_info_t::parameters
char ** parameters
Definition: device.h:79
_lscp_param_info_t
Definition: device.h:58
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:569
lscp_get_audio_devices
int lscp_get_audio_devices(lscp_client_t *pClient)
Definition: device.c:454
_lscp_param_info_t::defaultv
char * defaultv
Definition: device.h:66
_lscp_param_info_t::range_max
char * range_max
Definition: device.h:68
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:569
lscp_list_midi_devices
int * lscp_list_midi_devices(lscp_client_t *pClient)
Definition: device.c:863
_lscp_param_t::key
char * key
Definition: device.h:51
lscp_device_info_t
struct _lscp_device_info_t lscp_device_info_t
_lscp_param_info_t::possibilities
char ** possibilities
Definition: device.h:69
LSCP_TYPE_NONE
@ LSCP_TYPE_NONE
Definition: device.h:57
_lscp_type_t
_lscp_type_t
Definition: device.h:37
lscp_param_info_t
struct _lscp_param_info_t lscp_param_info_t
_lscp_driver_info_t::description
char * description
Definition: device.h:77
lscp_get_available_midi_drivers
int lscp_get_available_midi_drivers(lscp_client_t *pClient)
Definition: device.c:656
LSCP_TYPE_BOOL
@ LSCP_TYPE_BOOL
Definition: device.h:58
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:746
lscp_create_midi_device
int lscp_create_midi_device(lscp_client_t *pClient, const char *pszMidiDriver, lscp_param_t *pParams)
Definition: device.c:776
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:746
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:366
_lscp_device_info_t::params
lscp_param_t * params
Definition: device.h:88
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:626
lscp_get_midi_devices
int lscp_get_midi_devices(lscp_client_t *pClient)
Definition: device.c:834
client.h
lscp_destroy_audio_device
lscp_status_t lscp_destroy_audio_device(lscp_client_t *pClient, int iAudioDevice)
Definition: device.c:430
lscp_destroy_midi_device
lscp_status_t lscp_destroy_midi_device(lscp_client_t *pClient, int iMidiDevice)
Definition: device.c:810
lscp_create_midi_device
int lscp_create_midi_device(lscp_client_t *pClient, const char *pszMidiDriver, lscp_param_t *pParams)
Definition: device.c:776
lscp_get_midi_devices
int lscp_get_midi_devices(lscp_client_t *pClient)
Definition: device.c:834