broadband-modem: implement default connection monitoring logic
A default implementation to monitor the ongoing connection is provided in the generic MMBroadbandModem, based on AT+CGACT? to check whether the PDP context of the connection (identified by the cached cid) is active or not. This commit also disables the connection monitoring logic in those plugins that have custom connection methods.
This commit is contained in:
@@ -409,8 +409,12 @@ mm_broadband_bearer_altair_lte_init (MMBroadbandBearerAltairLte *self)
|
||||
static void
|
||||
mm_broadband_bearer_altair_lte_class_init (MMBroadbandBearerAltairLteClass *klass)
|
||||
{
|
||||
MMBaseBearerClass *base_bearer_class = MM_BASE_BEARER_CLASS (klass);
|
||||
MMBroadbandBearerClass *broadband_bearer_class = MM_BROADBAND_BEARER_CLASS (klass);
|
||||
|
||||
base_bearer_class->load_connection_status = NULL;
|
||||
base_bearer_class->load_connection_status_finish = NULL;
|
||||
|
||||
broadband_bearer_class->connect_3gpp = connect_3gpp;
|
||||
broadband_bearer_class->connect_3gpp_finish = connect_3gpp_finish;
|
||||
broadband_bearer_class->disconnect_3gpp = disconnect_3gpp;
|
||||
|
||||
@@ -921,7 +921,11 @@ mm_broadband_bearer_huawei_class_init (MMBroadbandBearerHuaweiClass *klass)
|
||||
g_type_class_add_private (object_class, sizeof (MMBroadbandBearerHuaweiPrivate));
|
||||
|
||||
object_class->dispose = dispose;
|
||||
|
||||
base_bearer_class->report_connection_status = report_connection_status;
|
||||
base_bearer_class->load_connection_status = NULL;
|
||||
base_bearer_class->load_connection_status_finish = NULL;
|
||||
|
||||
broadband_bearer_class->connect_3gpp = connect_3gpp;
|
||||
broadband_bearer_class->connect_3gpp_finish = connect_3gpp_finish;
|
||||
broadband_bearer_class->disconnect_3gpp = disconnect_3gpp;
|
||||
|
||||
@@ -1091,7 +1091,11 @@ mm_broadband_bearer_icera_class_init (MMBroadbandBearerIceraClass *klass)
|
||||
|
||||
object_class->get_property = get_property;
|
||||
object_class->set_property = set_property;
|
||||
|
||||
base_bearer_class->report_connection_status = report_connection_status;
|
||||
base_bearer_class->load_connection_status = NULL;
|
||||
base_bearer_class->load_connection_status_finish = NULL;
|
||||
|
||||
broadband_bearer_class->dial_3gpp = dial_3gpp;
|
||||
broadband_bearer_class->dial_3gpp_finish = dial_3gpp_finish;
|
||||
broadband_bearer_class->get_ip_config_3gpp = get_ip_config_3gpp;
|
||||
|
||||
@@ -270,4 +270,6 @@ mm_bearer_iridium_class_init (MMBearerIridiumClass *klass)
|
||||
/* Virtual methods */
|
||||
base_bearer_class->connect = connect;
|
||||
base_bearer_class->connect_finish = connect_finish;
|
||||
base_bearer_class->load_connection_status = NULL;
|
||||
base_bearer_class->load_connection_status_finish = NULL;
|
||||
}
|
||||
|
||||
@@ -840,6 +840,9 @@ mm_broadband_bearer_mbm_class_init (MMBroadbandBearerMbmClass *klass)
|
||||
g_type_class_add_private (object_class, sizeof (MMBroadbandBearerMbmPrivate));
|
||||
|
||||
base_bearer_class->report_connection_status = report_connection_status;
|
||||
base_bearer_class->load_connection_status = NULL;
|
||||
base_bearer_class->load_connection_status_finish = NULL;
|
||||
|
||||
broadband_bearer_class->dial_3gpp = dial_3gpp;
|
||||
broadband_bearer_class->dial_3gpp_finish = dial_3gpp_finish;
|
||||
broadband_bearer_class->get_ip_config_3gpp = get_ip_config_3gpp;
|
||||
|
||||
@@ -844,6 +844,9 @@ mm_broadband_bearer_hso_class_init (MMBroadbandBearerHsoClass *klass)
|
||||
g_type_class_add_private (object_class, sizeof (MMBroadbandBearerHsoPrivate));
|
||||
|
||||
base_bearer_class->report_connection_status = report_connection_status;
|
||||
base_bearer_class->load_connection_status = NULL;
|
||||
base_bearer_class->load_connection_status_finish = NULL;
|
||||
|
||||
broadband_bearer_class->dial_3gpp = dial_3gpp;
|
||||
broadband_bearer_class->dial_3gpp_finish = dial_3gpp_finish;
|
||||
broadband_bearer_class->get_ip_config_3gpp = get_ip_config_3gpp;
|
||||
|
||||
@@ -533,13 +533,18 @@ mm_broadband_bearer_sierra_init (MMBroadbandBearerSierra *self)
|
||||
static void
|
||||
mm_broadband_bearer_sierra_class_init (MMBroadbandBearerSierraClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
MMBaseBearerClass *base_bearer_class = MM_BASE_BEARER_CLASS (klass);
|
||||
MMBroadbandBearerClass *broadband_bearer_class = MM_BROADBAND_BEARER_CLASS (klass);
|
||||
|
||||
g_type_class_add_private (object_class, sizeof (MMBroadbandBearerSierraPrivate));
|
||||
|
||||
object_class->set_property = set_property;
|
||||
object_class->get_property = get_property;
|
||||
|
||||
base_bearer_class->load_connection_status = NULL;
|
||||
base_bearer_class->load_connection_status_finish = NULL;
|
||||
|
||||
broadband_bearer_class->dial_3gpp = dial_3gpp;
|
||||
broadband_bearer_class->dial_3gpp_finish = dial_3gpp_finish;
|
||||
broadband_bearer_class->disconnect_3gpp = disconnect_3gpp;
|
||||
|
||||
@@ -544,6 +544,9 @@ mm_broadband_bearer_ublox_class_init (MMBroadbandBearerUbloxClass *klass)
|
||||
object_class->get_property = get_property;
|
||||
object_class->set_property = set_property;
|
||||
|
||||
/* Note: the ublox plugin uses the generic AT+CGACT? based check to monitor
|
||||
* the connection status (i.e. default load_connection_status()) */
|
||||
|
||||
broadband_bearer_class->disconnect_3gpp = disconnect_3gpp;
|
||||
broadband_bearer_class->disconnect_3gpp_finish = disconnect_3gpp_finish;
|
||||
broadband_bearer_class->dial_3gpp = dial_3gpp;
|
||||
|
||||
Reference in New Issue
Block a user