Inquiry result with RSSI (From Newbie)
thanit sara <[email protected]> Mon, 11 Aug 2008 16:24:17 -0500
| Newsgroups | gmane.linux.bluez.user |
|---|---|
| Message-ID | <[email protected]> |
Dear all,
Question from newbie. I am trying to send out the inquiry result format with RSSI.
This is what I have done.
My steps are
1.)open the BT device (open socket)
2.)set up event filters
3.)set the inquiry mode to be result format with RSSI
"int set_Inquiring = hci_send_cmd(sock, OGF_HOST_CTL, OCF_WRITE_INQUIRY_MODE, WRITE_INQUIRY_MODE_RP_SIZE, &cpp);//set inquiry mode"
4.)send out an inquiry
"int Inquiring = hci_send_cmd(sock, OGF_LINK_CTL,OCF_INQUIRY , INQUIRY_CP_SIZE, &cp);//do inquiry"
5.)try to read the rssi from "inquiry_info_with_rssi read_rssi"
6.)close socket
Below is my code. Please advice me. Am I missing something here.
/**************************************************************************************************
//Open BT device
//to retrieve the BT id of the local BT adaptor
local_BT_id = hci_get_route(NULL); //NULL option = get teh first available BT adaptor
//check for error
if (local_BT_id < 0)
{
// printf(stderr, "error code %d: %s\n",errno, strerror(errno));
perror("Fail to get BT adaptor id");
exit(1);
}
//to open the socket of the local BT device
sock = hci_open_dev( local_BT_id );
// check for error
if (local_BT_id < 0 || sock < 0)
{
perror("Fail to open device socket");
exit(1);
}
//*****************************************************
//Set up an event filter looking after the inquiry related events
struct hci_filter InqFilter;
hci_filter_clear(&InqFilter);
hci_filter_set_ptype(HCI_EVENT_PKT, &InqFilter);
hci_filter_set_event(EVT_INQUIRY_RESULT, &InqFilter);
hci_filter_set_event(EVT_INQUIRY_RESULT, &InqFilter);
hci_filter_set_event(EVT_INQUIRY_RESULT_WITH_RSSI, &InqFilter);
hci_filter_set_event(EVT_INQUIRY_RESULT_WITH_RSSI, &InqFilter);
hci_filter_set_event(EVT_INQUIRY_COMPLETE, &InqFilter);
if (setsockopt(sock, SOL_HCI, HCI_FILTER, &InqFilter, sizeof(InqFilter)) < 0)
{
perror("Fail to setup filter!");
exit(1);
}
//*****************************************************
//inquiry with the RSSI result
inquiry_info_with_rssi read_rssi;
write_inquiry_mode_cp cpp;
cpp.mode = 0x01;
int set_Inquiring = hci_send_cmd(sock, OGF_HOST_CTL, OCF_WRITE_INQUIRY_MODE, WRITE_INQUIRY_MODE_RP_SIZE, &cpp);//set inquiry mode
inquiry_cp cp;
cp.lap[0] =0x33;
cp.lap[1] =0x8b;
cp.lap[2] =0x9e;
cp.length = 4; //=4*1.28second = 5seconds
cp.num_rsp =0;
int Inquiring = hci_send_cmd(sock, OGF_LINK_CTL,OCF_INQUIRY , INQUIRY_CP_SIZE, &cp);//do inquiry
if (Inquiring < 0)
{
printf("starting to inquire: %d\n",Inquiring);
exit(1);
}
else
printf ("Done inquiry with RSSI!\n");
printf("rssi value = %d \n", read_rssi.rssi); //Try to print the RSSI value here.
close( sock );//close socket
return 0;
}
/***********************************************************************
Beside my hcidump shows no event result format with RSSI.
< HCI Command: Write Inquiry Mode (0x03|0x0045) plen 1
01
> HCI Event: Command Complete (0x0e) plen 4
01 45 0C 00
< HCI Command: Inquiry (0x01|0x0001) plen 5
33 8B 9E 04 00
> HCI Event: Command Status (0x0f) plen 4
12 01 01 04
/********************************************************************
Your kindness is greatly appreciated. I use Fedora9, with BlueZ version 3.32. (I tried command hciconfig hci0 inqmode 1 and it works fine, so I think the problem might not be from my usb dongle.)
Best regards,
Sara
_________________________________________________________________
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/