no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
ltc2992.c File Reference
#include <stdint.h>
#include <stdlib.h>
#include <errno.h>
#include "no_os_util.h"
#include "no_os_alloc.h"
#include "no_os_i2c.h"
#include "no_os_units.h"
#include "ltc2992.h"
Include dependency graph for ltc2992.c:

Functions

int ltc2992_addr_gen (struct ltc2992_init_param *init_param, enum ltc2992_adr_state a0, enum ltc2992_adr_state a1)
 Generate device I2C address based on ADR pin states.
 
int ltc2992_init (struct ltc2992_dev **device, struct ltc2992_init_param *init_param)
 Initialize communication peripheral for the device.
 
int ltc2992_remove (struct ltc2992_dev *dev)
 Free resources allocated to the device.
 
int ltc2992_read_reg (struct ltc2992_dev *dev, uint8_t addr, uint32_t *data, uint8_t num_bytes)
 Read raw data from device register.
 
int ltc2992_write_reg (struct ltc2992_dev *dev, uint8_t addr, uint32_t value, uint8_t num_bytes)
 Write raw data to device register.
 
int ltc2992_update_reg (struct ltc2992_dev *dev, uint8_t addr, uint8_t mask, uint8_t val)
 Update register value in the device.
 
int ltc2992_get_voltage (struct ltc2992_dev *dev, enum ltc2992_sense sense, uint32_t *voltage_data)
 Read bus voltage in a sense channel.
 
int ltc2992_get_vshunt (struct ltc2992_dev *dev, enum ltc2992_sense sense, uint32_t *vshunt_data)
 Read shunt voltage in a sense channel.
 
int ltc2992_get_current (struct ltc2992_dev *dev, enum ltc2992_sense sense, uint32_t *current_data)
 Read bus current along a sense channel.
 
int ltc2992_get_power (struct ltc2992_dev *dev, enum ltc2992_sense sense, uint32_t *power_data)
 Read bus power output in a sense channel.
 
int ltc2992_get_sum (struct ltc2992_dev *dev, enum ltc2992_channel chan, uint32_t *sum_data)
 Read the shunt voltage sum or power sum of both sense channels.
 
int ltc2992_get_sense_data (struct ltc2992_dev *dev, enum ltc2992_sense sense, enum ltc2992_channel chan, uint32_t *data)
 Read sense data at a SENSE channel.
 
int ltc2992_get_max_data (struct ltc2992_dev *dev, enum ltc2992_sense sense, enum ltc2992_channel chan, uint32_t *data)
 Read maximum sense data at a SENSE channel.
 
int ltc2992_get_min_data (struct ltc2992_dev *dev, enum ltc2992_sense sense, enum ltc2992_channel chan, uint32_t *data)
 Read minimum sense data at a SENSE channel.
 
int ltc2992_set_max_thresh (struct ltc2992_dev *dev, enum ltc2992_sense sense, enum ltc2992_channel chan, uint32_t thresh_value)
 Set upper thresh level for alert at a SENSE channel.
 
int ltc2992_set_min_thresh (struct ltc2992_dev *dev, enum ltc2992_sense sense, enum ltc2992_channel chan, uint32_t thresh_value)
 Set lower thresh level for alert at a SENSE channel.
 
int ltc2992_set_alert (struct ltc2992_dev *dev, enum ltc2992_sense sense, enum ltc2992_channel chan, enum ltc2992_alert_value alert)
 Enable alert.
 
int ltc2992_get_fault (struct ltc2992_dev *dev, enum ltc2992_sense sense, enum ltc2992_channel chan, enum ltc2992_fault_status *fault)
 Get fault status.
 
int ltc2992_clear_fault (struct ltc2992_dev *dev, enum ltc2992_sense sense, enum ltc2992_channel chan)
 Clear fault status.
 
int ltc2992_get_gpio_data (struct ltc2992_dev *dev, enum ltc2992_gpio gpio, uint32_t *gpio_data)
 Get data from a GPIO data converter.
 
