aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2013-11-22 23:40:31 +0100
committerAleksander Morgado <aleksander@aleksander.es>2014-02-13 13:41:39 +0100
commitc182a04f6438850875319862cf8d22de2250e907 (patch)
treebd5ee430fa695e9549bec8fb49c29dfc5d1851e1 /src
parentabb88a5e0ab7a0ed4a661372aa24e82aa38bc89f (diff)
base-modem: allow grabbing 'virtual' AT ports
Diffstat (limited to 'src')
-rw-r--r--src/mm-base-modem.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/mm-base-modem.c b/src/mm-base-modem.c
index 193e7642..cba19400 100644
--- a/src/mm-base-modem.c
+++ b/src/mm-base-modem.c
@@ -175,7 +175,8 @@ mm_base_modem_grab_port (MMBaseModem *self,
/* Only allow 'tty', 'net' and 'cdc-wdm' ports */
if (!g_str_equal (subsys, "net") &&
!g_str_equal (subsys, "tty") &&
- !(g_str_has_prefix (subsys, "usb") && g_str_has_prefix (name, "cdc-wdm"))) {
+ !(g_str_has_prefix (subsys, "usb") && g_str_has_prefix (name, "cdc-wdm")) &&
+ !g_str_equal (subsys, "virtual")) {
g_set_error (error,
MM_CORE_ERROR,
MM_CORE_ERROR_UNSUPPORTED,
@@ -279,6 +280,18 @@ mm_base_modem_grab_port (MMBaseModem *self,
return FALSE;
}
}
+ /* Virtual ports... */
+ else if (g_str_equal (subsys, "virtual")) {
+ port = MM_PORT (mm_port_serial_at_new (name, MM_PORT_SUBSYS_UNIX));
+
+ /* Set common response parser */
+ mm_port_serial_at_set_response_parser (MM_PORT_SERIAL_AT (port),
+ mm_serial_parser_v1_parse,
+ mm_serial_parser_v1_new (),
+ mm_serial_parser_v1_destroy);
+ /* Store flags already */
+ mm_port_serial_at_set_flags (MM_PORT_SERIAL_AT (port), at_pflags);
+ }
else
/* We already filter out before all non-tty, non-net, non-cdc-wdm ports */
g_assert_not_reached();
@@ -310,7 +323,8 @@ mm_base_modem_release_port (MMBaseModem *self,
if (!g_str_equal (subsys, "tty") &&
!g_str_equal (subsys, "net") &&
- !(g_str_has_prefix (subsys, "usb") && g_str_has_prefix (name, "cdc-wdm")))
+ !(g_str_has_prefix (subsys, "usb") && g_str_has_prefix (name, "cdc-wdm")) &&
+ !g_str_equal (subsys, "virtual"))
return;
key = get_hash_key (subsys, name);