Coder Social home page Coder Social logo

Comments (5)

adabru avatar adabru commented on July 3, 2024 1

Hi @Quget,

checking the connection status and requesting a value from the device is not implemented as I didn't had the need for that yet.

For the connection status, I guess you can try using a GattSession with MaintainConnection set to true, as it is mentioned in the note on this doc page. The session has also an event in the case the connection-status changes.

Reading/Requesting a specific characteristic value from the device can be done with the ReadValueAsync function . You can use the code of SendData as template for that. This is the easier one. Alternatively you can write to one characterstic and program your device so that it will trigger a notification of the characteristic you're interested in.

from blewinrtdll.

adabru avatar adabru commented on July 3, 2024 1

You can checkout the Microsoft sample (C# and equivalent C++ code) as reference for ReadValueAsync.

In my case I first got it to work in C# UWP, then in a C++ winrt console program and then in the dll. If you'll have specific questions regarding the code, feel free to ask.

from blewinrtdll.

Quget avatar Quget commented on July 3, 2024 1

I think I manage to get the read one in. Just got to test it out.
Using the same queue as the subscribed characteristic.

Connection status will be a bit of a problem but I will get there I think :)

from blewinrtdll.

Quget avatar Quget commented on July 3, 2024

Thanks for the quick reply! I did try to go trough the source code.
But I don't know c++ so well. It will take me a while to understand it.

from blewinrtdll.

adabru avatar adabru commented on July 3, 2024

As reference for reading specific characteristics:

tufeixp's ReadDataAsync function: #30 (comment)

SendData code as comparison if you want to add error handling or blocking read:

fire_and_forget SendDataAsync(BLEData data, condition_variable* signal, bool* result) {
try {
auto characteristic = co_await retrieveCharacteristic(data.deviceId, data.serviceUuid, data.characteristicUuid);
if (characteristic != nullptr) {
// create IBuffer from data
DataWriter writer;
writer.WriteBytes(array_view<uint8_t const> (data.buf, data.buf + data.size));
IBuffer buffer = writer.DetachBuffer();
auto status = co_await characteristic.WriteValueAsync(buffer, GattWriteOption::WriteWithoutResponse);
if (status != GattCommunicationStatus::Success)
saveError(L"%s:%d Error writing value to characteristic with uuid %s", __WFILE__, __LINE__, data.characteristicUuid);
else if (result != 0)
*result = true;
}
}
catch (hresult_error& ex)
{
saveError(L"%s:%d SendDataAsync catch: %s", __WFILE__, __LINE__, ex.message().c_str());
}
if (signal != 0)
signal->notify_one();
}
bool SendData(BLEData* data, bool block) {
mutex _mutex;
unique_lock<mutex> lock(_mutex);
condition_variable signal;
bool result = false;
// copy data to stack so that caller can free its memory in non-blocking mode
SendDataAsync(*data, block ? &signal : 0, block ? &result : 0);
if (block)
signal.wait(lock);
return result;
}

from blewinrtdll.

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.