Maskbits

All statuses in jaeger are expressed as classes that subclass from enum.IntFlag. This allows them to behave as a series of values that can be combined with bitwise operations while also containing a representation of the name associated with a bit. IntFlag objects are ultimately just integers and can be used as such

>>> dat_init = PositionerStatusV4_1.DATUM_INITIALIZED
>>> dat_init
<PositionerStatusV4_1.DATUM_INITIALIZED: 536870912>
>>> dat_init.name
'DATUM_INITIALIZED'
>>> int(dat_init)
536870912
>>> isinstance(dat_init, int)
True

To create a new enumeration from an integer

>>> PositionerStatusV4_1(117440512)
<PositionerStatusV4_1.BETA_DISPLACEMENT_COMPLETED|ALPHA_DISPLACEMENT_COMPLETED|DISPLACEMENT_COMPLETED: 117440512>

Enumerations can be combined using bitwise operations

>>> status = PositionerStatusV4_1.DATUM_INITIALIZED | PositionerStatusV4_1.SYSTEM_INITIALIZED
<PositionerStatusV4_1.DATUM_INITIALIZED|SYSTEM_INITIALIZED: 536870913>
>>> status.active_bits
[<PositionerStatusV4_1.SYSTEM_INITIALIZED: 1>,
 <PositionerStatusV4_1.DATUM_INITIALIZED: 536870912>]
>>> status & PositionerStatusV4_1.ALPHA_DISPLACEMENT_COMPLETED
<PositionerStatusV4_1.0: 0>

Maskbits API

class jaeger.maskbits.Maskbit(value)[source]

Bases: IntFlag

A maskbit enumeration. Intended for subclassing.

property version

The version of the flags.

property active_bits

Returns a list of flags that match the value.

jaeger.maskbits.PositionerStatus

Alias to the default positioner status flags.

class jaeger.maskbits.CommandStatus(value)[source]

Bases: Maskbit

Maskbits for command status.

DONE = 1
CANCELLED = 2
FAILED = 4
READY = 8
RUNNING = 16
TIMEDOUT = 32
property is_done

Returns True if the command is done (completed or failed).

property is_running

Returns True if the command is running.

property failed

Returns True if the command failed (or got cancelled).

property timed_out

Returns True if the command timed out.

class jaeger.maskbits.ResponseCode(value)[source]

Bases: IntFlag

Maskbit for the status of the bootloader.

  • 0: All OK

  • 1: Received parameter is out of range

  • 2: Trajectory not accepted

  • 3: Already in motion, cannot accept command

  • 4: Datum not initialized

  • 5: Incorrect amount of data in packet

  • 6: One of the calibration modes is active: MOTOR_CALIBRATION, COGGING_CALIBRATION, DATUM_CALIBRATION, DATUM _INITIALIZATION

  • 7: The motors are not calibrated and therefore the hall sensors can’t be used

  • 8: A collision is detected, the flag has to be first cleared with stop trajectory

  • 9: Hall sensors are disabled and can therefore not be used

  • 10: Broadcast command not valid

  • 11: Command not supported by bootloader

  • 12: Invalid command

  • 13: Unknown command

  • 14: Datum not calibrated

  • 15: Halls sensors have been disabled

COMMAND_ACCEPTED = 0
VALUE_OUT_OF_RANGE = 1
INVALID_TRAJECTORY = 2
ALREADY_IN_MOTION = 3
DATUM_NOT_INITIALIZED = 4
INCORRECT_AMOUNT_OF_DATA = 5
CALIBRATION_MODE_ACTIVE = 6
MOTOR_NOT_CALIBRATED = 7
COLLISION_DETECTED = 8
HALL_SENSOR_DISABLED = 9
INVALID_BROADCAST_COMMAND = 10
INVALID_BOOTLOADER_COMMAND = 11
INVALID_COMMAND = 12
UNKNOWN_COMMAND = 13
DATUM_NOT_CALIBRATED = 14
HALL_SENSORS_DISABLED = 15
class jaeger.maskbits.BootloaderStatus(value)[source]

Bases: Maskbit

Maskbits for positioner status when in bootloader mode.

BOOTLOADER_INIT = 1
BOOTLOADER_TIMEOUT = 2
BSETTINGS_CHANGED = 512
RECEIVING_NEW_FIRMWARE = 65536
NEW_FIRMWARE_RECEIVED = 16777216
NEW_FIRMWARE_CHECK_OK = 33554432
NEW_FIRMWARE_CHECK_BAD = 67108864
UNKNOWN = 1073741824
class jaeger.maskbits.FPSStatus(value)[source]

Bases: Flag

Status of the FPS.

IDLE = 1
MOVING = 2
COLLIDED = 4
ERRORED = 8
TEMPERATURE_NORMAL = 16
TEMPERATURE_COLD = 32
TEMPERATURE_VERY_COLD = 64
TEMPERATURE_UNKNOWN = 128
TEMPERATURE_BITS = 240
STATUS_BITS = 15