This really is just to make my life a little easier since the daemon is
running and stable on my remote machine and directly editing the
software on that device is obnoxious due to network errors.
This both shows the relays that we already have assigned and removes
existing pins from the list to choose from. It also alphabetizes for
easy reading by the human.
The full pin scan is slow, and it's slowing me down. Instead, just load
what we know we need for the configured relays unless we are adding a
new relay.
This includes getting a list of chips, their line numbers, enumerating
the properties of the lines/pins, and providing to the user the list of
valid pins to connect to relays.
It also includes reworking the fake relay system and the configuration
file.
I believe this ends the rampant refactoring and I'll now stabilize out
some features.
This adds a bunch of stuff, some barely working. The core idea that I'm
adding now is that I'm redoing the way that we interact with the gpio
pins. Previously I had planned to use lgpio from abyz.me.uk/lg/ directly
and run this program *only* on the single-board computer with the GPIO
pins. Turns out I can instead run the lgpio project's rgpiod program on
the single-board computer and talk to it over the network.
This is way more stable and way faster for development, so that's what
I'm doing.
This is just a checkpoint.
Incidentally, here is the license for the rgpio.py code:
"This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.
In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
For more information, please refer to <http://unlicense.org/>"