Socket-Class
view release on metacpan or search on metacpan
Bluetooth.xs view on Meta::CPAN
#include "socket_class.h"
MODULE = Socket::Class::BT PACKAGE = Socket::Class
BOOT:
{
printf( "booting bluetooth module\n" );
}
#/*****************************************************************************
# * bt_device_list()
# *****************************************************************************/
void
bt_device_list( ... )
PREINIT:
bdaddr_t addr[256];
int r;
my_thread_var_t *tv;
char tmp[20];
PPCODE:
r = bt_device_list( addr, sizeof( addr ) / sizeof( bdaddr_t ) );
if( r == SOCKET_ERROR ) {
tv = items > 0 ? my_thread_var_find( ST(0) ) : NULL;
if( tv != NULL )
tv->last_errno = Socket_errno();
else
global.last_errno = Socket_errno();
XPUSHs( &PL_sv_undef );
}
else {
for( r = r - 1; r >= 0; r -- ) {
my_ba2str( &addr[r], tmp );
XPUSHs( newSVpvn( tmp, 17 ) );
}
}
#/*****************************************************************************
# * bt_device_name()
# *****************************************************************************/
void
bt_device_name( ... )
PREINIT:
char tmp[256], *s1;
STRLEN l1;
int r;
bdaddr_t addr;
my_thread_var_t *tv;
PPCODE:
if( items > 1 ) {
s1 = SvPVbyte( ST(1), l1 );
if( l1 == sizeof( bdaddr_t ) )
r = bt_device_name( (bdaddr_t *) s1, tmp, sizeof( tmp ) - 1 );
else {
my_str2ba( s1, &addr );
r = bt_device_name( &addr, tmp, sizeof( tmp ) - 1 );
}
}
else {
r = bt_device_name( NULL, tmp, sizeof( tmp ) - 1 );
}
if( r == SOCKET_ERROR ) {
tv = items > 0 ? my_thread_var_find( ST(0) ) : NULL;
if( tv != NULL )
tv->last_errno = Socket_errno();
else
global.last_errno = Socket_errno();
XPUSHs( &PL_sv_undef );
}
else {
//_debug( "got name %d %s\n", r, tmp );
XPUSHs( newSVpvn( tmp, r ) );
}
#/*****************************************************************************
# * bt_service_list()
# *****************************************************************************/
void
bt_service_list( ... )
PREINIT:
char tmp[256], *s1;
STRLEN l1;
int r;
bdaddr_t addr;
my_thread_var_t *tv;
PPCODE:
if( items > 1 ) {
s1 = SvPVbyte( ST(1), l1 );
if( l1 == sizeof( bdaddr_t ) )
r = bt_service_list( (bdaddr_t *) s1 );
else {
my_str2ba( s1, &addr );
r = bt_service_list( &addr );
}
}
else {
r = bt_service_list( NULL );
}
if( r == SOCKET_ERROR ) {
tv = items > 0 ? my_thread_var_find( ST(0) ) : NULL;
if( tv != NULL )
tv->last_errno = Socket_errno();
else
global.last_errno = Socket_errno();
XPUSHs( &PL_sv_undef );
}
( run in 1.476 second using v1.01-cache-2.11-cpan-5511b514fd6 )