From ce71d75675120ae06d6ea8d8dee341c578a7353b Mon Sep 17 00:00:00 2001 From: Guillaume Zajac Date: Fri, 20 May 2011 11:38:12 +0200 Subject: [PATCH] gathdlc: add g_at_hdlc_resume() API --- gatchat/gathdlc.c | 16 ++++++++++++++++ gatchat/gathdlc.h | 1 + 2 files changed, 17 insertions(+) diff --git a/gatchat/gathdlc.c b/gatchat/gathdlc.c index 7989bd7..d04ba38 100644 --- a/gatchat/gathdlc.c +++ b/gatchat/gathdlc.c @@ -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); +} diff --git a/gatchat/gathdlc.h b/gatchat/gathdlc.h index 556e383..e82b33e 100644 --- a/gatchat/gathdlc.h +++ b/gatchat/gathdlc.h @@ -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 } -- 2.7.4