diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2014-02-17 12:59:00 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2015-02-07 20:42:44 +0100 |
commit | 350cd9a06c547f37445fb37e3e32a152f657218f (patch) | |
tree | 7cd2d50bc9ed604660f232d68a2267f7c015f278 /src | |
parent | 22628a69dad6a1c4b0400dacf1c13c48425faf69 (diff) |
voice: initial support for the Voice service
Diffstat (limited to 'src')
-rw-r--r-- | src/libqmi-glib/Makefile.am | 2 | ||||
-rw-r--r-- | src/libqmi-glib/generated/Makefile.am | 25 | ||||
-rw-r--r-- | src/libqmi-glib/libqmi-glib.h | 3 | ||||
-rw-r--r-- | src/libqmi-glib/qmi-device.c | 5 | ||||
-rw-r--r-- | src/libqmi-glib/qmi-enums-voice.h | 245 | ||||
-rw-r--r-- | src/libqmi-glib/qmi-message.c | 4 |
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; } |