Changelog¶
0.6.0 2020-10-15
[Feature] #91: Implement additional commands for powering up/down hall sensors, and setting the open/closed loop. In the process,
Positioner
was cleaned and streamlined. Most functions now raise aPositionerError
if they fail, instead of failing silently with a log message.[Feature]: Allow to skip cogging calibration.
:support`-` Wrap message from
CANNetBus
in custom message class with additional__slots__
. This fixes a deprecation introduced inpython-can>=3.3.4
.[Bug]: Initialise FPS during
upgrade-firmware
. If the FPS is not initialised and a layout is not loaded there is no way for the upgrade script to know what positioners may be connected or their statuses.[Bug]: Fix starting status server.
[Bug]: Do not pass context to actor commands.
[Support]: The default logging level for the console is not warning. In the CLI, the logging level can be adjusted using the
-v
flag.-v
will set the logging level toINFO
;-vv
will set the level toDEBUG
;-vvv
will also set the CAN logging level toDEBUG
.[Support]:
motor_steps
andtime_step
are now defined in the configuration file underpositioner
.[Support] #90: Remove the option to initialise datums in
Positioner
.[Support]: Update
sdss-drift
to0.1.5
to fixpymodbus
import.[Support]: Remove QA database features since they need a full rethink.
[Support] #89: Implement daemon.
0.5.2 2020-07-31
[Support]: Adapt actor system to use
CLU>=0.3.0
.
0.5.1 2020-07-29
[Feature]: Add actor command
info
to report the configuration file and version.[Feature] #86: Allow to pass a custom configuration file in the CLI using the flag
-c/--config
.
0.5.0 2020-07-20
[Feature] #75: Implement trajectories using SYNC line.
[Feature] #76: Implement calibration commands and routines.
[Feature] #51: Set up an asyncio exception handler and make the
Poller
use it if there is a problem with the callback.[Feature] #62: Add a new
Trajectory
class as a low-level method to send trajectories.[Bug] #72: (also #73) Fix UIDs not being returned to the pool in some cases, which emptied it after a while.
[Bug] #64: Fixed WAGO disconnects by increasing the timeout of the hardware.
[Support] #83: Use GitHub workflows.
[Support] #70: Better documentation for firmware update.
[Support] #21: (and several associated issues) Remove WAGO and use external drift library.
[Support]: Rename
cli.py
to__main__.py
.[Support] #61: Stop the positioners before existing if CLI receives a SIGINT, SIGTERM, or SIGHUP.
[Support]: Retrieve configuration from
$SDSSCORE_DIR/configuration/actors/jaeger.yaml
or from~/.config/sdss/jaeger.yml
.[Support]: Adapt to using CLU>=0.2.0.
[Support] #68: Use
sdsstools
instead of core utilities. Some clean-up of the packaging files.[Support] #67: Improve initialisation time by making sure all commands after the initial
GET_FIRMWARE_VERSION
know how many positioners are connected and don’t time out.
0.4.2 2019-11-22
[Feature] #59: Add an
engineering_mode
flag toFPS
(can be toogled using thejaeger --danger
) flag to override most safety warnings for debugging.Fix call to
Positioner.goto
from CLI.Unless
immediate=True
is passed toPoller.set_delay
, waits for the current task to finish.
0.4.1 2019-11-21
[Feature] #56: Move time for go to moves is calculated and reported.
[Feature] #57: Added
FPS.moving
andPositioner.moving
attributes to determine whether it is save to move the FPS.Recognise and deal with CAN@net devices already in use.
Very significant rewrite of how messages and replies are matched. Now there is a pool of unique identifiers. Each message gets assigned a UID from the pool corresponding to its
command_id
andpositioner_id
. When a reply is received, it is matched based oncommand_id
,positioner_id
, andUID
. At that point the UID is returned to the pool. Broadcast messages always receive the reservedUID=0
. This means that two broadcast of the same command should not be running at the same time or replies could be misassigned.send_trajectory
now raises exceptions on error.Significant clean-up of how pollers are used.
Support versions
04.00.XX
and04.01.XX
of Tendo withPositionerStatusV4_0
andPositionerStatusV4_1
maskbits.
0.4.0 2019-11-19
[Feature] #54: Add firmware upgrade command to actor.
[Feature] #49: Positioner status and position polling is now done from the FPS instead of from each positioner.
[Feature] #13: Abort trajectory and lock the FPS if either a collided status is detected in a positioner or if command 18 is received from the CAN network.
[Feature] #46: Implement a QA database for moves.
[Bug] #53: Fix issues dealing with positioners that in the layout but not connected.
Fix bug due to use of unsigned integers when passing a negative position.
Add
SetCurrent
command to actor.
0.3.0 2019-11-13
[Feature] #29: Output WAGO status on a timer.
[Feature] #37: Support power cycling a PLC.
[Feature] #40: Allow to instantiate an FPS without a WAGO connection.
[Feature] #12: Initial but fully functional implementation of TCP/IP actor.
[Feature] #24: (with #28) Initial implementation of WAGO PLCs and associated actor commands.
[Bug] #39: Use
loop.create_task
instead ofasyncio.create_task
inPoller
, which seems to fix using jaeger in IPython.Add
is_bootloader
to output ofstatus
command.Modify
jaeger
CLI command to useasync def
andawait
.Add command
SetCurrent
.Change file layout to include a positioner ID.
[Support] #22: Moved some configuration parameters under
positioner
.
0.2.1 2019-06-29
Fix
MANIFEST.in
not including the requirements files.
0.2.0 2019-06-29
[Feature] #9: Initial implementation of the
CAN@net
bus.[Feature] #1: Added
FPS.abort
method to cancel all trajectories.[Feature] #3: Add
skip-error
option tojaeger demo
.[Bug] #11: Fix endianess of firmware version.
Renamed
interfaces -> profiles
in configuration.Added initial actor features.
Improved logging system.
Load layout when
FPS
is instantiated.Expose
Positioner.set_position
as a public method.[Bug] #2: Fix double setting of status when command times out.
First complete pass at the documentation.
Fixed bug that would raise an exception during initialisation if no positioner had replied to
GET_STATUS
.Fixed bug in which the positions for
SetActualPosition
were being sent in degrees instead of in steps.Added
home
command tojaeger
CLI.
0.1.0 2018-10-10
Basic framework.
Added
FPS
,JaegerCAN
, andPositioner
classes.Implemented
Command
class and subclasses for all available commands.Added maskbits based on the
IntFlag
enumeration.Added several helpers (
AsyncQueue
,Poller
,StatusMixIn
)Added utilities to convert from bytes to int and vice versa, and to build and parse identifiers.
Added convenience function to upgrade firmware.
Added CLI interface.
Initial documentation.