Mvvmcross.plugin.ble užtikrina, kad „Bluetooth Low Energy“ (BLE) operacijų sričių sauga pirmiausia kruopščiai tvarkant asinchronines operacijas ir laikantis platformos specifinių gairių. Čia pateikiama išsami apžvalga, kaip jis pasiekia gijų saugą:
1. Nuoseklus BLE komandų vykdymas **
Mvvmcross.plugin.ble pabrėžia, kad svarbu vykdyti BLE komandas nuosekliai, ypač „Android“. Tai reiškia, kad prieš pradedant kitą, reikia laukti, kol bus baigta viena operacija. Šis metodas padeda išvengti GATT klaidų, kurios gali atsirasti, kai komandos vykdomos vienu metu, nesukeliant tinkamos sinchronizacijos [1].2. Pagrindinis gijos naudojimas **
Tam tikroms operacijoms, tokioms kaip rašymo ypatybės, labai svarbu atlikti šiuos veiksmus iš pagrindinės gijos. Tai ypač svarbu „Android“, kur to nepadarę, gali būti „GattWriteError“ [1]. Užtikrinant, kad tokios operacijos būtų vykdomos pagrindinėje gijoje, papildinys išvengia galimų sriegių problemų.3. Venkite charakteristikų ar paslaugų atvejų kaupimo **
Atjungus prietaisą, visi aptarnavimo ir būdingi atvejai tampa negaliojantys. Norėdami išlaikyti sriegių saugumą, mvvmcross.plugin.ble pataria nenaudoti šių egzempliorių tarp ryšio sesijų. Vietoj to, jis rekomenduoja naudoti „getServiceasync“ ir „getchacterticasync“, kad gautumėte galiojančius atvejus kiekvieną kartą užmezgant ryšį [1].4. Klaidų tvarkymas **
Papildinys skatina supa asinchroninius BLE API skambučius su bandomais gaudymo blokais. Ši praktika padeda sugauti išimtis, kurios gali atsirasti atliekant BLE operacijas, kurios gali būti įprastos dėl „Bluetooth“ komunikacijos pobūdžio. Tinkamas klaidų tvarkymas užtikrina, kad programa išliks stabili net susidūrus su netikėtomis problemomis [1].5. Konkrečios platformos aspektai **
„Mvvmcross.plugin.ble“ yra skirtas dirbti keliose platformose, įskaitant „Android“, „iOS“ ir „MacOS“. Jame atsižvelgiama į konkrečiai platformos apribojimus ir geriausią praktiką, pavyzdžiui, vengimą nuskaityti atliekant kitas BLE operacijas, kad būtų sumažintas akumuliatoriaus nutekėjimas ir pagerintas bendras našumas [1].6. Lazy inicijuotų singletų naudojimas **
„MVVMCross“ kontekste papildiniai registruoja „iBluetoothle“ ir „iAdapter“ kaip tingūs inicijuoti singletons. Šis metodas leidžia lengvai įpurškti ir išspręsti šias paslaugas, užtikrinant, kad jos būtų tinkamai inicijuotos ir valdomos programos gyvavimo cikle [1] [10].Vykdydamas šias gaires ir geriausią praktiką, mvvmcross.plugin.ble padeda kūrėjams užtikrinti gijų saugą ir patikimumą jų programose „BLE“. Tačiau kūrėjams labai svarbu suprasti pagrindinę BLE technologiją ir jos apribojimus, kad būtų galima efektyviai panaudoti papildinį ir išvengti bendrų spąstų [11].
Citatos:[1] https://www.nuget.org/packages/mvvmcross.plugin.ble/
[2] https://learn.microsoft.com/en-us/answers/questions/1518375/which-package-huld-itilie-for-bluetooth-low-e
[3] https://community.particle.io/t/working-around-ble-connect-deviceaddress-is-a-blocking-call/68453
[4] https://www.nuget.org/packages/mvvmcross.plugin.ble/2.2.0-pre5
[5] https://stackoverflow.com/questions/38327176/xamarin-forms-plugins-ble-mvvmcross-plugins-ble
[6] https://github.com/xabre/xamarin-bluetooth-le/issues/524
[7] https://stackoverflow.com/questions/38922639/how-could-i-haxieve-maximum-read-safety-with-a-read-write-ble-gatt- charactertis
[8] https://github.com/xabre/xamarin-bluetooth-le/issues/356
[9] https://devzone.nordicsemi.com/f/nordic-q-a/88005/does-ncs-ble-api-tread-safe
[10] https://github.com/mrozema/xamarin-bluetooth-le
[11] https://www.reddit.com/r/dotnet/comments/1bds6rj/why_there_is_no_good_crossplatform_bluetooth/