Program Listing for File Kit2GoBoardSupport.hpp

Return to documentation for file (src/Kit2GoBoardSupport.hpp)

/*********************************************************************
 * @file  Kit2GoBoardSupport.hpp
 *
 * @brief Implementation of the class Kit2GoBoardSupport for custom sensor/board bring up.
 * This can be used to power cycle the sensor device, help with setting/resetting the SPI
 * slave select lines for multiple devices and also setting/resetting addressing lines
 * for enabling extended addresses for certain devices.
 *********************************************************************/

#ifndef TLX493D_KIT2GO_BOARD_SUPPORT_HPP
#define TLX493D_KIT2GO_BOARD_SUPPORT_HPP


#include <Arduino.h>

//
namespace ifx {
    namespace tlx493d {
        class Kit2GoBoardSupport {

            public:

                Kit2GoBoardSupport();

                ~Kit2GoBoardSupport();


                void init(bool isEnablePower = true, bool isEnableSelect = false, bool isEnableExtendedAddress = false);


                void begin(bool enablePower = true, bool enableSelect = false, bool enableExtendedAddress = false);


                void deinit();


                void end() ;


                void setPowerPin(uint8_t pinNumber, uint8_t pinDriveDirection, uint8_t pinTristateDirection,
                                 uint8_t pinEnableValue, uint8_t pinDisableValue,
                                 uint32_t delayAfterEnable = 0, uint32_t delayAfterDisable = 0);


                void unsetPowerPin();


                void setSelectPin(uint8_t pinNumber, uint8_t pinDriveDirection, uint8_t pinTristateDirection,
                                  uint8_t pinEnableValue, uint8_t pinDisableValue,
                                  uint32_t delayAfterEnable = 0, uint32_t delayAfterDisable = 0);


                void unsetSelectPin();


                void setAddressPin(uint8_t pinNumber, uint8_t pinDriveDirection, uint8_t pinTristateDirection,
                                   uint8_t pinEnableValue, uint8_t pinDisableValue,
                                   uint32_t delayAfterEnable = 0, uint32_t delayAfterDisable = 0);

                void unsetAddressPin();


                void enablePower(bool enable) ;

                void enableSelect(bool enable);

                void enableAddress(bool enable);


                void reset();


            private:

                typedef struct pinCtrl {
                    bool     isSet;
                    uint8_t  pinNumber;
                    uint8_t  driveDirection;
                    uint8_t  tristateDirection;
                    uint8_t  enableValue;
                    uint8_t  disableValue;
                    uint32_t delayAfterEnable;
                    uint32_t delayAfterDisable;
                } pinCtrl;


                void enablePin(const pinCtrl &p, bool enable);


                void initPin(const pinCtrl &p);


                void setPinDirectionToDrive(pinCtrl &p);


                void setPinDirectionToTristate(pinCtrl &p);


                pinCtrl powerPins[1];
                pinCtrl selectPins[1];
                pinCtrl addressPins[1];
        };
    }
}


#endif // TLX493D_KIT2GO_BOARD_SUPPORT_HPP