Mindstorm.NXTAbstract 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 "How to connect the brick through bluetooth" for more information.
module USB : sig ... endFunctions 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 -> unitclose conn closes the connection conn to the brick.
type error = Error codes. The codes starting with Pending are command error.
exception Error of errorThis 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 ... endStarting and stopping programs (.rxe files) on the brick.
module Motor : sig ... endOutput ports.
module Sensor : sig ... endInput ports.
module Sound : sig ... endPlay sounds (.rso files) and tones.
module Message : sig ... endRead and write messages from the 10 message queues. This can be thought as advanced direct commands.
val open_in : 'a conn -> string -> 'a in_channelopen_in conn fname opens the file named fname on the brick for reading. The channel must be closed with Mindstorm.NXT.close_in. Close it as soon as possible as channels are a scarce resource.
val in_channel_length : 'a in_channel -> intin_channel_length ch returns the length of the channel ch.
val close_in : 'a in_channel -> unitclose_in ch closes the channel ch. Closing an already closed channel does nothing.
val input : 'a in_channel -> Stdlib.Bytes.t -> int -> int -> intinput 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_channelopen_out conn flag fname opens the file fname for writing. The channel must be closed with Mindstorm.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 -> unitclose_out ch closes the channel ch. Closing an already closed channel does nothing.
val output : 'a out_channel -> string -> int -> int -> intoutput 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 -> unitremove conn fname remove the file fname from the brick.
module Find : sig ... endList files on the brick matching a given pattern.
val firmware_version : 'a conn -> int * int * int * intfirmware_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 -> unitset_brick_name conn name change the name to which one is connected through conn to name.
type 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_infoget_device_info conn returns some informations about the brick connected through conn.
val keep_alive : 'a conn -> intkeep_alive conn returns the current sleep time limit in milliseconds.
val battery_level : 'a conn -> intbattery_level conn return the voltages in millivolts of the battery on the brick.
val delete_user_flash : 'a conn -> unitbluetooth_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 ] -> intReturns 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 * stringReads bytes from the low-speed or high-speed buffer.