bluetooth | Cross-platform Bluetooth API for Go and TinyGo

 by   tinygo-org C Version: v0.6.0 License: Non-SPDX

kandi X-RAY | bluetooth Summary

kandi X-RAY | bluetooth Summary

bluetooth is a C library typically used in Networking applications. bluetooth has no bugs, it has no vulnerabilities and it has low support. However bluetooth has a Non-SPDX License. You can download it from GitHub.

Go Bluetooth is a cross-platform package for using Bluetooth Low Energy hardware from the Go programming language. It works on typical operating systems such as Linux, macOS, and Windows. It can also be used running "bare metal" on microcontrollers produced by Nordic Semiconductor by using TinyGo. The Go Bluetooth package can be used to create both Bluetooth Low Energy Centrals as well as to create Bluetooth Low Energy Peripherals.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              bluetooth has a low active ecosystem.
              It has 527 star(s) with 92 fork(s). There are 13 watchers for this library.
              OutlinedDot
              It had no major release in the last 12 months.
              There are 44 open issues and 34 have been closed. On average issues are closed in 121 days. There are 8 open pull requests and 0 closed requests.
              It has a neutral sentiment in the developer community.
              The latest version of bluetooth is v0.6.0

            kandi-Quality Quality

              bluetooth has 0 bugs and 20 code smells.

            kandi-Security Security

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

            kandi-License License

              bluetooth has a Non-SPDX License.
              Non-SPDX licenses can be open source with a non SPDX compliant license, or non open source licenses, and you need to review them closely before use.

            kandi-Reuse Reuse

              bluetooth releases are available to install and integrate.
              Installation instructions, examples and code snippets are available.
              It has 3886 lines of code, 186 functions and 56 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 bluetooth
            Get all kandi verified functions for this library.

            bluetooth Key Features

            No Key Features are available at this moment for bluetooth.

            bluetooth Examples and Code Snippets

            Gets the bluetooth port number .
            javadot img1Lines of Code : 3dot img1License : Permissive (MIT License)
            copy iconCopy
            public String getLightningPort() {
                    return lightningPort;
                }  

            Community Discussions

            QUESTION

            Crashing when first time try OkHttp as a client
            Asked 2022-Apr-02 at 04:40

            I'm have some project, realtime sending RSSI and MAC of Bluetooth Low Energy. I want try using http protocol, and i found OkHttp library. But when i run with OkHttp, my software crash.

            My error

            ...

            ANSWER

            Answered 2022-Apr-02 at 04:40

            The error is caused due to execution of network request on main thread (a.k.a. UI thread). In general, thread blocking operations (like file read, network requests) are prohibited on main thread. This is done to avoid App Not responding error.

            In your mainActivity.java, since BroadcastReceiver#onReceive is executed on main thread. (Ref: https://stackoverflow.com/a/5676888/5309486 ). And inside this onReceive function, you are trying to make the network request.

            Just, use handler and post the network call to background thread (or any other thread) and that will fix your issue.

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

            QUESTION

            BLE Using WinRT: Access Denied When Executing "GetCharacteristicsForUuidAsync()" for Write Characteristic
            Asked 2022-Mar-26 at 15:26

            Maybe someone can help me out because I have a really tricky situation with Bluetooth LE using WinRT on Windows 10 (like supposed here: Bluetooth Low Energy in .Net (C#)).

            I need BLE within a Win32 classic desktop application. Our code is running in a 32 Bit frame application using the .NET runtime (v4.0.30319, .NET Framework 4.6.2). I was able to manage all the other issues (strong naming some NuGet assemblies (Shiny.BluetoothLE), running BluetoothAdapter.GetRadioAsync() in a 64 Bit COM surrogate DLL when running on 64 Bit Windows) but now I am totally stuck with this and here’s where:

            The problem occurrs when executing var result = await gattDeviceService.GetCharacteristicsForUuidAsync(uuid, BluetoothCacheMode.Cached); see here https://docs.microsoft.com/de-de/uwp/api/windows.devices.bluetooth.genericattributeprofile.gattdeviceservice.getcharacteristicsforuuidasync?view=winrt-20348. When getting the read characteristics, the result.Status is GattCommunicationStatus.Success and the result contains the desired characteristic. But of course I also need to get the write characteristic and I am ALWAYS getting GattCommunicationStatus.AccessDenied! Because of that the result contains NO characteristic.

            Has anybody a clue why is that? I really need help here because I am kinda lost right now…

            I also tried to set AccessPermission via registry like supposed here but no luck at all…

            PS: I use Windows 10 SDK Kit Build 20348 and like stated above it is a C# .NET Framework 4.6.2 project and all our assemblies are strong named because of using GAC. If I am missing anything don’t hesitate to contact me.

            ...

            ANSWER

            Answered 2022-Mar-26 at 15:26

            For anyone who stumbles over the same stupid issue...Here's the solution:

            On Windows, using .NET Framework 4.6.1+ and the WinRT libraries inside a Non-UWP application, you can only call ONCE for getting the characteristics, no matter if you call for all at once via gattDeviceService.GetCharacteristicsAsync(BluetoothCacheMode.Uncached) or for a specific one via gattDeviceService.GetCharacteristicsForUuidAsync(uuid, BluetoothCacheMode.Cached).

            Any subsequent calls will fail with GattCommunicationStatus.AccessDenied... So my solution now is to retrieve all characteristics at once and filter them locally.

            That did the trick! Anyways, this is so stupid...It wasted a lot of my time now! As it seems, I also do not need to set any AccessPermission via registry.

            PS: I will call out to you, if I stumble over another tricky situation, just to let you guyz know.

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

            QUESTION

            How to get a response from the async write function in capacitor-community / bluetooth-le
            Asked 2022-Mar-18 at 01:42

            I'm working with an ESP32 chip and am trying to create an Android app (using Ionic) which allows user to send wifi credentials to the ESP32 chip via BLE. I'd like to be able to update the status of the wifi sending process for the user in the UI (which I'm developing using Angular and then converting it to an Android webapp using Ionic). To do this, I'm also using the capacitor-community/bluetooth-le library.

            Can anyone explain to me what this.queue does in the async write function (code shown below) does? I thought this function returns a response from a remote BLE device after writing to a GATT characteristic, but I get absolutely nothing at all for a response.

            ...

            ANSWER

            Answered 2022-Mar-18 at 01:42

            Here's how I'm using BleClient.write to transmit information to a BLE device (recipient):

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

            QUESTION

            Xamarin Forms BLE Plugin Scan Issue Android 12
            Asked 2022-Mar-04 at 07:30

            I have written a xamarin forms app which uses the Plugin.BLE NuGet package to scan and connect to ble devices. It was working/debugging flawlessly on my phone until it(my phone) updated to Android 12.0 - API 31. I am using the basic vanilla implementation from the plugin:

            ...

            ANSWER

            Answered 2022-Mar-04 at 07:30

            The BLUETOOTH_ADVERTISE, BLUETOOTH_CONNECT, and BLUETOOTH_SCAN permissions are runtime permissions.

            Therefore, you must explicitly request user approval in your app before you can look for Bluetooth devices, make a device discoverable to other devices, or communicate with already-paired Bluetooth devices.

            When your app requests at least one of these permissions, the system prompts the user to allow your app to access Nearby devices.

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

            QUESTION

            Android 12 bluetooth permissions confusion
            Asked 2022-Feb-25 at 12:57

            So in API 31 there are new Bluetooth permissions. I want to turn bluetooth on or off using this:

            ...

            ANSWER

            Answered 2022-Feb-25 at 12:57

            Targeting Android 12 my working solution is to declare the permissions in this way:

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

            QUESTION

            Cannot create a Bluetooth SPP connection on MacOS Monterey
            Asked 2022-Feb-24 at 01:41

            Since upgrading to macOS Monterey, we have been unable to create a Bluetooth SPP connection to any hardware device.

            • The SPP service does not appear to be supported. When listing the services for the device, the SPP service is not listed at all, as it was in previous OS versions.

            • SPP Connection to the device is blocked by the operating system (except in extreme cases where we open a socket connection while the device is still connecting to other Bluetooth services)

            We are using a headphone-type device that successfully pairs and connects to the computer with A2DP, HFP and a few other standard services. However, it is unable to connect to SPP service, which was previously available up until Big Sur. Has anyone else faced a similar issue -- and are there currently workarounds to establish a stable Bluetooth SPP connection on macOS Monterey?

            ...

            ANSWER

            Answered 2022-Feb-24 at 01:41

            After communications with Apple support, the issue has been resolved as of Monterey 12.3 Beta 4.

            1 - RFCOMM handles are now properly returned.

            2 - IOBluetooth.recentDevices() still does not return devices, which was part of the problem described above, but can be circumvented by leveraging IOBluetooth.pairedDevices() instead.

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

            QUESTION

            android:exported needs to be explicitly specified for . Apps targeting Android 12 and higher are required to specify
            Asked 2022-Feb-23 at 14:13

            After upgrading to android 12, the application is not compiling. It shows

            "Manifest merger failed with multiple errors, see logs"

            Error showing in Merged manifest:

            Merging Errors: Error: android:exported needs to be explicitly specified for . Apps targeting Android 12 and higher are required to specify an explicit value for android:exported when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details. main manifest (this file)

            I have set all the activity with android:exported="false". But it is still showing this issue.

            My manifest file:

            ...

            ANSWER

            Answered 2021-Aug-04 at 09:18

            I'm not sure what you're using to code, but in order to set it in Android Studio, open the manifest of your project and under the "activity" section, put android:exported="true"(or false if that is what you prefer). I have attached an example.

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

            QUESTION

            How expensive is WearableListenerService? (Wear Os)
            Asked 2022-Feb-19 at 06:02

            I am working on a new wear application with a companion mobile app.
            It will rarely be necessary to transfer information from the mobile to the watch via Bluetooth connection.
            The main wear app is standalone, so transferring data from the mobile phone is a luxury because it will be a more convenient way to set up user preferences than doing it on the watch (Although the settings menu will also exist on the watch).

            So I have a dilemma between two options:

            1. Listen to messages coming through the Bluetooth connection only when the app is open on the watch.
              The advantage here is resource savings and efficiency (but the question is how much).
              The disadvantage is a lesser user experience.

            2. Set up a WearableListenerService that will always listen to messages coming from the mobile phone.
              The advantage here is a high user experience since the user will not have to open the app on the watch in order to transfer the data.
              The disadvantage here is a waste of resources (and again the question of how much).

            What should I do?
            How expensive is WearableListenerService in terms of system resources and battery life in particular?

            ...

            ANSWER

            Answered 2022-Feb-19 at 06:02

            As per the WearableListenerService docs:

            The life-cycle of this service is managed by Android Wear. This service will be bound to and events delivered as a result of various Android Wear events, including data, messages and events indicating a device has connected or disconnected from the Android Wear network.

            This means that the service is only created when Wear has data, messages, etc. to deliver to your app - when there isn't anything to deliver, the service is destroyed and takes up no resources whatsoever.

            If you have any case where you want to receive callbacks while your process is not already open, then implementing a WearableListenerService is exactly what you should be doing.

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

            QUESTION

            How to represent communication protocol in UML?
            Asked 2022-Jan-30 at 21:36

            In my UML model I have a system and its subcomponents that talk to each other. For Example, I have a computer and a RC robot where they talk via Bluetooth. Currently in the diagrams the flow is something like:

            "Computer" triggers "setVelocity()" function of "RC car".

            At this point, I want to refine the communication by saying that

            • computer sends "Movement" message
            • with velocity field is set to 100 and direction field is set to 0
            • which is acknowledged by RC car by sending ACK message
            • with message id "Movement" and sequence number X.

            How do I do that?

            EDIT: Clarification

            Normally this is what my diagram looks like without protocol details:

            But when I tried to add messages, there are at least 2 problems:

            • It seems like Computer first triggered the setVelocity() funciton and then sendBluetoothMessage() sequentially which are not sequential . The followings of setVelocity() are actually what happens inside that.
            • sendBluetoothMessage() is actually a function of Computer. But here it belongs to RC Car. (or am I wrong?) And the same things for ACK.

            Thanks for the responses. You are gold!

            ...

            ANSWER

            Answered 2022-Jan-29 at 17:48
            Communication protocols in general

            There are two main ways of representing the sending of a movement message between two devices:

            1. A movement() operation on the target device, with parameters for the velocity and direction. You would typically show the exchange in a sequence diagram, with a call arrow from the sender to the receiver. The return message could just be label as ACK.

            2. A «signal» Movement: Signals correspond to event messages. In a class diagram, they are represented like a class but with the «signal» keyword: velocity and direction would be attributes of that signal. ACK would be another signal. The classes that are able to receive the signals show it as reception (looks like an operation, but again with «signal» keyword).

            In both cases, you would show the interactions of your communication protocol with an almost identical sequence diagram. But signals are meant for asynchronous communication and better reflect imho the nature of the communication. It's semantic is more suitable for your needs.

            If you prefer communication diagram over interaction diagrams, the signal approach would be clearer, since communication diagrams don't show return messages.

            Why signals is what you need (your edit)

            With the diagrams, your edited question is much clearer. My position about the use of signals is unchanged: signals would correspond to the information exchanged between the computer and the car. So in a class diagram, you could document the «signal»Movement as having attributes id, velocity and direction:

            In your sequence diagram, you'd then send and arrow with Movement (X,100,0). Signal allows to show the high level view of the protocol exchanges, without getting lost on the practical implementation details:

            The implementation details could then be shown in a separate diagram. There are certainly several classes involved on the side of the computer (one diagram, the final action being some kind of sending) and on the side of the car (another diagram: how to receive and dispatch the message, and decode its content). I do not provide examples because it would very much look like your current diagram, but the send functions would probably be implemented by a communication controller.

            If you try to put the protocol and its implementation in the same diagram, as in your second diagram, it gets confusing because of the lack of separation of concerns: here you say the computer is calling a send function on the car, which is not at all what you want. The reader has then difficulty to see what's really required by the protocol, and what's the implementation details. For instance, I still don't know according to your diagram, if setVelocity is supposed to directly send something to the car, or if its a preparatory step for sending the movement message with a velocity.

            Last but not least, keep in mind that the sequence diagram represents just a specific scenario. If you want to formally define a protocol in UML, you'd need to create as well a protocol state machine that tells the valid succession of messages. When you use signals, you can use their name directly as state transition trigger/event.

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

            QUESTION

            Error using Selenium Chrome Webdriver with python
            Asked 2022-Jan-12 at 05:17

            hi im using chrome driver but i cant fix this error

            mycode:

            ...

            ANSWER

            Answered 2021-Oct-06 at 05:14

            If you are using Selenium with Python then add these extra options into your Selenium code-

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

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

            Vulnerabilities

            No vulnerabilities reported

            Install bluetooth

            You need to have a fairly recent version of BlueZ, for example v5.48 is the latest released version for Ubuntu/Debian.
            In order to compile Go Bluetooth code targeting macOS, you must do so on macOS itself. In other words, we do not currently have cross compiler support. You must also have XCode tools installed:.
            Once you have done this, you can obtain the Go Bluetooth package using Git:.
            You must install TinyGo to be able to compile bare metal code using Go Bluetooth. Follow the instructions for your operating system at https://tinygo.org/getting-started/.

            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/tinygo-org/bluetooth.git

          • CLI

            gh repo clone tinygo-org/bluetooth

          • sshUrl

            git@github.com:tinygo-org/bluetooth.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 tinygo-org

            tinygo

            by tinygo-orgGo

            drivers

            by tinygo-orgGo

            go-llvm

            by tinygo-orgGo

            tinygo-site

            by tinygo-orgHTML

            tinyfont

            by tinygo-orgGo