audioApi.h
Go to the documentation of this file.
1 
3 #pragma once
4 
8 #include <boost/function.hpp>
9 #include <boost/system/error_code.hpp>
10 #include <boost/shared_ptr.hpp>
11 #include <vector>
12 #include <list>
13 
14 #include "iAudioTask.h"
15 #include "audioConfig.h"
16 
17 class AudioClient;
18 
19 #ifndef AUDIO_TYPES
20 #define AUDIO_TYPES
21 
27 namespace dpyAudio {
28 
34 
35 public:
40  virtual void updateAvailability(const bool &available) = 0;
41 
46  {
47  }
48 };
49 
55 typedef boost::function<void(boost::system::error_code&, std::list<dpyAudio::Port> portList)> port_list_handler_function;
56 
62 typedef boost::function<void(boost::system::error_code&, std::list<dpyAudio::AudioConfig> configurations)> audio_configuration_handler_function;
63 
69 typedef boost::function<void(boost::system::error_code&, std::list<dpyAudio::Connection> ConnectionList)> connection_list_handler_function;
70 
76 typedef boost::function<void(boost::system::error_code&, dpyAudio::Port& port)> port_handler_function;
77 
83 typedef boost::function<void(boost::system::error_code&, dpyAudio::Connection connection)> connection_handler_function;
84 
89 typedef boost::function<void(const boost::system::error_code&)> result_handler_function;
90 
98 typedef boost::function<void(boost::system::error_code error_code, ConnectionListEventType type, Connection con)> connection_list_event_handler_function;
99 
107 typedef boost::function<void(boost::system::error_code error_code, ConnectionStatusEventType type, Connection con)> connection_status_event_handler_function;
108 
116 typedef boost::function<void(boost::system::error_code error_code, PortEventType type, dpyAudio::Port port)> port_event_handler_function;
117 
125 typedef boost::function<void(boost::system::error_code error_code, int taskId, dpyAudio::TaskType type, dpyAudio::AudioTaskStatus status)> task_event_handler_function;
126 
134 typedef boost::function<void(boost::system::error_code error_code, PortGpioEventType type, dpyAudio::PortGpio port_gpio)> port_gpio_event_handler_function;
135 
141 typedef boost::function<void(boost::system::error_code, int ID)> audio_task_handler_function;
142 
148 typedef boost::function<void(boost::system::error_code, int ID)> stop_task_handler;
149 
157 typedef boost::function<void(boost::system::error_code ec, int taskId, dpyAudio::TaskType taskType, dpyAudio::AudioTaskStatus taskStatus)> audio_task_status_handler_function;
158 
164 typedef boost::function<void(boost::system::error_code ec, std::list<std::pair<int, dpyAudio::AudioTaskInformation>> taskinfolist)> all_audio_task_info_handler_function;
165 
166 
172 typedef boost::function<void(boost::system::error_code&)> audio_set_configuration_handler_function;
173 
180 typedef boost::function<void(boost::system::error_code&, dpyAudio::Connection connection, unsigned int volume)> set_connection_volume_handler_function;
181 
188 typedef boost::function<void(boost::system::error_code&, dpyAudio::Connection connection, unsigned int gain)> set_connection_gain_handler_function;
189 
195 typedef boost::function<void(boost::system::error_code& ec, std::list<dpyAudio::PortGpio> portgpiolist)> get_port_gpio_handler_function;
196 
197 }//dpyAudio
198 
199 
200 #endif
201 
202 
208 class Audio
209 {
210 
211 private:
212  boost::shared_ptr<AudioClient> mClient;
213  std::vector<dpyAudio::ServiceAvailabilityObserver*> mAvailObserverList;
214 public:
215 
216  explicit Audio(std::string ip = "127.0.0.1");
217  ~Audio();
218 
219 
220  bool isAlive();
221  boost::system::error_code monitorServiceAvailability_S(dpyAudio::ServiceAvailabilityObserver* observer);
222  boost::system::error_code monitorServiceAvailability_U(dpyAudio::ServiceAvailabilityObserver* observer);
223 
227  void asyncGetPortList(dpyAudio::port_list_handler_function handler);
229  void asyncGetConnectionList(dpyAudio::connection_list_handler_function handler);
230  void asyncCreatePort(const dpyAudio::Port& port, dpyAudio::port_handler_function handler);
231  void asyncRemovePort(const dpyAudio::Port& port, dpyAudio::port_handler_function handler);
233 
234  void asyncCreateConnection(const dpyAudio::Connection& connection, dpyAudio::connection_handler_function handler);
235  void asyncRemoveConnection(const dpyAudio::Connection& connection, dpyAudio::connection_handler_function handler);
236  void asyncPlay(const dpyAudio::Port& port, std::string audioFilePath, std::list<dpyAudio::AudioConfig> configurations, dpyAudio::audio_task_handler_function handler);
237  void asyncRecord(const dpyAudio::Port& port, std::string outputAudioFile, std::list<dpyAudio::AudioConfig> configurations, dpyAudio::audio_task_handler_function handler);
238  void asyncStop(const int recordId,dpyAudio::stop_task_handler handler);
239  void getTaskStatus(int taskId, dpyAudio::audio_task_status_handler_function handler);
240  void asyncGetAllTaskInfo(dpyAudio::all_audio_task_info_handler_function handler);
241 
242  void asyncSetAudioConfiguration(dpyAudio::AudioConfig configuration, dpyAudio::audio_set_configuration_handler_function handler);
243  void asyncGetAudioConfiguration(dpyAudio::audio_configuration_handler_function handler);
244 
245  void portEvents_S(dpyAudio::port_event_handler_function handler);
246  void portEvents_U();
247  void connectionListEvents_S(dpyAudio::connection_list_event_handler_function handler);
248  void connectionStatusEvents_S(dpyAudio::connection_status_event_handler_function handler);
249  void connectionListEvents_U();
250  void connectionStatusEvents_U();
251  void taskEvents_S(dpyAudio::task_event_handler_function handler);
252  void taskEvents_U();
253  void portGpioEvents_S(dpyAudio::port_gpio_event_handler_function handler);
254  void portGpioEvents_U();
255 
256  void asyncSetVolume(const dpyAudio::Connection &connection, int volume, dpyAudio::set_connection_volume_handler_function handler);
257  void asyncSetGain(const dpyAudio::Connection &connection, int gain, dpyAudio::set_connection_gain_handler_function handler);
258  void asyncSetPortGpio(const dpyAudio::PortGpio &port_gpio, dpyAudio::result_handler_function handler);
259  void asyncUnsetPortGpio(const dpyAudio::Port &port, dpyAudio::result_handler_function handler);
260  void asyncGetPortGpio(dpyAudio::get_port_gpio_handler_function handler);
261 
262 };
virtual void updateAvailability(const bool &available)=0
Method called when service availability changes.
Struct defining a port.
Definition: audioTypes.h:79
boost::function< void(boost::system::error_code &, std::list< dpyAudio::Connection > ConnectionList)> connection_list_handler_function
Handler for get connection list method.
Definition: audioApi.h:69
boost::function< void(boost::system::error_code &, std::list< dpyAudio::AudioConfig > configurations)> audio_configuration_handler_function
Prototype of the handler function for getting the audio configuration.
Definition: audioApi.h:62
boost::function< void(boost::system::error_code &, dpyAudio::Connection connection, unsigned int gain)> set_connection_gain_handler_function
Handler for set connection gain method.
Definition: audioApi.h:188
boost::function< void(boost::system::error_code &, dpyAudio::Port &port)> port_handler_function
Handler for create/remove port.
Definition: audioApi.h:76
Deepsy Audio namespace that includes the different enums, structs or method signatures that should be...
Service Availability observer class.
Definition: audioApi.h:33
boost::function< void(boost::system::error_code &, std::list< dpyAudio::Port > portList)> port_list_handler_function
Handler for get port list method.
Definition: audioApi.h:55
Struct defining audio configuration.
Definition: audioConfig.h:38
boost::function< void(boost::system::error_code ec, std::list< std::pair< int, dpyAudio::AudioTaskInformation >> taskinfolist)> all_audio_task_info_handler_function
Prototype of the handler function for getting the status of all tasks.
Definition: audioApi.h:164
boost::function< void(boost::system::error_code error_code, PortGpioEventType type, dpyAudio::PortGpio port_gpio)> port_gpio_event_handler_function
Handler for PortGpio event callback This type of function is called when an event happens...
Definition: audioApi.h:134
virtual ~ServiceAvailabilityObserver()
Destructor.
Definition: audioApi.h:45
boost::function< void(boost::system::error_code error_code, int taskId, dpyAudio::TaskType type, dpyAudio::AudioTaskStatus status)> task_event_handler_function
Handler for audio track event callback This type of function is called when an event happens...
Definition: audioApi.h:125
boost::function< void(boost::system::error_code error_code, PortEventType type, dpyAudio::Port port)> port_event_handler_function
Handler for port event callback This type of function is called when an event happens.
Definition: audioApi.h:116
boost::function< void(boost::system::error_code &, dpyAudio::Connection connection)> connection_handler_function
Handler for create/remove connection method.
Definition: audioApi.h:83
Struct defining a connection between two ports.
Definition: audioTypes.h:130
boost::function< void(boost::system::error_code, int ID)> audio_task_handler_function
Prototype of the handler function for playing or recording audio.
Definition: audioApi.h:141
boost::function< void(boost::system::error_code &)> audio_set_configuration_handler_function
Prototype of the handler function for getting the audio configuration.
Definition: audioApi.h:172
boost::function< void(boost::system::error_code &ec, std::list< dpyAudio::PortGpio > portgpiolist)> get_port_gpio_handler_function
Prototype of the handler function for getting all gpios assigned to ports.
Definition: audioApi.h:195
Interacts with Audio service.
Definition: audioClient.h:13
boost::function< void(boost::system::error_code error_code, ConnectionStatusEventType type, Connection con)> connection_status_event_handler_function
Handler for connection status event function callback This type of function is called when an event h...
Definition: audioApi.h:107
Struct defining an assignment between a port and a gpio.
Definition: audioTypes.h:145
boost::function< void(boost::system::error_code ec, int taskId, dpyAudio::TaskType taskType, dpyAudio::AudioTaskStatus taskStatus)> audio_task_status_handler_function
Prototype of the handler function for getting the status of the task.
Definition: audioApi.h:157
boost::function< void(boost::system::error_code error_code, ConnectionListEventType type, Connection con)> connection_list_event_handler_function
Handler for connection list event function callback This type of function is called when an event hap...
Definition: audioApi.h:98
boost::function< void(boost::system::error_code &, dpyAudio::Connection connection, unsigned int volume)> set_connection_volume_handler_function
Handler for set connection volume method.
Definition: audioApi.h:180
boost::function< void(const boost::system::error_code &)> result_handler_function
Handler for a method which needs a result.
Definition: audioApi.h:89
Allows to interact with a Audio service.
Definition: audioApi.h:208
boost::function< void(boost::system::error_code, int ID)> stop_task_handler
Prototype of the handler function for stopping an audio recording.
Definition: audioApi.h:148