diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-base-modem.c | 8 | ||||
-rw-r--r-- | src/mm-port-serial-at.c | 2 | ||||
-rw-r--r-- | src/mm-port-serial-at.h | 13 |
3 files changed, 18 insertions, 5 deletions
diff --git a/src/mm-base-modem.c b/src/mm-base-modem.c index d7c0e477..153e0c4d 100644 --- a/src/mm-base-modem.c +++ b/src/mm-base-modem.c @@ -223,6 +223,7 @@ mm_base_modem_grab_port (MMBaseModem *self, mm_serial_parser_v1_parse, mm_serial_parser_v1_new (), mm_serial_parser_v1_destroy); + /* Prefer plugin-provided flags to the generic ones */ if (at_pflags == MM_PORT_SERIAL_AT_FLAG_NONE) { if (mm_kernel_device_get_property_as_boolean (kernel_device, ID_MM_PORT_TYPE_AT_PRIMARY)) { @@ -236,7 +237,14 @@ mm_base_modem_grab_port (MMBaseModem *self, at_pflags = MM_PORT_SERIAL_AT_FLAG_PPP; } } + + /* The plugin may specify NONE_NO_GENERIC to avoid the generic + * port type hints from being applied. */ + if (at_pflags == MM_PORT_SERIAL_AT_FLAG_NONE_NO_GENERIC) + at_pflags = MM_PORT_SERIAL_AT_FLAG_NONE; + mm_port_serial_at_set_flags (MM_PORT_SERIAL_AT (port), at_pflags); + } else if (ptype == MM_PORT_TYPE_GPS) { /* Raw GPS port */ port = MM_PORT (mm_port_serial_gps_new (name)); diff --git a/src/mm-port-serial-at.c b/src/mm-port-serial-at.c index c8e4782f..b767ee3c 100644 --- a/src/mm-port-serial-at.c +++ b/src/mm-port-serial-at.c @@ -473,6 +473,8 @@ mm_port_serial_at_set_flags (MMPortSerialAt *self, MMPortSerialAtFlag flags) { g_return_if_fail (self != NULL); g_return_if_fail (MM_IS_PORT_SERIAL_AT (self)); + + /* MM_PORT_SERIAL_AT_FLAG_NONE_NO_GENERIC is not expected */ g_return_if_fail (flags <= (MM_PORT_SERIAL_AT_FLAG_PRIMARY | MM_PORT_SERIAL_AT_FLAG_SECONDARY | MM_PORT_SERIAL_AT_FLAG_PPP | diff --git a/src/mm-port-serial-at.h b/src/mm-port-serial-at.h index 0a4d2b7a..901afcba 100644 --- a/src/mm-port-serial-at.h +++ b/src/mm-port-serial-at.h @@ -42,15 +42,18 @@ typedef struct _MMPortSerialAtPrivate MMPortSerialAtPrivate; * only when connecting is port 0 opened for dialing (ATD) and PPP */ typedef enum { /*< underscore_name=mm_port_serial_at_flag >*/ - MM_PORT_SERIAL_AT_FLAG_NONE = 0, + MM_PORT_SERIAL_AT_FLAG_NONE = 0, /* This port is preferred for command and status */ - MM_PORT_SERIAL_AT_FLAG_PRIMARY = 1 << 0, + MM_PORT_SERIAL_AT_FLAG_PRIMARY = 1 << 0, /* Use port for command and status if the primary port is connected */ - MM_PORT_SERIAL_AT_FLAG_SECONDARY = 1 << 1, + MM_PORT_SERIAL_AT_FLAG_SECONDARY = 1 << 1, /* This port should be used for PPP */ - MM_PORT_SERIAL_AT_FLAG_PPP = 1 << 2, + MM_PORT_SERIAL_AT_FLAG_PPP = 1 << 2, /* This port should be used for GPS control */ - MM_PORT_SERIAL_AT_FLAG_GPS_CONTROL = 1 << 3, + MM_PORT_SERIAL_AT_FLAG_GPS_CONTROL = 1 << 3, + /* Helper flag to allow plugins specify that generic tags shouldn't be + * applied */ + MM_PORT_SERIAL_AT_FLAG_NONE_NO_GENERIC = 1 << 4, } MMPortSerialAtFlag; typedef gboolean (*MMPortSerialAtResponseParserFn) (gpointer user_data, |