int ltc2992_get_gpio_max_data (struct ltc2992_dev *dev, enum ltc2992_gpio gpio, uint32_t *gpio_data)
 Get maximum data from a GPIO data converter.
 
int ltc2992_get_gpio_min_data (struct ltc2992_dev *dev, enum ltc2992_gpio gpio, uint32_t *gpio_data)
 Get minimum data from a GPIO data converter.
 
int ltc2992_set_gpio_max_thresh (struct ltc2992_dev *dev, enum ltc2992_gpio gpio, uint32_t thresh_value)
 Set upper threshold level in a GPIO.
 
int ltc2992_set_gpio_min_thresh (struct ltc2992_dev *dev, enum ltc2992_gpio gpio, uint32_t thresh_value)
 Set lower threshold level in a GPIO.
 
int ltc2992_set_gpio_alert (struct ltc2992_dev *dev, enum ltc2992_gpio gpio, enum ltc2992_alert_value alert_value)
 Enable alert when GPIO level reaches beyond threshold limit.
 
int ltc2992_get_gpio_fault (struct ltc2992_dev *dev, enum ltc2992_gpio gpio, enum ltc2992_fault_status *fault)
 Get GPIO fault status.
 
int ltc2992_clear_gpio_fault (struct ltc2992_dev *dev, enum ltc2992_gpio gpio)
 Clear GPIO fault status.
 
int ltc2992_reset_alert_pin (struct ltc2992_dev *dev)
 Reset alert pin (GPI04) status.
 
int ltc2992_get_gpio_state (struct ltc2992_dev *dev, enum ltc2992_gpio gpio, uint8_t *state)
 Get GPIO state.
 
int ltc2992_set_gpio_output (struct ltc2992_dev *dev, enum ltc2992_gpio gpio, enum ltc2992_gpio_output output)
 Set GPIO output.
 

Function Documentation

◆ ltc2992_addr_gen()

int ltc2992_addr_gen ( struct ltc2992_init_param * init_param,
enum ltc2992_adr_state a0,
enum ltc2992_adr_state a1 )

Generate device I2C address based on ADR pin states.

Parameters
init_param- Initialization parameter.
a0- ADR0 state. Example: LTC2992_ADR_HIGH - ADR at high logic level. LTC2992_ADR_LOW - ADR at ground.. LTC2992_ADR_NC - ADR not connected.
a1- ADR1 state. Example: LTC2992_ADR_HIGH - ADR at high logic level. LTC2992_ADR_LOW - ADR at ground. LTC2992_ADR_NC - ADR not connected.
Returns
0 in case of success, negative error code otherwise.

◆ ltc2992_clear_fault()

int ltc2992_clear_fault ( struct ltc2992_dev * dev,
enum ltc2992_sense sense,
enum ltc2992_channel chan )

Clear fault status.

Parameters
dev- The device structure.
sense- Sense channel. Example: LTC2992_SENSE1 LTC2992_SENSE2
chan- Measured data channel. Example: LTC2992_VOLTAGE LTC2992_VSHUNT LTC2992_CURRENT LTC2992_POWER LTC2992_ISUM LTC2992_PSUM
Returns
0 in case of success, negative error code otherwise.

◆ ltc2992_clear_gpio_fault()

int ltc2992_clear_gpio_fault ( struct ltc2992_dev * dev,
enum ltc2992_gpio gpio )

Clear GPIO fault status.

Parameters
dev- The device structure.
gpio- GPIO to clear fault. Example: LTC2992_GPIO1 LTC2992_GPIO2 LTC2992_GPIO3 LTC2992_GPIO4
Returns
0 in case of success, negative error code otherwise.

◆ ltc2992_get_current()

int ltc2992_get_current ( struct ltc2992_dev * dev,
enum ltc2992_sense sense,
uint32_t * current_data )

Read bus current along a sense channel.

Parameters
dev- The device structure.
sense- Sense channel. Example: LTC2992_SENSE1 - Read in SENSE1 channel. LTC2992_SENSE2 - Read in SENSE2 channel.
current_data- Current read in milliamperes.
Returns
0 in case of success, negative error code otherwise.
Here is the caller graph for this function:

