While deep lurking I noticed a mention concerning some older Racket code of mine. Specifically porting sha-256 from typed to untyped racket.
Well that led to a wiki page that listed a number of suggested starter tasks for new Racket inductees wanting to get involved. A number of those were in and around IOT and Bluetooth (Wii controller is one I recall). So while hesitant to dump yet more unfinished Racket code onto the unsuspecting, I think there maybe enough in a side project in hiatus that someone may find a modicum of utility in the dross. Thora-HCI is a (just started, unfinished) native Typed Racket implementation of Bluetooth HCI stack. This is the lowest layer in the Bluetooth stack which underlies all the other Bluetooth layers and protocols. Where it was going was to have just enough of a slice implemented to support hobbiest Home IOT stuff targeting Bluetooth LE, specifically GATT -> ATT -> HCI. By having such a slice one would be able to do some Raspberry PI, small sensors, light bulb control, robotics etc. Bluetooth is a big umbrella term for a number of disparate protocols and Bluetooth vs Bluetooth LE (low energy) vs profile type stuff (audio streaming or keyboards) are all varying protocols / layers that are build over HCI. https://en.wikipedia.org/wiki/List_of_Bluetooth_profiles Thora-HCI https://github.com/RayRacine/thora-hci-racket/tree/dev/src What can Thora-HCI do now to varying degrees: - Create a standard Racket I/O Port over an underlying RAW socket connection on Linux. - Open a Bluetooth Adapter. - Send a subset of HCI command packets to the Adapter - Receive a subset of HCI events from the Adapter. - Bluetooth and Bluetooth LE device scans (e.g. scan for Rokus, lightb ulbs, WII controllers). - Create a connection to a device. e.g. connect to a light bulb - Send raw command packets to a connected device. e.g Query a BLE sensor, flip light bulbs on/off. What Thora-HCI has some pieces of low level machinery for, but is missing major pieces to do includes things like Bluetooth audio etc. I can't emphasis enough its unfinished state as well as its scattered nature from being both in mid-flight and hiatus. Long story. It's more of a code dump that someone could cherry-pick from or start from. It is alpha code at best. FWIW if someone is interested in doing some IOT stuff via Bluetooth (on Linux) one could also leverage DBus from Racket as well. One could also do Racket FFI -> Bluez. Complicated story but I found things I didn't like when I went down those paths and I ended up doing the HCI stack layer implementation. If/when I pickup this effort I would stick with this approach (native stack impl). If anyone does attempt to mess around with what is there, I do have time to assist with questions, maybe even help a bit with something simple they are trying to do to get things jump started. Maybe even jump back into it again. If poking around in the code. See scratch.rkt showing code opening an adapter, scanning, sending commands etc. In addition focus on adapter.rkt and what modules / code it leverages. Caveat Emptor -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.