Library for Modtronix DINS-R8 boards. It is a 8 relay board controlled via I2C or RS-485, and can be mounted on a DIN rail.

dins-r8_i2c.h

Committer:
modtronix
Date:
2015-08-07
Revision:
3:c9412ffaf58e
Parent:
2:b72096b1e461

File content as of revision 3:c9412ffaf58e:

/**
 * File:      dins-r8.h
 *
 * Author:    Modtronix Engineering - www.modtronix.com
 *
 * Description:
 *
 * Software License Agreement:
 * This software has been written or modified by Modtronix Engineering. The code
 * may be modified and can be used free of charge for commercial and non commercial
 * applications. If this is modified software, any license conditions from original
 * software also apply. Any redistribution must include reference to 'Modtronix
 * Engineering' and web link(www.modtronix.com) in the file header.
 *
 * THIS SOFTWARE IS PROVIDED IN AN 'AS IS' CONDITION. NO WARRANTIES, WHETHER EXPRESS,
 * IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE
 * COMPANY SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR
 * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
 */

#ifndef MODTRONIX_DINS_R8_I2C_H_
#define MODTRONIX_DINS_R8_I2C_H_

#include "mbed.h"


//Error Numbers
#define  DINS_R8_SUCCESS            0       //Success
#define  DINS_R8_ERR_I2C            0xff    //I2C Error
#define  DINS_R8_ERR_INVALID_RELAY  0xfe    //Invalid Relay number

class DINS_R8_I2C  {
public:
    DINS_R8_I2C(I2C* i2cBus);

    /** Writes given relay with given value
     *
     * @param relayNumber Relay to update, number from 1 to 8
     *
     * @param value New value, 0 if off, 1 is on
     *
     * @returns 0 if success, else error code
     */
    uint8_t writeRelay(int8_t relayNumber, bool value);

    /** Set all relays with new values. Each bit is 1 relay
     *
     * @param relays New values for relays, each bit is 1 relay
     *
     * @return 0 if success, else error code
     */
    uint8_t writeAllRelays(int8_t relays);

    /** Get current I2C address. Default address is 0x60
     */
    uint8_t getAddress() const {
        return i2cAdr;
    }

    /** Set current I2C address. Default address is 0x60
     */
    void setAddress(uint8_t i2cAdr) {
        this->i2cAdr = i2cAdr;
    }

    /** Get value of all relays. Each bit is 1 relay
     */
    uint8_t getRelays() const {
        return relays;
    }


protected:
    uint8_t relays;         //Value of all relays
    I2C* pI2C;
    uint8_t i2cAdr;
};



#endif /* MODTRONIX_DINS_R8_I2C_H_ */