
When we're reusing over and over the same bearer object, we can provide statistical information about the number of connection attempts that have been done and how many of them failed.
348 lines
12 KiB
C
348 lines
12 KiB
C
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*
|
|
* mmcli -- Control modem status & access information from the command line
|
|
*
|
|
* 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.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
* Copyright (C) 2018 Aleksander Morgado <aleksander@aleksander.es>
|
|
*/
|
|
|
|
#ifndef MMCLI_OUTPUT_H
|
|
#define MMCLI_OUTPUT_H
|
|
|
|
#define _LIBMM_INSIDE_MMCLI
|
|
#include <libmm-glib.h>
|
|
|
|
/******************************************************************************/
|
|
/* List of sections (grouped fields) displayed in the human-friendly output */
|
|
|
|
typedef enum {
|
|
MMC_S_UNKNOWN = -1,
|
|
/* Modem object related sections */
|
|
MMC_S_MODEM_GENERAL = 0,
|
|
MMC_S_MODEM_HARDWARE,
|
|
MMC_S_MODEM_SYSTEM,
|
|
MMC_S_MODEM_NUMBERS,
|
|
MMC_S_MODEM_STATUS,
|
|
MMC_S_MODEM_MODES,
|
|
MMC_S_MODEM_BANDS,
|
|
MMC_S_MODEM_IP,
|
|
MMC_S_MODEM_3GPP,
|
|
MMC_S_MODEM_3GPP_EPS,
|
|
MMC_S_MODEM_3GPP_SCAN,
|
|
MMC_S_MODEM_3GPP_USSD,
|
|
MMC_S_MODEM_CDMA,
|
|
MMC_S_MODEM_SIM,
|
|
MMC_S_MODEM_BEARER,
|
|
MMC_S_MODEM_TIME,
|
|
MMC_S_MODEM_TIMEZONE,
|
|
MMC_S_MODEM_MESSAGING,
|
|
MMC_S_MODEM_SIGNAL,
|
|
MMC_S_MODEM_SIGNAL_CDMA1X,
|
|
MMC_S_MODEM_SIGNAL_EVDO,
|
|
MMC_S_MODEM_SIGNAL_GSM,
|
|
MMC_S_MODEM_SIGNAL_UMTS,
|
|
MMC_S_MODEM_SIGNAL_LTE,
|
|
MMC_S_MODEM_OMA,
|
|
MMC_S_MODEM_OMA_CURRENT,
|
|
MMC_S_MODEM_OMA_PENDING,
|
|
MMC_S_MODEM_LOCATION,
|
|
MMC_S_MODEM_LOCATION_3GPP,
|
|
MMC_S_MODEM_LOCATION_GPS,
|
|
MMC_S_MODEM_LOCATION_CDMABS,
|
|
MMC_S_MODEM_FIRMWARE,
|
|
MMC_S_MODEM_FIRMWARE_FASTBOOT,
|
|
MMC_S_MODEM_VOICE,
|
|
MMC_S_BEARER_GENERAL,
|
|
MMC_S_BEARER_STATUS,
|
|
MMC_S_BEARER_PROPERTIES,
|
|
MMC_S_BEARER_IPV4_CONFIG,
|
|
MMC_S_BEARER_IPV6_CONFIG,
|
|
MMC_S_BEARER_STATS,
|
|
MMC_S_CALL_GENERAL,
|
|
MMC_S_CALL_PROPERTIES,
|
|
MMC_S_CALL_AUDIO_FORMAT,
|
|
MMC_S_SMS_GENERAL,
|
|
MMC_S_SMS_CONTENT,
|
|
MMC_S_SMS_PROPERTIES,
|
|
MMC_S_SIM_GENERAL,
|
|
MMC_S_SIM_PROPERTIES,
|
|
} MmcS;
|
|
|
|
/******************************************************************************/
|
|
/* List of fields */
|
|
|
|
typedef enum {
|
|
MMC_F_UNKNOWN = -1,
|
|
/* General section */
|
|
MMC_F_GENERAL_DBUS_PATH = 0,
|
|
MMC_F_GENERAL_DEVICE_ID,
|
|
/* Hardware section */
|
|
MMC_F_HARDWARE_MANUFACTURER,
|
|
MMC_F_HARDWARE_MODEL,
|
|
MMC_F_HARDWARE_REVISION,
|
|
MMC_F_HARDWARE_CARRIER_CONF,
|
|
MMC_F_HARDWARE_CARRIER_CONF_REV,
|
|
MMC_F_HARDWARE_HW_REVISION,
|
|
MMC_F_HARDWARE_SUPPORTED_CAPABILITIES,
|
|
MMC_F_HARDWARE_CURRENT_CAPABILITIES,
|
|
MMC_F_HARDWARE_EQUIPMENT_ID,
|
|
/* System section */
|
|
MMC_F_SYSTEM_DEVICE,
|
|
MMC_F_SYSTEM_DRIVERS,
|
|
MMC_F_SYSTEM_PLUGIN,
|
|
MMC_F_SYSTEM_PRIMARY_PORT,
|
|
MMC_F_SYSTEM_PORTS,
|
|
/* Numbers section */
|
|
MMC_F_NUMBERS_OWN,
|
|
/* Status section */
|
|
MMC_F_STATUS_LOCK,
|
|
MMC_F_STATUS_UNLOCK_RETRIES,
|
|
MMC_F_STATUS_STATE,
|
|
MMC_F_STATUS_FAILED_REASON,
|
|
MMC_F_STATUS_POWER_STATE,
|
|
MMC_F_STATUS_ACCESS_TECH,
|
|
MMC_F_STATUS_SIGNAL_QUALITY_VALUE,
|
|
MMC_F_STATUS_SIGNAL_QUALITY_RECENT,
|
|
/* Modes section */
|
|
MMC_F_MODES_SUPPORTED,
|
|
MMC_F_MODES_CURRENT,
|
|
/* Bands section */
|
|
MMC_F_BANDS_SUPPORTED,
|
|
MMC_F_BANDS_CURRENT,
|
|
/* IP section */
|
|
MMC_F_IP_SUPPORTED,
|
|
/* 3GPP section */
|
|
MMC_F_3GPP_IMEI,
|
|
MMC_F_3GPP_ENABLED_LOCKS,
|
|
MMC_F_3GPP_OPERATOR_ID,
|
|
MMC_F_3GPP_OPERATOR_NAME,
|
|
MMC_F_3GPP_REGISTRATION,
|
|
MMC_F_3GPP_PCO,
|
|
/* 3GPP EPS section */
|
|
MMC_F_3GPP_EPS_UE_MODE,
|
|
MMC_F_3GPP_EPS_INITIAL_BEARER_PATH,
|
|
MMC_F_3GPP_EPS_BEARER_SETTINGS_APN,
|
|
MMC_F_3GPP_EPS_BEARER_SETTINGS_IP_TYPE,
|
|
MMC_F_3GPP_EPS_BEARER_SETTINGS_USER,
|
|
MMC_F_3GPP_EPS_BEARER_SETTINGS_PASSWORD,
|
|
/* 3GPP scan section */
|
|
MMC_F_3GPP_SCAN_NETWORKS,
|
|
/* USSD section */
|
|
MMC_F_3GPP_USSD_STATUS,
|
|
MMC_F_3GPP_USSD_NETWORK_REQUEST,
|
|
MMC_F_3GPP_USSD_NETWORK_NOTIFICATION,
|
|
/* CDMA section */
|
|
MMC_F_CDMA_MEID,
|
|
MMC_F_CDMA_ESN,
|
|
MMC_F_CDMA_SID,
|
|
MMC_F_CDMA_NID,
|
|
MMC_F_CDMA_REGISTRATION_CDMA1X,
|
|
MMC_F_CDMA_REGISTRATION_EVDO,
|
|
MMC_F_CDMA_ACTIVATION,
|
|
/* SIM section */
|
|
MMC_F_SIM_PATH,
|
|
/* Bearer section */
|
|
MMC_F_BEARER_PATHS,
|
|
/* Time section */
|
|
MMC_F_TIME_CURRENT,
|
|
MMC_F_TIMEZONE_CURRENT,
|
|
MMC_F_TIMEZONE_DST_OFFSET,
|
|
MMC_F_TIMEZONE_LEAP_SECONDS,
|
|
/* Messaging section */
|
|
MMC_F_MESSAGING_SUPPORTED_STORAGES,
|
|
MMC_F_MESSAGING_DEFAULT_STORAGES,
|
|
/* Signal section */
|
|
MMC_F_SIGNAL_REFRESH_RATE,
|
|
MMC_F_SIGNAL_CDMA1X_RSSI,
|
|
MMC_F_SIGNAL_CDMA1X_ECIO,
|
|
MMC_F_SIGNAL_EVDO_RSSI,
|
|
MMC_F_SIGNAL_EVDO_ECIO,
|
|
MMC_F_SIGNAL_EVDO_SINR,
|
|
MMC_F_SIGNAL_EVDO_IO,
|
|
MMC_F_SIGNAL_GSM_RSSI,
|
|
MMC_F_SIGNAL_UMTS_RSSI,
|
|
MMC_F_SIGNAL_UMTS_RSCP,
|
|
MMC_F_SIGNAL_UMTS_ECIO,
|
|
MMC_F_SIGNAL_LTE_RSSI,
|
|
MMC_F_SIGNAL_LTE_RSRQ,
|
|
MMC_F_SIGNAL_LTE_RSRP,
|
|
MMC_F_SIGNAL_LTE_SNR,
|
|
/* OMA section */
|
|
MMC_F_OMA_FEATURES,
|
|
MMC_F_OMA_CURRENT_TYPE,
|
|
MMC_F_OMA_CURRENT_STATE,
|
|
MMC_F_OMA_PENDING_SESSIONS,
|
|
/* Location status section */
|
|
MMC_F_LOCATION_CAPABILITIES,
|
|
MMC_F_LOCATION_ENABLED,
|
|
MMC_F_LOCATION_SIGNALS,
|
|
MMC_F_LOCATION_GPS_REFRESH_RATE,
|
|
MMC_F_LOCATION_GPS_SUPL_SERVER,
|
|
MMC_F_LOCATION_GPS_ASSISTANCE,
|
|
MMC_F_LOCATION_GPS_ASSISTANCE_SERVERS,
|
|
MMC_F_LOCATION_3GPP_MCC,
|
|
MMC_F_LOCATION_3GPP_MNC,
|
|
MMC_F_LOCATION_3GPP_LAC,
|
|
MMC_F_LOCATION_3GPP_TAC,
|
|
MMC_F_LOCATION_3GPP_CID,
|
|
MMC_F_LOCATION_GPS_NMEA,
|
|
MMC_F_LOCATION_GPS_UTC,
|
|
MMC_F_LOCATION_GPS_LONG,
|
|
MMC_F_LOCATION_GPS_LAT,
|
|
MMC_F_LOCATION_GPS_ALT,
|
|
MMC_F_LOCATION_CDMABS_LONG,
|
|
MMC_F_LOCATION_CDMABS_LAT,
|
|
/* Firmware status section */
|
|
MMC_F_FIRMWARE_LIST,
|
|
MMC_F_FIRMWARE_METHOD,
|
|
MMC_F_FIRMWARE_DEVICE_IDS,
|
|
MMC_F_FIRMWARE_VERSION,
|
|
MMC_F_FIRMWARE_FASTBOOT_AT,
|
|
/* Voice section */
|
|
MMC_F_VOICE_EMERGENCY_ONLY,
|
|
/* Bearer general section */
|
|
MMC_F_BEARER_GENERAL_DBUS_PATH,
|
|
MMC_F_BEARER_GENERAL_TYPE,
|
|
/* Bearer status section */
|
|
MMC_F_BEARER_STATUS_CONNECTED,
|
|
MMC_F_BEARER_STATUS_SUSPENDED,
|
|
MMC_F_BEARER_STATUS_INTERFACE,
|
|
MMC_F_BEARER_STATUS_IP_TIMEOUT,
|
|
/* Bearer properties section */
|
|
MMC_F_BEARER_PROPERTIES_APN,
|
|
MMC_F_BEARER_PROPERTIES_ROAMING,
|
|
MMC_F_BEARER_PROPERTIES_IP_TYPE,
|
|
MMC_F_BEARER_PROPERTIES_USER,
|
|
MMC_F_BEARER_PROPERTIES_PASSWORD,
|
|
MMC_F_BEARER_PROPERTIES_NUMBER,
|
|
MMC_F_BEARER_PROPERTIES_RM_PROTOCOL,
|
|
MMC_F_BEARER_IPV4_CONFIG_METHOD,
|
|
MMC_F_BEARER_IPV4_CONFIG_ADDRESS,
|
|
MMC_F_BEARER_IPV4_CONFIG_PREFIX,
|
|
MMC_F_BEARER_IPV4_CONFIG_GATEWAY,
|
|
MMC_F_BEARER_IPV4_CONFIG_DNS,
|
|
MMC_F_BEARER_IPV4_CONFIG_MTU,
|
|
MMC_F_BEARER_IPV6_CONFIG_METHOD,
|
|
MMC_F_BEARER_IPV6_CONFIG_ADDRESS,
|
|
MMC_F_BEARER_IPV6_CONFIG_PREFIX,
|
|
MMC_F_BEARER_IPV6_CONFIG_GATEWAY,
|
|
MMC_F_BEARER_IPV6_CONFIG_DNS,
|
|
MMC_F_BEARER_IPV6_CONFIG_MTU,
|
|
MMC_F_BEARER_STATS_DURATION,
|
|
MMC_F_BEARER_STATS_BYTES_RX,
|
|
MMC_F_BEARER_STATS_BYTES_TX,
|
|
MMC_F_BEARER_STATS_ATTEMPTS,
|
|
MMC_F_BEARER_STATS_FAILED_ATTEMPTS,
|
|
MMC_F_CALL_GENERAL_DBUS_PATH,
|
|
MMC_F_CALL_PROPERTIES_NUMBER,
|
|
MMC_F_CALL_PROPERTIES_DIRECTION,
|
|
MMC_F_CALL_PROPERTIES_MULTIPARTY,
|
|
MMC_F_CALL_PROPERTIES_STATE,
|
|
MMC_F_CALL_PROPERTIES_STATE_REASON,
|
|
MMC_F_CALL_PROPERTIES_AUDIO_PORT,
|
|
MMC_F_CALL_AUDIO_FORMAT_ENCODING,
|
|
MMC_F_CALL_AUDIO_FORMAT_RESOLUTION,
|
|
MMC_F_CALL_AUDIO_FORMAT_RATE,
|
|
MMC_F_SMS_GENERAL_DBUS_PATH,
|
|
MMC_F_SMS_CONTENT_NUMBER,
|
|
MMC_F_SMS_CONTENT_TEXT,
|
|
MMC_F_SMS_CONTENT_DATA,
|
|
MMC_F_SMS_PROPERTIES_PDU_TYPE,
|
|
MMC_F_SMS_PROPERTIES_STATE,
|
|
MMC_F_SMS_PROPERTIES_VALIDITY,
|
|
MMC_F_SMS_PROPERTIES_STORAGE,
|
|
MMC_F_SMS_PROPERTIES_SMSC,
|
|
MMC_F_SMS_PROPERTIES_CLASS,
|
|
MMC_F_SMS_PROPERTIES_TELESERVICE_ID,
|
|
MMC_F_SMS_PROPERTIES_SERVICE_CATEGORY,
|
|
MMC_F_SMS_PROPERTIES_DELIVERY_REPORT,
|
|
MMC_F_SMS_PROPERTIES_MSG_REFERENCE,
|
|
MMC_F_SMS_PROPERTIES_TIMESTAMP,
|
|
MMC_F_SMS_PROPERTIES_DELIVERY_STATE,
|
|
MMC_F_SMS_PROPERTIES_DISCH_TIMESTAMP,
|
|
MMC_F_SIM_GENERAL_DBUS_PATH,
|
|
MMC_F_SIM_PROPERTIES_IMSI,
|
|
MMC_F_SIM_PROPERTIES_ICCID,
|
|
MMC_F_SIM_PROPERTIES_OPERATOR_ID,
|
|
MMC_F_SIM_PROPERTIES_OPERATOR_NAME,
|
|
MMC_F_SIM_PROPERTIES_EMERGENCY_NUMBERS,
|
|
/* Lists */
|
|
MMC_F_MODEM_LIST_DBUS_PATH,
|
|
MMC_F_SMS_LIST_DBUS_PATH,
|
|
MMC_F_CALL_LIST_DBUS_PATH,
|
|
} MmcF;
|
|
|
|
/******************************************************************************/
|
|
/* Output type selection */
|
|
|
|
typedef enum {
|
|
MMC_OUTPUT_TYPE_NONE,
|
|
MMC_OUTPUT_TYPE_HUMAN,
|
|
MMC_OUTPUT_TYPE_KEYVALUE,
|
|
MMC_OUTPUT_TYPE_JSON
|
|
} MmcOutputType;
|
|
|
|
void mmcli_output_set (MmcOutputType type);
|
|
MmcOutputType mmcli_output_get (void);
|
|
|
|
/******************************************************************************/
|
|
/* Generic output management */
|
|
|
|
void mmcli_output_string (MmcF field,
|
|
const gchar *str);
|
|
void mmcli_output_string_take (MmcF field,
|
|
gchar *str);
|
|
void mmcli_output_string_list (MmcF field,
|
|
const gchar *str);
|
|
void mmcli_output_string_list_take (MmcF field,
|
|
gchar *str);
|
|
void mmcli_output_string_multiline (MmcF field,
|
|
const gchar *str);
|
|
void mmcli_output_string_multiline_take (MmcF field,
|
|
gchar *str);
|
|
void mmcli_output_string_array (MmcF field,
|
|
const gchar **strv,
|
|
gboolean multiline);
|
|
void mmcli_output_string_array_take (MmcF field,
|
|
gchar **strv,
|
|
gboolean multiline);
|
|
void mmcli_output_string_take_typed (MmcF field,
|
|
gchar *value,
|
|
const gchar *type);
|
|
void mmcli_output_listitem (MmcF field,
|
|
const gchar *prefix,
|
|
const gchar *value,
|
|
const gchar *extra);
|
|
|
|
/******************************************************************************/
|
|
/* Custom output management */
|
|
|
|
void mmcli_output_signal_quality (guint value,
|
|
gboolean recent);
|
|
void mmcli_output_state (MMModemState state,
|
|
MMModemStateFailedReason reason);
|
|
void mmcli_output_scan_networks (GList *network_list);
|
|
void mmcli_output_firmware_list (GList *firmware_list,
|
|
MMFirmwareProperties *selected);
|
|
void mmcli_output_pco_list (GList *pco_list);
|
|
|
|
/******************************************************************************/
|
|
/* Dump output */
|
|
|
|
void mmcli_output_dump (void);
|
|
void mmcli_output_list_dump (MmcF field);
|
|
|
|
#endif /* MMCLI_OUTPUT_H */
|