iVoiceCallSource.h
1 #ifndef IVOICECALLSOURCE_H_
2 #define IVOICECALLSOURCE_H_
3 
4 #include "iCall.h"
5 #include "iSim.h" //Eliminate when dpyModem::CallStatus is not used
6 #include <list>
7 #include <boost/shared_ptr.hpp>
8 #include <mutex>
9 
10 
11 namespace dpyVoicecall {
12 
13 typedef enum
14 {
15  ADDED = 0,
16  REMOVED = 1,
17 } ListEvent;
18 
19 typedef enum
20 {
21  DISABLED = 0,
22  ENABLED = 1,
23  BUSY = 2,
24 } SourceStatus;
25 
26 
27 typedef enum {
28  SIM_CARD = 0,
29  VoIP = 1,
30 } SourceType;
31 
34 {
35  std::string source="";
37 };
38 
41 {
61 };
62 
63 }
64 
70 {
71 public:
72 
78  virtual void updateSourceStatus(const std::string& sourceid, const dpyVoicecall::SourceStatus& status) = 0;
79 
86  virtual void processCallStatusEvent(const std::string& sourceid,const std::string& callid, const dpyVoicecall::CallStatus& status) = 0;
87 
92  {
93  }
94 };
95 
102 {
103 private:
104  std::string mId;
105  dpyVoicecall::SourceStatus mStatus; //< VoiceCall source status
106  std::vector<VoiceCallSourceObserver*> mObserversList;
107  std::mutex mStatusMutex; //< Mutex for VoiceCall source status
108  std::mutex mObserversMutex; //< Mutex for VoiceCallSource observers list
109 
110 protected:
116  void notifySourceStatusUpdate(const std::string& sourceid, const dpyVoicecall::SourceStatus& status);
117  void notifyCallStatusEvent(const std::string& sourceid,const std::string& callid, const dpyVoicecall::CallStatus& status);
118 
119 public:
120 
125  explicit IVoiceCallSource(const std::string& id);
126 
130  virtual ~IVoiceCallSource();
131 
135  virtual void start() = 0;
136 
140  virtual void stop() = 0;
141 
146  std::string getId() const;
147 
153 
159 
160 
166  virtual boost::system::error_code getCallStatus(dpyVoicecall::CallStatus& status) = 0;
167 
172  virtual std::list<boost::shared_ptr<ICall>> getCallList() = 0;
173 
180  virtual boost::system::error_code getCallInfo(const std::string& callid, dpyVoicecall::CallInformation& info) = 0;
181 
188  virtual boost::system::error_code makeCall(const std::string& destination, std::string& callid) = 0;
189 
194  virtual boost::system::error_code answerCall(const std::string& callid) = 0;
195 
200  virtual boost::system::error_code finishCall(const std::string& callid) = 0;
201 
207  virtual boost::system::error_code muteCall(const std::string& callid, const bool& mute) = 0;
208 
213  virtual boost::system::error_code redialLastNumber() = 0;
214 
221  virtual boost::system::error_code setCallConfigParameter(const dpyVoicecall::CallParameter& param,const std::string& value) = 0;
222 
227  virtual std::map<dpyVoicecall::CallParameter,std::string> getCallConfigParameters() = 0;
228 
234  boost::system::error_code subscribe(VoiceCallSourceObserver* observer);
235 
241  boost::system::error_code unsubscribe(VoiceCallSourceObserver* observer);
242 
243 
244 };
245 
246 #endif /* IVOICECALLSOURCE_H_ */
virtual boost::system::error_code finishCall(const std::string &callid)=0
Finish an active call.
@ MICRO_ADC_GAIN
Amplification of the microphone. ADC Gain.
Definition: iVoiceCallSource.h:48
@ RINGTONE
Type of ring tone.
Definition: iVoiceCallSource.h:45
@ REMOVED
REMOVED.
Definition: iVoiceCallSource.h:16
dpyVoicecall::SourceStatus getSourceStatus()
Retrieve source status from the voice call source.
virtual std::map< dpyVoicecall::CallParameter, std::string > getCallConfigParameters()=0
Get call configuration parameters.
@ SIP_CODECS
Allowed audio codecs.
Definition: iVoiceCallSource.h:54
@ VOLUME_RINGTONE
Volume of ring tone,varies from low to high.
Definition: iVoiceCallSource.h:46
boost::system::error_code subscribe(VoiceCallSourceObserver *observer)
Subscribe to the different voice call source events.
@ NUM_OF_RINGS
Number of rings before automatic answer if it is enabled.
Definition: iVoiceCallSource.h:42
@ VOLUME_PERCENT
Percentage of volume.
Definition: iVoiceCallSource.h:47
@ VoIP
Voice IP source type.
Definition: iVoiceCallSource.h:29
virtual boost::system::error_code answerCall(const std::string &callid)=0
Answer a incoming call.
virtual void start()=0
Start Source operations.
@ DISABLED
DISABLED.
Definition: iVoiceCallSource.h:21
@ SIP_ACCOUNT
SIP Account for baresip.
Definition: iVoiceCallSource.h:51
@ AUDIO_FILTER_MODULES
Baresip audio filter modules.
Definition: iVoiceCallSource.h:60
@ AUPLAY_SRATE
Audio play sample rate.
Definition: iVoiceCallSource.h:56
virtual boost::system::error_code muteCall(const std::string &callid, const bool &mute)=0
Mute or unmute an active call.
VoiceCallSource Observer class.
Definition: iVoiceCallSource.h:69
Defines the structure containing voice call source information.
Definition: iVoiceCallSource.h:33
virtual void stop()=0
Stop Source operations.
@ ENABLED
ENABLED.
Definition: iVoiceCallSource.h:22
void setSourceStatus(dpyVoicecall::SourceStatus status)
set source status of the voice call source
@ BUSY
BUSY.
Definition: iVoiceCallSource.h:23
std::string getId() const
Retrieve the voice call source ID.
ListEvent
Definition: iVoiceCallSource.h:13
@ APP_MODULES
Baresip app modules.
Definition: iVoiceCallSource.h:59
Struct to keep information of a call.
Definition: iCall.h:43
CallParameter
Defines the Voice Call Configuration parameters that can be configured.
Definition: iVoiceCallSource.h:40
virtual ~VoiceCallSourceObserver()
Destructor.
Definition: iVoiceCallSource.h:91
@ AUTOMATIC_ANSWER
Automatic answer.
Definition: iVoiceCallSource.h:43
virtual std::list< boost::shared_ptr< ICall > > getCallList()=0
Retrieve call list from the voice call source.
virtual boost::system::error_code getCallInfo(const std::string &callid, dpyVoicecall::CallInformation &info)=0
Retrieve call related information.
@ SIM_CARD
Sim card.
Definition: iVoiceCallSource.h:28
SourceStatus
Source Status.
Definition: iVoiceCallSource.h:19
virtual void updateSourceStatus(const std::string &sourceid, const dpyVoicecall::SourceStatus &status)=0
Method called with source status state change.
virtual ~IVoiceCallSource()
Destructor.
virtual boost::system::error_code redialLastNumber()=0
Redial the number that is associated with the last voice call.
@ NUM_OF_RETRIES
Maximum retries number.
Definition: iVoiceCallSource.h:50
@ OPUS_BITRATE
Opus bitrate.
Definition: iVoiceCallSource.h:57
Deepsy Voicecall namespace that includes the different enums, structs or method signatures that shoul...
virtual boost::system::error_code setCallConfigParameter(const dpyVoicecall::CallParameter &param, const std::string &value)=0
Set call configuration for a specific parameter.
CallStatus
Defines the possible call status that a sim can report.
Definition: iCall.h:22
@ RTP_LOCAL_PORT_RANGE
Local RTP ports.
Definition: iVoiceCallSource.h:53
@ AUDIO_MODE
Audio mode.
Definition: iVoiceCallSource.h:44
virtual void processCallStatusEvent(const std::string &sourceid, const std::string &callid, const dpyVoicecall::CallStatus &status)=0
Method called with call status state change.
@ AUSRC_SRATE
Audio src sample rate.
Definition: iVoiceCallSource.h:55
Voice Call Source interface.
Definition: iVoiceCallSource.h:101
IVoiceCallSource(const std::string &id)
Constructor.
virtual dpyVoicecall::SourceType getVoiceCallSourceType()=0
Get source type.
@ ADDED
ADDED.
Definition: iVoiceCallSource.h:15
@ JACK_MODULE
Jack module.
Definition: iVoiceCallSource.h:58
@ MICRO_MULT_FACTOR
Amplification of the microphone. Multiplication factor.
Definition: iVoiceCallSource.h:49
SourceType
Definition: iVoiceCallSource.h:27
SourceType type
Voice Call Source type.
Definition: iVoiceCallSource.h:36
virtual boost::system::error_code getCallStatus(dpyVoicecall::CallStatus &status)=0
Retrieve call status from the voice call source.
boost::system::error_code unsubscribe(VoiceCallSourceObserver *observer)
Unsubscribe from the different voice call source events.
virtual boost::system::error_code makeCall(const std::string &destination, std::string &callid)=0
Performs a call to a specified phone number.
@ SIP_LOCAL_PORT
Local SIP port.
Definition: iVoiceCallSource.h:52