Comments (11)
You can reproduce this issue by just running your Example project trying to write the characteristic value without response and you will see that delegates method
didCharacteristcValueChanged
never is called.
Unlike when performing a write with response, when performing a write without response the didCharacteristcValueChanged
will not be called. This is expected behavior, per documentation:
Core Bluetooth invokes this method only when your app calls the writeValue(_:for:type:) method with the CBCharacteristicWriteType.withResponse constant specified as the write type.
@Reedyuk in order to support write without response, Blue Falcon will need to expose canSendWriteWithoutResponse
and peripheralIsReady(toSendWriteWithoutResponse:)
, then library consumers will need to wait for peripheralIsReady(toSendWriteWithoutResponse:)
if canSendWriteWithoutResponse
is true
when performing a write. If canSendWriteWithoutResponse
is false
, then no callback will occur and writes can continue until canSendWriteWithoutResponse
is true
.
from blue-falcon.
I opened a PR for this.
from blue-falcon.
Can you produce a sample project with the problem?
from blue-falcon.
@Reedyuk You can reproduce this issue by just running your Example project trying to write the characteristic value without response and you will see that delegates method didCharacteristcValueChanged
never is called.
from blue-falcon.
Hi @Reedyuk ,
I have a similar problem. Possibly it is related to this: I send with Response on my iPhone. I can see on the device that the message is received and would now expect the response to arrive in the "didCharacteristcValueChanged" method. But it is never called?
Is this the same error or did I do something wrong?
BTW: The method has a typo I just noticed
from blue-falcon.
hard to tell exactly, depends on how the bluetooth device behaves.
Also depends on the device firmware and that if it broadcasts out a characteristic value changed event.
from blue-falcon.
It confirms the received data, via the standard Bluetooth way.
But let's ask differently: how would it have to acknowledge for the library to recognize it? We develop the firmware ourselves.
If I only use iOS and the Apple Framework, there is the possibility to send with reponse. Everything works With this way.
from blue-falcon.
For when i was using the library for my own project, i was subscribing to the changes. I believe you may need to register to subscribe on value changes.
I was using this library for a simple use case, maybe yours is more complicated and requires a change the library to support such a feature.
from blue-falcon.
@twyatt - thanks for the detailed explanation.
I'm happy for others to contribute to the repository and put in a pull request for their changes.
from blue-falcon.
@Reedyuk How to subscribe to changes? In your native code you never watch for didWriteValueFor
The docu says:
When you call this method to write the value of a characteristic, the peripheral calls the peripheral(_:didWriteValueFor:error:) method of its delegate object only if you specified the write type as CBCharacteristicWriteType.withResponse. The response you receive through the peripheral(_:didWriteValueFor:error:) delegate method indicates whether the write was successful; if the write failed, it details the cause of the failure in an error.
But I can not find where you watch for this event.
from blue-falcon.
I believe you need to write the characteristic to subscribe.
Then the characteristic value did changed should call back on changes.
from blue-falcon.
Related Issues (20)
- Add information about Bluetooth Classic to the README or change terminology to "BLE" HOT 2
- Add support for manufacturerSpecificData (Android) and kCBAdvDataManufacturerData (iOS) HOT 1
- Add support for new Kotlin IR HOT 7
- kmm example - iOS App crashes HOT 1
- changeMTU() method does not work as expected HOT 2
- Update to Kotlin v1.4.21 HOT 1
- KMM example doesn't work on android 10+
- iOS App throws "kotlin.IllegalStateException: There is no event loop. Use runBlocking { ... } to start one." HOT 5
- Non-null service UUID constructor parameter removes all scan results for iOS HOT 2
- No such module 'BlueFalcon' HOT 11
- Windows 10 platform support HOT 7
- Byte array values are not properly converted on iOS HOT 1
- Latest release failing due to no xcode 13 support on github HOT 14
- BlueFalcon not found in iOS HOT 12
- Kotlin KMM dev.bluefalcon.BluetoothUnknownException: Unknown error happened HOT 15
- The project 'blue-falcon' is not a Gradle-based project HOT 17
- Notify not working on Android HOT 6
- Second disconnect not working (Android) HOT 3
- didWriteValueForCharacteristic not trigger short time after connection in IOS HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from blue-falcon.