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: enum.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.

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

Bases: jaeger.maskbits.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.PositionerStatusV4_1(value)[source]

Bases: jaeger.maskbits.Maskbit

Maskbits for positioner status (firmware >=04.01.00).

SYSTEM_INITIALIZED = 1
CONFIG_CHANGED = 2
BSETTINGS_CHANGED = 4
DATA_STREAMING = 8
RECEIVING_TRAJECTORY = 16
TRAJECTORY_ALPHA_RECEIVED = 32
TRAJECTORY_BETA_RECEIVED = 64
LOW_POWER_AFTER_MOVE = 128
DISPLACEMENT_COMPLETED = 256
DISPLACEMENT_COMPLETED_ALPHA = 512
DISPLACEMENT_COMPLETED_BETA = 1024
COLLISION_ALPHA = 2048
COLLISION_BETA = 4096
CLOSED_LOOP_ALPHA = 8192
CLOSED_LOOP_BETA = 16384
PRECISE_POSITIONING_ALPHA = 32768
PRECISE_POSITIONING_BETA = 65536
COLLISION_DETECT_ALPHA_DISABLE = 131072
COLLISION_DETECT_BETA_DISABLE = 262144
MOTOR_CALIBRATION = 524288
MOTOR_ALPHA_CALIBRATED = 1048576
MOTOR_BETA_CALIBRATED = 2097152
DATUM_CALIBRATION = 4194304
DATUM_ALPHA_CALIBRATED = 8388608
DATUM_BETA_CALIBRATED = 16777216
DATUM_INITIALIZATION = 33554432
DATUM_ALPHA_INITIALIZED = 67108864
DATUM_BETA_INITIALIZED = 134217728
HALL_ALPHA_DISABLE = 268435456
HALL_BETA_DISABLE = 536870912
COGGING_CALIBRATION = 1073741824
COGGING_ALPHA_CALIBRATED = 2147483648
COGGING_BETA_CALIBRATED = 4294967296
ESTIMATED_POSITION = 8589934592
POSITION_RESTORED = 17179869184
SWITCH_OFF_AFTER_MOVE = 34359738368
CALIBRATION_SAVED = 68719476736
PRECISE_MOVE_IN_OPEN_LOOP_ALPHA = 137438953472
PRECISE_MOVE_IN_OPEN_LOOP_BETA = 274877906944
SWITCH_OFF_HALL_AFTER_MOVE = 549755813888
UNKNOWN = 1099511627776
property collision

Returns True if the positioner is collided.

property initialised

Returns True if the positioner is initialised.

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

Bases: jaeger.maskbits.Maskbit

Maskbits for positioner status (firmware <=04.00.04).

SYSTEM_INITIALIZATION = 1
RECEIVING_TRAJECTORY = 256
TRAJECTORY_ALPHA_RECEIVED = 512
TRAJECTORY_BETA_RECEIVED = 1024
DATUM_INITIALIZATION = 2097152
DATUM_ALPHA_INITIALIZED = 4194304
DATUM_BETA_INITIALIZED = 8388608
DISPLACEMENT_COMPLETED = 16777216
ALPHA_DISPLACEMENT_COMPLETED = 33554432
BETA_DISPLACEMENT_COMPLETED = 67108864
ALPHA_COLLISION = 134217728
BETA_COLLISION = 268435456
DATUM_INITIALIZED = 536870912
ESTIMATED_POSITION = 1073741824
POSITION_RESTORED = 2147483648
UNKNOWN = 4294967296
property initialised

Returns True if the positioner is initialised.

property collision

Returns True if the positioner is collided.

jaeger.maskbits.PositionerStatus

Alias to the default positioner status flags.

alias of jaeger.maskbits.PositionerStatusV4_1

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

Bases: jaeger.maskbits.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.ResponseCode(value)[source]

Bases: enum.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

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