/*
 *
 * Copyright MBARI 2016 
 */

#include "board.h"

/*i2c bus stuff*/
#define I2C_POLLING (1)
#define I2C_INTERRUPT (0)

/*smbus battery application specific stuff*/
#define INSTR_PWR_ENABLE_PIN   (4)
#define CHG_ENABLE_PIN   (5)
#define DISCH_ENABLE_PIN (6)
#define AUX_ENABLE_PIN   (7)
#define SMBUS_RESET_PIN  (8)

/* Battery smbus address */
#define BATTERY_ADDR	(0x16>>1)

/* charge WD timeout in sec */
#define CHGWD_TIMEOUT	120

/** Max buffer length */
#define BUFFER_SIZE			0x10
typedef enum {
	BATT_DISCH,
	BATT_OFF,
	BATT_CHG 
} BATTERY_STATE;

typedef struct {
	uint16_t serialNo;
	uint8_t  mux, channel;
	uint16_t status;
	uint16_t cellVolts[8];
	uint16_t stackVolt;
	uint16_t capacity_mAh;
	int16_t current;
	uint16_t cycleCnt;
	uint8_t state;
} BATTERY_DATA;



void init_batteries(void);
void update_battery_status(void);
void smbus_setup(void);
void allPacks(uint8_t state);
void chgwd_check(void);
void chgwd_control(bool enabled);
void chgwd_reset(void);

uint32_t get_smbus_errors(void);
uint16_t get_battery_temp(void);
uint32_t get_humidity_temp(void);
uint16_t get_humidity(void);
uint8_t get_bat_count(void);

