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.

Reply via email to