diff options
Diffstat (limited to 'src/plugins/cinterion/mm-modem-helpers-cinterion.h')
-rw-r--r-- | src/plugins/cinterion/mm-modem-helpers-cinterion.h | 211 |
1 files changed, 211 insertions, 0 deletions
diff --git a/src/plugins/cinterion/mm-modem-helpers-cinterion.h b/src/plugins/cinterion/mm-modem-helpers-cinterion.h new file mode 100644 index 00000000..3155d0c1 --- /dev/null +++ b/src/plugins/cinterion/mm-modem-helpers-cinterion.h @@ -0,0 +1,211 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details: + * + * Copyright (C) 2014 Aleksander Morgado <aleksander@aleksander.es> + * Copyright (C) 2016 Trimble Navigation Limited + * Copyright (C) 2016 Matthew Stanger <matthew_stanger@trimble.com> + * Copyright (C) 2019 Purism SPC + */ + +#ifndef MM_MODEM_HELPERS_CINTERION_H +#define MM_MODEM_HELPERS_CINTERION_H + +#include <glib.h> + +#include <ModemManager.h> +#include <mm-base-bearer.h> +#define _LIBMM_INSIDE_MM +#include <libmm-glib.h> + +typedef enum { + MM_CINTERION_MODEM_FAMILY_DEFAULT = 0, + MM_CINTERION_MODEM_FAMILY_IMT = 1, +} MMCinterionModemFamily; + +typedef enum { + MM_CINTERION_RADIO_BAND_FORMAT_SINGLE = 0, + MM_CINTERION_RADIO_BAND_FORMAT_MULTIPLE = 1, +} MMCinterionRadioBandFormat; + +typedef enum { + MM_CINTERION_RB_BLOCK_LEGACY = 0, + MM_CINTERION_RB_BLOCK_GSM = 0, + MM_CINTERION_RB_BLOCK_UMTS = 1, + MM_CINTERION_RB_BLOCK_LTE_LOW = 2, + MM_CINTERION_RB_BLOCK_LTE_HIGH = 3, + MM_CINTERION_RB_BLOCK_N = 4 +} MMCinterionRbBlock; + +typedef enum { + MM_CINTERION_RADIO_GEN_NONE = 0, + MM_CINTERION_RADIO_GEN_2G = 2, + MM_CINTERION_RADIO_GEN_3G = 3, + MM_CINTERION_RADIO_GEN_4G = 4, +} MMCinterionRadioGen; + +/*****************************************************************************/ +/* ^SCFG test parser */ + +gboolean mm_cinterion_parse_scfg_test (const gchar *response, + MMCinterionModemFamily modem_family, + MMModemCharset charset, + GArray **supported_bands, + MMCinterionRadioBandFormat *format, + GError **error); + +/*****************************************************************************/ +/* ^SCFG response parser */ + +gboolean mm_cinterion_parse_scfg_response (const gchar *response, + MMCinterionModemFamily modem_family, + MMModemCharset charset, + GArray **bands, + MMCinterionRadioBandFormat format, + GError **error); + +/*****************************************************************************/ +/* +CNMI test parser */ + +gboolean mm_cinterion_parse_cnmi_test (const gchar *response, + GArray **supported_mode, + GArray **supported_mt, + GArray **supported_bm, + GArray **supported_ds, + GArray **supported_bfr, + GError **error); + +/*****************************************************************************/ +/* ^SXRAT test parser */ + +gboolean mm_cinterion_parse_sxrat_test (const gchar *response, + GArray **supported_rat, + GArray **supported_pref1, + GArray **supported_pref2, + GError **error); + +/*****************************************************************************/ +/* Build Cinterion-specific band value */ + +gboolean mm_cinterion_build_band (GArray *bands, + guint *supported, + gboolean only_2g, + MMCinterionRadioBandFormat format, + MMCinterionModemFamily modem_family, + guint *out_band, + GError **error); + +/*****************************************************************************/ +/* Single ^SIND response parser */ + +gboolean mm_cinterion_parse_sind_response (const gchar *response, + gchar **description, + guint *mode, + guint *value, + GError **error); + +/*****************************************************************************/ +/* ^SWWAN response parser */ + +MMBearerConnectionStatus mm_cinterion_parse_swwan_response (const gchar *response, + guint swwan_index, + gpointer log_object, + GError **error); + +/*****************************************************************************/ +/* ^SGAUTH response parser */ + +gboolean mm_cinterion_parse_sgauth_response (const gchar *response, + guint cid, + MMBearerAllowedAuth *out_auth, + gchar **out_username, + GError **error); + +/*****************************************************************************/ +/* ^SMONG response parser */ + +gboolean mm_cinterion_parse_smong_response (const gchar *response, + MMModemAccessTechnology *access_tech, + GError **error); + +/*****************************************************************************/ +/* ^SIND psinfo helper */ + +MMModemAccessTechnology mm_cinterion_get_access_technology_from_sind_psinfo (guint val, + gpointer log_object); + +/*****************************************************************************/ +/* ^SLCC URC helpers */ + +GRegex *mm_cinterion_get_slcc_regex (void); + +/* MMCallInfo list management */ +gboolean mm_cinterion_parse_slcc_list (const gchar *str, + gpointer log_object, + GList **out_list, + GError **error); +void mm_cinterion_call_info_list_free (GList *call_info_list); + +/*****************************************************************************/ +/* +CTZU URC helpers */ + +GRegex *mm_cinterion_get_ctzu_regex (void); +gboolean mm_cinterion_parse_ctzu_urc (GMatchInfo *match_info, + gchar **iso8601p, + MMNetworkTimezone **tzp, + GError **error); + +/*****************************************************************************/ +/* ^SMONI helper */ + +gboolean mm_cinterion_parse_smoni_query_response (const gchar *response, + MMCinterionRadioGen *out_tech, + gdouble *out_rssi, + gdouble *out_ecn0, + gdouble *out_rscp, + gdouble *out_rsrp, + gdouble *out_rsrq, + GError **error); + +gboolean mm_cinterion_smoni_response_to_signal_info (const gchar *response, + MMSignal **out_gsm, + MMSignal **out_umts, + MMSignal **out_lte, + GError **error); + +/*****************************************************************************/ +/* ^SCFG="MEopMode/Prov/Cfg" helper */ + +gboolean mm_cinterion_provcfg_response_to_cid (const gchar *response, + MMCinterionModemFamily modem_family, + MMModemCharset charset, + gpointer log_object, + gint *cid, + GError **error); + +/*****************************************************************************/ +/* Auth related helpers */ + +MMBearerAllowedAuth mm_auth_type_from_cinterion_auth_type (guint cinterion_auth); + +gchar *mm_cinterion_build_auth_string (gpointer log_object, + MMCinterionModemFamily modem_family, + MMBearerProperties *config, + guint cid); + +/*****************************************************************************/ +/* ^SXRAT set command helper */ + +gchar *mm_cinterion_build_sxrat_set_command (MMModemMode allowed, + MMModemMode preferred, + GError **error); + +#endif /* MM_MODEM_HELPERS_CINTERION_H */ |