I’m scanning beacon frames, and I want to differentiate Estimote beacon packets from phone transmitted packets (with the Beacon Simulator app’ for example).
I understood that Estimote packets were iBeacon packets by default.
But reading the JavaDoc, I encountered the Beacon class that represents a Beacon. This class extends the Packet class, so we can know the packet type with getPacketType. The method returns an element of the PacketType enumeration:
CONFIGURABLE_DEVICE
EDDYSTONE_EID
EDDYSTONE_GENERAL
EDDYSTONE_TELEMETRY
EDDYSTONE_UID
EDDYSTONE_URL
ESTIMOTE_DEFAULT
ESTIMOTE_LOCATION
ESTIMOTE_TELEMETRY
IBEACON
MIRROR
NEARABLE
UNKNOWN
When I scan for Estimote beacons, I can see that the packet is a IBEACON packet. But I was waiting for ESTIMOTE_DEFAULT.
So can someone explain me what is a ESTIMOTE_DEFAULT packet ?
I think ESTIMOTE_DEFAULT was simply an alias for the default type of packet back in the old days when Estimote Beacons could only broadcast one packet at a time. (That default packet was the iBeacon packet.)
I assume you want to avoid a situation where somebody “emulates” your beacon in order to trigger some action in your app that they’re not supposed to trigger. If so, then I’d recommend taking a look at secure packets: our Secure UUID extension to iBeacon, or Eddystone-EID. That should do it!
I am actually involved in the secure UUID issue, but it could be cool to have another security layer.
For example, your Estimote app’ only shows the Estimote beacons, beeing authenticated or not. How could I do that?
In the Estimote app, we scan for the Connectivity (AKA “Configurable”) packets, since unlike iBeacon or Eddystone, only Estimote Beacons are known to broadcast this (:
(Just note that this is not a secure solution unlike Secure-UUID/Eddystone-EID, since a malicious attacker could always replicate the Connectivity packet on a non-Estimote device.)