Hi Emanuele,
> reading another post here, I saw Marcel hinted to use
the inquiry from
> D-Bus API to sort the devices by their RSSI so I tried
a simple test
>
> this is the part of code I'm using
> ...
>
> if (dbus_message_is_signal(msg, "
org.bluez.Adapter",
> "RemoteDeviceFound")) {
> printf ("Remote Device Found Signal
Receivedn");
>
> while
(dbus_message_iter_get_arg_type(&iter) !=
> DBUS_TYPE_INVALID) {
> switch
(dbus_message_iter_get_arg_type(&item)) {
> case DBUS_TYPE_STRING: /* first
pameter
> bdaddress */
> .....
>
> break;
> case DBUS_TYPE_UINT32: /* second
parameter class
> of device */
> ........
> break;
>
> case DBUS_TYPE_INT16: /* rssi */
>
dbus_message_iter_get_basic(&args, &rssi);
> printf("rssi: %dn",
rssi);
> break;
>
> ......
>
>
>
> Now the problem is: I can read the bdaddress and the
device class
> good, but the RSSI values I get from variuous devices
are negatives
> (the are in range -40 -90 usually). I read somewhere
RSSI should range
> from 0 to 255 so maybe I'm doing something wrong ? api
says the type
> RSSI is int16 not uint16 so I used a signed variable.
the RSSI value is a signed int8 actually (except that D-Bus
doesn't
support this type). You might confuse this with the link
quality value,
but the RSSI is always signed.
Regards
Marcel
------------------------------------------------------------
-------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the
chance to share your
opinions on IT & business topics through brief
surveys-and earn cash
http://www.techsay.com/default.
php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Bluez-users mailing list
Bluez-users lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bluez-users
|