[Python-checkins] python/dist/src/Modules socketmodule.c, 1.281, 1.282 socketmodule.h, 1.9, 1.10

loewis at projects.sourceforge.net loewis at projects.sourceforge.net
Sat Jan 31 07:34:19 EST 2004


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;




More information about the Python-checkins mailing list