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.
XNucleoIKA01A1.cpp@23:807f66b435d6, 2017-07-13 (annotated)
- Committer:
- Davidroid
- Date:
- Thu Jul 13 15:46:02 2017 +0000
- Revision:
- 23:807f66b435d6
- Parent:
- 22:ff8d071bf79e
Adapting to ARM mbed coding style.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hemddabral | 2:19d1dcef0c0e | 1 | /** |
hemddabral | 2:19d1dcef0c0e | 2 | ****************************************************************************** |
Davidroid | 22:ff8d071bf79e | 3 | * @file XNucleoIKA01A1.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 | *----------------------------------------------------------------------------*/ |
Davidroid | 22:ff8d071bf79e | 51 | #include "XNucleoIKA01A1.h" |
hemddabral | 2:19d1dcef0c0e | 52 | |
hemddabral | 2:19d1dcef0c0e | 53 | |
hemddabral | 2:19d1dcef0c0e | 54 | /* Variables -----------------------------------------------------------------*/ |
hemddabral | 2:19d1dcef0c0e | 55 | |
Davidroid | 22:ff8d071bf79e | 56 | /* Singleton instance of XNucleoIKA01A1 class. */ |
Davidroid | 22:ff8d071bf79e | 57 | XNucleoIKA01A1 *XNucleoIKA01A1::_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 | */ |
Davidroid | 22:ff8d071bf79e | 65 | XNucleoIKA01A1::XNucleoIKA01A1(PinName instrumentAmpPin, |
Davidroid | 22:ff8d071bf79e | 66 | PinName currentSensorPin, |
Davidroid | 22:ff8d071bf79e | 67 | PinName photoSensorPin, |
Davidroid | 22:ff8d071bf79e | 68 | PinName windCmpSignalPin_1, |
Davidroid | 22:ff8d071bf79e | 69 | PinName windCmpSignalPin_2, |
Davidroid | 22:ff8d071bf79e | 70 | PinName ledDriverPin, |
Davidroid | 22:ff8d071bf79e | 71 | double ledDriverPeriod_us) |
hemddabral | 2:19d1dcef0c0e | 72 | { |
hemddabral | 2:19d1dcef0c0e | 73 | /* Instantiating the components. */ |
hemddabral | 2:19d1dcef0c0e | 74 | /* ACTION 3 --------------------------------------------------------------* |
hemddabral | 2:19d1dcef0c0e | 75 | * Instantiate here the expansion board's components. * |
hemddabral | 2:19d1dcef0c0e | 76 | * * |
hemddabral | 2:19d1dcef0c0e | 77 | * Example: * |
hemddabral | 2:19d1dcef0c0e | 78 | * component_1 = new COMPONENT_1(); * |
hemddabral | 2:19d1dcef0c0e | 79 | * component_2 = new COMPONENT_2(); * |
hemddabral | 2:19d1dcef0c0e | 80 | *------------------------------------------------------------------------*/ |
hemddabral | 21:8d0624950dd1 | 81 | tsz124 = new TSZ124(instrumentAmpPin, currentSensorPin); |
hemddabral | 14:8277ca0ab13a | 82 | tsu104 = new TSU104(photoSensorPin, windCmpSignalPin_1, windCmpSignalPin_2); |
hemddabral | 19:af35fc938d88 | 83 | tsv734 = new TSV734(ledDriverPin, ledDriverPeriod_us); |
hemddabral | 2:19d1dcef0c0e | 84 | } |
hemddabral | 2:19d1dcef0c0e | 85 | |
hemddabral | 2:19d1dcef0c0e | 86 | /** |
Davidroid | 22:ff8d071bf79e | 87 | * @brief Getting a singleton instance of XNucleoIKA01A1 class. |
Davidroid | 22:ff8d071bf79e | 88 | * @retval a singleton instance of XNucleoIKA01A1 class. |
hemddabral | 2:19d1dcef0c0e | 89 | */ |
Davidroid | 22:ff8d071bf79e | 90 | XNucleoIKA01A1 *XNucleoIKA01A1::instance(PinName instrumentAmpPin, |
Davidroid | 22:ff8d071bf79e | 91 | PinName currentSensorPin, |
Davidroid | 22:ff8d071bf79e | 92 | PinName photoSensorPin, |
Davidroid | 22:ff8d071bf79e | 93 | PinName windCmpSignalPin_1, |
Davidroid | 22:ff8d071bf79e | 94 | PinName windCmpSignalPin_2, |
Davidroid | 22:ff8d071bf79e | 95 | PinName ledDriverPin, |
Davidroid | 22:ff8d071bf79e | 96 | double ledDriverPeriod_us) |
hemddabral | 2:19d1dcef0c0e | 97 | { |
Davidroid | 23:807f66b435d6 | 98 | if (_instance == NULL) { |
hemddabral | 2:19d1dcef0c0e | 99 | /* Instantiating the board. */ |
Davidroid | 22:ff8d071bf79e | 100 | _instance = new XNucleoIKA01A1(instrumentAmpPin, currentSensorPin, photoSensorPin, windCmpSignalPin_1, windCmpSignalPin_2, ledDriverPin, ledDriverPeriod_us); |
hemddabral | 2:19d1dcef0c0e | 101 | |
hemddabral | 2:19d1dcef0c0e | 102 | /* Initializing the components. */ |
Davidroid | 23:807f66b435d6 | 103 | if (!_instance->init()) { |
hemddabral | 2:19d1dcef0c0e | 104 | error("Initialization of the X_NUCLEO_IKA01A1 expansion board failed.\n"); |
Davidroid | 23:807f66b435d6 | 105 | } |
hemddabral | 2:19d1dcef0c0e | 106 | } |
hemddabral | 2:19d1dcef0c0e | 107 | |
hemddabral | 2:19d1dcef0c0e | 108 | return _instance; |
hemddabral | 2:19d1dcef0c0e | 109 | } |
hemddabral | 2:19d1dcef0c0e | 110 | |
hemddabral | 2:19d1dcef0c0e | 111 | /** |
hemddabral | 2:19d1dcef0c0e | 112 | * @brief Initializing the X_NUCLEO_IKA01A1 board. |
hemddabral | 13:9cecc8d66cc1 | 113 | * @retval true if initialization is successful |
hemddabral | 13:9cecc8d66cc1 | 114 | * @retval false otherwise. |
hemddabral | 2:19d1dcef0c0e | 115 | */ |
Davidroid | 22:ff8d071bf79e | 116 | bool XNucleoIKA01A1::init(void) |
hemddabral | 2:19d1dcef0c0e | 117 | { |
hemddabral | 2:19d1dcef0c0e | 118 | /* Initializing the components. */ |
hemddabral | 2:19d1dcef0c0e | 119 | /* ACTION 4 --------------------------------------------------------------* |
hemddabral | 2:19d1dcef0c0e | 120 | * Initialize here the expansion board's components. * |
hemddabral | 2:19d1dcef0c0e | 121 | * * |
hemddabral | 2:19d1dcef0c0e | 122 | * Example: * |
Davidroid | 22:ff8d071bf79e | 123 | * return (init_COMPONENT_1() && init_COMPONENT_2()); * |
hemddabral | 2:19d1dcef0c0e | 124 | *------------------------------------------------------------------------*/ |
Davidroid | 22:ff8d071bf79e | 125 | //return (init_TSZ124() && init_TSU104() && init_TSV734()); |
hemddabral | 2:19d1dcef0c0e | 126 | return true; |
hemddabral | 2:19d1dcef0c0e | 127 | } |
hemddabral | 2:19d1dcef0c0e | 128 | |
hemddabral | 13:9cecc8d66cc1 | 129 | |
hemddabral | 2:19d1dcef0c0e | 130 | /** |
hemddabral | 2:19d1dcef0c0e | 131 | * @brief Initialize the TSZ124 component. |
hemddabral | 13:9cecc8d66cc1 | 132 | * @retval true if initialization is successful |
hemddabral | 13:9cecc8d66cc1 | 133 | * @retval false otherwise |
hemddabral | 2:19d1dcef0c0e | 134 | */ |
Davidroid | 22:ff8d071bf79e | 135 | bool XNucleoIKA01A1::init_TSZ124(void) |
hemddabral | 2:19d1dcef0c0e | 136 | { |
hemddabral | 2:19d1dcef0c0e | 137 | /* Verifying identity. */ |
hemddabral | 2:19d1dcef0c0e | 138 | uint8_t id = 0; |
Davidroid | 22:ff8d071bf79e | 139 | int ret = tsz124->read_id(&id); |
Davidroid | 23:807f66b435d6 | 140 | if ((ret != COMPONENT_OK) || (id != I_AM_TSZ124)) { |
hemddabral | 2:19d1dcef0c0e | 141 | delete tsz124; |
hemddabral | 2:19d1dcef0c0e | 142 | tsz124 = NULL; |
hemddabral | 2:19d1dcef0c0e | 143 | return true; |
hemddabral | 2:19d1dcef0c0e | 144 | } |
hemddabral | 2:19d1dcef0c0e | 145 | |
hemddabral | 2:19d1dcef0c0e | 146 | /* Configuration. */ |
Davidroid | 22:ff8d071bf79e | 147 | void* init_structure = NULL; |
hemddabral | 2:19d1dcef0c0e | 148 | /* ACTION ----------------------------------------------------------------* |
hemddabral | 2:19d1dcef0c0e | 149 | * Configure here the component's initialization structure. * |
hemddabral | 2:19d1dcef0c0e | 150 | * * |
hemddabral | 2:19d1dcef0c0e | 151 | * Example: * |
Davidroid | 22:ff8d071bf79e | 152 | * init_structure.Property_1 = COMPONENT_PROPERY_1_INIT; * |
Davidroid | 22:ff8d071bf79e | 153 | * init_structure.Property_N = COMPONENT_PROPERY_N_INIT; * |
hemddabral | 2:19d1dcef0c0e | 154 | *------------------------------------------------------------------------*/ |
hemddabral | 2:19d1dcef0c0e | 155 | |
hemddabral | 2:19d1dcef0c0e | 156 | /* Initialization. */ |
Davidroid | 23:807f66b435d6 | 157 | if (tsz124->init(&init_structure) != COMPONENT_OK) { |
hemddabral | 2:19d1dcef0c0e | 158 | return false; |
Davidroid | 23:807f66b435d6 | 159 | } |
hemddabral | 2:19d1dcef0c0e | 160 | |
hemddabral | 2:19d1dcef0c0e | 161 | return true; |
hemddabral | 2:19d1dcef0c0e | 162 | } |
hemddabral | 2:19d1dcef0c0e | 163 | |
hemddabral | 2:19d1dcef0c0e | 164 | /** |
hemddabral | 2:19d1dcef0c0e | 165 | * @brief Initialize the TSU104 component. |
hemddabral | 13:9cecc8d66cc1 | 166 | * @retval true if initialization is successful |
hemddabral | 13:9cecc8d66cc1 | 167 | * @retval false otherwise |
hemddabral | 2:19d1dcef0c0e | 168 | */ |
Davidroid | 22:ff8d071bf79e | 169 | bool XNucleoIKA01A1::init_TSU104(void) |
hemddabral | 2:19d1dcef0c0e | 170 | { |
hemddabral | 2:19d1dcef0c0e | 171 | /* Verifying identity. */ |
hemddabral | 2:19d1dcef0c0e | 172 | uint8_t id = 0; |
Davidroid | 22:ff8d071bf79e | 173 | int ret = tsu104->read_id(&id); |
Davidroid | 23:807f66b435d6 | 174 | if ((ret != COMPONENT_OK) || (id != I_AM_TSU104)) { |
hemddabral | 2:19d1dcef0c0e | 175 | delete tsu104; |
hemddabral | 2:19d1dcef0c0e | 176 | tsu104 = NULL; |
hemddabral | 2:19d1dcef0c0e | 177 | return true; |
hemddabral | 2:19d1dcef0c0e | 178 | } |
hemddabral | 2:19d1dcef0c0e | 179 | |
hemddabral | 2:19d1dcef0c0e | 180 | /* Configuration. */ |
Davidroid | 22:ff8d071bf79e | 181 | void* init_structure = NULL; |
hemddabral | 2:19d1dcef0c0e | 182 | /* ACTION ----------------------------------------------------------------* |
hemddabral | 2:19d1dcef0c0e | 183 | * Configure here the component's initialization structure. * |
hemddabral | 2:19d1dcef0c0e | 184 | * * |
hemddabral | 2:19d1dcef0c0e | 185 | * Example: * |
Davidroid | 22:ff8d071bf79e | 186 | * init_structure.Property_1 = COMPONENT_PROPERY_1_INIT; * |
Davidroid | 22:ff8d071bf79e | 187 | * init_structure.Property_N = COMPONENT_PROPERY_N_INIT; * |
hemddabral | 2:19d1dcef0c0e | 188 | *------------------------------------------------------------------------*/ |
hemddabral | 2:19d1dcef0c0e | 189 | |
hemddabral | 2:19d1dcef0c0e | 190 | /* Initialization. */ |
Davidroid | 23:807f66b435d6 | 191 | if (tsu104->init(&init_structure) != COMPONENT_OK) { |
hemddabral | 2:19d1dcef0c0e | 192 | return false; |
Davidroid | 23:807f66b435d6 | 193 | } |
hemddabral | 2:19d1dcef0c0e | 194 | |
hemddabral | 2:19d1dcef0c0e | 195 | return true; |
hemddabral | 2:19d1dcef0c0e | 196 | } |
hemddabral | 2:19d1dcef0c0e | 197 | |
hemddabral | 2:19d1dcef0c0e | 198 | /** |
hemddabral | 2:19d1dcef0c0e | 199 | * @brief Initialize the TSV734 component. |
hemddabral | 13:9cecc8d66cc1 | 200 | * @retval true if initialization is successful |
hemddabral | 13:9cecc8d66cc1 | 201 | * @retval false otherwise |
hemddabral | 2:19d1dcef0c0e | 202 | */ |
Davidroid | 22:ff8d071bf79e | 203 | bool XNucleoIKA01A1::init_TSV734(void) |
hemddabral | 2:19d1dcef0c0e | 204 | { |
hemddabral | 2:19d1dcef0c0e | 205 | /* Verifying identity. */ |
hemddabral | 2:19d1dcef0c0e | 206 | uint8_t id = 0; |
Davidroid | 22:ff8d071bf79e | 207 | int ret = tsv734->read_id(&id); |
Davidroid | 23:807f66b435d6 | 208 | if ((ret != COMPONENT_OK) || (id != I_AM_TSV734)) { |
hemddabral | 2:19d1dcef0c0e | 209 | delete tsv734; |
hemddabral | 2:19d1dcef0c0e | 210 | tsv734 = NULL; |
hemddabral | 2:19d1dcef0c0e | 211 | return true; |
hemddabral | 2:19d1dcef0c0e | 212 | } |
hemddabral | 2:19d1dcef0c0e | 213 | |
hemddabral | 2:19d1dcef0c0e | 214 | /* Configuration. */ |
Davidroid | 22:ff8d071bf79e | 215 | void* init_structure = NULL; |
hemddabral | 2:19d1dcef0c0e | 216 | /* ACTION ----------------------------------------------------------------* |
hemddabral | 2:19d1dcef0c0e | 217 | * Configure here the component's initialization structure. * |
hemddabral | 2:19d1dcef0c0e | 218 | * * |
hemddabral | 2:19d1dcef0c0e | 219 | * Example: * |
Davidroid | 22:ff8d071bf79e | 220 | * init_structure.Property_1 = COMPONENT_PROPERY_1_INIT; * |
Davidroid | 22:ff8d071bf79e | 221 | * init_structure.Property_N = COMPONENT_PROPERY_N_INIT; * |
hemddabral | 2:19d1dcef0c0e | 222 | *------------------------------------------------------------------------*/ |
hemddabral | 2:19d1dcef0c0e | 223 | |
hemddabral | 2:19d1dcef0c0e | 224 | /* Initialization. */ |
Davidroid | 23:807f66b435d6 | 225 | if (tsv734->init(&init_structure) != COMPONENT_OK) { |
hemddabral | 2:19d1dcef0c0e | 226 | return false; |
Davidroid | 23:807f66b435d6 | 227 | } |
hemddabral | 2:19d1dcef0c0e | 228 | |
hemddabral | 2:19d1dcef0c0e | 229 | return true; |
hemddabral | 2:19d1dcef0c0e | 230 | } |
hemddabral | 2:19d1dcef0c0e | 231 | |
Davidroid | 22:ff8d071bf79e | 232 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |