hololink::emulation::sensors::Vb1940Emulator
hololink::emulation::sensors::Vb1940Emulator
Inherits from: hololink::emulation::I2CPeripheral (public)
Constructors
Vb1940Emulator
Destructor
~Vb1940Emulator
Methods
reset
Reset the Vb1940Emulator internal state machines to their initial states.
attach_to_i2c
python:
def attach_to_i2c(self: hemu.sensors.Vb1940Emulator, i2c_controller: hemu.I2CController, bus_address: int)
Attach the Vb1940Emulator to an I2C controller at a specified bus
Parameters
The I2C controller to attach to. Retrieved from HSBEmulator with get_i2c(controller_address)
The bus address of the I2C controller
i2c_transaction
python:
def i2c_transaction(self: hemu.sensors.Vb1940Emulator, peripheral_address: int, write_bytes: bytes, write_size: int, read_bytes: bytes, read_size: int) -> hemu.I2CStatus
Receive and act on I2C transaction from HSBEmulator’s I2C controller(s)
Returns: The status of the I2C transaction
Parameters
The address of the peripheral to transaction with
The bytes to write to the peripheral
The size of the write bytes
The bytes to read from the peripheral
The size of the read bytes
is_streaming
Check if the Host application has set the sensor to streaming mode.
It is expected that the host application does not send any commands that set the sensor to streaming mode if the sensor is not yet configured.
Returns: True if the Vb1940Emulator is streaming, false otherwise
get_pixel_width
Get the width of the configured image in pixels.
Returns: The width of the image in pixels or 0 if the sensor has not been configured; see is_streaming().
get_pixel_height
Get the height of the configured image in pixels.
Returns: The height of the image in pixels or 0 if the sensor has not been configured; see is_streaming().
get_bytes_per_line
Get the number of bytes per line of the sensor CSI image frame - not the packetized CSI image frame.
Returns: The number of bytes per line of the CSI image frame or 0 if the sensor has not been configured; see is_streaming().
get_image_start_byte
Get the start byte offset for the CSI image frame.
Returns: The byte offset of the CSI image frame where the image starts or 0 if the sensor has not been configured; see is_streaming().
get_csi_length
Get the length of the CSI data in bytes for the CSI image frame - not the packetized CSI image frame.
Returns: The length of the CSI data in bytes or 0 if the sensor has not been configured; see is_streaming().
get_pixel_bits
Get the number of bits per pixel.
Returns: The number of bits per pixel or 0 if the sensor has not been configured; see is_streaming().
set_eeprom_data
Populate the rig calibration EEPROM region served at I²C peripheral 0x51.
The 256-byte region holds 30 big-endian doubles in the layout consumed by NativeVb1940Sensor::read_calibration_from_eeprom(). Without this, the emulator no-ops EEPROM reads and downstream cuVSLAM rejects with “Focal length must be > 0” because intrinsics come back zero. Used by Isaac Sim’s HSBSender to wire USDA Camera prim values through to the live receiver via the standard I²C calibration channel.
Parameters
Source bytes; nullptr is accepted and treated as a 0-byte payload (the region is zero-filled).
Number of bytes available at data; clamped to EEPROM_REGION_BYTES. Any remainder beyond size is zero-filled so a short payload does not leave stale bytes from a prior call.
start
start the peripheral.
This will be called when I2CController itself starts and should not be done by the client code
stop
stop the peripheral.
This will be called when the I2CController is stopped and should not be done by the client code
Peripheral should release all resources in case a subsequent start() is called.
build_state_machine
Build the internal state machine for the Vb1940Emulator.
system_up_reg
state machine callback for writes to the system up register
boot_reg
state machine callback for writes to the boot register
sw_stby_reg
state machine callback for writes to the software standby register
streaming_reg
state machine callback for writes to the streaming register