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.
x_nucleo_ika01a1_class.cpp@14:8277ca0ab13a, 2016-04-08 (annotated)
- Committer:
- hemddabral
- Date:
- Fri Apr 08 05:30:21 2016 +0000
- Revision:
- 14:8277ca0ab13a
- Parent:
- 13:9cecc8d66cc1
- Child:
- 16:2f9443aedbe8
updated X_NUCLEO_IKA01A1 class
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hemddabral | 2:19d1dcef0c0e | 1 | /** |
hemddabral | 2:19d1dcef0c0e | 2 | ****************************************************************************** |
hemddabral | 2:19d1dcef0c0e | 3 | * @file x_nucleo_ika01a1_class.cpp |
hemddabral | 2:19d1dcef0c0e | 4 | * @author AST / Software Platforms and Cloud |
hemddabral | 2:19d1dcef0c0e | 5 | * @version V1.0 |
hemddabral | 2:19d1dcef0c0e | 6 | * @date October 1st, 2015 |
hemddabral | 2:19d1dcef0c0e | 7 | * @brief Implementation file for the X_NUCLEO_IKA01A1 expansion board. |
hemddabral | 2:19d1dcef0c0e | 8 | ****************************************************************************** |
hemddabral | 2:19d1dcef0c0e | 9 | * @attention |
hemddabral | 2:19d1dcef0c0e | 10 | * |
hemddabral | 2:19d1dcef0c0e | 11 | * <h2><center>© 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 | /* Includes ------------------------------------------------------------------*/ |
hemddabral | 2:19d1dcef0c0e | 43 | |
hemddabral | 2:19d1dcef0c0e | 44 | /* ACTION 1 ------------------------------------------------------------------* |
hemddabral | 2:19d1dcef0c0e | 45 | * Include here platform specific header files. * |
hemddabral | 2:19d1dcef0c0e | 46 | *----------------------------------------------------------------------------*/ |
hemddabral | 2:19d1dcef0c0e | 47 | #include "mbed.h" |
hemddabral | 2:19d1dcef0c0e | 48 | /* ACTION 2 ------------------------------------------------------------------* |
hemddabral | 2:19d1dcef0c0e | 49 | * Include here expansion board specific header files. * |
hemddabral | 2:19d1dcef0c0e | 50 | *----------------------------------------------------------------------------*/ |
hemddabral | 2:19d1dcef0c0e | 51 | #include "x_nucleo_ika01a1_class.h" |
hemddabral | 2:19d1dcef0c0e | 52 | |
hemddabral | 2:19d1dcef0c0e | 53 | |
hemddabral | 2:19d1dcef0c0e | 54 | /* Variables -----------------------------------------------------------------*/ |
hemddabral | 2:19d1dcef0c0e | 55 | |
hemddabral | 2:19d1dcef0c0e | 56 | /* Singleton instance of X_NUCLEO_IKA01A1 class. */ |
hemddabral | 2:19d1dcef0c0e | 57 | X_NUCLEO_IKA01A1 *X_NUCLEO_IKA01A1::_instance; |
hemddabral | 2:19d1dcef0c0e | 58 | |
hemddabral | 2:19d1dcef0c0e | 59 | |
hemddabral | 2:19d1dcef0c0e | 60 | /* Methods -------------------------------------------------------------------*/ |
hemddabral | 2:19d1dcef0c0e | 61 | |
hemddabral | 2:19d1dcef0c0e | 62 | /** |
hemddabral | 2:19d1dcef0c0e | 63 | * @brief Constructor. |
hemddabral | 2:19d1dcef0c0e | 64 | */ |
hemddabral | 14:8277ca0ab13a | 65 | X_NUCLEO_IKA01A1::X_NUCLEO_IKA01A1(PinName photoSensorPin, PinName windCmpSignalPin_1,PinName windCmpSignalPin_2, |
hemddabral | 14:8277ca0ab13a | 66 | PinName ledDriverPin) |
hemddabral | 14:8277ca0ab13a | 67 | |
hemddabral | 2:19d1dcef0c0e | 68 | { |
hemddabral | 2:19d1dcef0c0e | 69 | /* Instantiating the components. */ |
hemddabral | 2:19d1dcef0c0e | 70 | /* ACTION 3 --------------------------------------------------------------* |
hemddabral | 2:19d1dcef0c0e | 71 | * Instantiate here the expansion board's components. * |
hemddabral | 2:19d1dcef0c0e | 72 | * * |
hemddabral | 2:19d1dcef0c0e | 73 | * Example: * |
hemddabral | 2:19d1dcef0c0e | 74 | * component_1 = new COMPONENT_1(); * |
hemddabral | 2:19d1dcef0c0e | 75 | * component_2 = new COMPONENT_2(); * |
hemddabral | 2:19d1dcef0c0e | 76 | *------------------------------------------------------------------------*/ |
hemddabral | 2:19d1dcef0c0e | 77 | tsz124 = new TSZ124(); |
hemddabral | 14:8277ca0ab13a | 78 | tsu104 = new TSU104(photoSensorPin, windCmpSignalPin_1, windCmpSignalPin_2); |
hemddabral | 14:8277ca0ab13a | 79 | tsv734 = new TSV734(ledDriverPin); |
hemddabral | 2:19d1dcef0c0e | 80 | } |
hemddabral | 2:19d1dcef0c0e | 81 | |
hemddabral | 2:19d1dcef0c0e | 82 | /** |
hemddabral | 2:19d1dcef0c0e | 83 | * @brief Getting a singleton instance of X_NUCLEO_IKA01A1 class. |
hemddabral | 2:19d1dcef0c0e | 84 | * @retval a singleton instance of X_NUCLEO_IKA01A1 class. |
hemddabral | 2:19d1dcef0c0e | 85 | */ |
hemddabral | 14:8277ca0ab13a | 86 | X_NUCLEO_IKA01A1 *X_NUCLEO_IKA01A1::Instance(PinName photoSensorPin, PinName windCmpSignalPin_1,PinName windCmpSignalPin_2, |
hemddabral | 14:8277ca0ab13a | 87 | PinName ledDriverPin) |
hemddabral | 2:19d1dcef0c0e | 88 | { |
hemddabral | 2:19d1dcef0c0e | 89 | if (_instance == NULL) |
hemddabral | 2:19d1dcef0c0e | 90 | { |
hemddabral | 2:19d1dcef0c0e | 91 | /* Instantiating the board. */ |
hemddabral | 14:8277ca0ab13a | 92 | _instance = new X_NUCLEO_IKA01A1(photoSensorPin, windCmpSignalPin_1, windCmpSignalPin_2, ledDriverPin); |
hemddabral | 2:19d1dcef0c0e | 93 | |
hemddabral | 2:19d1dcef0c0e | 94 | /* Initializing the components. */ |
hemddabral | 2:19d1dcef0c0e | 95 | if (!_instance->Init()) |
hemddabral | 2:19d1dcef0c0e | 96 | error("Initialization of the X_NUCLEO_IKA01A1 expansion board failed.\n"); |
hemddabral | 2:19d1dcef0c0e | 97 | } |
hemddabral | 2:19d1dcef0c0e | 98 | |
hemddabral | 2:19d1dcef0c0e | 99 | return _instance; |
hemddabral | 2:19d1dcef0c0e | 100 | } |
hemddabral | 2:19d1dcef0c0e | 101 | |
hemddabral | 2:19d1dcef0c0e | 102 | /** |
hemddabral | 2:19d1dcef0c0e | 103 | * @brief Initializing the X_NUCLEO_IKA01A1 board. |
hemddabral | 13:9cecc8d66cc1 | 104 | * @retval true if initialization is successful |
hemddabral | 13:9cecc8d66cc1 | 105 | * @retval false otherwise. |
hemddabral | 2:19d1dcef0c0e | 106 | */ |
hemddabral | 2:19d1dcef0c0e | 107 | bool X_NUCLEO_IKA01A1::Init(void) |
hemddabral | 2:19d1dcef0c0e | 108 | { |
hemddabral | 2:19d1dcef0c0e | 109 | /* Initializing the components. */ |
hemddabral | 2:19d1dcef0c0e | 110 | /* ACTION 4 --------------------------------------------------------------* |
hemddabral | 2:19d1dcef0c0e | 111 | * Initialize here the expansion board's components. * |
hemddabral | 2:19d1dcef0c0e | 112 | * * |
hemddabral | 2:19d1dcef0c0e | 113 | * Example: * |
hemddabral | 2:19d1dcef0c0e | 114 | * return (Init_COMPONENT_1() && Init_COMPONENT_2()); * |
hemddabral | 2:19d1dcef0c0e | 115 | *------------------------------------------------------------------------*/ |
hemddabral | 2:19d1dcef0c0e | 116 | //return (Init_TSZ124() && Init_TSU104() && Init_TSV734()); |
hemddabral | 2:19d1dcef0c0e | 117 | return true; |
hemddabral | 2:19d1dcef0c0e | 118 | } |
hemddabral | 2:19d1dcef0c0e | 119 | |
hemddabral | 13:9cecc8d66cc1 | 120 | |
hemddabral | 2:19d1dcef0c0e | 121 | /** |
hemddabral | 2:19d1dcef0c0e | 122 | * @brief Initialize the TSZ124 component. |
hemddabral | 13:9cecc8d66cc1 | 123 | * @retval true if initialization is successful |
hemddabral | 13:9cecc8d66cc1 | 124 | * @retval false otherwise |
hemddabral | 2:19d1dcef0c0e | 125 | */ |
hemddabral | 2:19d1dcef0c0e | 126 | bool X_NUCLEO_IKA01A1::Init_TSZ124(void) |
hemddabral | 2:19d1dcef0c0e | 127 | { |
hemddabral | 2:19d1dcef0c0e | 128 | /* Verifying identity. */ |
hemddabral | 2:19d1dcef0c0e | 129 | uint8_t id = 0; |
hemddabral | 2:19d1dcef0c0e | 130 | int ret = tsz124->ReadID(&id); |
hemddabral | 2:19d1dcef0c0e | 131 | if ((ret != COMPONENT_OK) || (id != I_AM_TSZ124)) |
hemddabral | 2:19d1dcef0c0e | 132 | { |
hemddabral | 2:19d1dcef0c0e | 133 | delete tsz124; |
hemddabral | 2:19d1dcef0c0e | 134 | tsz124 = NULL; |
hemddabral | 2:19d1dcef0c0e | 135 | return true; |
hemddabral | 2:19d1dcef0c0e | 136 | } |
hemddabral | 2:19d1dcef0c0e | 137 | |
hemddabral | 2:19d1dcef0c0e | 138 | /* Configuration. */ |
hemddabral | 2:19d1dcef0c0e | 139 | void* InitStructure = NULL; |
hemddabral | 2:19d1dcef0c0e | 140 | /* ACTION ----------------------------------------------------------------* |
hemddabral | 2:19d1dcef0c0e | 141 | * Configure here the component's initialization structure. * |
hemddabral | 2:19d1dcef0c0e | 142 | * * |
hemddabral | 2:19d1dcef0c0e | 143 | * Example: * |
hemddabral | 2:19d1dcef0c0e | 144 | * InitStructure.Property_1 = COMPONENT_PROPERY_1_INIT; * |
hemddabral | 2:19d1dcef0c0e | 145 | * InitStructure.Property_N = COMPONENT_PROPERY_N_INIT; * |
hemddabral | 2:19d1dcef0c0e | 146 | *------------------------------------------------------------------------*/ |
hemddabral | 2:19d1dcef0c0e | 147 | |
hemddabral | 2:19d1dcef0c0e | 148 | /* Initialization. */ |
hemddabral | 2:19d1dcef0c0e | 149 | if (tsz124->Init(&InitStructure) != COMPONENT_OK) |
hemddabral | 2:19d1dcef0c0e | 150 | return false; |
hemddabral | 2:19d1dcef0c0e | 151 | |
hemddabral | 2:19d1dcef0c0e | 152 | return true; |
hemddabral | 2:19d1dcef0c0e | 153 | } |
hemddabral | 2:19d1dcef0c0e | 154 | |
hemddabral | 2:19d1dcef0c0e | 155 | /** |
hemddabral | 2:19d1dcef0c0e | 156 | * @brief Initialize the TSU104 component. |
hemddabral | 13:9cecc8d66cc1 | 157 | * @retval true if initialization is successful |
hemddabral | 13:9cecc8d66cc1 | 158 | * @retval false otherwise |
hemddabral | 2:19d1dcef0c0e | 159 | */ |
hemddabral | 2:19d1dcef0c0e | 160 | bool X_NUCLEO_IKA01A1::Init_TSU104(void) |
hemddabral | 2:19d1dcef0c0e | 161 | { |
hemddabral | 2:19d1dcef0c0e | 162 | /* Verifying identity. */ |
hemddabral | 2:19d1dcef0c0e | 163 | uint8_t id = 0; |
hemddabral | 2:19d1dcef0c0e | 164 | int ret = tsu104->ReadID(&id); |
hemddabral | 2:19d1dcef0c0e | 165 | if ((ret != COMPONENT_OK) || (id != I_AM_TSU104)) |
hemddabral | 2:19d1dcef0c0e | 166 | { |
hemddabral | 2:19d1dcef0c0e | 167 | delete tsu104; |
hemddabral | 2:19d1dcef0c0e | 168 | tsu104 = NULL; |
hemddabral | 2:19d1dcef0c0e | 169 | return true; |
hemddabral | 2:19d1dcef0c0e | 170 | } |
hemddabral | 2:19d1dcef0c0e | 171 | |
hemddabral | 2:19d1dcef0c0e | 172 | /* Configuration. */ |
hemddabral | 2:19d1dcef0c0e | 173 | void* InitStructure = NULL; |
hemddabral | 2:19d1dcef0c0e | 174 | /* ACTION ----------------------------------------------------------------* |
hemddabral | 2:19d1dcef0c0e | 175 | * Configure here the component's initialization structure. * |
hemddabral | 2:19d1dcef0c0e | 176 | * * |
hemddabral | 2:19d1dcef0c0e | 177 | * Example: * |
hemddabral | 2:19d1dcef0c0e | 178 | * InitStructure.Property_1 = COMPONENT_PROPERY_1_INIT; * |
hemddabral | 2:19d1dcef0c0e | 179 | * InitStructure.Property_N = COMPONENT_PROPERY_N_INIT; * |
hemddabral | 2:19d1dcef0c0e | 180 | *------------------------------------------------------------------------*/ |
hemddabral | 2:19d1dcef0c0e | 181 | |
hemddabral | 2:19d1dcef0c0e | 182 | /* Initialization. */ |
hemddabral | 2:19d1dcef0c0e | 183 | if (tsu104->Init(&InitStructure) != COMPONENT_OK) |
hemddabral | 2:19d1dcef0c0e | 184 | return false; |
hemddabral | 2:19d1dcef0c0e | 185 | |
hemddabral | 2:19d1dcef0c0e | 186 | return true; |
hemddabral | 2:19d1dcef0c0e | 187 | } |
hemddabral | 2:19d1dcef0c0e | 188 | |
hemddabral | 2:19d1dcef0c0e | 189 | /** |
hemddabral | 2:19d1dcef0c0e | 190 | * @brief Initialize the TSV734 component. |
hemddabral | 13:9cecc8d66cc1 | 191 | * @retval true if initialization is successful |
hemddabral | 13:9cecc8d66cc1 | 192 | * @retval false otherwise |
hemddabral | 2:19d1dcef0c0e | 193 | */ |
hemddabral | 2:19d1dcef0c0e | 194 | bool X_NUCLEO_IKA01A1::Init_TSV734(void) |
hemddabral | 2:19d1dcef0c0e | 195 | { |
hemddabral | 2:19d1dcef0c0e | 196 | /* Verifying identity. */ |
hemddabral | 2:19d1dcef0c0e | 197 | uint8_t id = 0; |
hemddabral | 2:19d1dcef0c0e | 198 | int ret = tsv734->ReadID(&id); |
hemddabral | 2:19d1dcef0c0e | 199 | if ((ret != COMPONENT_OK) || (id != I_AM_TSV734)) |
hemddabral | 2:19d1dcef0c0e | 200 | { |
hemddabral | 2:19d1dcef0c0e | 201 | delete tsv734; |
hemddabral | 2:19d1dcef0c0e | 202 | tsv734 = NULL; |
hemddabral | 2:19d1dcef0c0e | 203 | return true; |
hemddabral | 2:19d1dcef0c0e | 204 | } |
hemddabral | 2:19d1dcef0c0e | 205 | |
hemddabral | 2:19d1dcef0c0e | 206 | /* Configuration. */ |
hemddabral | 2:19d1dcef0c0e | 207 | void* InitStructure = NULL; |
hemddabral | 2:19d1dcef0c0e | 208 | /* ACTION ----------------------------------------------------------------* |
hemddabral | 2:19d1dcef0c0e | 209 | * Configure here the component's initialization structure. * |
hemddabral | 2:19d1dcef0c0e | 210 | * * |
hemddabral | 2:19d1dcef0c0e | 211 | * Example: * |
hemddabral | 2:19d1dcef0c0e | 212 | * InitStructure.Property_1 = COMPONENT_PROPERY_1_INIT; * |
hemddabral | 2:19d1dcef0c0e | 213 | * InitStructure.Property_N = COMPONENT_PROPERY_N_INIT; * |
hemddabral | 2:19d1dcef0c0e | 214 | *------------------------------------------------------------------------*/ |
hemddabral | 2:19d1dcef0c0e | 215 | |
hemddabral | 2:19d1dcef0c0e | 216 | /* Initialization. */ |
hemddabral | 2:19d1dcef0c0e | 217 | if (tsv734->Init(&InitStructure) != COMPONENT_OK) |
hemddabral | 2:19d1dcef0c0e | 218 | return false; |
hemddabral | 2:19d1dcef0c0e | 219 | |
hemddabral | 2:19d1dcef0c0e | 220 | return true; |
hemddabral | 2:19d1dcef0c0e | 221 | } |
hemddabral | 2:19d1dcef0c0e | 222 | |
hemddabral | 2:19d1dcef0c0e | 223 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |