mirror of git://git.sysmocom.de/ofono
btio: Add L2ERTM type
L2ERTM type uses L2CAP socket in SOCK_STREAM instead of SOCK_SEQPACKET
This commit is contained in:
parent
25bde3be6b
commit
c5193182ea
17
btio/btio.c
17
btio/btio.c
|
@ -1161,6 +1161,7 @@ static gboolean get_valist(GIOChannel *io, BtIOType type, GError **err,
|
|||
switch (type) {
|
||||
case BT_IO_L2RAW:
|
||||
case BT_IO_L2CAP:
|
||||
case BT_IO_L2ERTM:
|
||||
return l2cap_get(sock, err, opt1, args);
|
||||
case BT_IO_RFCOMM:
|
||||
return rfcomm_get(sock, err, opt1, args);
|
||||
|
@ -1223,6 +1224,7 @@ gboolean bt_io_set(GIOChannel *io, BtIOType type, GError **err,
|
|||
switch (type) {
|
||||
case BT_IO_L2RAW:
|
||||
case BT_IO_L2CAP:
|
||||
case BT_IO_L2ERTM:
|
||||
return l2cap_set(sock, opts.sec_level, opts.imtu, opts.omtu,
|
||||
opts.mode, opts.master, opts.flushable,
|
||||
opts.priority, err);
|
||||
|
@ -1283,6 +1285,20 @@ static GIOChannel *create_io(BtIOType type, gboolean server,
|
|||
opts->priority, err))
|
||||
goto failed;
|
||||
break;
|
||||
case BT_IO_L2ERTM:
|
||||
sock = socket(PF_BLUETOOTH, SOCK_STREAM, BTPROTO_L2CAP);
|
||||
if (sock < 0) {
|
||||
ERROR_FAILED(err, "socket(STREAM, L2CAP)", errno);
|
||||
return NULL;
|
||||
}
|
||||
if (l2cap_bind(sock, &opts->src, server ? opts->psm : 0,
|
||||
opts->cid, err) < 0)
|
||||
goto failed;
|
||||
if (!l2cap_set(sock, opts->sec_level, opts->imtu, opts->omtu,
|
||||
opts->mode, opts->master, opts->flushable,
|
||||
opts->priority, err))
|
||||
goto failed;
|
||||
break;
|
||||
case BT_IO_RFCOMM:
|
||||
sock = socket(PF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
|
||||
if (sock < 0) {
|
||||
|
@ -1353,6 +1369,7 @@ GIOChannel *bt_io_connect(BtIOType type, BtIOConnect connect,
|
|||
err = l2cap_connect(sock, &opts.dst, 0, opts.cid);
|
||||
break;
|
||||
case BT_IO_L2CAP:
|
||||
case BT_IO_L2ERTM:
|
||||
err = l2cap_connect(sock, &opts.dst, opts.psm, opts.cid);
|
||||
break;
|
||||
case BT_IO_RFCOMM:
|
||||
|
|
|
@ -40,6 +40,7 @@ GQuark bt_io_error_quark(void);
|
|||
typedef enum {
|
||||
BT_IO_L2RAW,
|
||||
BT_IO_L2CAP,
|
||||
BT_IO_L2ERTM,
|
||||
BT_IO_RFCOMM,
|
||||
BT_IO_SCO,
|
||||
} BtIOType;
|
||||
|
|
Loading…
Reference in New Issue