Releases: LUXROBO/pymodi
v1.2.0
New features include,
- Detach GUI Firmware Updater from PyMODI
To another Repo. - Implement web client connection for PyMODI
PyMODI can now work as a web client, this makes MODI open for control over the internet. - Package PyMODI into Dockerfile
PyMODI is now packaged into a docker file via GHCR.
v1.1.0
New features include,
- Implement GUI Firmware Updater in PyMODI
Using PyQt5 as the frontend, PyMODI now supports the GUI version of Firmware Updater. - Implement network base (STM32) firmware updater
PyMODI now supports the update of network base firmware. - Implement GD32 firmware updater
PyMODI now supports the update of GD32 firmware (for input modules). - Implement VirtualMODI integration code
You can now use pymodi without having the MODI HW, by utilizing the virtual-modi package.
v1.0.1
New features include,
-
Implement experimental BLE functionality on Windows and macOS
On both platforms, BLE works properly for the first time.
However, in a continuous and repeated run, the connection may suffer from instability issue. -
Improve BLE connection stability in Linux Platform
BLE support on Linux now withstands high property sampling rate. -
Implement module usage manual (i.e. quick-start)
To see basic usage examples interactively, you can now reference our CUI usage manual.
The functionality can be accessed bypython -m modi --usage
. -
Implement module inspection functionality (i.e. diagnose)
To diagnose MODI hardware modules, you can use our new inspection functionality.
The functionality can be accessed bypython -m modi --inspect
. -
Refactor GUI debugger design, fix initialization issue on macOS
Change the debugger GUI by moving boxes and buttons respectively.
Since Tkinter on macOS prohibits the main window to be run in a separate thread, the main window now lives in the main thread.
v1.0.0
New features include,
- Firmware Updater
Module firmware updater has changed its interface.
# Before
import modi
bundle = modi.MODI()
bundle.update_module_firmware()
# After
import modi
modi.update_module_firmware()
Network firmware updater has been implemented in 1.0.0
# Usage
import modi
modi.update_network_firmware()
- Change module interface
Getter (input modules)
# Before
if button.get_pressed():
# After
if button.pressed:
Setter (output modules)
# Before
led.set_red(255)
# After
led.red = 255
- Implement experimental BLE connection
# Usage
import modi
bundle = modi.MODI(conn_mode='ble', uuid=$NETWORK_UUID)
Can handle output modules only due to network firmware limitation, we will improve this in the next update.
-
Include firmware in the repository
This removes internet dependency of PyMODI by allowing firmware update or version check where no internet is available. -
Enable MODI Play support
Implement an interface to handle the network module as a port for MODI Play. You can control the network module using MODI Play.
# Usage
import modi
bundle = modi.MODI()
network = bundle.networks[0]
led = bundle.leds[0]
while True:
if network.button_pressed:
led.red = 255
-
Sort modules by euclidean distance, to the network module
When returning modules with the same type, modules that are close to the network module have a lower index than the ones that are not. If the distance of two modules is the same, left to right then top to bottom order will determine its priority.
e.g.bundle.motors[0]
returns a motor object which is close to the network module than the one frombundle.motors[1]
-
Remove nb_modules parameter of MODI object
When creating a new MODI object (i.e. bundle), you don't need to pass nb_modules parameter to it. MODI automatically evaluates the number of modules attached to your machine. -
Print topology map when the battery module is attached
Change topology manager to handle battery module. -
Add timeout while initializing MODI object
If there is a minor issue in the MODI hardware (e.g. topology pin may malfunction), the initialization usually fail. However, topology failure does not affect PyMODI functionality so use timeout to ignore topology failure. -
Reset user code
If attached STM32 modules contain user code, ask to reset user code before running PyMODI.