Add HAL Driver for EX-IOExpander connectivity over TCP/IP (Proof of Concept) #502
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adds a TCP client transport for EX-IOExpander's, so CommandStation can talk to one or more IOExpander's over a network stack (WiFi/Ethernet) instead of I2C.
This implementation is very preliminary and not well tested. I'm sharing as a proof of concept rather than a complete implementation.
This is the CommandStation side of the codebase, for the IOExpander, please see:
DCC-EX/EX-IOExpander#65
This code builds off another PR which introduced shift register support for IOExpander:
#501
<expander_ip>:<port>and performs EXIOINIT to validate pin-count and set first vPIN and subsequent poll cycles for EXIORDD / EXIORDAN and on-demand writes (EXIOWRD, EXIOWRAN, etc.)The HAL driver can be called using the following:
HAL(EXIOExpander_TCP, VPIN, NUM_PINS, IP ADDRESS, OPTIONAL_PORT )
Examples:
HAL(EXIOExpander_TCP, 800, 16, 192, 168, 1, 200) // default port 2560
HAL(EXIOExpander_TCP, 800, 16, 192, 168, 1, 200, 2560) // explicit port