diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-base-modem.c | 2 | ||||
-rw-r--r-- | src/mm-port-probe.c | 7 | ||||
-rw-r--r-- | src/mm-port-serial-at.c | 13 | ||||
-rw-r--r-- | src/mm-port-serial-at.h | 3 |
4 files changed, 19 insertions, 6 deletions
diff --git a/src/mm-base-modem.c b/src/mm-base-modem.c index bd169afe..bc55ebb1 100644 --- a/src/mm-base-modem.c +++ b/src/mm-base-modem.c @@ -206,7 +206,7 @@ mm_base_modem_grab_port (MMBaseModem *self, port = MM_PORT (mm_port_serial_qcdm_new (name)); else if (ptype == MM_PORT_TYPE_AT) { /* AT port */ - port = MM_PORT (mm_port_serial_at_new (name)); + port = MM_PORT (mm_port_serial_at_new (name, MM_PORT_SUBSYS_TTY)); /* Set common response parser */ mm_port_serial_at_set_response_parser (MM_PORT_SERIAL_AT (port), diff --git a/src/mm-port-probe.c b/src/mm-port-probe.c index 69e68f13..6afd09c8 100644 --- a/src/mm-port-probe.c +++ b/src/mm-port-probe.c @@ -1156,8 +1156,13 @@ serial_open_at (MMPortProbe *self) /* Create AT serial port if not done before */ if (!task->serial) { gpointer parser; + MMPortSubsys subsys = MM_PORT_SUBSYS_TTY; - task->serial = MM_PORT_SERIAL (mm_port_serial_at_new (g_udev_device_get_name (self->priv->port))); + if (g_str_has_prefix (g_udev_device_get_subsystem (self->priv->port), "usb")) + subsys = MM_PORT_SUBSYS_USB; + + task->serial = MM_PORT_SERIAL (mm_port_serial_at_new (g_udev_device_get_name (self->priv->port), + subsys)); if (!task->serial) { port_probe_run_task_complete ( task, diff --git a/src/mm-port-serial-at.c b/src/mm-port-serial-at.c index da75e0e1..b49de1a1 100644 --- a/src/mm-port-serial-at.c +++ b/src/mm-port-serial-at.c @@ -388,7 +388,11 @@ mm_port_serial_at_command (MMPortSerialAt *self, g_return_if_fail (MM_IS_PORT_SERIAL_AT (self)); g_return_if_fail (command != NULL); - buf = at_command_to_byte_array (command, is_raw, self->priv->send_lf); + buf = at_command_to_byte_array (command, + is_raw, + (mm_port_get_subsys (MM_PORT (self)) == MM_PORT_SUBSYS_TTY ? + self->priv->send_lf : + TRUE)); g_return_if_fail (buf != NULL); simple = g_simple_async_result_new (G_OBJECT (self), @@ -496,11 +500,14 @@ config (MMPortSerial *_self) /*****************************************************************************/ MMPortSerialAt * -mm_port_serial_at_new (const char *name) +mm_port_serial_at_new (const char *name, + MMPortSubsys subsys) { + g_return_val_if_fail (subsys == MM_PORT_SUBSYS_TTY || subsys == MM_PORT_SUBSYS_USB, NULL); + return MM_PORT_SERIAL_AT (g_object_new (MM_TYPE_PORT_SERIAL_AT, MM_PORT_DEVICE, name, - MM_PORT_SUBSYS, MM_PORT_SUBSYS_TTY, + MM_PORT_SUBSYS, subsys, MM_PORT_TYPE, MM_PORT_TYPE_AT, NULL)); } diff --git a/src/mm-port-serial-at.h b/src/mm-port-serial-at.h index 658f19e4..8e19409e 100644 --- a/src/mm-port-serial-at.h +++ b/src/mm-port-serial-at.h @@ -77,7 +77,8 @@ struct _MMPortSerialAtClass { GType mm_port_serial_at_get_type (void); -MMPortSerialAt *mm_port_serial_at_new (const char *name); +MMPortSerialAt *mm_port_serial_at_new (const char *name, + MMPortSubsys subsys); void mm_port_serial_at_add_unsolicited_msg_handler (MMPortSerialAt *self, GRegex *regex, |