aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2014-02-17 12:59:00 +0100
committerAleksander Morgado <aleksander@aleksander.es>2015-02-07 20:42:44 +0100
commit350cd9a06c547f37445fb37e3e32a152f657218f (patch)
tree7cd2d50bc9ed604660f232d68a2267f7c015f278 /src
parent22628a69dad6a1c4b0400dacf1c13c48425faf69 (diff)
voice: initial support for the Voice service
Diffstat (limited to 'src')
-rw-r--r--src/libqmi-glib/Makefile.am2
-rw-r--r--src/libqmi-glib/generated/Makefile.am25
-rw-r--r--src/libqmi-glib/libqmi-glib.h3
-rw-r--r--src/libqmi-glib/qmi-device.c5
-rw-r--r--src/libqmi-glib/qmi-enums-voice.h245
-rw-r--r--src/libqmi-glib/qmi-message.c4
6 files changed, 279 insertions, 5 deletions
diff --git a/src/libqmi-glib/Makefile.am b/src/libqmi-glib/Makefile.am
index a29574c..e046897 100644
--- a/src/libqmi-glib/Makefile.am
+++ b/src/libqmi-glib/Makefile.am
@@ -28,6 +28,7 @@ libqmi_glib_la_SOURCES = \
qmi-enums-uim.h \
qmi-enums-oma.h \
qmi-enums-wda.h \
+ qmi-enums-voice.h \
qmi-enums.h qmi-enums-private.h \
qmi-utils.h qmi-utils.c \
qmi-message.h qmi-message.c \
@@ -58,6 +59,7 @@ include_HEADERS = \
qmi-enums-uim.h \
qmi-enums-oma.h \
qmi-enums-wda.h \
+ qmi-enums-voice.h \
qmi-utils.h \
qmi-message.h \
qmi-device.h \
diff --git a/src/libqmi-glib/generated/Makefile.am b/src/libqmi-glib/generated/Makefile.am
index b803b5e..2eda73b 100644
--- a/src/libqmi-glib/generated/Makefile.am
+++ b/src/libqmi-glib/generated/Makefile.am
@@ -15,7 +15,8 @@ GENERATED_H = \
qmi-pbm.h \
qmi-uim.h \
qmi-oma.h \
- qmi-wda.h
+ qmi-wda.h \
+ qmi-voice.h
GENERATED_C = \
qmi-error-types.c \
@@ -32,7 +33,8 @@ GENERATED_C = \
qmi-pbm.c \
qmi-uim.c \
qmi-oma.c \
- qmi-wda.c
+ qmi-wda.c \
+ qmi-voice.c
GENERATED_SECTIONS = \
qmi-ctl.sections \
@@ -44,7 +46,8 @@ GENERATED_SECTIONS = \
qmi-pbm.sections \
qmi-uim.sections \
qmi-oma.sections \
- qmi-wda.sections
+ qmi-wda.sections \
+ qmi-voice.sections
# Error types
qmi-error-types.h: $(top_srcdir)/src/libqmi-glib/qmi-errors.h $(top_srcdir)/build-aux/templates/qmi-error-types-template.h
@@ -78,10 +81,11 @@ ENUMS = \
$(top_srcdir)/src/libqmi-glib/qmi-enums-uim.h \
$(top_srcdir)/src/libqmi-glib/qmi-enums-oma.h \
$(top_srcdir)/src/libqmi-glib/qmi-enums-wda.h \
+ $(top_srcdir)/src/libqmi-glib/qmi-enums-voice.h \
$(top_srcdir)/src/libqmi-glib/qmi-device.h
qmi-enum-types.h: $(ENUMS) $(top_srcdir)/build-aux/templates/qmi-enum-types-template.h
$(AM_V_GEN) $(GLIB_MKENUMS) \
- --fhead "#ifndef __LIBQMI_GLIB_ENUM_TYPES_H__\n#define __LIBQMI_GLIB_ENUM_TYPES_H__\n#include \"qmi-enums.h\"\n#include \"qmi-enums-wds.h\"\n#include \"qmi-enums-dms.h\"\n#include \"qmi-enums-nas.h\"\n#include \"qmi-enums-wms.h\"\n#include \"qmi-enums-pds.h\"\n#include \"qmi-enums-pbm.h\"\n#include \"qmi-enums-uim.h\"\n#include \"qmi-enums-oma.h\"\n#include \"qmi-enums-wda.h\"\n#include \"qmi-device.h\"\n" \
+ --fhead "#ifndef __LIBQMI_GLIB_ENUM_TYPES_H__\n#define __LIBQMI_GLIB_ENUM_TYPES_H__\n#include \"qmi-enums.h\"\n#include \"qmi-enums-wds.h\"\n#include \"qmi-enums-dms.h\"\n#include \"qmi-enums-nas.h\"\n#include \"qmi-enums-wms.h\"\n#include \"qmi-enums-pds.h\"\n#include \"qmi-enums-pbm.h\"\n#include \"qmi-enums-uim.h\"\n#include \"qmi-enums-oma.h\"\n#include \"qmi-enums-wda.h\"\n#include \"qmi-enums-voice.h\"\n#include \"qmi-device.h\"\n" \
--template $(top_srcdir)/build-aux/templates/qmi-enum-types-template.h \
--ftail "#endif /* __LIBQMI_GLIB_ENUM_TYPES_H__ */\n" \
$(ENUMS) > $@
@@ -223,6 +227,16 @@ qmi-wda.h qmi-wda.c qmi-wda.sections: $(top_srcdir)/data/qmi-service-wda.json $(
--include $(top_srcdir)/data/qmi-common.json \
--output qmi-wda
+# VOICE service
+qmi-voice.h qmi-voice.c qmi-voice.sections: $(top_srcdir)/data/qmi-service-voice.json $(top_srcdir)/build-aux/qmi-codegen/*.py $(top_srcdir)/build-aux/qmi-codegen/qmi-codegen
+ $(AM_V_GEN) \
+ rm -f qmi-voice.h && \
+ rm -f qmi-voice.c && \
+ $(top_srcdir)/build-aux/qmi-codegen/qmi-codegen \
+ --input $(top_srcdir)/data/qmi-service-voice.json \
+ --include $(top_srcdir)/data/qmi-common.json \
+ --output qmi-voice
+
BUILT_SOURCES = $(GENERATED_H) $(GENERATED_C)
nodist_libqmi_glib_generated_la_SOURCES = \
@@ -254,6 +268,7 @@ nodist_include_HEADERS = \
qmi-pbm.h \
qmi-uim.h \
qmi-oma.h \
- qmi-wda.h
+ qmi-wda.h \
+ qmi-voice.h
CLEANFILES = $(GENERATED_H) $(GENERATED_C) $(GENERATED_SECTIONS)
diff --git a/src/libqmi-glib/libqmi-glib.h b/src/libqmi-glib/libqmi-glib.h
index fac1a15..1607180 100644
--- a/src/libqmi-glib/libqmi-glib.h
+++ b/src/libqmi-glib/libqmi-glib.h
@@ -65,6 +65,9 @@
#include "qmi-enums-wda.h"
#include "qmi-wda.h"
+#include "qmi-enums-voice.h"
+#include "qmi-voice.h"
+
/* generated */
#include "qmi-error-types.h"
#include "qmi-enum-types.h"
diff --git a/src/libqmi-glib/qmi-device.c b/src/libqmi-glib/qmi-device.c
index 8694e98..2c0b2d2 100644
--- a/src/libqmi-glib/qmi-device.c
+++ b/src/libqmi-glib/qmi-device.c
@@ -43,6 +43,7 @@
#include "qmi-uim.h"
#include "qmi-oma.h"
#include "qmi-wda.h"
+#include "qmi-voice.h"
#include "qmi-utils.h"
#include "qmi-error-types.h"
#include "qmi-enum-types.h"
@@ -985,6 +986,10 @@ qmi_device_allocate_client (QmiDevice *self,
ctx->client_type = QMI_TYPE_CLIENT_WDA;
break;
+ case QMI_SERVICE_VOICE:
+ ctx->client_type = QMI_TYPE_CLIENT_VOICE;
+ break;
+
default:
g_simple_async_result_set_error (ctx->result,
QMI_CORE_ERROR,
diff --git a/src/libqmi-glib/qmi-enums-voice.h b/src/libqmi-glib/qmi-enums-voice.h
new file mode 100644
index 0000000..924b09a
--- /dev/null
+++ b/src/libqmi-glib/qmi-enums-voice.h
@@ -0,0 +1,245 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * libqmi-glib -- GLib/GIO based library to control QMI devices
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2014 Aleksander Morgado <aleksander@aleksander.es>
+ */
+
+#ifndef _LIBQMI_GLIB_QMI_ENUMS_VOICE_H_
+#define _LIBQMI_GLIB_QMI_ENUMS_VOICE_H_
+
+#if !defined (__LIBQMI_GLIB_H_INSIDE__) && !defined (LIBQMI_GLIB_COMPILATION)
+#error "Only <libqmi-glib.h> can be included directly."
+#endif
+
+/**
+ * SECTION: qmi-enums-voice
+ * @title: VOICE enumerations and flags
+ *
+ * This section defines enumerations and flags used in the VOICE service
+ * interface.
+ */
+
+/*****************************************************************************/
+/* Helper enums for the 'QMI Voice All Call Status' indication */
+
+/**
+ * QmiVoiceCallState:
+ * @QMI_VOICE_CALL_STATE_UNKNOWN: Unknown state.
+ * @QMI_VOICE_CALL_STATE_ORIGINATION: Call is being originated.
+ * @QMI_VOICE_CALL_STATE_INCOMING: Incoming call.
+ * @QMI_VOICE_CALL_STATE_CONVERSATION: Call is in progress.
+ * @QMI_VOICE_CALL_STATE_CC_IN_PROGRESS: Call is originating but waiting for call control to complete.
+ * @QMI_VOICE_CALL_STATE_ALERTING: Alerting.
+ * @QMI_VOICE_CALL_STATE_HOLD: On hold.
+ * @QMI_VOICE_CALL_STATE_WAITING: Waiting.
+ * @QMI_VOICE_CALL_STATE_DISCONNECTING: Disconnecting.
+ * @QMI_VOICE_CALL_STATE_END: Call is finished.
+ * @QMI_VOICE_CALL_STATE_SETUP: MT call is in setup state (3GPP).
+ *
+ * State of a call.
+ */
+typedef enum {
+ QMI_VOICE_CALL_STATE_UNKNOWN = 0x00,
+ QMI_VOICE_CALL_STATE_ORIGINATION = 0x01,
+ QMI_VOICE_CALL_STATE_INCOMING = 0x02,
+ QMI_VOICE_CALL_STATE_CONVERSATION = 0x03,
+ QMI_VOICE_CALL_STATE_CC_IN_PROGRESS = 0x04,
+ QMI_VOICE_CALL_STATE_ALERTING = 0x05,
+ QMI_VOICE_CALL_STATE_HOLD = 0x06,
+ QMI_VOICE_CALL_STATE_WAITING = 0x07,
+ QMI_VOICE_CALL_STATE_DISCONNECTING = 0x08,
+ QMI_VOICE_CALL_STATE_END = 0x09,
+ QMI_VOICE_CALL_STATE_SETUP = 0x0A,
+} QmiVoiceCallState;
+
+/**
+ * QmiVoiceCallType:
+ * @QMI_VOICE_CALL_TYPE_VOICE: Voice call.
+ * @QMI_VOICE_CALL_TYPE_VOICE_IP: VoIP call.
+ * @QMI_VOICE_CALL_TYPE_OTAPA: OTAPA.
+ * @QMI_VOICE_CALL_TYPE_NON_STD_OTASP: Non-standard OTASP.
+ * @QMI_VOICE_CALL_TYPE_EMERGENCY: Emergency call.
+ * @QMI_VOICE_CALL_TYPE_SUPS: Supplementary service.
+ *
+ * Type of a voice call.
+ */
+typedef enum {
+ QMI_VOICE_CALL_TYPE_VOICE = 0x00,
+ QMI_VOICE_CALL_TYPE_VOICE_IP = 0x02,
+ QMI_VOICE_CALL_TYPE_OTAPA = 0x06,
+ QMI_VOICE_CALL_TYPE_NON_STD_OTASP = 0x08,
+ QMI_VOICE_CALL_TYPE_EMERGENCY = 0x09,
+ QMI_VOICE_CALL_TYPE_SUPS = 0x0A,
+} QmiVoiceCallType;
+
+/**
+ * QmiVoiceCallDirection:
+ * @QMI_VOICE_CALL_DIRECTION_UNKNOWN: Unknown.
+ * @QMI_VOICE_CALL_DIRECTION_MO: Mobile-originated.
+ * @QMI_VOICE_CALL_DIRECTION_MT: Mobile-terminated.
+ *
+ * Call direction.
+ */
+typedef enum {
+ QMI_VOICE_CALL_DIRECTION_UNKNOWN = 0x00,
+ QMI_VOICE_CALL_DIRECTION_MO = 0x01,
+ QMI_VOICE_CALL_DIRECTION_MT = 0x02,
+} QmiVoiceCallDirection;
+
+/**
+ * QmiVoiceCallMode:
+ * @QMI_VOICE_CALL_MODE_UNKNOWN: Unknown.
+ * @QMI_VOICE_CALL_MODE_CDMA: CDMA.
+ * @QMI_VOICE_CALL_MODE_GSM: GSM.
+ * @QMI_VOICE_CALL_MODE_UMTS: UMTS.
+ * @QMI_VOICE_CALL_MODE_LTE: LTE.
+ *
+ * Call mode.
+ */
+typedef enum {
+ QMI_VOICE_CALL_MODE_UNKNOWN = 0x00,
+ QMI_VOICE_CALL_MODE_CDMA = 0x01,
+ QMI_VOICE_CALL_MODE_GSM = 0x02,
+ QMI_VOICE_CALL_MODE_UMTS = 0x03,
+ QMI_VOICE_CALL_MODE_LTE = 0x04,
+} QmiVoiceCallMode;
+
+/**
+ * QmiVoiceAls:
+ * @QMI_VOICE_ALS_LINE_1: Line 1 (default).
+ * @QMI_VOICE_ALS_LINE_2: Line 2.
+ *
+ * ALS line indicator.
+ */
+typedef enum {
+ QMI_VOICE_ALS_LINE_1 = 0x00,
+ QMI_VOICE_ALS_LINE_2 = 0x01,
+} QmiVoiceAls;
+
+/**
+ * QmiVoicePresentation:
+ * @QMI_VOICE_PRESENTATION_ALLOWED: Allowed presentation.
+ * @QMI_VOICE_PRESENTATION_RESTRICTED: Restricted presentation.
+ * @QMI_VOICE_PRESENTATION_UNAVAILABLE: Unavailable presentation.
+ * @QMI_VOICE_PRESENTATION_PAYPHONE: Payphone presentation (3GPP only).
+ *
+ * Remote party number presentation indicator.
+ */
+typedef enum {
+ QMI_VOICE_PRESENTATION_ALLOWED = 0x00,
+ QMI_VOICE_PRESENTATION_RESTRICTED = 0x01,
+ QMI_VOICE_PRESENTATION_UNAVAILABLE = 0x02,
+ QMI_VOICE_PRESENTATION_PAYPHONE = 0x04,
+} QmiVoicePresentation;
+
+/*****************************************************************************/
+/* Helper enums for the 'QMI Voice Get Config' request/response */
+
+/**
+ * QmiVoiceTtyMode:
+ * @QMI_VOICE_TTY_MODE_FULL: Full.
+ * @QMI_VOICE_TTY_MODE_VCO: Voice carry over.
+ * @QMI_VOICE_TTY_MODE_HCO: Hearing carry over.
+ * @QMI_VOICE_TTY_MODE_OFF: Off.
+ *
+ * TTY mode.
+ *
+ */
+typedef enum {
+ QMI_VOICE_TTY_MODE_FULL = 0x00,
+ QMI_VOICE_TTY_MODE_VCO = 0x01,
+ QMI_VOICE_TTY_MODE_HCO = 0x02,
+ QMI_VOICE_TTY_MODE_OFF = 0x03,
+} QmiVoiceTtyMode;
+
+/**
+ * QmiVoiceServiceOption:
+ * @QMI_VOICE_SERVICE_OPTION_WILD: Any service option.
+ * @QMI_VOICE_SERVICE_OPTION_IS_96A: IS-96A.
+ * @QMI_VOICE_SERVICE_OPTION_EVRC: EVRC.
+ * @QMI_VOICE_SERVICE_OPTION_13K_IS733: IS733.
+ * @QMI_VOICE_SERVICE_OPTION_SELECTABLE_MODE_VOCODER: Selectable mode vocoder.
+ * @QMI_VOICE_SERVICE_OPTION_4GV_NARROW_BAND: 4GV narrowband.
+ * @QMI_VOICE_SERVICE_OPTION_4GV_WIDE_BAND: 4GV wideband.
+ * @QMI_VOICE_SERVICE_OPTION_13K: 13K.
+ * @QMI_VOICE_SERVICE_OPTION_IS_96: IS-96.
+ * @QMI_VOICE_SERVICE_OPTION_WVRC: WVRC.
+ *
+ * Service option.
+ */
+typedef enum {
+ QMI_VOICE_SERVICE_OPTION_WILD = 0x0000,
+ QMI_VOICE_SERVICE_OPTION_IS_96A = 0x0001,
+ QMI_VOICE_SERVICE_OPTION_EVRC = 0x0003,
+ QMI_VOICE_SERVICE_OPTION_13K_IS733 = 0x0011,
+ QMI_VOICE_SERVICE_OPTION_SELECTABLE_MODE_VOCODER = 0x0038,
+ QMI_VOICE_SERVICE_OPTION_4GV_NARROW_BAND = 0x0044,
+ QMI_VOICE_SERVICE_OPTION_4GV_WIDE_BAND = 0x0046,
+ QMI_VOICE_SERVICE_OPTION_13K = 0x8000,
+ QMI_VOICE_SERVICE_OPTION_IS_96 = 0x8001,
+ QMI_VOICE_SERVICE_OPTION_WVRC = 0x8023,
+} QmiVoiceServiceOption;
+
+/**
+ * QmiVoiceWcdmaAmrStatus:
+ * @QMI_VOICE_WCDMA_AMR_STATUS_NOT_SUPPORTED: Not supported.
+ * @QMI_VOICE_WCDMA_AMR_STATUS_WCDMA_AMR_WB: WCDMA AMR wideband.
+ * @QMI_VOICE_WCDMA_AMR_STATUS_GSM_HR_AMR: GSM half-rate AMR.
+ * @QMI_VOICE_WCDMA_AMR_STATUS_GSM_AMR_WB: GSM AMR wideband.
+ * @QMI_VOICE_WCDMA_AMR_STATUS_GSM_AMR_NB: GSM AMR narrowband.
+ *
+ * WCDMA AMR status.
+ */
+typedef enum {
+ QMI_VOICE_WCDMA_AMR_STATUS_NOT_SUPPORTED = 1 << 0,
+ QMI_VOICE_WCDMA_AMR_STATUS_WCDMA_AMR_WB = 1 << 1,
+ QMI_VOICE_WCDMA_AMR_STATUS_GSM_HR_AMR = 1 << 2,
+ QMI_VOICE_WCDMA_AMR_STATUS_GSM_AMR_WB = 1 << 3,
+ QMI_VOICE_WCDMA_AMR_STATUS_GSM_AMR_NB = 1 << 4,
+} QmiVoiceWcdmaAmrStatus;
+
+/**
+ * QmiVoicePrivacy:
+ * @QMI_VOICE_PRIVACY_STANDARD: Standard.
+ * @QMI_VOICE_PRIVACY_ENHANCED: Enhanced.
+ *
+ * Voice privacy.
+ */
+typedef enum {
+ QMI_VOICE_PRIVACY_STANDARD = 0x00,
+ QMI_VOICE_PRIVACY_ENHANCED = 0x01,
+} QmiVoicePrivacy;
+
+/**
+ * QmiVoiceDomain:
+ * @QMI_VOICE_DOMAIN_CS_ONLY: CS-only.
+ * @QMI_VOICE_DOMAIN_PS_ONLY: PS-only.
+ * @QMI_VOICE_DOMAIN_CS_PREFERRED: CS preferred, PS secondary.
+ * @QMI_VOICE_DOMAIN_PS_PREFERRED: PS preferred, CS secondary.
+ *
+ * Voice domain preference.
+ */
+typedef enum {
+ QMI_VOICE_DOMAIN_CS_ONLY = 0x00,
+ QMI_VOICE_DOMAIN_PS_ONLY = 0x01,
+ QMI_VOICE_DOMAIN_CS_PREFERRED = 0x02,
+ QMI_VOICE_DOMAIN_PS_PREFERRED = 0x03,
+} QmiVoiceDomain;
+
+#endif /* _LIBQMI_GLIB_QMI_ENUMS_VOICE_H_ */
diff --git a/src/libqmi-glib/qmi-message.c b/src/libqmi-glib/qmi-message.c
index e31aa4a..f034316 100644
--- a/src/libqmi-glib/qmi-message.c
+++ b/src/libqmi-glib/qmi-message.c
@@ -50,6 +50,7 @@
#include "qmi-uim.h"
#include "qmi-oma.h"
#include "qmi-wda.h"
+#include "qmi-voice.h"
/**
* SECTION:qmi-message
@@ -2161,6 +2162,9 @@ qmi_message_get_printable (QmiMessage *self,
case QMI_SERVICE_WDA:
contents = __qmi_message_wda_get_printable (self, line_prefix);
break;
+ case QMI_SERVICE_VOICE:
+ contents = __qmi_message_voice_get_printable (self, line_prefix);
+ break;
default:
break;
}