Mindstorm_lwt.NXT
Abstract type representing a connection to a LEGO® mindstorm brick. The type parameter indicates whether this connection is a USB or a Bluetooth one.
connect_bluetooth bdaddr
connects through bluetooth to the brick with bluetooth address bdaddr
. See the section "connectBluetooth
" for more information.
module USB : sig ... end
Functions to choose and connect to NXT bricks connected through USB. So far, it works on Linux (users of other platforms, your help is welcome).
val close : 'a conn -> unit Lwt.t
close conn
closes the connection conn
to the brick.
type error = Mindstorm.NXT.error =
Error codes. The codes starting with Pending
are command error.
exception Error of error
This exception can be raised by any of the functions below except when the optional argument ~check_status
is set to false. Note that checking for errors leads to up to approximately a 60ms latency between two commands.
module Program : sig ... end
Starting and stopping programs (.rxe files) on the brick.
module Motor : sig ... end
Output ports.
module Sensor : sig ... end
Input ports.
module Sound : sig ... end
Play sounds (.rso files) and tones.
module Message : sig ... end
Read and write messages from the 10 message queues. This can be thought as advanced direct commands.
val open_in : 'a conn -> string -> 'a in_channel Lwt.t
open_in conn fname
opens the file named fname
on the brick for reading. The channel must be closed with Mindstorm_lwt.NXT.close_in
. Close it as soon as possible as channels are a scarce resource.
val in_channel_length : 'a in_channel -> int Lwt.t
in_channel_length ch
returns the length of the channel ch
.
val close_in : 'a in_channel -> unit Lwt.t
close_in ch
closes the channel ch
. Closing an already closed channel does nothing.
val input : 'a in_channel -> Stdlib.Bytes.t -> int -> int -> int Lwt.t
input ch buf ofs len
reads a block of data of length len
from the channel ch
and write it to buf
starting at position ofs
.
The standard NXT firmware requires that executable files and icons are linear but all other types of files (including sound files) can be non-contiguous (i.e., fragmented).
`File length
: Default file, the parameter is its length
.`Linear length
: Write a linear file, the parameter is its length
.val open_out : 'a conn -> out_flag -> string -> 'a out_channel Lwt.t
open_out conn flag fname
opens the file fname
for writing. The channel must be closed with Mindstorm_lwt.NXT.close_in
. Close it as soon as possible as channels are a scarce resource.
If the the file exists, Error File_exists
is raised. If the brick does not like the extension you use, Error File_is_full
may be raised.
val close_out : 'a out_channel -> unit Lwt.t
close_out ch
closes the channel ch
. Closing an already closed channel does nothing.
val output : 'a out_channel -> string -> int -> int -> int Lwt.t
output ch buf ofs len
ouputs the substring buf.[ofs
.. ofs+len-1]
to the channel fd
. Returns the number of bytes actually written. If you try to write more bytes than declared when opening the file, Error File_is_full
is raised.
val remove : 'a conn -> string -> unit Lwt.t
remove conn fname
remove the file fname
from the brick.
module Find : sig ... end
List files on the brick matching a given pattern.
val firmware_version : 'a conn -> (int * int * int * int) Lwt.t
firmware_version conn
returns a tuple (p1, p0, f1, f0)
where p1
is the major version of the protocol, p0
is the minor version of the protocol, f1
is the major version of the firmware, f0
is the minor version of the firmware,
val set_brick_name : ?check_status:bool -> 'a conn -> string -> unit Lwt.t
set_brick_name conn name
change the name to which one is connected through conn
to name
.
type brick_info = Mindstorm.NXT.brick_info = {
brick_name : string; | (* NXT name (set with |
bluetooth_addr : string; | (* Bluetooth address *) |
signal_strength : int; | (* Bluetooth signal strength (for some reason is always 0) *) |
free_user_flash : int; | (* Free user FLASH *) |
}
val get_device_info : 'a conn -> brick_info Lwt.t
get_device_info conn
returns some informations about the brick connected through conn
.
val keep_alive : 'a conn -> int Lwt.t
keep_alive conn
returns the current sleep time limit in milliseconds.
val battery_level : 'a conn -> int Lwt.t
battery_level conn
return the voltages in millivolts of the battery on the brick.
val delete_user_flash : 'a conn -> unit Lwt.t
bluetooth_reset conn
performs a factory reset of the brick. (The type system does will a allow this command to be transmitted via bluetooth because all bluetooth functionality is reset by this command.)
val poll_length : 'a conn -> [ `Poll_buffer | `High_speed_buffer ] -> int Lwt.t
Returns the number of bytes for a command in the low-speed buffer or the high-speed buffer (0 = no command is ready).
val poll_command : 'a conn -> [ `Poll_buffer | `High_speed_buffer ] -> int -> (int * string) Lwt.t
Reads bytes from the low-speed or high-speed buffer.