gathdlc: add g_at_hdlc_resume() API
authorGuillaume Zajac <guillaume.zajac@linux.intel.com>
Fri, 20 May 2011 09:38:12 +0000 (11:38 +0200)
committerDenis Kenzior <denkenz@gmail.com>
Tue, 24 May 2011 17:25:07 +0000 (12:25 -0500)
gatchat/gathdlc.c
gatchat/gathdlc.h

index 7989bd7..d04ba38 100644 (file)
@@ -622,3 +622,19 @@ void g_at_hdlc_suspend(GAtHDLC *hdlc)
        g_at_io_set_write_handler(hdlc->io, NULL, NULL);
        g_at_io_set_read_handler(hdlc->io, NULL, NULL);
 }
+
+static void hdlc_wakeup_writer(GAtHDLC *hdlc)
+{
+       g_at_io_set_write_handler(hdlc->io, can_write_data, hdlc);
+}
+
+void g_at_hdlc_resume(GAtHDLC *hdlc)
+{
+       if (hdlc == NULL)
+               return;
+
+       g_at_io_set_read_handler(hdlc->io, new_bytes, hdlc);
+
+       if (g_queue_get_length(hdlc->write_queue) > 0)
+               hdlc_wakeup_writer(hdlc);
+}
index 556e383..e82b33e 100644 (file)
@@ -61,6 +61,7 @@ void g_at_hdlc_set_suspend_function(GAtHDLC *hdlc, GAtSuspendFunc func,
                                                        gpointer user_data);
 
 void g_at_hdlc_suspend(GAtHDLC *hdlc);
+void g_at_hdlc_resume(GAtHDLC *hdlc);
 
 #ifdef __cplusplus
 }