summaryrefslogtreecommitdiff
path: root/include/libgsmd/voicecall.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/libgsmd/voicecall.h')
-rw-r--r--include/libgsmd/voicecall.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/include/libgsmd/voicecall.h b/include/libgsmd/voicecall.h
index 2d9609c..ac7b99c 100644
--- a/include/libgsmd/voicecall.h
+++ b/include/libgsmd/voicecall.h
@@ -5,6 +5,29 @@
/* Voice Calls */
+/*
+ * call related supplementary services from 3GPP TS 02.30 4.5.5.1
+ * R - Release
+ * A - Accept
+ * H - Hold
+ * M - Multiparty
+ */
+enum lgsm_voicecall_ctrl_proc {
+ LGSM_VOICECALL_CTRL_R_HLDS = 0, // 0
+ LGSM_VOICECALL_CTRL_UDUB = 1, // 0
+ LGSM_VOICECALL_CTRL_R_ACTS_A_HLD_WAIT = 2, // 1
+ LGSM_VOICECALL_CTRL_R_ACT_X = 3, // 1x
+ LGSM_VOICECALL_CTRL_H_ACTS_A_HLD_WAIT = 4, // 2
+ LGSM_VOICECALL_CTRL_H_ACTS_EXCEPT_X = 5, // 2x
+ LGSM_VOICECALL_CTRL_M_HELD = 6, // 3
+};
+
+/* Refer to GSM 07.07 subclause 7.12 and 02.30 subclause 4.5.5.1 */
+struct lgsm_voicecall_ctrl {
+ enum lgsm_voicecall_ctrl_proc proc;
+ int idx;
+};
+
/* Initiate an outgoing voice call */
extern int lgsm_voice_out_init(struct lgsm_handle *lh,
const struct lgsm_addr *number);
@@ -21,4 +44,8 @@ extern int lgsm_voice_dtmf(struct lgsm_handle *lh, char dtmf_char);
/* Get call status */
extern int lgsm_voice_get_status(struct lgsm_handle *lh);
+/* Call control */
+extern int lgsm_voice_ctrl(struct lgsm_handle *lh,
+ const struct lgsm_voicecall_ctrl *ctrl);
+
#endif
personal git repositories of Harald Welte. Your mileage may vary