Skip to content

Releases: LUXROBO/pymodi

v1.2.0

16 Feb 14:05
Compare
Choose a tag to compare

New features include,

  1. Detach GUI Firmware Updater from PyMODI
    To another Repo.
  2. Implement web client connection for PyMODI
    PyMODI can now work as a web client, this makes MODI open for control over the internet.
  3. Package PyMODI into Dockerfile
    PyMODI is now packaged into a docker file via GHCR.

v1.1.0

17 Dec 06:07
Compare
Choose a tag to compare

New features include,

  1. Implement GUI Firmware Updater in PyMODI
    Using PyQt5 as the frontend, PyMODI now supports the GUI version of Firmware Updater.
  2. Implement network base (STM32) firmware updater
    PyMODI now supports the update of network base firmware.
  3. Implement GD32 firmware updater
    PyMODI now supports the update of GD32 firmware (for input modules).
  4. Implement VirtualMODI integration code
    You can now use pymodi without having the MODI HW, by utilizing the virtual-modi package.

v1.0.1

06 Oct 07:51
Compare
Choose a tag to compare

New features include,

  1. 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.

  2. Improve BLE connection stability in Linux Platform
    BLE support on Linux now withstands high property sampling rate.

  3. 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 by python -m modi --usage.

  4. Implement module inspection functionality (i.e. diagnose)
    To diagnose MODI hardware modules, you can use our new inspection functionality.
    The functionality can be accessed by python -m modi --inspect.

  5. 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

15 Sep 04:58
Compare
Choose a tag to compare

New features include,

  1. 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()
  1. 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
  1. 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.

  1. Include firmware in the repository
    This removes internet dependency of PyMODI by allowing firmware update or version check where no internet is available.

  2. 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
  1. 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 from bundle.motors[1]

  2. 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.

  3. Print topology map when the battery module is attached
    Change topology manager to handle battery module.

  4. 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.

  5. Reset user code
    If attached STM32 modules contain user code, ask to reset user code before running PyMODI.