adabru / BleWinrtDll

BLE for Unity 3d in Windows without UWP.
Do What The F*ck You Want To Public License
168 stars 52 forks source link

Have You added the Ability to Disconnect() ? #22

Open Ugobyte opened 2 years ago

Ugobyte commented 2 years ago

This API is really great and I actually won't mind financially supporting you. Where can I donate?

I would like to know if you have or plan to add a Disconnect() feature.

thangdhz commented 2 years ago

Add this function to BleWinrtDll.cpp

void Disconnect(wchar_t* deviceId) {
    for (auto device : cache) {
        if (hsh(deviceId) == device.first) {
            device.second.device.Close();
            for (auto service : device.second.services) {
                service.second.service.Close();
            }
            cache.erase(hsh(deviceId));
            return;
        }
    }
}

Add this function to BleWinrtDll.h

__declspec(dllexport) void Disconnect(wchar_t* deviceId);

Add this function to BLE.cs

        [DllImport("BleWinrtDll.dll", EntryPoint = "Disconnect", CharSet = CharSet.Unicode)]
        public static extern void Disconnect(string deviceId);
Ugobyte commented 2 years ago

@thangdhz Thank you, this is great! Do I have to recompile a new .dll if i add void Disconnect(wchar_t* deviceId) to the .dll file?

thangdhz commented 2 years ago

yes, need recompile .dll file

Ugobyte commented 2 years ago

yes, need recompile .dll file

Excellent, Thanks

adabru commented 2 years ago

Hi @Ugobyte , thanks for the offer! I probably can't work on this project for like the next ten months. You can feel free to hire freelancers to fix some of the most popular open bugs 😉 or maybe sponsor one of the forks. I would gladly redirect to it if it gets more features.

Edit: I went through the forks and there are two candidates at time of writing , https://github.com/port6io/BleWinrtDll/commits/main and https://github.com/jadware/BleWinrtDll/commits/main .

playg8 commented 1 year ago

@thangdhz This code works, but do not work well. After disconnect from device, you can not find the same device by scan function.Is there something wrong with the scan codes?

ahSOLO commented 1 year ago

Thanks, this code worked for me