mirror of git://git.sysmocom.de/ofono
gathdlc: Add from_io constructor
This commit is contained in:
parent
58b37ddb53
commit
95e0a15010
|
@ -171,16 +171,16 @@ static void new_bytes(struct ring_buffer *rbuf, gpointer user_data)
|
||||||
ring_buffer_drain(rbuf, pos);
|
ring_buffer_drain(rbuf, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
GAtHDLC *g_at_hdlc_new(GIOChannel *channel)
|
GAtHDLC *g_at_hdlc_new_from_io(GAtIO *io)
|
||||||
{
|
{
|
||||||
GAtHDLC *hdlc;
|
GAtHDLC *hdlc;
|
||||||
unsigned char *buf;
|
unsigned char *buf;
|
||||||
|
|
||||||
if (!channel)
|
if (io == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
hdlc = g_try_new0(GAtHDLC, 1);
|
hdlc = g_try_new0(GAtHDLC, 1);
|
||||||
if (!hdlc)
|
if (hdlc == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
hdlc->ref_count = 1;
|
hdlc->ref_count = 1;
|
||||||
|
@ -192,8 +192,6 @@ GAtHDLC *g_at_hdlc_new(GIOChannel *channel)
|
||||||
hdlc->xmit_accm[3] = 0x60000000; /* 0x7d, 0x7e */
|
hdlc->xmit_accm[3] = 0x60000000; /* 0x7d, 0x7e */
|
||||||
hdlc->recv_accm = ~0U;
|
hdlc->recv_accm = ~0U;
|
||||||
|
|
||||||
hdlc->io = g_at_io_new(channel);
|
|
||||||
|
|
||||||
hdlc->write_buffer = ring_buffer_new(BUFFER_SIZE * 2);
|
hdlc->write_buffer = ring_buffer_new(BUFFER_SIZE * 2);
|
||||||
if (!hdlc->write_buffer)
|
if (!hdlc->write_buffer)
|
||||||
goto error;
|
goto error;
|
||||||
|
@ -207,6 +205,7 @@ GAtHDLC *g_at_hdlc_new(GIOChannel *channel)
|
||||||
if (!hdlc->decode_buffer)
|
if (!hdlc->decode_buffer)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
hdlc->io = g_at_io_ref(io);
|
||||||
g_at_io_set_read_handler(hdlc->io, new_bytes, hdlc);
|
g_at_io_set_read_handler(hdlc->io, new_bytes, hdlc);
|
||||||
|
|
||||||
hdlc->record_fd = -1;
|
hdlc->record_fd = -1;
|
||||||
|
@ -214,9 +213,6 @@ GAtHDLC *g_at_hdlc_new(GIOChannel *channel)
|
||||||
return hdlc;
|
return hdlc;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
if (hdlc->io)
|
|
||||||
g_at_io_unref(hdlc->io);
|
|
||||||
|
|
||||||
if (hdlc->write_buffer)
|
if (hdlc->write_buffer)
|
||||||
ring_buffer_free(hdlc->write_buffer);
|
ring_buffer_free(hdlc->write_buffer);
|
||||||
|
|
||||||
|
@ -228,6 +224,21 @@ error:
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GAtHDLC *g_at_hdlc_new(GIOChannel *channel)
|
||||||
|
{
|
||||||
|
GAtIO *io;
|
||||||
|
GAtHDLC *hdlc;
|
||||||
|
|
||||||
|
io = g_at_io_new(channel);
|
||||||
|
if (io == NULL)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
hdlc = g_at_hdlc_new_from_io(io);
|
||||||
|
g_at_io_unref(io);
|
||||||
|
|
||||||
|
return hdlc;
|
||||||
|
}
|
||||||
|
|
||||||
GAtHDLC *g_at_hdlc_ref(GAtHDLC *hdlc)
|
GAtHDLC *g_at_hdlc_ref(GAtHDLC *hdlc)
|
||||||
{
|
{
|
||||||
if (!hdlc)
|
if (!hdlc)
|
||||||
|
|
|
@ -34,6 +34,7 @@ struct _GAtHDLC;
|
||||||
typedef struct _GAtHDLC GAtHDLC;
|
typedef struct _GAtHDLC GAtHDLC;
|
||||||
|
|
||||||
GAtHDLC *g_at_hdlc_new(GIOChannel *channel);
|
GAtHDLC *g_at_hdlc_new(GIOChannel *channel);
|
||||||
|
GAtHDLC *g_at_hdlc_new_from_io(GAtIO *io);
|
||||||
|
|
||||||
GAtHDLC *g_at_hdlc_ref(GAtHDLC *hdlc);
|
GAtHDLC *g_at_hdlc_ref(GAtHDLC *hdlc);
|
||||||
void g_at_hdlc_unref(GAtHDLC *hdlc);
|
void g_at_hdlc_unref(GAtHDLC *hdlc);
|
||||||
|
|
Loading…
Reference in New Issue