mbed library for STMicroelectronics' X-NUCLEO-IKA01A1 expansion board.

Dependents:   HelloWorld_IKA01A1

Fork of X_NUCLEO_IKA01A1 by ST Expansion SW Team

Library for STMicroelectronics' X-NUCLEO-IKA01A1 multifunctional expansion board based on operational amplifiers.

Committer:
hemddabral
Date:
Fri Apr 08 09:22:36 2016 +0000
Revision:
18:25dbc718084c
Parent:
16:2f9443aedbe8
Child:
21:8d0624950dd1
updated doxygen style comments in Interfaces

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hemddabral 2:19d1dcef0c0e 1 /**
hemddabral 2:19d1dcef0c0e 2 ******************************************************************************
hemddabral 2:19d1dcef0c0e 3 * @file tsu104_class.h
hemddabral 2:19d1dcef0c0e 4 * @author Central Labs
hemddabral 2:19d1dcef0c0e 5 * @version 1.0.0
hemddabral 2:19d1dcef0c0e 6 * @date 11-February-2016
hemddabral 2:19d1dcef0c0e 7 * @brief Portable architecture for TSU104
hemddabral 2:19d1dcef0c0e 8 ******************************************************************************
hemddabral 2:19d1dcef0c0e 9 * @attention
hemddabral 2:19d1dcef0c0e 10 *
hemddabral 2:19d1dcef0c0e 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
hemddabral 2:19d1dcef0c0e 12 *
hemddabral 2:19d1dcef0c0e 13 * Redistribution and use in source and binary forms, with or without modification,
hemddabral 2:19d1dcef0c0e 14 * are permitted provided that the following conditions are met:
hemddabral 2:19d1dcef0c0e 15 * 1. Redistributions of source code must retain the above copyright notice,
hemddabral 2:19d1dcef0c0e 16 * this list of conditions and the following disclaimer.
hemddabral 2:19d1dcef0c0e 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
hemddabral 2:19d1dcef0c0e 18 * this list of conditions and the following disclaimer in the documentation
hemddabral 2:19d1dcef0c0e 19 * and/or other materials provided with the distribution.
hemddabral 2:19d1dcef0c0e 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
hemddabral 2:19d1dcef0c0e 21 * may be used to endorse or promote products derived from this software
hemddabral 2:19d1dcef0c0e 22 * without specific prior written permission.
hemddabral 2:19d1dcef0c0e 23 *
hemddabral 2:19d1dcef0c0e 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
hemddabral 2:19d1dcef0c0e 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
hemddabral 2:19d1dcef0c0e 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
hemddabral 2:19d1dcef0c0e 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
hemddabral 2:19d1dcef0c0e 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
hemddabral 2:19d1dcef0c0e 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
hemddabral 2:19d1dcef0c0e 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
hemddabral 2:19d1dcef0c0e 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
hemddabral 2:19d1dcef0c0e 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
hemddabral 2:19d1dcef0c0e 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
hemddabral 2:19d1dcef0c0e 34 *
hemddabral 2:19d1dcef0c0e 35 ******************************************************************************
hemddabral 2:19d1dcef0c0e 36 */
hemddabral 2:19d1dcef0c0e 37
hemddabral 2:19d1dcef0c0e 38
hemddabral 2:19d1dcef0c0e 39 /* Generated with STM32CubeTOO -----------------------------------------------*/
hemddabral 2:19d1dcef0c0e 40
hemddabral 2:19d1dcef0c0e 41
hemddabral 2:19d1dcef0c0e 42 /* Revision ------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 43 /*
hemddabral 2:19d1dcef0c0e 44 Repository: http://svn.x-nucleodev.codex.cro.st.com/svnroot/X-NucleoDev
hemddabral 2:19d1dcef0c0e 45 Branch/Trunk/Tag: trunk
hemddabral 2:19d1dcef0c0e 46 Based on: X-CUBE-IKA01A1/trunk/Drivers/BSP/Components/tsu104/tsu104.h
hemddabral 2:19d1dcef0c0e 47 Revision: 402
hemddabral 2:19d1dcef0c0e 48 */
hemddabral 2:19d1dcef0c0e 49
hemddabral 2:19d1dcef0c0e 50
hemddabral 2:19d1dcef0c0e 51 /* Define to prevent recursive inclusion -------------------------------------*/
hemddabral 2:19d1dcef0c0e 52
hemddabral 2:19d1dcef0c0e 53 #ifndef __TSU104_CLASS_H
hemddabral 2:19d1dcef0c0e 54 #define __TSU104_CLASS_H
hemddabral 2:19d1dcef0c0e 55
hemddabral 2:19d1dcef0c0e 56
hemddabral 2:19d1dcef0c0e 57 /* Includes ------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 58
hemddabral 2:19d1dcef0c0e 59 /* ACTION 1 ------------------------------------------------------------------*
hemddabral 2:19d1dcef0c0e 60 * Include here platform specific header files. *
hemddabral 2:19d1dcef0c0e 61 *----------------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 62 #include "mbed.h"
hemddabral 2:19d1dcef0c0e 63 /* ACTION 2 ------------------------------------------------------------------*
hemddabral 2:19d1dcef0c0e 64 * Include here component specific header files. *
hemddabral 2:19d1dcef0c0e 65 *----------------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 66 #include "tsu104.h"
hemddabral 2:19d1dcef0c0e 67 /* ACTION 3 ------------------------------------------------------------------*
hemddabral 2:19d1dcef0c0e 68 * Include here interface specific header files. *
hemddabral 2:19d1dcef0c0e 69 * *
hemddabral 2:19d1dcef0c0e 70 * Example: *
hemddabral 2:19d1dcef0c0e 71 * #include "../Interfaces/Humidity_class.h" *
hemddabral 2:19d1dcef0c0e 72 * #include "../Interfaces/Temperature_class.h" *
hemddabral 2:19d1dcef0c0e 73 *----------------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 74 #include "../Interfaces/Windcomp_class.h"
hemddabral 16:2f9443aedbe8 75 #include "../Interfaces/PhotoSensor_class.h"
hemddabral 2:19d1dcef0c0e 76
hemddabral 2:19d1dcef0c0e 77
hemddabral 2:19d1dcef0c0e 78 /* Classes -------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 79
hemddabral 2:19d1dcef0c0e 80 /**
hemddabral 13:9cecc8d66cc1 81 * @brief Class representing a TSU104 operational amplifier component. The window comparator
hemddabral 13:9cecc8d66cc1 82 * configuration allows the user to compare a signal to two threshold voltages. When the signal
hemddabral 13:9cecc8d66cc1 83 * is out of the required voltage range, the output of the operational amplifier toggles
hemddabral 2:19d1dcef0c0e 84 */
hemddabral 16:2f9443aedbe8 85 class TSU104 : public Windcomp, public PhotoSensor
hemddabral 2:19d1dcef0c0e 86 {
hemddabral 2:19d1dcef0c0e 87 public:
hemddabral 2:19d1dcef0c0e 88
hemddabral 2:19d1dcef0c0e 89 /*** Constructor and Destructor Methods ***/
hemddabral 2:19d1dcef0c0e 90
hemddabral 2:19d1dcef0c0e 91 /**
hemddabral 2:19d1dcef0c0e 92 * @brief Constructor.
hemddabral 2:19d1dcef0c0e 93 */
hemddabral 14:8277ca0ab13a 94 TSU104(PinName photoSensorPin, PinName windCmpSignalPin_1,PinName windCmpSignalPin_2) : Windcomp()
hemddabral 2:19d1dcef0c0e 95 {
hemddabral 14:8277ca0ab13a 96 photo_sensor_pin = photoSensorPin;
hemddabral 14:8277ca0ab13a 97 windCmp_signal_pin_1 = windCmpSignalPin_1;
hemddabral 14:8277ca0ab13a 98 windCmp_signal_pin_2 = windCmpSignalPin_2;
hemddabral 2:19d1dcef0c0e 99 }
hemddabral 2:19d1dcef0c0e 100
hemddabral 2:19d1dcef0c0e 101 /**
hemddabral 2:19d1dcef0c0e 102 * @brief Destructor.
hemddabral 2:19d1dcef0c0e 103 */
hemddabral 2:19d1dcef0c0e 104 virtual ~TSU104(void) {}
hemddabral 2:19d1dcef0c0e 105
hemddabral 2:19d1dcef0c0e 106
hemddabral 2:19d1dcef0c0e 107 /*** Public Component Related Methods ***/
hemddabral 2:19d1dcef0c0e 108
hemddabral 13:9cecc8d66cc1 109 /**
hemddabral 13:9cecc8d66cc1 110 * @brief initialize the class for TSU104 operational amplifier component
hemddabral 13:9cecc8d66cc1 111 * @retval COMPONENT_OK if initialization is successfull
hemddabral 13:9cecc8d66cc1 112 * @retval suitable error code otherwise
hemddabral 13:9cecc8d66cc1 113 */
hemddabral 2:19d1dcef0c0e 114 virtual int Init(void *init = NULL)
hemddabral 2:19d1dcef0c0e 115 {
hemddabral 2:19d1dcef0c0e 116 return (int) TSU104_Init((void *) init);
hemddabral 2:19d1dcef0c0e 117 }
hemddabral 13:9cecc8d66cc1 118
hemddabral 13:9cecc8d66cc1 119 /**
hemddabral 13:9cecc8d66cc1 120 * @brief obtain component ID for TSU104 perational amplifier
hemddabral 13:9cecc8d66cc1 121 * @retval component ID for TSU104 operational amplifier
hemddabral 13:9cecc8d66cc1 122 */
hemddabral 2:19d1dcef0c0e 123 virtual int ReadID(uint8_t *id = NULL)
hemddabral 2:19d1dcef0c0e 124 {
hemddabral 2:19d1dcef0c0e 125 return (int) TSU104_ReadID((uint8_t *) id);
hemddabral 2:19d1dcef0c0e 126 }
hemddabral 13:9cecc8d66cc1 127 /**
hemddabral 18:25dbc718084c 128 * @brief get digital signal value 1 in windows comparator configuration
hemddabral 18:25dbc718084c 129 * @retval digital signal value 1
hemddabral 18:25dbc718084c 130 */
hemddabral 15:114514787e83 131 virtual unsigned int WindComp_Get_Signal1(void)
hemddabral 2:19d1dcef0c0e 132 {
hemddabral 14:8277ca0ab13a 133 DigitalIn windowsCompD2(windCmp_signal_pin_1);
hemddabral 2:19d1dcef0c0e 134 return windowsCompD2.read();
hemddabral 2:19d1dcef0c0e 135 }
hemddabral 2:19d1dcef0c0e 136
hemddabral 13:9cecc8d66cc1 137 /**
hemddabral 18:25dbc718084c 138 * @brief get digital signal value 2 in windows comparator configuration
hemddabral 18:25dbc718084c 139 * @retval digital signal value 2
hemddabral 18:25dbc718084c 140 */
hemddabral 15:114514787e83 141 virtual unsigned int WindComp_Get_Signal2(void)
hemddabral 2:19d1dcef0c0e 142 {
hemddabral 14:8277ca0ab13a 143 DigitalIn windowsCompD4(windCmp_signal_pin_2);
hemddabral 2:19d1dcef0c0e 144 return windowsCompD4.read();
hemddabral 2:19d1dcef0c0e 145 }
hemddabral 13:9cecc8d66cc1 146
hemddabral 13:9cecc8d66cc1 147
hemddabral 13:9cecc8d66cc1 148 /**
hemddabral 13:9cecc8d66cc1 149 * @brief obtain the output voltage detected by photo sensor
hemddabral 13:9cecc8d66cc1 150 * @param pin AnalogIn pin to use for detecting the voltage
hemddabral 13:9cecc8d66cc1 151 * @retval voltage detected by photo sensor
hemddabral 13:9cecc8d66cc1 152 */
hemddabral 16:2f9443aedbe8 153 virtual unsigned int Get_PhotoSensor_GetVoltage(void)
hemddabral 2:19d1dcef0c0e 154 {
hemddabral 14:8277ca0ab13a 155 AnalogIn photoSensor(photo_sensor_pin);
hemddabral 12:ac16b9a1cad6 156 double voltage = photoSensor.read();
hemddabral 2:19d1dcef0c0e 157 voltage = voltage*3.3*1000.0; // voltage in mV
hemddabral 2:19d1dcef0c0e 158 return voltage;
hemddabral 2:19d1dcef0c0e 159 }
hemddabral 2:19d1dcef0c0e 160
hemddabral 2:19d1dcef0c0e 161
hemddabral 2:19d1dcef0c0e 162 /*** Public Interrupt Related Methods ***/
hemddabral 2:19d1dcef0c0e 163
hemddabral 2:19d1dcef0c0e 164 /* ACTION 6 --------------------------------------------------------------*
hemddabral 2:19d1dcef0c0e 165 * Implement here interrupt related methods, if any. *
hemddabral 2:19d1dcef0c0e 166 * Note that interrupt handling is platform dependent, e.g.: *
hemddabral 2:19d1dcef0c0e 167 * + mbed: *
hemddabral 2:19d1dcef0c0e 168 * InterruptIn feature_irq(pin); //Interrupt object. *
hemddabral 2:19d1dcef0c0e 169 * feature_irq.fall(callback); //Attach a callback. *
hemddabral 2:19d1dcef0c0e 170 * feature_irq.mode(PullNone); //Set interrupt mode. *
hemddabral 2:19d1dcef0c0e 171 * feature_irq.enable_irq(); //Enable interrupt. *
hemddabral 2:19d1dcef0c0e 172 * feature_irq.disable_irq(); //Disable interrupt. *
hemddabral 2:19d1dcef0c0e 173 * + Arduino: *
hemddabral 2:19d1dcef0c0e 174 * attachInterrupt(pin, callback, RISING); //Attach a callback. *
hemddabral 2:19d1dcef0c0e 175 * detachInterrupt(pin); //Detach a callback. *
hemddabral 2:19d1dcef0c0e 176 * *
hemddabral 2:19d1dcef0c0e 177 * Example (mbed): *
hemddabral 2:19d1dcef0c0e 178 * void AttachFeatureIRQ(void (*fptr) (void)) *
hemddabral 2:19d1dcef0c0e 179 * { *
hemddabral 2:19d1dcef0c0e 180 * feature_irq.fall(fptr); *
hemddabral 2:19d1dcef0c0e 181 * } *
hemddabral 2:19d1dcef0c0e 182 * *
hemddabral 2:19d1dcef0c0e 183 * void EnableFeatureIRQ(void) *
hemddabral 2:19d1dcef0c0e 184 * { *
hemddabral 2:19d1dcef0c0e 185 * feature_irq.enable_irq(); *
hemddabral 2:19d1dcef0c0e 186 * } *
hemddabral 2:19d1dcef0c0e 187 * *
hemddabral 2:19d1dcef0c0e 188 * void DisableFeatureIRQ(void) *
hemddabral 2:19d1dcef0c0e 189 * { *
hemddabral 2:19d1dcef0c0e 190 * feature_irq.disable_irq(); *
hemddabral 2:19d1dcef0c0e 191 * } *
hemddabral 2:19d1dcef0c0e 192 *------------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 193
hemddabral 2:19d1dcef0c0e 194
hemddabral 2:19d1dcef0c0e 195 protected:
hemddabral 2:19d1dcef0c0e 196
hemddabral 2:19d1dcef0c0e 197 /*** Protected Component Related Methods ***/
hemddabral 2:19d1dcef0c0e 198
hemddabral 14:8277ca0ab13a 199 /**
hemddabral 14:8277ca0ab13a 200 * arduino pin for photosensor output voltage
hemddabral 14:8277ca0ab13a 201 */
hemddabral 14:8277ca0ab13a 202 PinName photo_sensor_pin;
hemddabral 14:8277ca0ab13a 203
hemddabral 14:8277ca0ab13a 204 /**
hemddabral 14:8277ca0ab13a 205 * arduino pin for signal 1 of windows comparator configuration
hemddabral 14:8277ca0ab13a 206 */
hemddabral 14:8277ca0ab13a 207 PinName windCmp_signal_pin_1;
hemddabral 14:8277ca0ab13a 208
hemddabral 14:8277ca0ab13a 209 /**
hemddabral 14:8277ca0ab13a 210 * arduino pin for signal 1 of windows comparator configuration
hemddabral 14:8277ca0ab13a 211 */
hemddabral 14:8277ca0ab13a 212 PinName windCmp_signal_pin_2;
hemddabral 14:8277ca0ab13a 213
hemddabral 2:19d1dcef0c0e 214 /* ACTION 7 --------------------------------------------------------------*
hemddabral 2:19d1dcef0c0e 215 * Declare here the component's specific methods. *
hemddabral 2:19d1dcef0c0e 216 * They should be: *
hemddabral 2:19d1dcef0c0e 217 * + Methods with the same name of the C component's virtual table's *
hemddabral 2:19d1dcef0c0e 218 * functions (1); *
hemddabral 2:19d1dcef0c0e 219 * + Methods with the same name of the C component's extended virtual *
hemddabral 2:19d1dcef0c0e 220 * table's functions, if any (2); *
hemddabral 2:19d1dcef0c0e 221 * + Helper methods, if any, like functions declared in the component's *
hemddabral 2:19d1dcef0c0e 222 * source files but not pointed by the component's virtual table (3). *
hemddabral 2:19d1dcef0c0e 223 * *
hemddabral 2:19d1dcef0c0e 224 * Example: *
hemddabral 2:19d1dcef0c0e 225 * Status_t COMPONENT_GetValue(float *f); //(1) *
hemddabral 2:19d1dcef0c0e 226 * Status_t COMPONENT_EnableFeature(void); //(2) *
hemddabral 2:19d1dcef0c0e 227 * Status_t COMPONENT_ComputeAverage(void); //(3) *
hemddabral 2:19d1dcef0c0e 228 *------------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 229 /* TSU104's generic functions. */
hemddabral 2:19d1dcef0c0e 230 Status_t TSU104_Init(void *init);
hemddabral 2:19d1dcef0c0e 231 Status_t TSU104_ReadID(void *id);
hemddabral 2:19d1dcef0c0e 232
hemddabral 2:19d1dcef0c0e 233 /* TSU104's interrupts related functions. */
hemddabral 2:19d1dcef0c0e 234 Status_t TSU104_ConfigIT(void* a);
hemddabral 2:19d1dcef0c0e 235
hemddabral 2:19d1dcef0c0e 236
hemddabral 2:19d1dcef0c0e 237 /*** Component's I/O Methods ***/
hemddabral 2:19d1dcef0c0e 238
hemddabral 2:19d1dcef0c0e 239 /*** Component's Instance Variables ***/
hemddabral 2:19d1dcef0c0e 240
hemddabral 2:19d1dcef0c0e 241 /* ACTION 9 --------------------------------------------------------------*
hemddabral 2:19d1dcef0c0e 242 * Declare here interrupt related variables, if needed. *
hemddabral 2:19d1dcef0c0e 243 * Note that interrupt handling is platform dependent, see *
hemddabral 2:19d1dcef0c0e 244 * "Interrupt Related Methods" above. *
hemddabral 2:19d1dcef0c0e 245 * *
hemddabral 2:19d1dcef0c0e 246 * Example: *
hemddabral 2:19d1dcef0c0e 247 * + mbed: *
hemddabral 2:19d1dcef0c0e 248 * InterruptIn feature_irq; *
hemddabral 2:19d1dcef0c0e 249 *------------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 250
hemddabral 2:19d1dcef0c0e 251 /* ACTION 10 -------------------------------------------------------------*
hemddabral 2:19d1dcef0c0e 252 * Declare here other pin related variables, if needed. *
hemddabral 2:19d1dcef0c0e 253 * *
hemddabral 2:19d1dcef0c0e 254 * Example: *
hemddabral 2:19d1dcef0c0e 255 * + mbed: *
hemddabral 2:19d1dcef0c0e 256 * DigitalOut standby_reset; *
hemddabral 2:19d1dcef0c0e 257 *------------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 258
hemddabral 2:19d1dcef0c0e 259 /* ACTION 11 -------------------------------------------------------------*
hemddabral 2:19d1dcef0c0e 260 * Declare here communication related variables, if needed. *
hemddabral 2:19d1dcef0c0e 261 * *
hemddabral 2:19d1dcef0c0e 262 * Example: *
hemddabral 2:19d1dcef0c0e 263 * + mbed: *
hemddabral 2:19d1dcef0c0e 264 * DigitalOut address; *
hemddabral 2:19d1dcef0c0e 265 * DevI2C &dev_i2c; *
hemddabral 2:19d1dcef0c0e 266 *------------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 267
hemddabral 2:19d1dcef0c0e 268 /* ACTION 12 -------------------------------------------------------------*
hemddabral 2:19d1dcef0c0e 269 * Declare here identity related variables, if needed. *
hemddabral 2:19d1dcef0c0e 270 * Note that there should be only a unique identifier for each component, *
hemddabral 2:19d1dcef0c0e 271 * which should be the "who_am_i" parameter. *
hemddabral 2:19d1dcef0c0e 272 *------------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 273 /* Identity */
hemddabral 2:19d1dcef0c0e 274 uint8_t who_am_i;
hemddabral 2:19d1dcef0c0e 275
hemddabral 2:19d1dcef0c0e 276 /* ACTION 13 -------------------------------------------------------------*
hemddabral 2:19d1dcef0c0e 277 * Declare here the component's static and non-static data, one variable *
hemddabral 2:19d1dcef0c0e 278 * per line. *
hemddabral 2:19d1dcef0c0e 279 * *
hemddabral 2:19d1dcef0c0e 280 * Example: *
hemddabral 2:19d1dcef0c0e 281 * float measure; *
hemddabral 2:19d1dcef0c0e 282 * int instance_id; *
hemddabral 2:19d1dcef0c0e 283 * static int number_of_instances; *
hemddabral 2:19d1dcef0c0e 284 *------------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 285 };
hemddabral 2:19d1dcef0c0e 286
hemddabral 2:19d1dcef0c0e 287 #endif /* __TSU104_CLASS_H */
hemddabral 2:19d1dcef0c0e 288
hemddabral 2:19d1dcef0c0e 289 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/