ina3221 ptr NULL security
This commit is contained in:
		
							parent
							
								
									691cf4ed62
								
							
						
					
					
						commit
						8a9c3fd9e8
					
				
					 3 changed files with 15 additions and 11 deletions
				
			
		|  | @ -132,7 +132,8 @@ int ina3221_getBusVoltage(ina3221_t *dev, ina3221_channel_t channel, float *volt | |||
|     int err = 0; | ||||
|     if ((err = _wireReadRegister(&dev->i2c_dev, INA3221_REG_BUSVOLTAGE_1 + channel * 2, (uint16_t*)&raw_value))) | ||||
|         return err; | ||||
|     *voltage = raw_value * 0.001; //V    8mV step
 | ||||
|     if (voltage) | ||||
|         *voltage = raw_value * 0.001; //V    8mV step
 | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
|  | @ -140,15 +141,18 @@ int ina3221_getShuntValue(ina3221_t *dev, ina3221_channel_t channel, float *volt | |||
| { | ||||
|     int16_t raw_value; | ||||
|     int err = 0; | ||||
|     if ((err = _wireReadRegister(&dev->i2c_dev, INA3221_REG_SHUNTVOLTAGE_1 + channel * 2, (uint16_t*)&raw_value))) | ||||
|     if ((err = _wireReadRegister(&dev->i2c_dev,INA3221_REG_SHUNTVOLTAGE_1+channel*2, (uint16_t*)&raw_value))) | ||||
|         return err; | ||||
|     *voltage = raw_value * 0.005; //mV   40uV step
 | ||||
|     if (!dev->shunt[channel]) | ||||
|     float compute = raw_value*0.005; //mV   40uV step
 | ||||
|     if (voltage) | ||||
|         *voltage = compute; | ||||
|     if(!dev->shunt[channel]) | ||||
|     { | ||||
|         debug("No shunt configured for channel %u. Dev:%u:%X\n", channel+1, dev->bus, dev->addr); | ||||
|         return -EINVAL; | ||||
|     } | ||||
|     *current = (*voltage * 1000.0) / dev->shunt[channel];  //mA
 | ||||
|     if (current) | ||||
|         *current = (compute*1000.0)/dev->shunt[channel];  //mA
 | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -26,7 +26,7 @@ extern "C" { | |||
| #define INA3221_ADDR_2  (0x42)      ///< A0 to SDA
 | ||||
| #define INA3221_ADDR_3  (0x43)      ///< A0 to SCL
 | ||||
| 
 | ||||
| #define BUS_NUMBER 3  ///< Number of shunt available
 | ||||
| #define INA3221_BUS_NUMBER 3  ///< Number of shunt available
 | ||||
| 
 | ||||
| #define INA3221_REG_CONFIG                      (0x00) | ||||
| #define INA3221_REG_SHUNTVOLTAGE_1              (0x01) | ||||
|  | @ -133,10 +133,10 @@ typedef union | |||
|  *  Device description | ||||
|  */ | ||||
| typedef struct { | ||||
|     const i2c_dev_t i2c_dev;          ///< ina3221 I2C address
 | ||||
|     const uint16_t shunt[BUS_NUMBER]; ///< Memory of shunt value (mOhm)
 | ||||
|     ina3221_config_t config;          ///< Memory of ina3221 config
 | ||||
|     ina3221_mask_t mask;              ///< Memory of mask_config
 | ||||
|     const i2c_dev_t i2c_dev;                  ///< ina3221 I2C address
 | ||||
|     const uint16_t shunt[INA3221_BUS_NUMBER]; ///< Memory of shunt value (mOhm)
 | ||||
|     ina3221_config_t config;                  ///< Memory of ina3221 config
 | ||||
|     ina3221_mask_t mask;                      ///< Memory of mask_config
 | ||||
| } ina3221_t; | ||||
| 
 | ||||
| /**
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue