MAX14690 library

Fork of MAX14690 by Maxim Integrated

Revision:
13:666b6c505289
Parent:
12:1ca110017930
Child:
14:cbd2a00ff28f
--- a/MAX14690.h	Sat Nov 19 00:32:54 2016 +0000
+++ b/MAX14690.h	Fri Dec 16 00:56:48 2016 +0000
@@ -103,7 +103,7 @@
      * @brief   Register Addresses
      * @details Enumerated MAX14690 register addresses
      */
-    typedef enum {
+    enum registers_t {
         REG_CHIP_ID = 0x00,		///< Chip ID
         REG_CHIP_REV = 0x01,	///< Chip Revision
         REG_STATUS_A = 0x02,   ///< Status Register A
@@ -136,13 +136,13 @@
         REG_PWR_CFG = 0x1D,   ///< Power Configuration
         REG_NULL = 0x1E,   ///< Reserved 0x1E
         REG_PWR_OFF = 0x1F,   ///< Power Off Register
-    } registers_t;
+    };
 
     /**
      * @brief   Thermal Status
      * @details Thermal status determined by thermistor
      */
-    typedef enum  {
+    enum thermStat_t {
         THMSTAT_000,	///< T < T1
         THMSTAT_001,	///< T1 < T < T2
         THMSTAT_010,	///< T2 < T < T3
@@ -151,13 +151,13 @@
         THMSTAT_101,	///< No theremistor detected
         THMSTAT_110,	///< Thermistor Disabled by ThermEn
         THMSTAT_111,	///< CHGIN not present
-    } thermStat_t;
+    };
 
     /**
      * @brief   Charge Status
      * @details Current operating mode of charger
      */
-    typedef enum  {
+    enum chgStat_t {
         CHGSTAT_000,	///< Charger off
         CHGSTAT_001,	///< Charging suspended by temperature
         CHGSTAT_010,	///< Pre-charge
@@ -166,35 +166,35 @@
         CHGSTAT_101,	///< Maintain charge
         CHGSTAT_110,	///< Done
         CHGSTAT_111,	///< Charger fault
-    } chgStat_t;
+    };
 
     /**
      * @brief   Input Current Limit
      * @details CHGIN input current limit values
      */
-    typedef enum  {
+    enum iLimCntl_t {
         ILIM_0mA,		///< 0mA
         ILIM_100mA,		///< 100mA
         ILIM_500mA,		///< 500mA
         ILIM_1000mA,		///< 1000mA
-    } iLimCntl_t;
+    };
 
     /**
      * @brief   Recharge Threshold
      * @details Battery recharge voltage threshold
      */
-    typedef enum  {
+    enum batReChg_t {
         BAT_RECHG_70mV,		///< 70mV
         BAT_RECHG_120mV,		///< 120mV
         BAT_RECHG_170mV,		///< 170mV
         BAT_RECHG_220mV,		///< 220mV
-    } batReChg_t;
+    };
 
     /**
      * @brief   Battery Regulation Voltage
      * @details Battery regulation voltages set point
      */
-    typedef enum  {
+    enum batReg_t {
         BAT_REG_4050mV,		///< 4.05V
         BAT_REG_4100mV,		///< 4.10V
         BAT_REG_4150mV,		///< 4.15V
@@ -203,13 +203,13 @@
         BAT_REG_4300mV,		///< 4.30V
         BAT_REG_4350mV,		///< 4.35V
         BAT_REG_RSVD,		///< reserved
-    } batReg_t;
+    };
 
     /**
      * @brief   Precharge Voltage
      * @details Battery precharge voltage threshold
      */
-    typedef enum  {
+    enum vPChg_t {
         VPCHG_2100mV,		///< 2.10V
         VPCHG_2250mV,		///< 2.25V
         VPCHG_2400mV,		///< 2.40V
@@ -218,68 +218,68 @@
         VPCHG_2850mV,		///< 2.85V
         VPCHG_3000mV,		///< 3.00V
         VPCHG_3150mV,		///< 3.15V
-    } vPChg_t;
+    };
 
     /**
      * @brief   Precharge Current
      * @details Battery precharge current value
      */
-    typedef enum  {
+    enum iPChg_t {
         IPCHG_5,		///< 5% of Ifchg
         IPCHG_10,		///< 10% of Ifchg
         IPCHG_20,		///< 20% of Ifchg
         IPCHG_30,		///< 30% of Ifchg
-    } iPChg_t;
+    };
 
     /**
      * @brief   Done Current
      * @details Charger done current where charging stops
      */
-    typedef enum  {
+    enum chgDone_t {
         CHGDONE_5,		///< 5% of Ifchg
         CHGDONE_10,		///< 10% of Ifchg
         CHGDONE_20,		///< 20% of Ifchg
         CHGDONE_30,		///< 30% of Ifchg
-    } chgDone_t;
+    };
 
     /**
      * @brief   Maintain Charge Timer
      * @details Timeout settings for maintain charge mode
      */
