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.
-
property
-
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¶
-
-
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¶
-
-
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¶