From c10cc1baa319550eafc488e4c026f22d16e3bc8e Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Wed, 7 Oct 2020 18:59:07 +0200 Subject: [PATCH 1/7] pijuice.c cleanup : trailing whitespaces --- drivers/pijuice.c | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/drivers/pijuice.c b/drivers/pijuice.c index 0c73c9b291..ec5eb71c2d 100644 --- a/drivers/pijuice.c +++ b/drivers/pijuice.c @@ -23,13 +23,13 @@ #include /* - * Linux I2C userland is a bit of a mess until distros refresh to - * the i2c-tools 4.x release that profides i2c/smbus.h for userspace - * instead of (re)using linux/i2c-dev.h, which conflicts with a + * Linux I2C userland is a bit of a mess until distros refresh to + * the i2c-tools 4.x release that profides i2c/smbus.h for userspace + * instead of (re)using linux/i2c-dev.h, which conflicts with a * kernel header of the same name. * * See: - * https://i2c.wiki.kernel.org/index.php/Plans_for_I2C_Tools_4 + * https://i2c.wiki.kernel.org/index.php/Plans_for_I2C_Tools_4 */ #if HAVE_LINUX_SMBUS_H # include @@ -43,17 +43,17 @@ #endif #endif -/* - * i2c-tools pre-4.0 has a userspace header with a name that conflicts +/* + * i2c-tools pre-4.0 has a userspace header with a name that conflicts * with a kernel header, so it may be ignored/removed by distributions * when packaging i2c-tools. * - * This will cause the driver to be un-buildable on certain - * configurations, so include the necessary bits here to handle this + * This will cause the driver to be un-buildable on certain + * configurations, so include the necessary bits here to handle this * situation. */ #if WITH_LINUX_I2C -#if !HAVE_DECL_I2C_SMBUS_ACCESS +#if !HAVE_DECL_I2C_SMBUS_ACCESS static inline __s32 i2c_smbus_access(int file, char read_write, __u8 command, int size, union i2c_smbus_data *data) { @@ -295,8 +295,8 @@ static void get_charge_level_hi_res() I2C_READ_WORD( upsfd, cmd, __FUNCTION__ ) /* - * Use an external variable to allow for missed i2c bus - * reads; the charge level data may be slightly stale, + * Use an external variable to allow for missed i2c bus + * reads; the charge level data may be slightly stale, * but no other options seem reasonable: * * 1) store 0 @@ -391,7 +391,7 @@ static void get_status() upsdebugx(1, "Power Input 5v: UNKNOWN"); } - if ( batteryStatus == BATT_NORMAL || + if ( batteryStatus == BATT_NORMAL || batteryStatus == BATT_CHARGING_FROM_IN || batteryStatus == BATT_CHARGING_FROM_5V ) { @@ -417,8 +417,8 @@ static void get_status() powerInput <= POWER_PRESENT && powerInput5vIo <= POWER_PRESENT ) { - if ( powerInput == POWER_NOT_PRESENT && - ( powerInput5vIo != POWER_NOT_PRESENT && + if ( powerInput == POWER_NOT_PRESENT && + ( powerInput5vIo != POWER_NOT_PRESENT && powerInput5vIo <= POWER_PRESENT )) { if ( usb_power != 1 || gpio_power != 0 ) @@ -444,8 +444,8 @@ static void get_status() } status_set( status_buf ); } - else if ( powerInput5vIo == POWER_NOT_PRESENT && - ( powerInput != POWER_NOT_PRESENT && + else if ( powerInput5vIo == POWER_NOT_PRESENT && + ( powerInput != POWER_NOT_PRESENT && powerInput <= POWER_PRESENT )) { if ( gpio_power != 1 || usb_power != 0 ) @@ -550,7 +550,7 @@ static void get_battery_current() upsdebugx( 3, __FUNCTION__ ); /* - * The reported current can actually be negative, so we cannot + * The reported current can actually be negative, so we cannot * check for I2C failure by looking for negative values */ data = i2c_smbus_read_word_data(upsfd, cmd); @@ -585,7 +585,7 @@ static void get_io_current() upsdebugx( 3, __FUNCTION__ ); /* - * The reported current can actually be negative, so we cannot + * The reported current can actually be negative, so we cannot * check for I2C failure by looking for negative values */ data = i2c_smbus_read_word_data(upsfd, cmd); @@ -686,7 +686,7 @@ static void set_power_off() upsdebugx( 3, __FUNCTION__ ); /* - * Acceptable values for shutdown_delay are 1-250, + * Acceptable values for shutdown_delay are 1-250, * use 0/255 to clear a scheduled power off command */ @@ -750,13 +750,13 @@ static void get_i2c_address() if ( data == i2c_address ) { - upsdebugx( 1, "Found device '0x%0x' on port '%s'", + upsdebugx( 1, "Found device '0x%0x' on port '%s'", (unsigned int) i2c_address, device_path ); } else { - fatalx( EXIT_FAILURE, - "Could not find PiJuice HAT at I2C address 0x%0x", + fatalx( EXIT_FAILURE, + "Could not find PiJuice HAT at I2C address 0x%0x", i2c_address ); } } From de79ac982396049b1f6f6b3e13a3b232ea93f729 Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Wed, 7 Oct 2020 18:59:38 +0200 Subject: [PATCH 2/7] pijuice.c cleanup : indent stacked #if* macros --- drivers/pijuice.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/pijuice.c b/drivers/pijuice.c index ec5eb71c2d..d5e61e5941 100644 --- a/drivers/pijuice.c +++ b/drivers/pijuice.c @@ -36,11 +36,11 @@ #endif #if HAVE_LINUX_I2C_DEV_H # include /* for I2C_SLAVE */ -#if !HAVE_LINUX_SMBUS_H -#ifndef I2C_FUNC_I2C +# if !HAVE_LINUX_SMBUS_H +# ifndef I2C_FUNC_I2C # include -#endif -#endif +# endif +# endif #endif /* From 03abe87d0aadf3648f48aae413e8a77229683030 Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Wed, 7 Oct 2020 19:07:56 +0200 Subject: [PATCH 3/7] pijuice.c cleanup : rectify indentation and blank-line the default return --- drivers/pijuice.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/pijuice.c b/drivers/pijuice.c index d5e61e5941..d3659421f1 100644 --- a/drivers/pijuice.c +++ b/drivers/pijuice.c @@ -149,7 +149,8 @@ static inline __u8* i2c_smbus_read_i2c_block_data(int file, __u8 command, __u8 l return NULL; else memcpy(values, &data.block[1], data.block[0]); - return values; + + return values; } #endif #endif From 8d747eaef68d4bd849f8b000ffb48a33ef3ae8dc Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Wed, 7 Oct 2020 19:09:12 +0200 Subject: [PATCH 4/7] pijuice.c cleanup : comment end of big block of nested #if macros --- drivers/pijuice.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pijuice.c b/drivers/pijuice.c index d3659421f1..9f2e585948 100644 --- a/drivers/pijuice.c +++ b/drivers/pijuice.c @@ -153,7 +153,7 @@ static inline __u8* i2c_smbus_read_i2c_block_data(int file, __u8 command, __u8 l return values; } #endif -#endif +#endif // if WITH_LINUX_I2C #define STATUS_CMD 0x40 #define CHARGE_LEVEL_CMD 0x41 From bb2e34685b4e78b37c08fe0bd7167d3896e7b207 Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Wed, 7 Oct 2020 19:09:31 +0200 Subject: [PATCH 5/7] pijuice.c cleanup : rectify tabulation of definitions --- drivers/pijuice.c | 132 +++++++++++++++++++++++----------------------- 1 file changed, 66 insertions(+), 66 deletions(-) diff --git a/drivers/pijuice.c b/drivers/pijuice.c index 9f2e585948..a1cb505b0b 100644 --- a/drivers/pijuice.c +++ b/drivers/pijuice.c @@ -155,72 +155,72 @@ static inline __u8* i2c_smbus_read_i2c_block_data(int file, __u8 command, __u8 l #endif #endif // if WITH_LINUX_I2C -#define STATUS_CMD 0x40 -#define CHARGE_LEVEL_CMD 0x41 -#define CHARGE_LEVEL_HI_RES_CMD 0x42 -#define FAULT_EVENT_CMD 0x44 -#define BUTTON_EVENT_CMD 0x45 -#define BATTERY_TEMPERATURE_CMD 0x47 -#define BATTERY_VOLTAGE_CMD 0x49 -#define BATTERY_CURRENT_CMD 0x4b -#define IO_VOLTAGE_CMD 0x4d -#define IO_CURRENT_CMD 0x4f - -#define CHARGING_CONFIG_CMD 0x51 -#define BATTERY_PROFILE_ID_CMD 0x52 -#define BATTERY_PROFILE_CMD 0x53 -#define BATTERY_EXT_PROFILE_CMD 0x54 -#define BATTERY_TEMP_SENSE_CONFIG_CMD 0x5D - -#define POWER_INPUTS_CONFIG_CMD 0x5E -#define RUN_PIN_CONFIG_CMD 0x5F -#define POWER_REGULATOR_CONFIG_CMD 0x60 -#define WATCHDOG_ACTIVATION_CMD 0x61 -#define POWER_OFF_CMD 0x62 -#define WAKEUP_ON_CHARGE_CMD 0x63 -#define SYSTEM_POWER_SWITCH_CTRL_CMD 0x64 - -#define LED_STATE_CMD 0x66 -#define LED_BLINK_CMD 0x68 -#define LED_CONFIGURATION_CMD 0x6A -#define BUTTON_CONFIGURATION_CMD 0x6E - -#define IO1_CONFIGURATION_CMD 0x72 -#define IO1_PIN_ACCESS_CMD 0x75 - -#define IO2_CONFIGURATION_CMD 0x77 -#define IO2_PIN_ACCESS_CMD 0x7A - -#define I2C_ADDRESS_CMD 0x7C - -#define ID_EEPROM_WRITE_PROTECT_CTRL_CMD 0x7E -#define ID_EEPROM_ADDRESS_CMD 0x7F - -#define RTC_TIME_CMD 0xB0 -#define RTC_ALARM_CMD 0xB9 -#define RTC_CTRL_STATUS_CMD 0xC2 - -#define RESET_TO_DEFAULT_CMD 0xF0 -#define FIRMWARE_VERSION_CMD 0xFD - -#define BATT_NORMAL 0 -#define BATT_CHARGING_FROM_IN 1 -#define BATT_CHARGING_FROM_5V 2 -#define BATT_NOT_PRESENT 3 - -#define POWER_NOT_PRESENT 0 -#define POWER_BAD 1 -#define POWER_WEAK 2 -#define POWER_PRESENT 3 - -#define LOW_BATTERY_THRESHOLD 25.0 -#define HIGH_BATTERY_THRESHOLD 75.0 -#define NOMINAL_BATTERY_VOLTAGE 4.18 - -#define DRIVER_NAME "PiJuice UPS driver" -#define DRIVER_VERSION "0.9" - -static uint8_t i2c_address = 0x14; +#define STATUS_CMD 0x40 +#define CHARGE_LEVEL_CMD 0x41 +#define CHARGE_LEVEL_HI_RES_CMD 0x42 +#define FAULT_EVENT_CMD 0x44 +#define BUTTON_EVENT_CMD 0x45 +#define BATTERY_TEMPERATURE_CMD 0x47 +#define BATTERY_VOLTAGE_CMD 0x49 +#define BATTERY_CURRENT_CMD 0x4b +#define IO_VOLTAGE_CMD 0x4d +#define IO_CURRENT_CMD 0x4f + +#define CHARGING_CONFIG_CMD 0x51 +#define BATTERY_PROFILE_ID_CMD 0x52 +#define BATTERY_PROFILE_CMD 0x53 +#define BATTERY_EXT_PROFILE_CMD 0x54 +#define BATTERY_TEMP_SENSE_CONFIG_CMD 0x5D + +#define POWER_INPUTS_CONFIG_CMD 0x5E +#define RUN_PIN_CONFIG_CMD 0x5F +#define POWER_REGULATOR_CONFIG_CMD 0x60 +#define WATCHDOG_ACTIVATION_CMD 0x61 +#define POWER_OFF_CMD 0x62 +#define WAKEUP_ON_CHARGE_CMD 0x63 +#define SYSTEM_POWER_SWITCH_CTRL_CMD 0x64 + +#define LED_STATE_CMD 0x66 +#define LED_BLINK_CMD 0x68 +#define LED_CONFIGURATION_CMD 0x6A +#define BUTTON_CONFIGURATION_CMD 0x6E + +#define IO1_CONFIGURATION_CMD 0x72 +#define IO1_PIN_ACCESS_CMD 0x75 + +#define IO2_CONFIGURATION_CMD 0x77 +#define IO2_PIN_ACCESS_CMD 0x7A + +#define I2C_ADDRESS_CMD 0x7C + +#define ID_EEPROM_WRITE_PROTECT_CTRL_CMD 0x7E +#define ID_EEPROM_ADDRESS_CMD 0x7F + +#define RTC_TIME_CMD 0xB0 +#define RTC_ALARM_CMD 0xB9 +#define RTC_CTRL_STATUS_CMD 0xC2 + +#define RESET_TO_DEFAULT_CMD 0xF0 +#define FIRMWARE_VERSION_CMD 0xFD + +#define BATT_NORMAL 0 +#define BATT_CHARGING_FROM_IN 1 +#define BATT_CHARGING_FROM_5V 2 +#define BATT_NOT_PRESENT 3 + +#define POWER_NOT_PRESENT 0 +#define POWER_BAD 1 +#define POWER_WEAK 2 +#define POWER_PRESENT 3 + +#define LOW_BATTERY_THRESHOLD 25.0 +#define HIGH_BATTERY_THRESHOLD 75.0 +#define NOMINAL_BATTERY_VOLTAGE 4.18 + +#define DRIVER_NAME "PiJuice UPS driver" +#define DRIVER_VERSION "0.9" + +static uint8_t i2c_address = 0x14; static uint8_t shutdown_delay = 30; /* From 16a16702d45b7d75a5f3869846161391f7027ebf Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Wed, 7 Oct 2020 19:12:34 +0200 Subject: [PATCH 6/7] pijuice.c cleanup : rectify leading indentations --- drivers/pijuice.c | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/drivers/pijuice.c b/drivers/pijuice.c index a1cb505b0b..2211bff82f 100644 --- a/drivers/pijuice.c +++ b/drivers/pijuice.c @@ -247,25 +247,25 @@ upsdrv_info_t upsdrv_info = { #define I2C_READ_BYTE(fd, cmd, label) \ if ((data = i2c_smbus_read_byte_data(upsfd, cmd)) < 0 ) { \ - upsdebugx(2, "Failure reading the i2c bus [%s]", label); \ + upsdebugx(2, "Failure reading the i2c bus [%s]", label); \ return; \ } #define I2C_WRITE_BYTE(fd, cmd, value, label) \ if ((data = i2c_smbus_write_byte_data(upsfd, cmd, value)) < 0 ) { \ - upsdebugx(2, "Failure writing to the i2c bus [%s]", label); \ + upsdebugx(2, "Failure writing to the i2c bus [%s]", label); \ return; \ } #define I2C_READ_WORD(fd, cmd, label) \ if ((data = i2c_smbus_read_word_data(upsfd, cmd)) < 0 ) { \ - upsdebugx(2, "Failure reading the i2c bus [%s]", label); \ + upsdebugx(2, "Failure reading the i2c bus [%s]", label); \ return; \ } #define I2C_READ_BLOCK(fd, cmd, size, block, label) \ if ((i2c_smbus_read_i2c_block_data(upsfd, cmd, size, block)) < 0 ) { \ - upsdebugx(2, "Failure reading the i2c bus [%s]", label); \ + upsdebugx(2, "Failure reading the i2c bus [%s]", label); \ return; \ } @@ -275,12 +275,12 @@ static inline int open_i2c_bus(char *path, uint8_t addr) if ((file = open(path, O_RDWR)) < 0) { - fatal_with_errno(EXIT_FAILURE, "Failed to open the i2c bus on %s", path); + fatal_with_errno(EXIT_FAILURE, "Failed to open the i2c bus on %s", path); } if (ioctl(file, I2C_SLAVE, addr) < 0) { - fatal_with_errno(EXIT_FAILURE, "Failed to acquire the i2c bus and/or talk to the UPS"); + fatal_with_errno(EXIT_FAILURE, "Failed to acquire the i2c bus and/or talk to the UPS"); } return file; @@ -419,12 +419,12 @@ static void get_status() powerInput5vIo <= POWER_PRESENT ) { if ( powerInput == POWER_NOT_PRESENT && - ( powerInput5vIo != POWER_NOT_PRESENT && + ( powerInput5vIo != POWER_NOT_PRESENT && powerInput5vIo <= POWER_PRESENT )) { if ( usb_power != 1 || gpio_power != 0 ) { - upslogx( LOG_NOTICE, "On USB power" ); + upslogx( LOG_NOTICE, "On USB power" ); } usb_power = 1; gpio_power = 0; @@ -446,12 +446,12 @@ static void get_status() status_set( status_buf ); } else if ( powerInput5vIo == POWER_NOT_PRESENT && - ( powerInput != POWER_NOT_PRESENT && - powerInput <= POWER_PRESENT )) + ( powerInput != POWER_NOT_PRESENT && + powerInput <= POWER_PRESENT )) { if ( gpio_power != 1 || usb_power != 0 ) { - upslogx( LOG_NOTICE, "On 5V_GPIO power" ); + upslogx( LOG_NOTICE, "On 5V_GPIO power" ); } usb_power = 0; gpio_power = 1; @@ -474,11 +474,11 @@ static void get_status() } } else if ( ( powerInput != POWER_NOT_PRESENT && powerInput <= POWER_PRESENT ) && - ( powerInput5vIo != POWER_NOT_PRESENT && powerInput5vIo <= POWER_PRESENT )) + ( powerInput5vIo != POWER_NOT_PRESENT && powerInput5vIo <= POWER_PRESENT )) { if ( usb_power != 1 || gpio_power != 1 ) { - upslogx( LOG_NOTICE, "On USB and 5V_GPIO power" ); + upslogx( LOG_NOTICE, "On USB and 5V_GPIO power" ); } usb_power = 1; gpio_power = 1; @@ -504,7 +504,7 @@ static void get_status() { if ( usb_power != 0 || gpio_power != 0 ) { - upslogx( LOG_NOTICE, "On Battery power" ); + upslogx( LOG_NOTICE, "On Battery power" ); } usb_power = 0; gpio_power = 0; @@ -604,7 +604,7 @@ static void get_firmware_version() { uint8_t cmd = FIRMWARE_VERSION_CMD; uint16_t data; - uint8_t major, minor; + uint8_t major, minor; upsdebugx( 3, __FUNCTION__ ); @@ -615,7 +615,7 @@ static void get_firmware_version() if (( major != 1 ) || ( minor > 3 )) { - upslogx( LOG_WARNING, "Unknown Firmware release: %d.%d", major, minor ); + upslogx( LOG_WARNING, "Unknown Firmware release: %d.%d", major, minor ); } upsdebugx( 1, "UPS Firmware Version: %d.%d", major, minor ); @@ -693,7 +693,7 @@ static void set_power_off() if ( shutdown_delay > 255 ) { - upslogx( + upslogx( LOG_WARNING, "shutdown delay of >250 seconds requested, shortening to 250 seconds" ); @@ -702,7 +702,7 @@ static void set_power_off() if ( shutdown_delay == 0 ) { - upslogx( + upslogx( LOG_WARNING, "shutdown delay of 0 seconds requested, using 1 second instead" ); @@ -740,19 +740,19 @@ static void get_time() static void get_i2c_address() { - uint8_t cmd = I2C_ADDRESS_CMD; - uint8_t data; + uint8_t cmd = I2C_ADDRESS_CMD; + uint8_t data; upsdebugx( 3, __FUNCTION__ ); I2C_READ_BYTE( upsfd, cmd, __FUNCTION__ ) - upsdebugx( 1, "I2C Address: 0x%0x", data ); + upsdebugx( 1, "I2C Address: 0x%0x", data ); if ( data == i2c_address ) { upsdebugx( 1, "Found device '0x%0x' on port '%s'", - (unsigned int) i2c_address, device_path ); + (unsigned int) i2c_address, device_path ); } else { From 5ac96a6a5956873ff64d59dbe968d0e41fede37c Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Wed, 7 Oct 2020 19:25:21 +0200 Subject: [PATCH 7/7] Add initial manpage for pijuice driver, hastily ripped off one for asem driver --- docs/man/Makefile.am | 6 ++-- docs/man/index.txt | 1 + docs/man/pijuice.txt | 81 ++++++++++++++++++++++++++++++++++++++++++++ docs/nut.dict | 3 ++ 4 files changed, 88 insertions(+), 3 deletions(-) create mode 100644 docs/man/pijuice.txt diff --git a/docs/man/Makefile.am b/docs/man/Makefile.am index fef33f6db0..86434fb33d 100644 --- a/docs/man/Makefile.am +++ b/docs/man/Makefile.am @@ -620,16 +620,16 @@ endif HTML_MODBUS_MANS = phoenixcontact_modbus.html -SRC_LINUX_I2C_PAGES = asem.txt +SRC_LINUX_I2C_PAGES = asem.txt pijuice.txt if WITH_MANS -MAN_LINUX_I2C_PAGES = asem.8 +MAN_LINUX_I2C_PAGES = asem.8 pijuice.8 endif if WITH_LINUX_I2C man8_MANS += $(MAN_LINUX_I2C_PAGES) endif -HTML_LINUX_I2C_MANS = asem.html +HTML_LINUX_I2C_MANS = asem.html pijuice.html # SOME_DRIVERS endif diff --git a/docs/man/index.txt b/docs/man/index.txt index d32175db31..b15c6a4518 100644 --- a/docs/man/index.txt +++ b/docs/man/index.txt @@ -91,6 +91,7 @@ Drivers - linkman:oneac[8] - linkman:optiups[8] - linkman:phoenixcontact_modbus[8] +- linkman:pijuice[8] - linkman:powercom[8] - linkman:powerman-pdu[8] - linkman:powerpanel[8] diff --git a/docs/man/pijuice.txt b/docs/man/pijuice.txt new file mode 100644 index 0000000000..1643208f34 --- /dev/null +++ b/docs/man/pijuice.txt @@ -0,0 +1,81 @@ +PIJUICE(8) +========== + +NAME +---- +pijuice - driver for UPS in PiJuice HAT + +NOTE +---- +This man page only documents the hardware-specific features of the +*pijuice* driver. For information about the core driver, see +linkman:nutupsdrv[8]. + +NOTE: This manual page was hastily adapted from related `asem` driver +manpage based on information from the original pull request, and so +may not fully apply to PiJuice HAT, patches from experts are welcome. + +SUPPORTED HARDWARE +------------------ +The *pijuice* driver supports the portable PiJuice HAT UPS for Raspberry Pi +embedded PCs. + +EXTRA ARGUMENTS +--------------- + +The required parameter for this driver is the I2C bus name: + +*port*='dev-node':: +On the PiJuice HAT, this should be `/dev/i2c-1`. + +INSTALLATION +------------ +NOTE: This section was copied from `asem` driver manpage and may not fully +apply to PiJuice HAT, patches are welcome. + +This driver is specific to the Linux I2C API, and requires the lm_sensors +libi2c-dev or its equivalent to compile. + +Beware that the SystemIO memory used by the I2C controller is reserved by ACPI. +If only a native I2C driver (e.g. i2c_i801, as of 3.5.X Linux kernels) is +available, then you'll need to relax the ACPI resources check. For example, you +can boot with the `acpi_enforce_resources=lax` option. + +////////////////////////////////////////// +Optional: use DIAGNOSTICS to describe troubleshooting techniques that are +longer than what can be conveniently described in the driver error messages. + +DIAGNOSTICS +----------- + +////////////////////////////////////////// + +KNOWN ISSUES AND BUGS +--------------------- +NOTE: This section was copied from `asem` driver manpage and may not fully +apply to PiJuice HAT, patches are welcome. + +The driver shutdown function is not implemented, so other arrangements must be +made to turn off the UPS. + +AUTHORS +------- +Andrew Anderson + +SEE ALSO +-------- + +The core driver: +~~~~~~~~~~~~~~~~ +linkman:nutupsdrv[8] + +Internet resources: +~~~~~~~~~~~~~~~~~~~ +Initial pull requests adding this driver: + +* https://github.com/networkupstools/nut/pull/730 +* https://github.com/PiSupply/PiJuice/issues/124 + +Product home page: https://uk.pi-supply.com/products/pijuice-standard + +The NUT (Network UPS Tools) home page: http://www.networkupstools.org/ diff --git a/docs/nut.dict b/docs/nut.dict index e7795b49cf..921ab16cbc 100644 --- a/docs/nut.dict +++ b/docs/nut.dict @@ -751,6 +751,8 @@ PhaseWin PhoenixContact PhoenixTec Phoenixtec +Pi +PiJuice Plesser PnP Pohle @@ -1970,6 +1972,7 @@ phoenixcontact picocom pid pidpath +pijuice pinout pinouts pkg