python/dist/src/Modules socketmodule.c, 1.281, 1.282 socketmodule.h, 1.9, 1.10

Update of /cvsroot/python/python/dist/src/Modules In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4650/Modules Modified Files: socketmodule.c socketmodule.h Log Message: Patch #874083: Bluetooth support for socket module. Index: socketmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Modules/socketmodule.c,v retrieving revision 1.281 retrieving revision 1.282 diff -C2 -d -r1.281 -r1.282 *** socketmodule.c 30 Dec 2003 11:14:01 -0000 1.281 --- socketmodule.c 31 Jan 2004 12:34:16 -0000 1.282 *************** *** 1013,1016 **** --- 1013,1078 ---- #endif + #ifdef HAVE_BLUETOOTH_BLUETOOTH_H + case AF_BLUETOOTH: + { + switch( s->sock_proto ) + { + case BTPROTO_L2CAP: + { + struct sockaddr_l2* addr = (struct sockaddr_l2*) &(s->sock_addr).bt_l2; + bdaddr_t* bdaddr = &(addr->l2_bdaddr); + + addr->l2_family = AF_BLUETOOTH; + if( !PyArg_ParseTuple(args, "(iiiiii)i", &bdaddr->b[0], &bdaddr->b[1], &bdaddr->b[2], &bdaddr->b[3], &bdaddr->b[4], &bdaddr->b[5], &addr->l2_psm) ) + { + PyErr_SetString(socket_error, "getsockaddrarg: wrong format"); + return 0; + } + + *addr_ret = (struct sockaddr *) addr; + *len_ret = sizeof *addr; + return 1; + } + case BTPROTO_RFCOMM: + { + struct sockaddr_rc* addr = (struct sockaddr_rc*) &(s->sock_addr).bt_rc; + bdaddr_t* bdaddr = &(addr->rc_bdaddr); + + addr->rc_family = AF_BLUETOOTH; + if( !PyArg_ParseTuple(args, "(iiiiii)i", &bdaddr->b[0], &bdaddr->b[1], &bdaddr->b[2], &bdaddr->b[3], &bdaddr->b[4], &bdaddr->b[5], &addr->rc_channel) ) + { + PyErr_SetString(socket_error, "getsockaddrarg: wrong format"); + return 0; + } + + *addr_ret = (struct sockaddr *) addr; + *len_ret = sizeof *addr; + return 1; + } + case BTPROTO_SCO: + { + struct sockaddr_sco* addr = (struct sockaddr_sco*) &(s->sock_addr).bt_sco; + bdaddr_t* bdaddr = &(addr->sco_bdaddr); + + addr->sco_family = AF_BLUETOOTH; + if( !PyArg_ParseTuple(args, "iiiiii", &bdaddr->b[0], &bdaddr->b[1], &bdaddr->b[2], &bdaddr->b[3], &bdaddr->b[4], &bdaddr->b[5]) ) + { + PyErr_SetString(socket_error, "getsockaddrarg: wrong format"); + return 0; + } + + *addr_ret = (struct sockaddr *) addr; + *len_ret = sizeof *addr; + return 1; + } + default: + { + PyErr_SetString(socket_error, "getsockaddrarg: unknown Bluetooth protocol"); + return 0; + } + } + } + #endif + #ifdef HAVE_NETPACKET_PACKET_H case AF_PACKET: *************** *** 1086,1089 **** --- 1148,1180 ---- #endif + #ifdef HAVE_BLUETOOTH_BLUETOOTH_H + case AF_BLUETOOTH: + { + switch(s->sock_proto) + { + case BTPROTO_L2CAP: + { + *len_ret = sizeof (struct sockaddr_l2); + return 1; + } + case BTPROTO_RFCOMM: + { + *len_ret = sizeof (struct sockaddr_rc); + return 1; + } + case BTPROTO_SCO: + { + *len_ret = sizeof (struct sockaddr_sco); + return 1; + } + default: + { + PyErr_SetString(socket_error, "getsockaddrlen: unknown BT protocol"); + return 0; + } + } + } + #endif + #ifdef HAVE_NETPACKET_PACKET_H case AF_PACKET: *************** *** 3574,3577 **** --- 3665,3678 ---- PyModule_AddIntConstant(m, "AF_ROSE", AF_ROSE); #endif + + #ifdef HAVE_BLUETOOTH_BLUETOOTH_H + PyModule_AddIntConstant(m, "AF_BLUETOOTH", AF_BLUETOOTH); + PyModule_AddIntConstant(m, "BTPROTO_L2CAP", BTPROTO_L2CAP); + PyModule_AddIntConstant(m, "BTPROTO_SCO", BTPROTO_SCO); + PyModule_AddIntConstant(m, "BTPROTO_RFCOMM", BTPROTO_RFCOMM); + PyModule_AddObject(m, "BDADDR_ANY", Py_BuildValue( "iiiiii", 0,0,0,0,0,0 ) ); + PyModule_AddObject(m, "BDADDR_LOCAL", Py_BuildValue( "iiiiii", 0,0,0,0xff,0xff,0xff ) ); + #endif + #ifdef HAVE_NETPACKET_PACKET_H PyModule_AddIntConstant(m, "AF_PACKET", AF_PACKET); Index: socketmodule.h =================================================================== RCS file: /cvsroot/python/python/dist/src/Modules/socketmodule.h,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** socketmodule.h 3 May 2003 09:14:53 -0000 1.9 --- socketmodule.h 31 Jan 2004 12:34:17 -0000 1.10 *************** *** 33,36 **** --- 33,43 ---- #endif + #ifdef HAVE_BLUETOOTH_BLUETOOTH_H + #include <bluetooth/bluetooth.h> + #include <bluetooth/rfcomm.h> + #include <bluetooth/l2cap.h> + #include <bluetooth/sco.h> + #endif + #ifdef HAVE_NETPACKET_PACKET_H # include <sys/ioctl.h> *************** *** 81,84 **** --- 88,96 ---- struct sockaddr_storage storage; #endif + #ifdef HAVE_BLUETOOTH_BLUETOOTH_H + struct sockaddr_l2 bt_l2; + struct sockaddr_rc bt_rc; + struct sockaddr_sco bt_sco; + #endif #ifdef HAVE_NETPACKET_PACKET_H struct sockaddr_ll ll;
participants (1)
-
loewis@projects.sourceforge.net