Release Notes - Version 0.0.20 (Stable)
Overview
This release introduces several new features, enhancements, and bug fixes to improve the overall stability and functionality of the application. As well as several newly tested drivers (see doc/demo & README), and several bug fixes.
Multiprocess implemented for dedicated process driving a set of motors up to 2 child processes should be safely spawned, each driving multiple controllers, max number will depend on max PPS sent, on a RPi 4B 2 controllers can be pulsed at min period of 30uS, if no callables are provided.
New Features (from MVP v0.0.6)
- BlockingQueueWorker:
- Formal Job definition.
- WorkChain (sequenced execution of Jobs). Also available in multiprocess scenario.
- Controller:
- signedSteps() to accept signet in number of steps. Proxy for CW vs CCW rotation (-) is CCW, (+) is CW.
- moveTo() for absolute positioning in steps, from 0 to )SPR.
- Stepping Event prefixes. See demo files MultiProcessPolarCoordinatesSample.
- Support for sleep/disable mode after stepping
useHoldingTorque
constructor param (and inferred too from enableGpioPin & sleepGpioPin parameters). - Uses MultiprocessObserver to sync jobs execution to proxy
BlockingQueueWorker
in MainProcess. (Client code can use Driver proxies transparently and block on proxied jobs as if those were running locally.)
- Logging:
- tprint() function to buffer outputs in a Thread Local fashion.
- flush_streams() function to dump logs from all threads when convenient. (Avoiding using print at critical times!)
- more handy functions, check ThreadOrderedPrint
- Exit handlers to kill lingering threads and processes. see atexit_handlers
- Changed Timing to monotonic_ns
- EventDispatcher
- can now reguster multiple events to same handler in one
register(eventName=[eName1,...,eNameN], callee)
call - Event propagation from child process to MainProcess.
- can now reguster multiple events to same handler in one
- Multiprocess: sets of Controllers can be initiated in dedicated process. see demo MultiProcessPolarCoordinatesSample
- MultiprocessObserver to encapsulate MP Locks and subscriber/notifier functions.
- StepperMotor:
- Added Builder to
GenericStepper
to make it easy to configure custom stepper definitions.
- Added Builder to
New implementations
Added implementations for best seller motors and drivers. see README and demo files.