Hi,
I need to use two bluetooth devices in the same computer with BlueZ.
How can I select (with socket) the device local that I like make a conexion?
If I make a simple conexion... Can I select what of my local modules (HCI0 or HCI1) makes this conexion?
#include <stdio.h>
#include <unistd.h>
#include <sys/socket.h>
#include <bluetooth/bluetooth.h>
#include <bluetooth/rfcomm.h>
int main(int argc, char **argv)
{
struct sockaddr_rc addr = { 0 };
int s, status;
char dest[18] = "01:23:45:67:89:AB";
// allocate a socket
s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
// set the connection parameters (who to connect to)
addr.rc_family = AF_BLUETOOTH;
addr.rc_channel = (uint8_t) 1;
str2ba( dest, &addr.rc_bdaddr );
// connect to server
status = connect(s, (struct sockaddr *)&addr, sizeof(addr));
// send a message
if( status == 0 ) {
status = write(s, "hello!", 6);
}
if( status < 0 ) perror("uh oh");
close(s);
return 0;
}
Can I select what of my local modules (HCI0 or HCI1) makes this conexion?
Where can I select (in the example) what local module use? ??????
Regards,
Sir Graham.
bind() to the address and channel of the local adapter you want to use
before the call to connect()
-albert
On 4/10/06, Sir Graham (Terra) <[email protected]> wrote:
>
> *Hi,*
> **
> *I need to use two bluetooth devices in the same computer with BlueZ.*
> **
> *How can I select (with socket) the device local that I like make a
> conexion?*
>
>
> *If I make a simple conexion... Can I select what of my local modules
> (HCI0 or HCI1) makes this conexion?*
>
>
> #include <stdio.h>
> #include <unistd.h>
> #include <sys/socket.h>
> #include <bluetooth/bluetooth.h>
> #include <bluetooth/rfcomm.h>
>
> int main(int argc, char **argv)
> {
> struct sockaddr_rc addr = { 0 };
> int s, status;
> char dest[18] = "01:23:45:67:89:AB";
>
> // allocate a socket
> s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
>
> // set the connection parameters (who to connect to)
> addr.rc_family = AF_BLUETOOTH;
> addr.rc_channel = (uint8_t) 1;
> str2ba( dest, &addr.rc_bdaddr );
>
> // connect to server
> status = connect(s, (struct sockaddr *)&addr, sizeof(addr));
>
> // send a message
> if( status == 0 ) {
> status = write(s, "hello!", 6);
> }
>
> if( status < 0 ) perror("uh oh");
>
> close(s);
> return 0;
> }
>
> *Can I select what of my local modules (HCI0 or HCI1) makes this
> conexion? *
>
> *Where can I select (in the example) what local module use? ??????*
> **
> *Regards,*
> *Sir Graham.*
> **
>
>
>
>