- :const:`BTPROTO_SCO` accepts ``bdaddr`` where ``bdaddr`` is a
:class:`bytes` object containing the Bluetooth address in a
- string format. (ex. ``b'12:23:34:45:56:67'``) This protocol is not
- supported under FreeBSD.
+ string format. (ex. ``b'12:23:34:45:56:67'``)
+
+ .. versionchanged:: next
+ FreeBSD support added.
- :const:`AF_ALG` is a Linux-only socket based interface to Kernel
cryptography. An algorithm socket is configured with a tuple of two to four
socket.BTPROTO_HCI
socket.SOL_HCI
socket.BTPROTO_L2CAP
-
- if not sys.platform.startswith("freebsd"):
- socket.BTPROTO_SCO
+ socket.BTPROTO_SCO
def testCreateRfcommSocket(self):
with socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM, socket.BTPROTO_RFCOMM) as s:
with socket.socket(socket.AF_BLUETOOTH, socket.SOCK_RAW, socket.BTPROTO_HCI) as s:
pass
- @unittest.skipIf(sys.platform == "win32" or sys.platform.startswith("freebsd"),
- "windows and freebsd do not support SCO sockets")
+ @unittest.skipIf(sys.platform == "win32", "windows does not support SCO sockets")
def testCreateScoSocket(self):
with socket.socket(socket.AF_BLUETOOTH, socket.SOCK_SEQPACKET, socket.BTPROTO_SCO) as s:
pass
#define BTPROTO_L2CAP BLUETOOTH_PROTO_L2CAP
#define BTPROTO_RFCOMM BLUETOOTH_PROTO_RFCOMM
#define BTPROTO_HCI BLUETOOTH_PROTO_HCI
+#define BTPROTO_SCO BLUETOOTH_PROTO_SCO
#define SOL_HCI SOL_HCI_RAW
#define HCI_FILTER SO_HCI_RAW_FILTER
#define sockaddr_l2 sockaddr_l2cap
#define _BT_L2_MEMB(sa, memb) ((sa)->l2cap_##memb)
#define _BT_RC_MEMB(sa, memb) ((sa)->rfcomm_##memb)
#define _BT_HCI_MEMB(sa, memb) ((sa)->hci_##memb)
+#define _BT_SCO_MEMB(sa, memb) ((sa)->sco_##memb)
#elif defined(__NetBSD__) || defined(__DragonFly__)
#define sockaddr_l2 sockaddr_bt
#define sockaddr_rc sockaddr_bt
return ret;
#endif
}
+#endif /* BTPROTO_HCI */
-#if !defined(__FreeBSD__)
+#ifdef BTPROTO_SCO
case BTPROTO_SCO:
{
struct sockaddr_sco *a = (struct sockaddr_sco *) addr;
return makebdaddr(&_BT_SCO_MEMB(a, bdaddr));
}
-#endif /* !__FreeBSD__ */
-#endif /* BTPROTO_HCI */
+#endif /* BTPROTO_SCO */
default:
PyErr_SetString(PyExc_ValueError,
*len_ret = sizeof *addr;
return 1;
}
-#if !defined(__FreeBSD__)
+#endif /* BTPROTO_HCI */
+#ifdef BTPROTO_SCO
case BTPROTO_SCO:
{
const char *straddr;
*len_ret = sizeof *addr;
return 1;
}
-#endif /* !__FreeBSD__ */
-#endif /* BTPROTO_HCI */
+#endif /* BTPROTO_SCO */
default:
PyErr_Format(PyExc_OSError,
"%s(): unknown Bluetooth protocol", caller);
case BTPROTO_HCI:
*len_ret = sizeof (struct sockaddr_hci);
return 1;
-#if !defined(__FreeBSD__)
+#endif /* BTPROTO_HCI */
+#ifdef BTPROTO_SCO
case BTPROTO_SCO:
*len_ret = sizeof (struct sockaddr_sco);
return 1;
-#endif /* !__FreeBSD__ */
#endif /* BTPROTO_HCI */
default:
PyErr_SetString(PyExc_OSError, "getsockaddrlen: "