mbed library for STMicroelectronics' X-NUCLEO-IKA01A1 expansion board.
Dependents: HelloWorld_IKA01A1
Fork of X_NUCLEO_IKA01A1 by
Library for STMicroelectronics' X-NUCLEO-IKA01A1 multifunctional expansion board based on operational amplifiers.
Components/tsz124/tsz124_class.h
- Committer:
- hemddabral
- Date:
- 2016-02-24
- Revision:
- 0:8d2ff26a1946
File content as of revision 0:8d2ff26a1946:
/** ****************************************************************************** * @file TSZ124.c * @author Central Labs * @version 1.0.0 * @date 11-February-2016 * @brief Portable architecture for TSZ124 ****************************************************************************** * @attention * * <h2><center>© COPYRIGHT(c) 2015 STMicroelectronics</center></h2> * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * 3. Neither the name of STMicroelectronics nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ****************************************************************************** */ /* Generated with STM32CubeTOO -----------------------------------------------*/ /* Revision ------------------------------------------------------------------*/ /* Repository: http://svn.x-nucleodev.codex.cro.st.com/svnroot/X-NucleoDev Branch/Trunk/Tag: trunk Based on: X-CUBE-IKA01A1/trunk/Drivers/BSP/Components/tsz124/tsz124.h Revision: 402 */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __TSZ124_CLASS_H #define __TSZ124_CLASS_H /* Includes ------------------------------------------------------------------*/ /* ACTION 1 ------------------------------------------------------------------* * Include here platform specific header files. * *----------------------------------------------------------------------------*/ #include "mbed.h" #include "DevI2C.h" /* ACTION 2 ------------------------------------------------------------------* * Include here component specific header files. * *----------------------------------------------------------------------------*/ #include "tsz124.h" /* ACTION 3 ------------------------------------------------------------------* * Include here interface specific header files. * * * * Example: * * #include "../Interfaces/Humidity_class.h" * * #include "../Interfaces/Temperature_class.h" * *----------------------------------------------------------------------------*/ #include "../Interfaces/Instrumentation_amp_class.h" /* Classes -------------------------------------------------------------------*/ /** * @brief Class representing a TSZ124 component. */ class TSZ124 : public Instrumentation_amp { public: /*** Constructor and Destructor Methods ***/ /** * @brief Constructor. * @param address I2C address of the component. * @param i2c I2C device to be used for communication. */ TSZ124(uint8_t address, DevI2C &i2c) : Instrumentation_amp(), address(address), dev_i2c(i2c) { /* ACTION 4 ----------------------------------------------------------* * Initialize here the component's member variables, one variable per * * line. * * * * Example: * * measure = 0; * * instance_id = number_of_instances++; * *--------------------------------------------------------------------*/ } /** * @brief Destructor. */ virtual ~TSZ124(void) {} /*** Public Component Related Methods ***/ /* ACTION 5 --------------------------------------------------------------* * Implement here the component's public methods, as wrappers of the C * * component's functions. * * They should be: * * + Methods with the same name of the C component's virtual table's * * functions (1); * * + Methods with the same name of the C component's extended virtual * * table's functions, if any (2). * * * * Example: * * virtual int GetValue(float *f) //(1) * * { * * return COMPONENT_GetValue(float *f); * * } * * * * virtual int EnableFeature(void) //(2) * * { * * return COMPONENT_EnableFeature(); * * } * *------------------------------------------------------------------------*/ virtual int Init(void *init = NULL) { return (int) TSZ124_Init((void *) init); } virtual int ReadID(uint8_t *id = NULL) { return (int) TSZ124_ReadID((uint8_t *) id); } virtual int GetVoltage(unsigned int *ptrVoltage) { return (int) GetVoltage((unsigned int *) ptrVoltage); } virtual int GetCurrent(unsigned int *ptrCurrent) { return (int) GetCurrent((unsigned int *) ptrCurrent); } /*** Public Interrupt Related Methods ***/ /* ACTION 6 --------------------------------------------------------------* * Implement here interrupt related methods, if any. * * Note that interrupt handling is platform dependent, e.g.: * * + mbed: * * InterruptIn feature_irq(pin); //Interrupt object. * * feature_irq.fall(callback); //Attach a callback. * * feature_irq.mode(PullNone); //Set interrupt mode. * * feature_irq.enable_irq(); //Enable interrupt. * * feature_irq.disable_irq(); //Disable interrupt. * * + Arduino: * * attachInterrupt(pin, callback, RISING); //Attach a callback. * * detachInterrupt(pin); //Detach a callback. * * * * Example (mbed): * * void AttachFeatureIRQ(void (*fptr) (void)) * * { * * feature_irq.fall(fptr); * * } * * * * void EnableFeatureIRQ(void) * * { * * feature_irq.enable_irq(); * * } * * * * void DisableFeatureIRQ(void) * * { * * feature_irq.disable_irq(); * * } * *------------------------------------------------------------------------*/ protected: /*** Protected Component Related Methods ***/ /* ACTION 7 --------------------------------------------------------------* * Declare here the component's specific methods. * * They should be: * * + Methods with the same name of the C component's virtual table's * * functions (1); * * + Methods with the same name of the C component's extended virtual * * table's functions, if any (2); * * + Helper methods, if any, like functions declared in the component's * * source files but not pointed by the component's virtual table (3). * * * * Example: * * Status_t COMPONENT_GetValue(float *f); //(1) * * Status_t COMPONENT_EnableFeature(void); //(2) * * Status_t COMPONENT_ComputeAverage(void); //(3) * *------------------------------------------------------------------------*/ /* TSZ124's generic functions. */ Status_t TSZ124_Init(void *init); Status_t TSZ124_ReadID(void *id); /* TSZ124's interrupts related functions. */ Status_t TSZ124_ConfigIT(void* a); /*** Component's I/O Methods ***/ /** * @brief Utility function to read data from TSZ124. * @param[out] pBuffer pointer to the buffer to read data into. * @param[in] RegisterAddr specifies the internal address register to read from. * @param[in] NumBytesToRead number of bytes to read. * @retval COMPONENT_OK in case of success, COMPONENT_ERROR otherwise. */ Status_t Read(uint8_t* pBuffer, uint8_t RegisterAddr, uint16_t NumBytesToRead) { if (dev_i2c.i2c_read(pBuffer, address, RegisterAddr, NumBytesToRead) != 0) return COMPONENT_ERROR; return COMPONENT_OK; } /** * @brief Utility function to write data to TSZ124. * @param[in] pBuffer pointer to the buffer of data to send. * @param[in] RegisterAddr specifies the internal address register to write to. * @param[in] NumBytesToWrite number of bytes to write. * @retval COMPONENT_OK in case of success, COMPONENT_ERROR otherwise. */ Status_t Write(uint8_t* pBuffer, uint8_t RegisterAddr, uint16_t NumBytesToWrite) { if (dev_i2c.i2c_write(pBuffer, address, RegisterAddr, NumBytesToWrite) != 0) return COMPONENT_ERROR; return COMPONENT_OK; } /* ACTION 8 --------------------------------------------------------------* * Implement here other I/O methods beyond those already implemented * * above, which are declared extern within the component's header file. * *------------------------------------------------------------------------*/ Status_t TSZ124_IO_Init(void *init = NULL) { /* TO BE IMPLEMENTED BY USING TARGET PLATFORM'S APIs. */ return (Status_t) 0; } Status_t TSZ124_IO_Read_Pin_A1(void *init = NULL) { /* TO BE IMPLEMENTED BY USING TARGET PLATFORM'S APIs. */ return (Status_t) 0; } /*** Component's Instance Variables ***/ /* ACTION 9 --------------------------------------------------------------* * Declare here interrupt related variables, if needed. * * Note that interrupt handling is platform dependent, see * * "Interrupt Related Methods" above. * * * * Example: * * + mbed: * * InterruptIn feature_irq; * *------------------------------------------------------------------------*/ /* ACTION 10 -------------------------------------------------------------* * Declare here other pin related variables, if needed. * * * * Example: * * + mbed: * * DigitalOut standby_reset; * *------------------------------------------------------------------------*/ /* ACTION 11 -------------------------------------------------------------* * Declare here communication related variables, if needed. * * * * Example: * * + mbed: * * DigitalOut address; * * DevI2C &dev_i2c; * *------------------------------------------------------------------------*/ /* Configuration. */ uint8_t address; /* IO Device. */ DevI2C &dev_i2c; /* ACTION 12 -------------------------------------------------------------* * Declare here identity related variables, if needed. * * Note that there should be only a unique identifier for each component, * * which should be the "who_am_i" parameter. * *------------------------------------------------------------------------*/ /* Identity */ uint8_t who_am_i; /* ACTION 13 -------------------------------------------------------------* * Declare here the component's static and non-static data, one variable * * per line. * * * * Example: * * float measure; * * int instance_id; * * static int number_of_instances; * *------------------------------------------------------------------------*/ }; #endif /* __TSZ124_CLASS_H */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/