Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IOControl library updates #2680

Merged
merged 1 commit into from
Oct 21, 2023
Merged

Conversation

mikee47
Copy link
Contributor

@mikee47 mikee47 commented Oct 20, 2023

Fixes

Fix request ID defaulting to "null" string

bugfix: Device state handling

  • Device::stop() doesn't update state
  • Clear fault state on successful request

Fix toString(Request) not available compiler error

Fix issue with TX DONE interrupt on RP2040

  • Fires when FIFO drops below 25% so needs more padding.

Fix Modbus GenericRequest 'bad_node' error

Bugfix: Cannot flush uart from ISR (RS485)

Fix possible double-call during modbus execute event

Bugfix: activeConfig not set in Serial

Fix uninitialised default values

Fix RFSwitch output initialisation and idling

Improvements

Use nested namespaces (C++17)

Device::nodeIdMax() is calculated, doesn't need to be virtual

Tidy up Device factory inheritance

Add devmgr findDevice method template to handle up-casting

Add device parameter to support minimum interval between transactions

Put toString function overloads in global namespace

Omit command from JSON responses if undefined

Improve DMX512

  • Fix segment not being set
  • Add device fade option
  • Implement query command
  • Tidy up Request::nodeSet() and nodeAdjust(), virtualise setValue()

Improve RS485

  • Add gpio numbers to Serial::open()

Revise modbus PDU structure

  • Structure for input/holding registers is identical
  • Add methods for accessing coil bits

RS485 devices can override default transaction timeout

Add modbus GenericRequest support, plus transfer callback hook

Allow RS485 per-request Slave Address override (e.g. for broadcast requests)

Reduce RS485 debug verbosity

Complete RS485 receive using timer to avoid premature request completion. This enables support for general RS232 communication where responses may be a bit bursty.

Add Custom class. May serve as a useful starting point for new devices.

New devices

Add RI-D35 modbus energy meter

Add STM8Relay modbus relay board support.

  • New 4-channel modbus board uses coil commands (0-based) and has 4 digital inputs
  • Use update command to change stm8relay slave address

Add NT18B07 NTC temperature sensor board

Add STS fan controller sample project
This is a real application used to control three PWM fans for cooling a hybrid solar inverter.
Uses RPi Pico as hardware can generate PWM and measure speed.

## Fixes

Fix request ID defaulting to "null" string

bugfix: Device state handling
- Device::stop() doesn't update state
- Clear fault state on successful request

Fix `toString(Request)` not available compiler error

Fix issue with TX DONE interrupt on RP2040
- Fires when FIFO drops below 25% so needs more padding.

Fix Modbus GenericRequest 'bad_node' error

Bugfix: Cannot flush uart from ISR (RS485)

Fix possible double-call during modbus execute event

Bugfix: activeConfig not set in Serial

Fix uninitialised default values

Fix RFSwitch output initialisation and idling

## Improvements

Use nested namespaces (C++17)

`Device::nodeIdMax()` is calculated, doesn't need to be virtual

Tidy up Device factory inheritance

Add devmgr `findDevice` method template to handle up-casting

Add device parameter to support minimum interval between transactions

Put `toString` function overloads in global namespace

Omit `command` from JSON responses if undefined

Improve DMX512
- Fix segment not being set
- Add device `fade` option
- Implement `query` command
- Tidy up `Request::nodeSet()` and `nodeAdjust()`, virtualise `setValue()`

Improve RS485
- Add gpio numbers to `Serial::open()`

Revise modbus PDU structure
- Structure for input/holding registers is identical
- Add methods for accessing coil bits

RS485 devices can override default transaction timeout

Add modbus `GenericRequest` support, plus transfer callback hook

Allow RS485 per-request Slave Address override (e.g. for broadcast requests)

Reduce RS485 debug verbosity

Complete RS485 receive using timer to avoid premature request completion.
This enables support for general RS232 communication where responses may be a bit bursty.

Add Custom class. May serve as a useful starting point for new devices.

## New devices

Add RI-D35 modbus energy meter

Add STM8Relay modbus relay board support.
- New 4-channel modbus board uses coil commands (0-based) and has 4 digital inputs
- Use `update` command to change stm8relay slave address

Add NT18B07 NTC temperature sensor board

Add STS fan controller sample project
    This is a real application used to control three PWM fans for cooling a hybrid solar inverter.
    Uses RPi Pico as hardware can generate PWM and measure speed.
@what-the-diff
Copy link

what-the-diff bot commented Oct 20, 2023

PR Summary

  • Subproject Commit Update in IOControl Folder
    A part of the project called 'subproject' found in the 'IOControl' folder has been refreshed. This change usually means that some improvements or bug fixes have been added, ensuring better performance and stability.

@slaff slaff added this to the 5.1.0 milestone Oct 21, 2023
@slaff slaff merged commit 92b9737 into SmingHub:develop Oct 21, 2023
36 checks passed
@mikee47 mikee47 deleted the feature/iocontrol-updates branch October 21, 2023 19:24
@slaff slaff mentioned this pull request Oct 24, 2023
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants