Library for the MAX11300

Revision:
9:094df3de3616
Parent:
8:4291f7e54863
Child:
10:6efe114ef882
--- a/MAX113XX_Pixi.h	Fri May 05 19:23:16 2017 +0000
+++ b/MAX113XX_Pixi.h	Sat May 06 00:22:47 2017 +0000
@@ -34,8 +34,10 @@
 #ifndef _MAX113XX_PIXI_H_
 #define _MAX113XX_PIXI_H_
 
+
 #include "mbed.h"
-#include "MAX113XX_Pixi_Config.h" 
+#include "MAX11311Hex.h"
+
 
 /**
 @brief MAX113XX - PIXI, 20/12-Port Programmable Mixed-Signal I/O with 
@@ -54,14 +56,22 @@
 
 Use configuration software found at
 https://www.maximintegrated.com/en/products/analog/data-converters/analog-to-digital-converters/MAX11300.html/tb_tab2
-to generate MAX113XX_Pixi_Config.h file
+to generate MAX113XXHex.h file
 */
 class MAX113XX_Pixi
 {
     public:
     
-    ///MAX11300 Ports
-    enum MAX113XX_Ports_e
+    enum Device_e
+    {
+        MAX11300 = 0,
+        MAX11301,
+        MAX11311,
+        MAX11312
+    };
+    
+    ///MAX113XX Ports
+    enum Ports_e
     {
         PORT0,
         PORT1,
@@ -85,8 +95,8 @@
         PORT19
     };
     
-    ///MAX11300 Port Modes
-    enum MAX113XX_PortModes_e
+    ///MAX113XX Port Modes
+    enum PortModes_e
     {
         ///HIGH_Z
         MODE_0,
@@ -124,66 +134,65 @@
         Success 
     };
     
-    MAX113XX_Pixi(PinName cnvt);
+    MAX113XX_Pixi(Device_e device, PinName cnvt);
     
     ///@brief Writes gpo configured port with lsb of state
     ///@param[in] port - gpo congigured port to be written
     ///@param[in] state - lsb of state is written to port
     ///@return Result of operation 
-    CmdResult_e gpioWrite(MAX113XX_Ports_e port, const uint8_t state);
+    CmdResult_e gpioWrite(Ports_e port, const uint8_t state);
     
     ///@brief Reads gpi configured port
     ///@param[in] port - gpi congigured port to be read
     ///@param[out] state - lsb of state matches port state
     ///@return Result of operation 
-    CmdResult_e gpioRead(MAX113XX_Ports_e port, uint8_t &state);
+    CmdResult_e gpioRead(Ports_e port, uint8_t &state);
     
     ///@brief Read single ended ADC configured port
     ///@param[in] port - single ended ADC configured port
     ///@param[out] data - contents of ADC data register
     ///@return Result of operation
-    CmdResult_e singleEndedADCRead(MAX113XX_Ports_e port, uint16_t &data);
+    CmdResult_e singleEndedADCRead(Ports_e port, uint16_t &data);
     
     ///@brief Write single ended DAC configured port
     ///@param[in] port - single ended DAC configured port
     ///@param[in] data - value to be written to DAC data register
     ///@return Result of operation
-    CmdResult_e singleEndedDACWrite(MAX113XX_Ports_e port, 
-                                       const uint16_t data);
+    CmdResult_e singleEndedDACWrite(Ports_e port, const uint16_t data);
     
     void dumpPixiMemory(Serial &ser, MAX113XX_Pixi &pixi);
 
 protected:
     
+    Device_e m_device;
     DigitalOut m_cnvt;
     
     ///@brief Writes given register with data
     ///@param[in] reg - register to be written
     ///@param[in] data - data to write
     ///@return none
-    virtual void writeRegister(MAX11300RegAddress_t reg, 
-                                const uint16_t data) = 0;
+    virtual void writeRegister(uint8_t reg, const uint16_t data) = 0;
     
     ///@brief Reads given register
     ///@param[in] reg - register to read
     ///@return contents of register
-    virtual uint16_t readRegister(MAX11300RegAddress_t reg) = 0;
+    virtual uint16_t readRegister(uint8_t reg) = 0;
     
     ///@brief Writes a block of data starting at given register
     ///@param[in] reg - register to start writing at
     ///@param[in] data - pointer to data buffer
     ///@param[in] num_reg - number of registers to be written
     ///@return none
-    virtual void blockWrite(MAX11300RegAddress_t reg, const uint16_t *data, 
-                             const uint8_t num_reg) = 0;
+    virtual void blockWrite(uint8_t reg, const uint16_t *data, 
+                            const uint8_t num_reg) = 0;
     
     ///@brief Reads a block of data starting at given register
     ///@param[in] reg - register to start reading at
     ///@param[in] data - pointer to data buffer
     ///@param[in] num_reg - number of registers to be read
     ///@return none
-    virtual void blockRead(MAX11300RegAddress_t reg, uint16_t *data, 
-                            const uint8_t num_reg) = 0;
+    virtual void blockRead(uint8_t reg, uint16_t *data, 
+                           const uint8_t num_reg) = 0;
 };
 
 