-    typedef enum  {
+    enum mtChgTmr_t {
         MTCHGTMR_0min,		///< 0 min
         MTCHGTMR_15min,		///< 15 min
         MTCHGTMR_30min,		///< 30 min
         MTCHGTMR_60min,		///< 60 min
-    } mtChgTmr_t;
+    };
 
     /**
      * @brief   Fast Charge Timer
      * @details Timeout settings for fast charge mode
      */
-    typedef enum  {
+    enum fChgTmr_t {
         FCHGTMR_75min,		///< 75 min
         FCHGTMR_150min,		///< 150 min
         FCHGTMR_300min,		///< 300 min
         FCHGTMR_600min,		///< 600 min
-    } fChgTmr_t;
+    };
 
     /**
      * @brief   Precharge Timer
      * @details Timeout settings for precharge mode
      */
-    typedef enum  {
+    enum pChgTmr_t {
         PCHGTMR_30min,		///< 30 min
         PCHGTMR_60min,		///< 60 min
         PCHGTMR_120min,		///< 120 min
         PCHGTMR_240min,		///< 240 min
-    } pChgTmr_t;
+    };
 
     /**
      * @brief   LDO Enable Mode
      * @details Enumerated enable modes for voltage regulators
      */
-    typedef enum {
+    enum ldoMode_t {
         LDO_DISABLED,	///< Disabled, Regulator Mode
         SW_DISABLED,	///< Disabled, Switch Mode
         LDO_ENABLED,	///< Enabled, Regulator Mode
@@ -296,35 +296,35 @@
         SW_EN_MPC0_DSC,	///< Switch Enabled by MPC pin
         LDO_EN_MPC1_DSC,	///< Regulator Enabled by MPC pin
         SW_EN_MPC1_DSC,	///< Switch Enabled by MPC pin
-    } ldoMode_t;
+    };
 
     /**
      * @brief   Buck Operating Modes
      * @details Enumerated operating modes for buck regulator
      */
-    typedef enum {
+    enum buckMd_t {
         BUCK_BURST,		///< Burst Mode Operation
         BUCK_FPWM,		///< Forced PWM Operation
         BUCK_MPC0_FPWM,	///< MPC activated Forced PWM
         BUCK_MPC1_FPWM,	///< MPC activated Forced PWM
-    } buckMd_t;
+    };
 
     /**
      * @brief   Thermistor Configuration
      * @details Enumerated thermistor operating modes
      */
-    typedef enum {
+    enum thrmCfg_t {
         THRM_DISABLED,		///< Thermistor monitoring disabled
         THRM_ENABLED,		///< Basic thermistor monitoring 
         THRM_RSVD,	///< reserved, do not use
         THRM_JEITA,	///< JEITA thermistor monitoring
-    } thrmCfg_t;
+    };
 
     /**
      * @brief   Monitor Configurations
      * @details Enumerated configuration modes for monitor multiplexer
      */
-    typedef enum {
+    enum monCfg_t {
         MON_PULLDOWN = 0x0,	///< Pulled down by 100k Ohm
         MON_BAT = 0x1,		///< BAT Selected
         MON_SYS = 0x2,		///< SYS Selected
@@ -334,33 +334,25 @@
         MON_LDO2 = 0x6,		///< LDO2 Selected
         MON_LDO3 = 0x7,		///< LDO3nSelected
         MON_HI_Z = 0x8,		///< High Impedance
-    } monCfg_t;
+    };
 
     /**
      * @brief   Monitor Divide Ratio
      * @details Ratio settings for monitor divider
      */
-    typedef enum  {
+    enum monRatio_t {
         MON_DIV4,		///< 4:1 Monitor Ratio
         MON_DIV3,		///< 3:1 Monitor Ratio
         MON_DIV2,		///< 2:1 Monitor Ratio
         MON_DIV1,		///< 1:1 Monitor Ratio
-    } monRatio_t;
-
-    /**
-    	* MAX14690 constructor.
-    	*
-    	* @param sda mbed pin to use for SDA line of I2C interface.
-    	* @param scl mbed pin to use for SCL line of I2C interface.
-    	*/
-    MAX14690(PinName sda, PinName scl);
+    };
 
     /**
     	* MAX14690 constructor.
     	*
     	* @param i2c I2C object to use.
     	*/
-    MAX14690(I2C *i2c);
+    MAX14690(I2C &i2c);
 
     /**
     	* MAX14690 destructor.
@@ -559,10 +551,8 @@
     bool stayOn;
 
 private:
-    /// I2C pointer
-    I2C *i2c;
-    /// Is this object the owner of the I2C object
-    bool isOwner;
+    // Internal Resources
+    I2C _i2c;
 
     /**
      * @brief   Converts mV to register bits