send conn s send "package" s on the connection c. s is supposed to come prefixed with 2 bytes indicating its length (since this is necessary for bluetooth) — they will be stripped for USB.
recv conn n reads a "package" of length n and return it. For bluetooth, the prefix of 2 bytes indicating the length are also read but not returned (and not counted in n). recv checks the status byte using check_status_fn and possibly raise an exception (it is the task of check_status_fn to do that), regardless of the value of check_status (this is to allow to override check_status locally).
val really_input : 'at->Bytes.t->int ->int ->unit Lwt.t
really_input conn buf ofs len reads len characters from conn and puts them in buf starting at position ofs. It does NOT read the bluetooth prefix bytes, so should not be used for packages but only for additional data.