Code Monkey home page Code Monkey logo

Comments (11)

twyatt avatar twyatt commented on August 23, 2024 1

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.

nilskasseckert avatar nilskasseckert commented on August 23, 2024 1

I opened a PR for this.

from blue-falcon.

Reedyuk avatar Reedyuk commented on August 23, 2024

Can you produce a sample project with the problem?

from blue-falcon.

renatosmf avatar renatosmf commented on August 23, 2024

@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.

nilskasseckert avatar nilskasseckert commented on August 23, 2024

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.

Reedyuk avatar Reedyuk commented on August 23, 2024

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.

nilskasseckert avatar nilskasseckert commented on August 23, 2024

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.

Reedyuk avatar Reedyuk commented on August 23, 2024

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.

Reedyuk avatar Reedyuk commented on August 23, 2024

@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.

nilskasseckert avatar nilskasseckert commented on August 23, 2024

@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.

Reedyuk avatar Reedyuk commented on August 23, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.