Add new backend: Silicon Labs BGAPI
This supports the (very nice) bleak API for any device that uses the Silicon Labs BGAPI protocol. This is mostly a Silabs EFR32 type device running "NCP" firmware, like so:

This is "cross platform" in an entirely different sense :)
I've implemented this in a couple of commits, to make it a little easier to review, but I'm happy to go back and squash/split further if desired. It's largely a) scanner, b) client basics, c) client remainder, d) docs, but I've left a "quirk" commit standalone so it stands out what it's doing. I only found the poetry reformatting late in the game, so I've left it standalone for now.
I'm certain there are holes or areas that I've not discovered/considered so far, but it's already ~equivalent to the bluez backend, only with less surprises and hidden quirks, wrt my own usecases :)
This seems like a nice option to work around OS quirks for sure.
I'm a bit hesitant about picking this up from a maintenance point of view. At a minimum, I would need somebody to send me one of these adapters so I could test it. If it doesn't add much time to the manual checks I do before releases, I will consider it. But if it just takes too much time and isn't used by many, I'm afraid it will end up broken and not well supported like the Android backend.
I completely understand the maintenance question of an extra backend like this :) I just felt it was at a stage that it was worth sharing and seeing what the feelings on this were. It's definitely still got bugs, and I'll keep pushing and rebasing this as best I can while I work through them. If nothing else, it can live in our fork as long as it needs.
I'm more than happy to just ship you a couple of adapters though, if that's all it would take :)
I've been using https://eu.mouser.com/ProductDetail/Silicon-Labs/XG24-EK2703A and https://eu.mouser.com/ProductDetail/Silicon-Labs/SLTB010A locally, as they're "easy" but you'd probably want some pre-programmed? I'd be happy to ship you flashed versions if desired :)
#1021 does look good, I definitely felt some of those were laregely copy/pasted
I changed this to draft status since it is still a work in progress. Happy to take a look again if there is still interest in moving forward here.
That seems perfectly reasonable. The corporate backing behind this has dried up, and while I've personally got all the parts and still think it's worthwhile, I'm not sure how much time I would have going forwards with it. I've flagged it locally though to make sure I push my last changes here, I did make follow ups to make it even better that don't appear to have made it up yet!
Ok, this is the latest and greatest. It was overhauled to use a singelton around the serial port, to allow a single python application to have multiple concurrent clients and scanners, and various field discovered bugs and quirks of the silabs stack squashed. The latter commits could perhaps be cleaned/squished more, which is why this wasn't pushed up earlier.