mmwavecapture package#

Subpackages#

Submodules#

mmwavecapture.cli module#

mmwavecapture.dca1000 module#

class mmwavecapture.dca1000.DCA1000#

Bases: object

This class is used to communicate with the DCA1000EVM over ethernet.

The DCA1000EVM is a data capture card that is used to capture data from the Texas Instruments millimeter-wave radar sensor. The DCA1000EVM is connected to the host computer via ethernet, and the host computer can send commands to the DCA1000EVM to control its behavior.

This class does not capture data from the DCA1000EVM. Instead, it is used to send commands to the DCA1000EVM to control its behavior.

Note

Currently it does not read config from files. User should eithe config it by CaptureManager config file or by DCA1000Config class.

config_eeprom() bool#

Configure DCA1000EVM EEPROM

Ref: 2.3.2 Configure EEPROM, p.36, DCA1000EVM CLI Software Developer Guide, v1.01

config_fpga() bool#

Configure DCA1000EVM FPGA

Ref: 2.3.1 Configure FPGA, p.34, DCA1000EVM CLI Software Developer Guide, v1.01

config_packet_delay() bool#

Set the delay between the config packet and the data packet

Parameters:

delay (int) – Delay in microseconds

Ref: 2.3.7 Configure record delay, p.53, DCA1000EVM CLI Software Developer Guide, v1.01

dump_config(outfile: Path)#

Dump the current configuration to a JSON file

static log_command(func)#
read()#

Read DCA1000EVM data from host ip data port

Note

It is not recommended to use this method.

read_fpga_version() tuple[int, int, bool]#

Return FPGA version

Returns:

(major, minor, playback_mode)

Return type:

tuple[int, int, bool]

reset_fpga() bool#

Reset DCA1000EVM FPGA

Ref: 2.3.3 Reset FPGA, p.40, DCA1000EVM CLI Software Developer Guide, v1.01

reset_radar() bool#

Reset Radar

Ref: 2.3.4 Reset Radar, p.42, DCA1000EVM CLI Software Developer Guide, v1.01

start_record() bool#

Start DCA1000EVM recording

Ref: 2.3.5 Start Recording, p.45, DCA1000EVM CLI Software Developer Guide, v1.01

stop_record() bool#

Stop DCA1000EVM recording

Ref: 2.3.6 Stop Recording, p.48, DCA1000EVM CLI Software Developer Guide, v1.01

system_connection() bool#

Check if the DCA1000EVM is connected to the host computer

Ref: 2.3.11 Query system aliveness status, p.62, DCA1000EVM CLI Software Developer Guide, v1.01

system_error_status() int#

Check DCA1000EVM system error status

Ref: 2.3.10 Query record process status, p.60, DCA1000EVM CLI Software Developer Guide, v1.01

class mmwavecapture.dca1000.DCA1000Command(value)#

Bases: IntEnum

An enumeration.

CONFIG_DATA_MODE_AR_DEV = 12#
CONFIG_EEPROM = 4#
CONFIG_FPGA_GEN = 3#
CONFIG_PACKET_DELAY = 11#
INIT_FPGA_PLAYBACK = 13#
PLAYBACK_START = 7#
PLAYBACK_STOP = 8#
READ_FPGA_VERSION = 14#
RECORD_START = 5#
RECORD_STOP = 6#
RESET_AR_DEV_CMD = 2#
RESET_FPGA = 1#
SYSTEM_CONNECTION = 9#
SYSTEM_ERROR_STATUS = 10#
class mmwavecapture.dca1000.DCA1000Config#

Bases: object