@@ -199,7 +208,8 @@
     ///@param[in] spiBus - reference to SPI bus for this device
     ///@param[in] cs - pin to be used for chip select
     ///@param[in] cnvrt - pin to be used for convert
-    MAX113XX_SPI(SPI & spiBus, PinName cs, PinName cnvt);
+    MAX113XX_SPI(SPI & spiBus, PinName cs, MAX113XX_Pixi::Device_e device, 
+                 PinName cnvt);
     
     ///@brief MAX113XX_SPI Destructor
     ~MAX113XX_SPI();
@@ -209,16 +219,14 @@
     SPI & m_spiBus;
     DigitalOut m_cs;
     
-    virtual void writeRegister(MAX11300RegAddress_t reg, 
-                               const uint16_t data);
+    virtual void writeRegister(uint8_t reg, const uint16_t data);
     
-    virtual uint16_t readRegister(MAX11300RegAddress_t reg);
+    virtual uint16_t readRegister(uint8_t reg);
     
-    virtual void blockWrite(MAX11300RegAddress_t reg, const uint16_t *data, 
+    virtual void blockWrite(uint8_t reg, const uint16_t *data, 
                             const uint8_t num_reg);
     
-    virtual void blockRead(MAX11300RegAddress_t reg, uint16_t *data, 
-                           const uint8_t num_reg);
+    virtual void blockRead(uint8_t reg, uint16_t *data, const uint8_t num_reg);
 };
 
 
@@ -233,7 +241,7 @@
     ///@brief MAX113XX_I2C Constructor
     ///@param[in] i2cBus - reference to I2C bus for this device
     ///@param[in] cnvrt - pin to be used for convert
-    MAX113XX_I2C(I2C &i2cBus, PinName cnvt);
+    MAX113XX_I2C(I2C &i2cBus, MAX113XX_Pixi::Device_e device, PinName cnvt);
     
     ///@brief MAX113XX_I2C Destructor
     ~MAX113XX_I2C();
@@ -242,16 +250,14 @@
 
     I2C &m_i2cBus;
     
-    virtual void writeRegister(MAX11300RegAddress_t reg, 
-                               const uint16_t data);
+    virtual void writeRegister(uint8_t reg, const uint16_t data);
     
-    virtual uint16_t readRegister(MAX11300RegAddress_t reg);
+    virtual uint16_t readRegister(uint8_t reg);
     
-    virtual void blockWrite(MAX11300RegAddress_t reg, const uint16_t *data, 
+    virtual void blockWrite(uint8_t reg, const uint16_t *data, 
                             const uint8_t num_reg);
     
-    virtual void blockRead(MAX11300RegAddress_t reg, uint16_t *data, 
-                           const uint8_t num_reg);
+    virtual void blockRead(uint8_t reg, uint16_t *data, const uint8_t num_reg);
 };