◆ ltc2992_get_fault()

int ltc2992_get_fault ( struct ltc2992_dev * dev,
enum ltc2992_sense sense,
enum ltc2992_channel chan,
enum ltc2992_fault_status * fault )

Get fault status.

Parameters
dev- The device structure.
sense- Sense channel. Example: LTC2992_SENSE1 LTC2992_SENSE2
chan- Measured data channel. Example: LTC2992_VOLTAGE LTC2992_VSHUNT LTC2992_CURRENT LTC2992_POWER LTC2992_ISUM LTC2992_PSUM
fault- Alert value to set. Example: LTC2992_FAULT_NONE - No fault event LTC2992_FAULT_UNDERVALUE - Undervalue fault occurred LTC2992_FAULT_OVERVALUE - Overvalue fault occurred
Returns
0 in case of success, negative error code otherwise.

◆ ltc2992_get_gpio_data()

int ltc2992_get_gpio_data ( struct ltc2992_dev * dev,
enum ltc2992_gpio gpio,
uint32_t * gpio_data )

Get data from a GPIO data converter.

Parameters
dev- The device structure.
gpio- GPIO to get. Example: LTC2992_GPIO1 LTC2992_GPIO2 LTC2992_GPIO3 LTC2992_GPIO4
gpio_data- Data read
Returns
0 in case of success, negative error code otherwise.

◆ ltc2992_get_gpio_fault()

int ltc2992_get_gpio_fault ( struct ltc2992_dev * dev,
enum ltc2992_gpio gpio,
enum ltc2992_fault_status * fault )

Get GPIO fault status.

Parameters
dev- The device structure.
gpio- GPIO to read fault status. Example: LTC2992_GPIO1 LTC2992_GPIO2 LTC2992_GPIO3 LTC2992_GPIO4
fault- Alert value to set. Example: LTC2992_FAULT_NONE - No fault event LTC2992_FAULT_UNDERVALUE - Undervalue fault occurred LTC2992_FAULT_OVERVALUE - Overvalue fault occurred
Returns
0 in case of success, negative error code otherwise.

◆ ltc2992_get_gpio_max_data()

int ltc2992_get_gpio_max_data ( struct ltc2992_dev * dev,
enum ltc2992_gpio gpio,
uint32_t * gpio_data )

Get maximum data from a GPIO data converter.

Parameters
dev- The device structure.
gpio- GPIO to read. Example: LTC2992_GPIO1 LTC2992_GPIO2 LTC2992_GPIO3 LTC2992_GPIO4
gpio_data- Data read
Returns
0 in case of success, negative error code otherwise.

◆ ltc2992_get_gpio_min_data()

int ltc2992_get_gpio_min_data ( struct ltc2992_dev * dev,
enum ltc2992_gpio gpio,
uint32_t * gpio_data )

Get minimum data from a GPIO data converter.

Parameters
dev- The device structure.
gpio- GPIO to get. Example: LTC2992_GPIO1 LTC2992_GPIO2 LTC2992_GPIO3 LTC2992_GPIO4
gpio_data- Data read
Returns
0 in case of success, negative error code otherwise.

◆ ltc2992_get_gpio_state()

int ltc2992_get_gpio_state ( struct ltc2992_dev * dev,
enum ltc2992_gpio gpio,
uint8_t * state )

Get GPIO state.

Parameters
dev- The device structure.
gpio- GPIO to read state. Example: LTC2992_GPIO1 LTC2992_GPIO2 LTC2992_GPIO3 LTC2992_GPIO4
state- GPIO state Example: 0 - GPIO is logic low 1 - GPIO is logic high
Returns
0 in case of success, negative error code otherwise.

◆ ltc2992_get_max_data()

int ltc2992_get_max_data ( struct ltc2992_dev * dev,
enum ltc2992_sense sense,
enum ltc2992_channel chan,
uint32_t * data )