property config: dict[str, Any]#
property data_capture_mode: int#
property data_format_mode: int#
property data_logging_mode: int#
property data_transfer_mode: int#
property dca_config_port: int#
property dca_data_port: int#
property dca_ip: str#
default_config: dict[str, Any] = {'dataCaptureMode': 'ethernetStream', 'dataFormatMode': 3, 'dataLoggingMode': 'raw', 'dataTransferMode': 'LVDSCapture', 'ethernetConfig': {'DCA1000ConfigPort': 4096, 'DCA1000DataPort': 4098, 'DCA1000IPAddress': '192.168.33.180'}, 'ethernetConfigUpdate': {'DCA1000ConfigPort': 4096, 'DCA1000DataPort': 4098, 'DCA1000IPAddress': '192.168.33.180', 'DCA1000MACAddress': '12-34-56-78-90-12', 'systemIPAddress': '192.168.33.30'}, 'lvdsMode': 2, 'packetDelay_us': 5}#
property host_ip: str#
property lvds_mode: int#
property packet_delay_us: int#
class mmwavecapture.dca1000.DCA1000Const#

Bases: object

Ref: RF_API/defines.h

FPGA_CLK_CONVERSION_FACTOR = 1000#
FPGA_CLK_PERIOD_IN_NANO_SEC = 8#
MAX_BYTES_PER_PACKET = 1470#
PLAYBACK_MODE = 16384#
VERSION_BITS_DECODE = 127#
VERSION_NUM_OF_BITS = 7#
class mmwavecapture.dca1000.DCA1000MagicNumber(value)#

Bases: IntEnum

An enumeration.

MAGIC_HEADER = 42330#

mmwavecapture.radar module#

class mmwavecapture.radar.Radar(config_port: str, config_baudrate: int, data_port: str, data_baudrate: int, config_filename: Path, timeout: int = 3, initialize_connection_and_radar: bool = False, capture_frames: int = 100)#

Bases: object

This is a Texas Instrumenst xWR16xx/18xx mmwave radar interface.

The main goal of this class is to provide a simple interface to communicate and config the radar to run the sensor for specified number of frames. It does not capture TLV data from the radar.

It force user to provide a radar config file during the construction of the class.

Parameters:
  • config_port (str) – The serial port to radar config UART

  • config_baudrate (int) – The baudrate of the radar config UART

  • data_port (str) – The serial port to radar data UART

  • data_baudrate (int) – The baudrate of the radar data UART

  • config_filename (pathlib.Path) – The radar config filename, the format should be compatible with the mmwave SDK

  • timeout (int, optional) – The timeout for serial communication, defaults to 3 seconds

  • initialize_connection_and_radar (bool, optional) – If set to True, the radar will be initialized and connected during the construction of the class, defaults to False

  • capture_frames (int, optional) – The number of frames to capture, defaults to 100 frames

property capture_frames: int#

The number of frames to capture

Getter:

Return the number of frames to capture

Setter:

Set the number of frames to capture, it will update the farmeCfg command in loaded config

Type:

int

close_serials() None#

Close serial ports

config() None#

Send config commands to radar

connect_serials() None#

Connect serial ports, setup baudrate and timeout

dump_config(outfile: Path) None#

Dump current radar config to file

get_radar_status()#

Get radar status (MMWAVE SDK OOB Demo)

Returns:

Radar status and data baudrate

Return type:

Tuple[RadarStatus, int]1

initialize() None#

Connect to radar and flush the radar config serial buffer

start_sensor() None#

Send sensorStart command to radar

stop_sensor() None#

Send sensorStop command to radar

class mmwavecapture.radar.RadarCoreConfig(filename: Path | None = None)#

Bases: object

antenna_shape: tuple[int, int, int, int, int]#

Shape of the raw data considering TX and RX antennas.

If the number of frames is 0, the first dimension will be -1

chirps: int#

Number of chirps per frame

frame_period: float#

Frame period (ms)

frames: int#

Total number of frames to capture, 0 means infinite

rx: int#

Total RX antennas

samples: int#

Number of ADC samples per chirp

tx: int#

Total TX antennas

virtual_antennas: int#

Total virtual antennas

virtual_shape: tuple[int, int, int, int]#

Shape of the raw data considering virtual antennas

If the number of frames is 0, the first dimension will be -1

class mmwavecapture.radar.RadarStatus(value)#

Bases: IntEnum

An enumeration.

INIT = 0#
OPENED = 1#
STARTED = 2#
STOPPED = 3#

Module contents#