/*
 * battery_monitor.h
 *
 *  Created on: Dec 23, 2012
 *      Author: tkl
 */

#ifndef BATTERY_MONITOR_H_
#define BATTERY_MONITOR_H_

#include "stdbool.h"

//------------------------------------------------------------------------------
//! \brief battery monitor device.
struct battery_monitor {
	const struct adc *adc;			//!< Adc device for the battery monitor.
	const unsigned short timeout;	//!< Adc measurement timeout.
	const int factor;				//!< Factor to calculate voltage from adc result.
	const int divider;				//!< Divider to calculate voltage from adc result.
	const int offset;				//!< Offset to calculate voltage from adc result.
};

//------------------------------------------------------------------------------
//! \brief Value container for the battery monitor.
struct battery_monitor_voltage {
	unsigned short voltage;	//!< Calculated voltage.
	unsigned short raw;		//!< Raw value of the adc.
	bool valid;				//!< Indicates if result is valid.
};

//------------------------------------------------------------------------------
struct battery_monitor_voltage get_voltage(const struct battery_monitor * device);

#endif /* BATTERY_MONITOR_H_ */
