Shepherd-Sheep - Advanced

This API is more low level than the approach described here.

Harvester-API

class shepherd_sheep.ShepherdHarvester(*_args: tuple, **_kwargs: Unpack[TypedDict])

API for recording a harvest with shepherd.

Provides an easy-to-use, high-level interface for recording data with shepherd. Configures all hardware and initializes the communication with kernel module and PRUs.

Parameters:
  • cfg – harvester task setting

  • mode (str) – Should be ‘harvester’ to record harvesting data

static get_aux_voltage(cal_emu: CalibrationEmulator | None = None) float

Reads the auxiliary voltage (dac channel B) from the PRU core.

Parameters:

cal_emu – dict with offset/gain

Returns:

aux voltage

static handle_pru_messages(*, panic_on_restart: bool = False) None

checks message inbox coming from both PRUs.

Raises:

ShepherdPRUError – If unrecoverable error was detected

select_port_for_io_interface(target: TargetPort | bool | None) None

Choose which targets (A or B) gets the io-connection (serial, swd, gpio) from beaglebone,

shepherd hw-rev2 has two ports for targets and can switch independently between power supplies

Parameters:

target – A or B for that specific Target-Port

select_port_for_power_tracking(target: TargetPort | bool | None) None

choose which targets (A or B) gets the supply with current-monitor,

shepherd hw-rev2 has two ports for targets and two separate power supplies, but only one is able to measure current, the other is considered “auxiliary”

Parameters:

target – A or B for that specific Target-Port

send_calibration_settings(cal_: CalibrationEmulator | CalibrationHarvester | None) None

Sends calibration settings to PRU core

For the virtual source it is required to have the calibration settings. Note: to apply these settings the pru has to do a re-init (reset)

Parameters:
  • cal (CalibrationEmulation or CalibrationHarvester) – Contains the device’s

  • settings. (calibration)

static send_virtual_converter_settings(settings: ConverterPRUConfig) None

Sends virtsource settings to PRU core looks like a simple one-liner but is needed by the child-classes Note: to apply these settings the pru has to do a re-init (reset)

Parameters:

settings – Contains the settings for the virtual source.

static send_virtual_harvester_settings(settings: HarvesterPRUConfig) None

Sends virtsource settings to PRU core looks like a simple one-liner but is needed by the child-classes Note: to apply these settings the pru has to do a re-init (reset)

Parameters:

settings – Contains the settings for the virtual source.

static set_aux_target_voltage(voltage: float, cal_emu: CalibrationEmulator | None = None) None

Enables or disables the voltage for the second target

The shepherd cape has two DAC-Channels that each serve as power supply for a target

Parameters:
  • cal_emu – CalibrationEmulator,

  • voltage (float) – Desired output voltage in volt. Providing 0 or False disables supply, setting it to True will link it to the other channel

set_power_cape_pcb(*, state: bool) None

Controls state of power supplies on shepherd cape.

Parameters:

state (bool) – True for on, False for off

set_power_emulator(*, state: bool) None

triggered pin is currently connected to ADCs reset-line NOTE: this might be extended to DAC as well

Parameters:

state – bool, enable to get ADC out of reset

Returns:

set_power_harvester(*, state: bool) None

triggered pin is currently connected to ADCs reset-line NOTE: this might be extended to DAC as well

Parameters:

state – bool, enable to get ADC out of reset

Returns:

set_power_io_level_converter(*, state: bool) None

Enables or disables the GPIO level converter to targets.

The shepherd cape has bidirectional logic level translators (LSF0108) for translating UART, GPIO and SWD signals between BeagleBone and target voltage levels. This function enables or disables the converter and additional switches (NLAS4684) to keep leakage low.

Parameters:

state (bool) – True for enabling converter, False for disabling

start(start_time: float | None = None, *, wait_blocking: bool = True) bool

Starts sampling either now or at later point in time.

Parameters:
  • start_time (int) – Desired start time in unix time

  • wait_blocking (bool) – If true, block until start has completed

static wait_for_start(timeout: float) None

