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:
115  void setSourceStatus(dpyVoicecall::SourceStatus status);
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 
152  virtual dpyVoicecall::SourceType getVoiceCallSourceType() = 0;
153 
158  dpyVoicecall::SourceStatus getSourceStatus();
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_ */
ListEvent
Definition: iVoiceCallSource.h:13
CallStatus
Defines the possible call status that a sim can report.
Definition: iCall.h:22
Automatic answer.
Definition: iVoiceCallSource.h:43
Audio src sample rate.
Definition: iVoiceCallSource.h:55
Voice IP source type.
Definition: iVoiceCallSource.h:29
Audio mode.
Definition: iVoiceCallSource.h:44
Opus bitrate.
Definition: iVoiceCallSource.h:57
Voice Call Source interface.
Definition: iVoiceCallSource.h:101
SourceStatus
Source Status.
Definition: iVoiceCallSource.h:19
SourceType type
Voice Call Source type.
Definition: iVoiceCallSource.h:36
Baresip app modules.
Definition: iVoiceCallSource.h:59
Local RTP ports.
Definition: iVoiceCallSource.h:53
Defines the structure containing voice call source information.
Definition: iVoiceCallSource.h:33
Type of ring tone.
Definition: iVoiceCallSource.h:45
SourceType
Definition: iVoiceCallSource.h:27
Amplification of the microphone. Multiplication factor.
Definition: iVoiceCallSource.h:49
Baresip audio filter modules.
Definition: iVoiceCallSource.h:60
virtual ~VoiceCallSourceObserver()
Destructor.
Definition: iVoiceCallSource.h:91
Jack module.
Definition: iVoiceCallSource.h:58
SIP Account for baresip.
Definition: iVoiceCallSource.h:51
Local SIP port.
Definition: iVoiceCallSource.h:52
Allowed audio codecs.
Definition: iVoiceCallSource.h:54
Audio play sample rate.
Definition: iVoiceCallSource.h:56
VoiceCallSource Observer class.
Definition: iVoiceCallSource.h:69
CallParameter
Defines the Voice Call Configuration parameters that can be configured.
Definition: iVoiceCallSource.h:40
Deepsy Voicecall namespace that includes the different enums, structs or method signatures that shoul...
ENABLED.
Definition: iVoiceCallSource.h:22
REMOVED.
Definition: iVoiceCallSource.h:16
Maximum retries number.
Definition: iVoiceCallSource.h:50
Amplification of the microphone. ADC Gain.
Definition: iVoiceCallSource.h:48
Volume of ring tone,varies from low to high.
Definition: iVoiceCallSource.h:46
BUSY.
Definition: iVoiceCallSource.h:23
Number of rings before automatic answer if it is enabled.
Definition: iVoiceCallSource.h:42
Struct to keep information of a call.
Definition: iCall.h:43
DISABLED.
Definition: iVoiceCallSource.h:21
Percentage of volume.
Definition: iVoiceCallSource.h:47
ADDED.
Definition: iVoiceCallSource.h:15
Sim card.
Definition: iVoiceCallSource.h:28