eddystone | Specification for Eddystone, an open beacon format from Google

 by   google C Version: v1.0.0 License: Apache-2.0

kandi X-RAY | eddystone Summary

kandi X-RAY | eddystone Summary

eddystone is a C library typically used in Networking applications. eddystone has no bugs, it has no vulnerabilities, it has a Permissive License and it has medium support. You can download it from GitHub.

Eddystone is a protocol specification that defines a Bluetooth low energy (BLE) message format for proximity beacon messages. It describes several different frame types that may be used individually or in combinations to create beacons that can be used for a variety of applications. Announced in April 2016, Eddystone-EID (Ephemeral ID) is a new frame type that defines a cryptographically secure method of configuring a beacon to broadcast information that only authorized people may decrypt. It includes support for a secure transmission of the TLM (Telemetry) information.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              eddystone has a medium active ecosystem.
              It has 3049 star(s) with 789 fork(s). There are 368 watchers for this library.
              OutlinedDot
              It had no major release in the last 12 months.
              There are 70 open issues and 89 have been closed. On average issues are closed in 144 days. There are 11 open pull requests and 0 closed requests.
              It has a neutral sentiment in the developer community.
              The latest version of eddystone is v1.0.0

            kandi-Quality Quality

              eddystone has 0 bugs and 0 code smells.

            kandi-Security Security

              eddystone has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              eddystone code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              eddystone is licensed under the Apache-2.0 License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              eddystone releases are available to install and integrate.
              It has 4655 lines of code, 228 functions and 71 files.
              It has medium code complexity. Code complexity directly impacts maintainability of the code.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of eddystone
            Get all kandi verified functions for this library.

            eddystone Key Features

            No Key Features are available at this moment for eddystone.

            eddystone Examples and Code Snippets

            No Code Snippets are available at this moment for eddystone.

            Community Discussions

            QUESTION

            Dart: Parsing byte data to a string
            Asked 2022-Mar-09 at 12:44

            I have following code. What I am trying to do is parse BLE service data to get EddyStone Namespace and InstanceID. is parse byte data into a string.

            ...

            ANSWER

            Answered 2022-Mar-09 at 12:44

            From the comments, it seems that you're asking for a hexadecimal representations for sequences of bytes.

            Note that strings you expected in your comments for the "namespace" and "instance" IDs seem wrong. It looks like you just converted the first 16 bytes of your List, but since your original List is 20 bytes, it seems like it's supposed to be the entire 20-byte Service Data Block.

            From the specification you linked to in your comments, the "namespace" ID starts at offset 2 and is 10 bytes long. The "instance" ID starts at offset 12 and is 6 bytes long. Therefore, you must first extract those subsequences. Once you have the desired sublist, you can use int.toRadixString to convert each byte to a hexadecimal string, use String.padLeft to force using two hexadecimal digits, and then use List.join to combine them all into a single String:

            Source https://stackoverflow.com/questions/71405252

            QUESTION

            Connecting and sending data to Eddystone beacon from Core Bluetooth central?
            Asked 2022-Jan-30 at 11:25

            I am currently working with a sensor that uses an Eddystone beacon to send 31 byte data packets to a Core Bluetooth iPhone app acting as a central that breaks apart and processes the received packet. The central is set up as scannable and non-connectable. I would like to send a turn sensor on/off signal from the central to the beacon, but I am not sure how to proceed given that Core Bluetooth uses different protocols than Eddystone. Potential solutions I have considered are:

            1. Create button in app that toggle connectable setting to connect with beacon. Write condition in sensor beacon code to turn off power once connection established. Potentially implement the converse by keeping the sensor in a deep sleep mode that is exited once a connection is re-established.
            2. Essentially make a request from the central to write to the Eddystone equivalent of a characteristic on the peripheral sensor side.

            The problem is, I am not sure how to match up Core Bluetooth and Eddystone in such a way that I create a properly formatted 31 byte packet from the iPhone central that can be sent to, picked up, and then read by the peripheral to toggle it's power on/off state. How can I approach this problem, if it is at all possible? If it is not possible, what are some workarounds for Core Bluetooth scanner to Eddystone beacon peripheral communication?

            ...

            ANSWER

            Answered 2022-Jan-30 at 11:25

            According to Eddystone documentation, Eddystone is a protocol specification that defines a Bluetooth low energy (BLE) message format for proximity beacon messages (data from your sensor) and farther specifies a Configuration GATT Service that allow to make some configurations.

            In BLE terms, the Eddystone sensor is a peripheral that should expose the Eddystone Configuration GATT Service and advertise data according to the Eddystone format.

            In order to use the Eddystone Configuration GATT Service you have to establish a BLE connection from central (your IPhone) and the peripheral (your sensor) and to write the parameters in the characteristics.

            According to documentation of Eddystone Configuration GATT Service, to stop the advertisement write an empty array, or a single 0x00 in the charatecistic with UUID a3c8750a-8ed3-4bdf-8a39-a01bebede295.

            This is possible if your sensor exposes this service.

            Source https://stackoverflow.com/questions/70910958

            QUESTION

            NodeJS could not read [Object] in JSON data
            Asked 2021-Nov-23 at 10:21

            I have data as a JSON format

            ...

            ANSWER

            Answered 2021-Nov-23 at 09:53

            arr1 is an Array it doesn't have beacons property. If you expect it to be the only one item with the mac you should use data.find instead of data.filter. Also do not use for-in loop to iterate over arrays. You can use for-of or .forEach instead.

            Source https://stackoverflow.com/questions/70078582

            QUESTION

            Can I still buy Eddystone-EID beacons?
            Asked 2021-Oct-09 at 19:05

            I know asking this question here is not proper, I feel sorry for that.

            I have tried searching websites, Amazon and Alibaba, but fail to find any product can support Eddystone-EID.

            So, I think developers in stack overflow may know any product can support Eddystone-EID.

            Could you share any any information for that?

            ...

            ANSWER

            Answered 2021-Oct-09 at 19:05

            The two vendors below claim to sell beacons compatible with Eddystone-EID as of October 2021:

            Before you buy anything beware that Google shut down their beacon platform web services in April 2021. I wrote a full blog post to explain what this means: Eddystone is Dead, Long Live Eddystone!

            Using these web services is completely optional for Eddystone-UID and Eddystone-URL, but critical for Eddystone-EID, because the beacon identifier rotates with a crypto algorithm and a “trusted resolver” server is needed to convert the advertised “ephemeral identifier” from jibberish to something meaningful and useful.

            Without Google’s beacon platform web services, I am aware of no commercially available trusted resolver for Eddystone-EID. You would need to build your own, which is a non-trivial effort. Without a trusted resolver Eddystone-EID is worthless.

            Because of this, make sure the vendors above still support using their products with Eddystone-EID. In time, it is likely they will remove support in their beacon firmware.

            Finally, it is important to note that just because Google gave up on their beacon web services, most apps that use Eddystone, iBeacon and Altbeacon are unaffected. Beacons are standardized and will work forever — just don’t use Google web services! Again, beacon technology aside from Eddystone-EID has no need for Google web services.

            Source https://stackoverflow.com/questions/69504343

            QUESTION

            BLE api converts negative temperature to positive
            Asked 2021-Jul-07 at 17:41

            I want to extract the temperature from a BLE beacon using the ESP32 chip. I have used the following code to do this:

            ...

            ANSWER

            Answered 2021-Jul-07 at 17:41

            I looked at the library you linked to and it had the following for temperature:

            Source https://stackoverflow.com/questions/68278071

            QUESTION

            There's no web-based beacon broadcasting, right?
            Asked 2021-Jun-08 at 15:38

            I am developing a broadcasting app using Eddystone. The question here is, as far as I know, there is no beacon broadcasting (TLM) API on the mobile web (in a browser such as Chrome). To make sure, I want to make sure that there is no such technology. Thank you.

            ...

            ANSWER

            Answered 2021-Jun-08 at 15:38

            The only platform that allows you to do this is the Chrome Browser on Chrome OS. On that platform, users can optionally enable BLE advertising in a browser setting, then apps can programmatically configure BLE advertising including for beacons like Eddystone. The folks at Radius networks put together a JavaScript Beacon Library to help you do this.

            For all other platforms the answer is no, you cannot advertise BLE using a web browser. This answer applies to all other browsers on all other operating systems.

            It is worth mentioning that Google sponsors the Web Bluetooth initiative to bring BLE support to browsers. However, it is designed to support only the BLE central role (not the peripheral role needed to advertise). And even Web Bluetooth's central support is very limited -- it doesn't support general BLE scanning for beacons (it only supports scanning for BLE services for connection purposes.) Further still, Web Bluetooth is not supported at all by Apple Safari on either iOS or MacOS, and Apple has said it does not plan to support it in the future.

            Bottom line, if you want to work with beacons in the web browser, you are largely out of luck. The one exception is that you can advertise on ChromeOS.

            Source https://stackoverflow.com/questions/67881562

            QUESTION

            How to parse Eddystone UID BLE beacon info
            Asked 2021-May-10 at 11:49

            I am try to write a parser for BLE Eddystone UID packet, but don't know how exactly to do it. I am using Beacon Simulator App to broadcast a Eddystone UID Packet, and when I tested with different mobile using same app as scanner I can see that Eddystone UID packet broadcasted by 1st Device.

            I want to write a sample app to scan for Eddystone UID packets. I know I have to use BluetoothLeScanner and in onScanResult of ScanCallback I can get all the Bluetooth devices compatible with BLE (Bluetooth Low Energy).

            But the problem is I am able to extract device mac, device name from ScanResult and can validate that I am able to hear my bluetooth headset and speaker but I am not sure how exactly I will get namespace and instance of the Eddystone UID and I am not able to see any such variable in ScanResult which will help me.

            Can anyone please point me to any snippet or any code regarding how to do it. I don't want to use any third party library for scanning, simple plain in Kotlin or in java. Kotlin is preferred but java is also fine, I am aware of both language.

            ...

            ANSWER

            Answered 2021-May-10 at 11:49

            Eddystone UID: A unique, static ID with a 10-byte Namespace component and a 6-byte Instance component. In onScanResult you can extract Eddystone uid packet like below

            Source https://stackoverflow.com/questions/67469709

            QUESTION

            Flutter Eddystone beacon detection
            Asked 2021-Apr-24 at 13:10

            Is there any Flutter package available that can listen for Eddystone UID beacons and Eddystone-URLs?

            I have been looking at various packages such as beacons_plugin and flutter_beacon but I cannot seem to find any package that can receive these beacon broadcasts.

            Has anyone been able to achieve this? If so, how?

            Thank's @ukBaz - I am now seeing the Eddystone data. However i am trying to get the namespace id and instance data from the device.

            I am using a Minew D15N BLE beacon and printing out the data..

            ...

            ANSWER

            Answered 2021-Apr-24 at 07:03

            Those packages look like they are just for iBeacon which uses manufacturer data in the advertising packet. For Eddystone it uses service data. The flutter_blue library give you access to the service data. https://pub.dev/documentation/flutter_blue/latest/flutter_blue/AdvertisementData-class.html

            The following answer shows how to scan and access the advertising data with flutter_blue: https://stackoverflow.com/a/63591662/7721752

            Source https://stackoverflow.com/questions/67231737

            QUESTION

            Beacon and Eddystone detection issue
            Asked 2021-Feb-08 at 14:22

            The problem consist of detecting the IBeacon and Eddystone Frames, when I have the Eddystone I have to use specific function and the same for the IBeacon. I am using Java in Android Studio so the function who deliver me the IBeacon result is getManufatureSpecificData() and for the Eddystone is getServiceData(). The question is why there is different function to have the result? and how can I check if the received frame is Eddystone or IBeacon?

            The snippet of code

            ...

            ANSWER

            Answered 2021-Feb-08 at 14:22

            There are two variants of Bluetooth LE advertisements defined by the Bluetooth SIG standards body:

            1. GATT Service Advertisements - these are designed to advertise GATT Services and may have service data bytes, which are designed to tell you something about the advertised service.
            2. Manufacturer Advertisements - these are designed for any purpose that the Bluetooth device manufacturer wishes to use. They always include manufacturer data of 0-24 bytes.

            When Apple designed the iBeacon format, it chose to use manufacturer advertisements. As a result, whenever you detect them you must get the manufacturer data to decode the contents.

            When Google designed Eddystone, it chose not to use manufacturer advertisements and instead use GATT Service advertisments. It made this choice because it wanted he format to work well on iOS devices, and iOS generally refuses to let 3rd party apps detect manufacturer advertisements (other than iBeacon) in the background.

            Because of this design decision by Google, you must check to see if there is service data when attempting to decode Eddystone advertisements.

            If you want to detect both beacon types, use logic like this:

            1. Is there attached service data? If no, go to step 3.
            2. Can the service data be decoded as Eddystone? If yes, we are done.
            3. Is the advert a manufacturer advert? If no, go to step 5.
            4. Can the manufacturer data be decoded at iOS, if yes, we are done.
            5. The advertisement is neither Eddystone nor iBeacon.

            Source https://stackoverflow.com/questions/66102110

            QUESTION

            MbedTLS and .NET BouncyCastle interoperability issue with Curve25519
            Asked 2021-Jan-05 at 10:14

            EDIT: Code changed to provide a simpler test case

            I'm creating a simple client/server application that uses Curve25519 for key exchange. The client is implemented in C with mbedtls and the server is implemented in .NET with BouncyCastle.

            Unfortunately, the generated shared secret is not the same on the client and on the server. Below is shown an excerpt of the code that generates the public/private keys (I hardcoded some value to easy the debugging).

            Client Keys Generation (mbedtls code, mostly copied from https://github.com/ARMmbed/mbedtls/blob/development/programs/pkey/ecdh_curve25519.c and https://github.com/google/eddystone/blob/bb8738d7ddac0ddd3dfa70e594d011a0475e763d/implementations/mbed/source/EIDFrame.cpp#L144)

            ...

            ANSWER

            Answered 2021-Jan-04 at 20:33

            Curve25519 represents keys in little-endian order. X25519 (ECDH with Curve25519) represents the shared secret in little-endian order. This is unlike most standard formats used in cryptography, in particular keys on SECP/NIST and Brainpool curves and the shared secret from ECDH with Weierstrass curves, which represent numbers in big-endian numbers. So change both calls to mbedtls_mpi_write_binary to mbedtls_mpi_write_binary_le.

            Alternatively, use mbedtls_ecp_point_write_binary to export the public key and mbedtls_ecdh_calc_secret to calculate the shared secret: they take care of formatting the numbers with the correct endianness for each curve.

            I haven't verified that this is the only problem.

            Source https://stackoverflow.com/questions/65564441

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install eddystone

            You can download it from GitHub.

            Support

            For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
            CLONE
          • HTTPS

            https://github.com/google/eddystone.git

          • CLI

            gh repo clone google/eddystone

          • sshUrl

            git@github.com:google/eddystone.git

          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Explore Related Topics

            Consider Popular C Libraries

            linux

            by torvalds

            scrcpy

            by Genymobile

            netdata

            by netdata

            redis

            by redis

            git

            by git

            Try Top Libraries by google

            guava

            by googleJava

            zx

            by googleJavaScript

            styleguide

            by googleHTML

            leveldb

            by googleC++