Waits until shepherd has started sampling.

Parameters:

timeout (float) – Time to wait in seconds

Emulator-API

class shepherd_sheep.ShepherdEmulator(*_args: tuple, **_kwargs: Unpack[TypedDict])

API for emulating data with shepherd.

Provides a high-level interface for emulating data with shepherd. Configures all hardware and initializes the communication with kernel module and PRUs.

static get_aux_voltage(cal_emu: CalibrationEmulator | None = None) float

Reads the auxiliary voltage (dac channel B) from the PRU core.

Parameters:

cal_emu – dict with offset/gain

Returns:

aux voltage

static handle_pru_messages(*, panic_on_restart: bool = False) None

checks message inbox coming from both PRUs.

Raises:

ShepherdPRUError – If unrecoverable error was detected

select_port_for_io_interface(target: TargetPort | bool | None) None

Choose which targets (A or B) gets the io-connection (serial, swd, gpio) from beaglebone,

shepherd hw-rev2 has two ports for targets and can switch independently between power supplies

Parameters:

target – A or B for that specific Target-Port

select_port_for_power_tracking(target: TargetPort | bool | None) None

choose which targets (A or B) gets the supply with current-monitor,

shepherd hw-rev2 has two ports for targets and two separate power supplies, but only one is able to measure current, the other is considered “auxiliary”

Parameters:

target – A or B for that specific Target-Port

send_calibration_settings(cal_: CalibrationEmulator | CalibrationHarvester | None) None

Sends calibration settings to PRU core

For the virtual source it is required to have the calibration settings. Note: to apply these settings the pru has to do a re-init (reset)

Parameters:
  • cal (CalibrationEmulation or CalibrationHarvester) – Contains the device’s

  • settings. (calibration)

static send_virtual_converter_settings(settings: ConverterPRUConfig) None

Sends virtsource settings to PRU core looks like a simple one-liner but is needed by the child-classes Note: to apply these settings the pru has to do a re-init (reset)

Parameters:

settings – Contains the settings for the virtual source.

static send_virtual_harvester_settings(settings: HarvesterPRUConfig) None

Sends virtsource settings to PRU core looks like a simple one-liner but is needed by the child-classes Note: to apply these settings the pru has to do a re-init (reset)

Parameters:

settings – Contains the settings for the virtual source.

static set_aux_target_voltage(voltage: float, cal_emu: CalibrationEmulator | None = None) None

Enables or disables the voltage for the second target

The shepherd cape has two DAC-Channels that each serve as power supply for a target

Parameters:
  • cal_emu – CalibrationEmulator,

  • voltage (float) – Desired output voltage in volt. Providing 0 or False disables supply, setting it to True will link it to the other channel

set_power_cape_pcb(*, state: bool) None

Controls state of power supplies on shepherd cape.

Parameters:

state (bool) – True for on, False for off

set_power_emulator(*, state: bool) None

triggered pin is currently connected to ADCs reset-line NOTE: this might be extended to DAC as well

Parameters:

state – bool, enable to get ADC out of reset

Returns:

set_power_harvester(*, state: bool) None

triggered pin is currently connected to ADCs reset-line NOTE: this might be extended to DAC as well

Parameters:

state – bool, enable to get ADC out of reset

Returns:

set_power_io_level_converter(*, state: bool) None

Enables or disables the GPIO level converter to targets.

The shepherd cape has bidirectional logic level translators (LSF0108) for translating UART, GPIO and SWD signals between BeagleBone and target voltage levels. This function enables or disables the converter and additional switches (NLAS4684) to keep leakage low.

Parameters:

state (bool) – True for enabling converter, False for disabling

start(start_time: float | None = None, *, wait_blocking: bool = True) bool

Starts sampling either now or at later point in time.

Parameters:
  • start_time (int) – Desired start time in unix time

  • wait_blocking (bool) – If true, block until start has completed

static wait_for_start(timeout: float) None

Waits until shepherd has started sampling.

Parameters:

timeout (float) – Time to wait in seconds