Bluetooth Low Energy uses 40 channels, each 2 MHz wide, spanning the unlicensed 2.4 GHz radio band. Among the 40 channels, BLE advertisements are broadcast on three channels. These advertisement channels are nominally labeled 37, 38, and 39 and are widely spaced at 2402 MHz, 2426 MHz, and 2480 MHz, respectively.
In Core location of iOS, all the scanned BLE beacons are listed in an NSArray and the RSSI value of each beacon can be accessed easily. Eg.
CLBeacon* beacon1 = [beacons firstObject]; NSNumber *RSSI = [NSNumber numberwithFloat:beacon1.RSSI];
Here, the RSSI value is the 'averaged' value provided by CoreLocation. Also, this RSSI fluctuates a lot at realtime.
Now, my query is, is there any methods/frameworks in iOS (objective-C) to access the each advertisement channel so that we can get RSSI value from each channel?
A published journal [http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7103024&tag=1] has presented the RSSI result from all the three advertisement channels. The paper says that this feature (accessing three advertisement channels individually) is available after iOS 7.0. However, I'm unable to figure out the exact way of accessing the three advertisement channel in iOS.
Thank you in advance.
In general, Apple does not disclose these kind of information. No public API is available for the development of core componenets of IOS. Since, android is an open source platform we can find many source code for accessing sensor and each component but that is not in the case of Apple. Furthermore, It may be due to reason of security, which apple has maintained till today.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With