#ifndef ADC_PCF8591
#define ADC_PCF8591
#include <iostream>
#include <string>
#include "connection.h"
#include "I2C.h"
/**
* Class to retrieve ADC port reading from the the PCF8591 ADC chip/sensor
* @see Adc_8591#read
*/
class Adc_ports : public Result{
public:
Adc_ports(){}
/**
* Holds 8 bit value from port 0
*/
unsigned int port0;
/**
* Holds 8 bit value from port 1
*/
unsigned int port1;
/**
* Holds 8 bit value from port 2
*/
unsigned int port2;
/**
* Holds 8 bit value from port 3
*/
unsigned int port3;
Result_type get_type(){return ADC_RESULT;}
};
using namespace std;
/**
* Class for the PCF8591 8-bit A/D D/A converter (D/A feurures not implemented yet!)
*/
class Adc_8591: public I2c{
public:
/**
* Constructor for the PCF8591 ADC chip
* @param port [which sensor port to use]
* @param *connection [attach a connection]
* @param i2c_address [set the I2C address of the chip]
*/
Adc_8591(Sensor_port port, Connection *connection, unsigned char i2c_address);
~Adc_8591();
/**
* Initiate the sensor
* @param reply [true = require reply from NXT; false = no reply from NXT]
*/
void init(bool reply=false);
/**
* Get value from all four AD ports
* @param &result [must be of type Adc_ports - values are "stored" in result]
* @see Adc_ports
*/
int read(Result &result);
/**
* Get the sensor type
* @return ADC_8591_SENSOR
*/
Sensor_type get_type();
/**
* Get the sensor reading as a string
* (init method will be called if the sensor has not been initialized)
* @return sensor reading as a string - "P0='some value' P1='some value' P2='some value' P3='some value'"
*/
string print();
private:
int get_port_reading(unsigned int port);
};
#endif