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
- get_buffer(timeout_n: int = 60, *, verbose: bool = False) tuple[int, DataBuffer]
Reads a data buffer from shared memory.
Polls the msg-channel for a message from PRU0 and, if the message points to a filled buffer in memory, returns the data in the corresponding memory location as DataBuffer.
:param : param timeout_n: (int) Time in buffer_periods that should be waited for :param : param verbose: (bool) more debug output
- Returns:
Index and content of corresponding data buffer
- Raises:
TimeoutException – If no message is received within specified timeout
- return_buffer(index: int, *, verbose: bool = False) None
Returns a buffer to the PRU
After reading the content of a buffer and potentially filling it with emulation data, we have to release the buffer to the PRU to avoid it running out of buffers.
- Parameters:
index – (int) Index of the buffer. 0 <= index < n_buffers
verbose – chatter-prevention, performance-critical computation saver
- 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_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
- set_power_recorder(*, 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:
- 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
- get_buffer(timeout_n: int = 60, *, verbose: bool = False) tuple[int, DataBuffer]
Reads a data buffer from shared memory.
Polls the msg-channel for a message from PRU0 and, if the message points to a filled buffer in memory, returns the data in the corresponding memory location as DataBuffer.
:param : param timeout_n: (int) Time in buffer_periods that should be waited for :param : param verbose: (bool) more debug output
- Returns:
Index and content of corresponding data buffer
- Raises:
TimeoutException – If no message is received within specified timeout
- 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_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
- set_power_recorder(*, 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:
- 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