Read maximum sense data at a SENSE channel.

Parameters
dev- The device structure.
sense- Sense channel. Example: LTC2992_SENSE1 - Read in SENSE1 channel. LTC2992_SENSE2 - Read in SENSE2 channel.
chan- Measured data channel. Example: LTC2992_VOLTAGE - Read bus voltage in millivolts. LTC2992_VSHUNT - Read shunt voltage in microvolts. LTC2992_CURRENT - Read current in milliamperes. LTC2992_POWER - Read power in milliwatts. LTC2992_ISUM - Read ISUM in microvolts. LTC2992_PSUM - Read PSUM in milliwatts.
data- Read max data.
Returns
0 in case of success, negative error code otherwise.

◆ ltc2992_get_min_data()

int ltc2992_get_min_data ( struct ltc2992_dev * dev,
enum ltc2992_sense sense,
enum ltc2992_channel chan,
uint32_t * data )

Read minimum sense data at a SENSE channel.

Parameters
dev- The device structure.
sense- Sense channel. Example: LTC2992_SENSE1 - Read in SENSE1 channel. LTC2992_SENSE2 - Read in SENSE2 channel.
chan- Measured data channel. Example: LTC2992_VOLTAGE - Read bus voltage in millivolts. LTC2992_VSHUNT - Read shunt voltage in microvolts. LTC2992_CURRENT - Read current in milliamperes. LTC2992_POWER - Read power in milliwatts. LTC2992_ISUM - Read ISUM in microvolts. LTC2992_PSUM - Read PSUM in milliwatts.
data- Read min data.
Returns
0 in case of success, negative error code otherwise.

◆ ltc2992_get_power()

int ltc2992_get_power ( struct ltc2992_dev * dev,
enum ltc2992_sense sense,
uint32_t * power_data )

Read bus power output in a sense channel.

Parameters
dev- The device structure.
sense- Sense channel. Example: LTC2992_SENSE1 - Read in SENSE1 channel. LTC2992_SENSE2 - Read in SENSE2 channel.
power_data- Power read in milliwatts.
Returns
0 in case of success, negative error code otherwise.
Here is the caller graph for this function:

◆ ltc2992_get_sense_data()

int ltc2992_get_sense_data ( struct ltc2992_dev * dev,
enum ltc2992_sense sense,
enum ltc2992_channel chan,
uint32_t * data )

Read sense data at a SENSE channel.

Parameters
dev- The device structure.
sense- Sense channel. Example: LTC2992_SENSE1 - Read in SENSE1 channel. LTC2992_SENSE2 - Read in SENSE2 channel.
chan- Measured data channel. Example: LTC2992_VOLTAGE - Read bus voltage in millivolts. LTC2992_VSHUNT - Read shunt voltage in microvolts. LTC2992_CURRENT - Read current in milliamperes. LTC2992_POWER - Read power in milliwatts. LTC2992_ISUM - Read ISUM in microvolts. LTC2992_PSUM - Read PSUM in milliwatts.
data- Read data.
Returns
0 in case of success, negative error code otherwise.

◆ ltc2992_get_sum()

int ltc2992_get_sum ( struct ltc2992_dev * dev,
enum ltc2992_channel chan,
uint32_t * sum_data )

Read the shunt voltage sum or power sum of both sense channels.

Parameters
dev- The device structure.
chan- Measured channel. Example: LTC2992_VSHUNT - Read ISUM. LTC2992_POWER - Read PSUM.
sum_data- Sum read in microvolts or milliwatts.
Returns
0 in case of success, negative error code otherwise.
Here is the caller graph for this function:

◆ ltc2992_get_voltage()

int ltc2992_get_voltage ( struct ltc2992_dev * dev,
enum ltc2992_sense sense,
uint32_t * voltage_data )

Read bus voltage in a sense channel.

Parameters
dev- The device structure.
sense- Sense channel. Example: LTC2992_SENSE1 - Read in SENSE1 channel. LTC2992_SENSE2 - Read in SENSE2 channel.
voltage_data- Voltage read in millivolts.
Returns
0 in case of success, negative error code otherwise.
Here is the caller graph for this function:

◆ ltc2992_get_vshunt()

int ltc2992_get_vshunt ( struct ltc2992_dev * dev,
enum ltc2992_sense sense,
uint32_t * vshunt_data )

Read shunt voltage in a sense channel.

Parameters
dev- The device structure.
sense- Sense channel. Example: LTC2992_SENSE1 - Read in SENSE1 channel. LTC2992_SENSE2 - Read in SENSE2 channel.
vshunt_data- Voltage read in microvolts.
Returns
0 in case of success, negative error code otherwise.
Here is the caller graph for this function:

◆ ltc2992_init()

int ltc2992_init ( struct ltc2992_dev ** device,
struct ltc2992_init_param * init_param )

Initialize communication peripheral for the device.

Parameters
device- The device structure.
init_param- Initial parameters.
Returns
0 in case of success, negative error code otherwise.

◆ ltc2992_read_reg()

int ltc2992_read_reg ( struct ltc2992_dev * dev,
uint8_t addr,
uint32_t * data,
uint8_t num_bytes )

Read raw data from device register.

Parameters
dev- The device structure.
addr- The register address.
data- Register data pointer.
num_bytes- Number of bytes to read.
Returns
0 in case of success, negative error code otherwise.
Here is the caller graph for this function:

◆ ltc2992_remove()

int ltc2992_remove ( struct ltc2992_dev * dev)

Free resources allocated to the device.

Parameters
dev- The device structure.
Returns
0 in case of success, negative error code otherwise.

◆ ltc2992_reset_alert_pin()

int ltc2992_reset_alert_pin ( struct ltc2992_dev * dev)

Reset alert pin (GPI04) status.

Parameters
dev- The device structure.
Returns
0 in case of success, negative error code otherwise.

◆ ltc2992_set_alert()

int ltc2992_set_alert ( struct ltc2992_dev * dev,
enum ltc2992_sense sense,
enum ltc2992_channel chan,
enum ltc2992_alert_value alert )

Enable alert.

Parameters
dev- The device structure.
sense- Sense channel. Example: LTC2992_SENSE1 LTC2992_SENSE2
chan- Measured data channel. Example: LTC2992_VOLTAGE LTC2992_VSHUNT LTC2992_CURRENT LTC2992_POWER LTC2992_ISUM LTC2992_PSUM
alert- Alert value to set. Example: LTC2992_ALERT_DISABLE_ALL - Disable alert LTC2992_ALERT_ENABLE_UV - Enable undervalue alert LTC2992_ALERT_ENABLE_OV - Enable overvalue alert LTC2992_ALERT_ENABLE_ALL - Enable undervalue and overvalue alert
Returns
0 in case of success, negative error code otherwise.

◆ ltc2992_set_gpio_alert()

int ltc2992_set_gpio_alert ( struct ltc2992_dev * dev,
enum ltc2992_gpio gpio,
enum ltc2992_alert_value alert_value )

Enable alert when GPIO level reaches beyond threshold limit.

Parameters
dev- The device structure.
gpio- GPIO to enable alert. Example: LTC2992_GPIO1 LTC2992_GPIO2 LTC2992_GPIO3 LTC2992_GPIO4
alert_value- Alert value to set. Example: LTC2992_ALERT_DISABLE_ALL - Disable alert LTC2992_ALERT_ENABLE_UV - Enable undervalue alert LTC2992_ALERT_ENABLE_OV - Enable overvalue alert LTC2992_ALERT_ENABLE_ALL - Enable undervalue and overvalue alert
Returns
0 in case of success, negative error code otherwise.

◆ ltc2992_set_gpio_max_thresh()

int ltc2992_set_gpio_max_thresh ( struct ltc2992_dev * dev,
enum ltc2992_gpio gpio,
uint32_t thresh_value )

Set upper threshold level in a GPIO.

