João Luis Meloni Assirati
2020-Sep-05 20:38 UTC
[Nut-upsdev] Some questions about NUT driver development
Hello, I am developing a new NUT driver for brazilian UPS brand "Ragtech" by reverse engeneering. I have never been involved in NUT driver development, so I wish to ask some basic questions. Any help will be much appreciated! 1. Is there a mandatory C code style? I mean, any strong recommendation? If there are none, I prefer to keep mine. 2. What are the purposes of "instant commands" test.battery.start and calibration.start? I know an UPS command that will put the load on battery until it reaches a low level and then put the UPS online back. After that, an UPS variable regarding the detected battery capacity will get updated. To which one of those "instant commands" should I associate this UPS command? Also, it seems that in this case the status flag CAL must be reported, is this right? 4. When doing the command above, the load is on battery *and* also there is line power present. In this case, does it make sense to report both OL and OB status flags? Or are OL and OB mutually exclusive? 3. The UPS connects to computer by USB and appears as a serial port /dev/ttyACM?. My driver completely supports hotplugging, so I can plug or unplug the usb cable before or after the driver has started. In any case, the driver connects, disconnects or reconnects to the UPS. The way I did this is by doing connection to the serial port and detection of UPS model all in upsdrv_initinfo(), with upsdrv_initups() doing almost nothing. Is this alright? 4. I wish to be able to pass to the driver some custom options besides the "port = " that appears in ups.conf (for example, only manage a device that reports a specific serial number). What is the standard way to do this? I probably will have more questions, please forgive me if I don't ask them all in a single e-mail. I plan to submit my code as soon as these naive questions get resolved. Thank you very much, João Luis. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://alioth-lists.debian.net/pipermail/nut-upsdev/attachments/20200905/8e2a193d/attachment.html>
João Luis Meloni Assirati
2020-Sep-06 03:25 UTC
[Nut-upsdev] Some questions about NUT driver development
I just found how to pass custom options. You just have to declare the extra option with addvar() at upsdrv_makevartable() and then at any other point of the driver test if it was set at ups.conf with testvar() and retrieve its value with getval(). On Sat, Sep 5, 2020 at 5:38 PM João Luis Meloni Assirati <jlmassir at gmail.com> wrote:> Hello, > > I am developing a new NUT driver for brazilian UPS brand "Ragtech" by > reverse engeneering. I have never been involved in NUT driver development, > so I wish to ask some basic questions. Any help will be much appreciated! > > 1. Is there a mandatory C code style? I mean, any strong recommendation? > If there are none, I prefer to keep mine. > > 2. What are the purposes of "instant commands" test.battery.start and > calibration.start? I know an UPS command that will put the load on battery > until it reaches a low level and then put the UPS online back. After that, > an UPS variable regarding the detected battery capacity will get updated. > To which one of those "instant commands" should I associate this UPS > command? Also, it seems that in this case the status flag CAL must be > reported, is this right? > > 4. When doing the command above, the load is on battery *and* also there > is line power present. In this case, does it make sense to report both OL > and OB status flags? Or are OL and OB mutually exclusive? > > 3. The UPS connects to computer by USB and appears as a serial port > /dev/ttyACM?. My driver completely supports hotplugging, so I can plug or > unplug the usb cable before or after the driver has started. In any case, > the driver connects, disconnects or reconnects to the UPS. The way I did > this is by doing connection to the serial port and detection of UPS model > all in upsdrv_initinfo(), with upsdrv_initups() doing almost nothing. Is > this alright? > > 4. I wish to be able to pass to the driver some custom options besides the > "port = " that appears in ups.conf (for example, only manage a device > that reports a specific serial number). What is the standard way to do this? > > I probably will have more questions, please forgive me if I don't ask them > all in a single e-mail. I plan to submit my code as soon as these naive > questions get resolved. > > Thank you very much, > > João Luis. >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://alioth-lists.debian.net/pipermail/nut-upsdev/attachments/20200906/267c74e0/attachment.html>
Possibly Parallel Threads
- Question about hardware failures / FSD
- Return to sender
- [LLVMdev] x86_stdcallcc @<n> mangling vs. '\1' prefix [was: x86_stdcallcc and extra name mangling on Windows]
- [LLVMdev] x86_stdcallcc @<n> mangling vs. '\1' prefix [was: x86_stdcallcc and extra name mangling on Windows]
- Shorewall + IPsec Tunnel