Parameters
dev- The device structure.
gpio- GPIO to set. Example: LTC2992_GPIO1 LTC2992_GPIO2 LTC2992_GPIO3 LTC2992_GPIO4
thresh_value- Set threshold.
Returns
0 in case of success, negative error code otherwise.

◆ ltc2992_set_gpio_min_thresh()

int ltc2992_set_gpio_min_thresh ( struct ltc2992_dev * dev,
enum ltc2992_gpio gpio,
uint32_t thresh_value )

Set lower threshold level in a GPIO.

Parameters
dev- The device structure.
gpio- GPIO to set. Example: LTC2992_GPIO1 LTC2992_GPIO2 LTC2992_GPIO3 LTC2992_GPIO4
thresh_value- Set threshold.
Returns
0 in case of success, negative error code otherwise.

◆ ltc2992_set_gpio_output()

int ltc2992_set_gpio_output ( struct ltc2992_dev * dev,
enum ltc2992_gpio gpio,
enum ltc2992_gpio_output output )

Set GPIO output.

Parameters
dev- The device structure.
gpio- GPIO to set. Example: LTC2992_GPIO1 LTC2992_GPIO2 LTC2992_GPIO3 LTC2992_GPIO4
output- GPIO output to set Example: LTC2992_GPIO_OUTPUT_HI_Z - Output high impedance. LTC2992_GPIO_OUTPUT_PULL_LOW - Pull output low.
Returns
0 in case of success, negative error code otherwise.

◆ ltc2992_set_max_thresh()

int ltc2992_set_max_thresh ( struct ltc2992_dev * dev,
enum ltc2992_sense sense,
enum ltc2992_channel chan,
uint32_t thresh_value )

Set upper thresh level for alert at a SENSE channel.

Parameters
dev- The device structure.
sense- Sense channel. Example: LTC2992_SENSE1 LTC2992_SENSE2
chan- Measured data channel. Example: LTC2992_VOLTAGE - Bus voltage thresh in millivolts. LTC2992_VSHUNT - Shunt voltage thresh in microvolts. LTC2992_CURRENT - Current thresh in milliamperes. LTC2992_POWER - Power thresh in milliwatts. LTC2992_ISUM - ISUM thresh in microvolts. LTC2992_PSUM - PSUM thresh in milliwatts.
thresh_value- Thresh level to set.
Returns
0 in case of success, negative error code otherwise.

◆ ltc2992_set_min_thresh()

int ltc2992_set_min_thresh ( struct ltc2992_dev * dev,
enum ltc2992_sense sense,
enum ltc2992_channel chan,
uint32_t thresh_value )

Set lower thresh level for alert at a SENSE channel.

Parameters
dev- The device structure.
sense- Sense channel. Example: LTC2992_SENSE1 LTC2992_SENSE2
chan- Measured data channel. Example: LTC2992_VOLTAGE - Bus voltage thresh in millivolts. LTC2992_VSHUNT - Shunt voltage thresh in microvolts. LTC2992_CURRENT - Current thresh in milliamperes. LTC2992_POWER - Power thresh in milliwatts. LTC2992_ISUM - ISUM thresh in microvolts. LTC2992_PSUM - PSUM thresh in milliwatts.
thresh_value- Thresh level to set.
Returns
0 in case of success, negative error code otherwise.

◆ ltc2992_update_reg()

int ltc2992_update_reg ( struct ltc2992_dev * dev,
uint8_t addr,
uint8_t mask,
uint8_t val )

Update register value in the device.

Parameters
dev- The device structure.
addr- The register address.
mask- Mask of the bitfield to be updated.
val- Value to write.
Returns
0 in case of success, negative error code otherwise.
Here is the caller graph for this function:

◆ ltc2992_write_reg()

int ltc2992_write_reg ( struct ltc2992_dev * dev,
uint8_t addr,
uint32_t value,
uint8_t num_bytes )

Write raw data to device register.

Parameters
dev- The device structure.
addr- The register address.
value- Value to write.
num_bytes- Number of bytes to write.
Returns
0 in case of success, negative error code otherwise.
Here is the caller graph for this function: