Library to handle the X-NUCLEO-LED61A1 LED Control Expansion Board based on the LED6001 component.

Dependents:   LedDimming_LED61A1_mbedOS HelloWorld_LED61A1_mbedOS LedDimming_LED61A1 HelloWorld_LED61A1 ... more

Fork of X_NUCLEO_LED61A1 by ST Expansion SW Team

LED Control Library

Library to handle the X-NUCLEO-LED61A1 LED Control Expansion Board based on the LED6001 component.

Platform compatibility

  • NUCLEO boards have been tested with the default configuration provided by the HelloWorld_LED61A1 example.
  • NUCLEO-F070RB, NUCLEO-F072RB, NUCLEO-F091RC boards have been tested with the following patch:
    • to connect with a wire the NUCLEO’s D9 pin to the LED61A1’s D6 pin;
    • to initialize the pwm PinName variable with D9 rather than D6.
  • NUCLEO-F302R8 board has been tested with the following patch:
    • to connect with a wire the NUCLEO’s D7 pin to the LED61A1’s D6 pin;
    • to initialize the pwm PinName variable with D7 rather than D6.
  • LPCXpresso11U68 board has been tested with the limitation of using only the PWM Dimming, as it provides only one PWM channel, thus allowing just one between the PWM or Analog Dimming functionalities. It has been tested with the following patch:
    • to connect with a wire the LPCX’s D3 pin to the LED61A1’s D4 pin;
    • to connect with a wire the LPCX’s D4 pin to the LED61A1’s D6 pin;
    • to initialize the xfault_irq PinName variable with D3 rather than D4;
    • to initialize the pwm PinName variable with D4 rather than D6;
    • to initialize the analog PinName variable with NC rather than D5;
    • to disable the use of the user button in any application example as it is not available.
  • FRDM-K64F board has been tested with the following patch:
    • to disable the use of the user button in any application example as it is not available.
Committer:
Davidroid
Date:
Mon May 08 16:16:44 2017 +0000
Revision:
13:8cd869d64965
Parent:
12:fc2d2d3a2499
Aligned to ARM mbed coding style.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Davidroid 0:4a3d02667d9f 1 /**
Davidroid 0:4a3d02667d9f 2 ******************************************************************************
Davidroid 12:fc2d2d3a2499 3 * @file Led6001.h
Davidroid 5:8626c6a14ef3 4 * @author Davide Aliprandi, STMicroelectronics
Davidroid 0:4a3d02667d9f 5 * @version V1.0.0
Davidroid 0:4a3d02667d9f 6 * @date December 9th, 2015
Davidroid 0:4a3d02667d9f 7 * @brief This file contains the class of an LED6001 component.
Davidroid 0:4a3d02667d9f 8 ******************************************************************************
Davidroid 0:4a3d02667d9f 9 * @attention
Davidroid 0:4a3d02667d9f 10 *
Davidroid 0:4a3d02667d9f 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
Davidroid 0:4a3d02667d9f 12 *
Davidroid 0:4a3d02667d9f 13 * Redistribution and use in source and binary forms, with or without modification,
Davidroid 0:4a3d02667d9f 14 * are permitted provided that the following conditions are met:
Davidroid 0:4a3d02667d9f 15 * 1. Redistributions of source code must retain the above copyright notice,
Davidroid 0:4a3d02667d9f 16 * this list of conditions and the following disclaimer.
Davidroid 0:4a3d02667d9f 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
Davidroid 0:4a3d02667d9f 18 * this list of conditions and the following disclaimer in the documentation
Davidroid 0:4a3d02667d9f 19 * and/or other materials provided with the distribution.
Davidroid 0:4a3d02667d9f 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
Davidroid 0:4a3d02667d9f 21 * may be used to endorse or promote products derived from this software
Davidroid 0:4a3d02667d9f 22 * without specific prior written permission.
Davidroid 0:4a3d02667d9f 23 *
Davidroid 0:4a3d02667d9f 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Davidroid 0:4a3d02667d9f 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Davidroid 0:4a3d02667d9f 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Davidroid 0:4a3d02667d9f 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
Davidroid 0:4a3d02667d9f 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Davidroid 0:4a3d02667d9f 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Davidroid 0:4a3d02667d9f 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Davidroid 0:4a3d02667d9f 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Davidroid 0:4a3d02667d9f 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Davidroid 0:4a3d02667d9f 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Davidroid 0:4a3d02667d9f 34 *
Davidroid 0:4a3d02667d9f 35 ******************************************************************************
Davidroid 0:4a3d02667d9f 36 */
Davidroid 0:4a3d02667d9f 37
Davidroid 0:4a3d02667d9f 38
Davidroid 9:e7e23795cbe4 39 /* Generated with STM32CubeTOO -----------------------------------------------*/
Davidroid 0:4a3d02667d9f 40
Davidroid 0:4a3d02667d9f 41
Davidroid 0:4a3d02667d9f 42 /* Revision ------------------------------------------------------------------*/
Davidroid 0:4a3d02667d9f 43 /*
Davidroid 0:4a3d02667d9f 44 Repository: http://svn.x-nucleodev.codex.cro.st.com/svnroot/X-NucleoDev
Davidroid 0:4a3d02667d9f 45 Branch/Trunk/Tag: trunk
Davidroid 0:4a3d02667d9f 46 Based on: X-CUBE-LED1/trunk/Drivers/BSP/Components/led6001/led6001.h
Davidroid 0:4a3d02667d9f 47 Revision: 0
Davidroid 0:4a3d02667d9f 48 */
Davidroid 0:4a3d02667d9f 49
Davidroid 0:4a3d02667d9f 50
Davidroid 0:4a3d02667d9f 51 /* Define to prevent recursive inclusion -------------------------------------*/
Davidroid 0:4a3d02667d9f 52
Davidroid 0:4a3d02667d9f 53 #ifndef __LED6001_CLASS_H
Davidroid 0:4a3d02667d9f 54 #define __LED6001_CLASS_H
Davidroid 0:4a3d02667d9f 55
Davidroid 0:4a3d02667d9f 56
Davidroid 0:4a3d02667d9f 57 /* Includes ------------------------------------------------------------------*/
Davidroid 0:4a3d02667d9f 58
Davidroid 0:4a3d02667d9f 59 /* ACTION 1 ------------------------------------------------------------------*
Davidroid 0:4a3d02667d9f 60 * Include here platform specific header files. *
Davidroid 0:4a3d02667d9f 61 *----------------------------------------------------------------------------*/
Davidroid 0:4a3d02667d9f 62 #include "mbed.h"
Davidroid 0:4a3d02667d9f 63 /* ACTION 2 ------------------------------------------------------------------*
Davidroid 0:4a3d02667d9f 64 * Include here component specific header files. *
Davidroid 0:4a3d02667d9f 65 *----------------------------------------------------------------------------*/
Davidroid 12:fc2d2d3a2499 66 #include "../Common/component_def.h"
Davidroid 0:4a3d02667d9f 67 /* ACTION 3 ------------------------------------------------------------------*
Davidroid 0:4a3d02667d9f 68 * Include here interface specific header files. *
Davidroid 0:4a3d02667d9f 69 * *
Davidroid 0:4a3d02667d9f 70 * Example: *
Davidroid 12:fc2d2d3a2499 71 * #include "HumiditySensor.h" *
Davidroid 12:fc2d2d3a2499 72 * #include "TemperatureSensor.h" *
Davidroid 0:4a3d02667d9f 73 *----------------------------------------------------------------------------*/
Davidroid 12:fc2d2d3a2499 74 #include "../Interfaces/Led.h"
Davidroid 0:4a3d02667d9f 75
Davidroid 0:4a3d02667d9f 76
Davidroid 2:a270bdb62fc8 77 /* Definitions ---------------------------------------------------------------*/
Davidroid 2:a270bdb62fc8 78
Davidroid 11:5a7ee8e28f92 79 /* Duration of initialization interval in milli-seconds. */
Davidroid 11:5a7ee8e28f92 80 #define INITIALIZATION_INTERVAL_ms (2E3)
Davidroid 11:5a7ee8e28f92 81
Davidroid 2:a270bdb62fc8 82 /* Period of PWM and Analog Dimming modes's PWM signal. */
Davidroid 11:5a7ee8e28f92 83 #define PWM_PERIOD_ms (10)
Davidroid 2:a270bdb62fc8 84
Davidroid 4:771cbe8066dc 85 /* Duty Cycle of PWM and Analog Dimming modes's PWM signal to power the LED on. */
Davidroid 11:5a7ee8e28f92 86 #define PWM_DIMMING_ON (1.0f)
Davidroid 4:771cbe8066dc 87
Davidroid 2:a270bdb62fc8 88 /* Duty Cycle of PWM and Analog Dimming modes's PWM signal to power the LED off. */
Davidroid 11:5a7ee8e28f92 89 #define PWM_DIMMING_OFF (0.0f)
Davidroid 2:a270bdb62fc8 90
Davidroid 2:a270bdb62fc8 91 /* Duty Cycle Range of Analog Dimming. */
Davidroid 11:5a7ee8e28f92 92 #define MAX_PWM_ANALOG_DIMMING (1.2f/3.3f)
Davidroid 11:5a7ee8e28f92 93 #define MIN_PWM_ANALOG_DIMMING (0.3f/3.3f)
Davidroid 2:a270bdb62fc8 94
Davidroid 2:a270bdb62fc8 95
Davidroid 0:4a3d02667d9f 96 /* Classes -------------------------------------------------------------------*/
Davidroid 0:4a3d02667d9f 97
Davidroid 0:4a3d02667d9f 98 /**
Davidroid 0:4a3d02667d9f 99 * @brief Class representing a LED6001 component.
Davidroid 0:4a3d02667d9f 100 */
Davidroid 12:fc2d2d3a2499 101 class Led6001 : public Led
Davidroid 0:4a3d02667d9f 102 {
Davidroid 0:4a3d02667d9f 103 public:
Davidroid 0:4a3d02667d9f 104
Davidroid 0:4a3d02667d9f 105 /*** Constructor and Destructor Methods ***/
Davidroid 0:4a3d02667d9f 106
Davidroid 0:4a3d02667d9f 107 /**
Davidroid 0:4a3d02667d9f 108 * @brief Constructor.
Davidroid 1:eab47c592e8f 109 * @param xfault_irq pin name of the XFAULT pin of the component.
Davidroid 1:eab47c592e8f 110 * @param current pin name of the ADC pin of the component responsible
Davidroid 1:eab47c592e8f 111 * for sensing the current flowing through the LED.
Davidroid 2:a270bdb62fc8 112 * @param pwm pin name of the PWM pin of the component.
Davidroid 2:a270bdb62fc8 113 * @param analog pin name of the Analog pin of the component.
Davidroid 0:4a3d02667d9f 114 */
Davidroid 12:fc2d2d3a2499 115 Led6001(PinName xfault_irq, PinName current, PinName pwm, PinName analog) : Led(), xfault_irq(xfault_irq), current(current), pwm(pwm), analog(analog)
Davidroid 0:4a3d02667d9f 116 {
Davidroid 0:4a3d02667d9f 117 /* ACTION 4 ----------------------------------------------------------*
Davidroid 0:4a3d02667d9f 118 * Initialize here the component's member variables, one variable per *
Davidroid 0:4a3d02667d9f 119 * line. *
Davidroid 0:4a3d02667d9f 120 * *
Davidroid 0:4a3d02667d9f 121 * Example: *
Davidroid 0:4a3d02667d9f 122 * measure = 0; *
Davidroid 0:4a3d02667d9f 123 * instance_id = number_of_instances++; *
Davidroid 0:4a3d02667d9f 124 *--------------------------------------------------------------------*/
Davidroid 7:20db85c1963c 125 this->xfault_irq.mode(PullUp);
Davidroid 0:4a3d02667d9f 126 }
Davidroid 0:4a3d02667d9f 127
Davidroid 0:4a3d02667d9f 128 /**
Davidroid 0:4a3d02667d9f 129 * @brief Destructor.
Davidroid 0:4a3d02667d9f 130 */
Davidroid 12:fc2d2d3a2499 131 virtual ~Led6001(void) {}
Davidroid 0:4a3d02667d9f 132
Davidroid 0:4a3d02667d9f 133
Davidroid 0:4a3d02667d9f 134 /*** Public Component Related Methods ***/
Davidroid 0:4a3d02667d9f 135
Davidroid 0:4a3d02667d9f 136 /* ACTION 5 --------------------------------------------------------------*
Davidroid 0:4a3d02667d9f 137 * Implement here the component's public methods, as wrappers of the C *
Davidroid 0:4a3d02667d9f 138 * component's functions. *
Davidroid 0:4a3d02667d9f 139 * They should be: *
Davidroid 0:4a3d02667d9f 140 * + Methods with the same name of the C component's virtual table's *
Davidroid 0:4a3d02667d9f 141 * functions (1); *
Davidroid 0:4a3d02667d9f 142 * + Methods with the same name of the C component's extended virtual *
Davidroid 0:4a3d02667d9f 143 * table's functions, if any (2). *
Davidroid 0:4a3d02667d9f 144 * *
Davidroid 0:4a3d02667d9f 145 * Example: *
Davidroid 12:fc2d2d3a2499 146 * virtual int get_value(float *p_data) //(1) *
Davidroid 0:4a3d02667d9f 147 * { *
Davidroid 12:fc2d2d3a2499 148 * return COMPONENT_get_value(float *pf_data); *
Davidroid 0:4a3d02667d9f 149 * } *
Davidroid 0:4a3d02667d9f 150 * *
Davidroid 12:fc2d2d3a2499 151 * virtual int enable_feature(void) //(2) *
Davidroid 0:4a3d02667d9f 152 * { *
Davidroid 12:fc2d2d3a2499 153 * return COMPONENT_enable_feature(); *
Davidroid 0:4a3d02667d9f 154 * } *
Davidroid 0:4a3d02667d9f 155 *------------------------------------------------------------------------*/
Davidroid 0:4a3d02667d9f 156 /**
Davidroid 0:4a3d02667d9f 157 * @brief Initializing the component.
Davidroid 2:a270bdb62fc8 158 * @param init Pointer to device specific initalization structure.
Davidroid 2:a270bdb62fc8 159 * @retval "0" in case of success, an error code otherwise.
Davidroid 0:4a3d02667d9f 160 */
Davidroid 12:fc2d2d3a2499 161 virtual int init(void *init = NULL)
Davidroid 0:4a3d02667d9f 162 {
Davidroid 11:5a7ee8e28f92 163 /* Setting defaults. */
Davidroid 2:a270bdb62fc8 164 pwm.period_ms(PWM_PERIOD_ms);
Davidroid 2:a270bdb62fc8 165 analog.period_ms(PWM_PERIOD_ms);
Davidroid 11:5a7ee8e28f92 166
Davidroid 2:a270bdb62fc8 167 return (int) COMPONENT_OK;
Davidroid 0:4a3d02667d9f 168 }
Davidroid 0:4a3d02667d9f 169
Davidroid 0:4a3d02667d9f 170 /**
Davidroid 2:a270bdb62fc8 171 * @brief Getting the ID of the component.
Davidroid 2:a270bdb62fc8 172 * @param id Pointer to an allocated variable to store the ID into.
Davidroid 2:a270bdb62fc8 173 * @retval "0" in case of success, an error code otherwise.
Davidroid 0:4a3d02667d9f 174 */
Davidroid 12:fc2d2d3a2499 175 virtual int read_id(uint8_t *id = NULL)
Davidroid 0:4a3d02667d9f 176 {
Davidroid 2:a270bdb62fc8 177 return (int) COMPONENT_OK;
Davidroid 2:a270bdb62fc8 178 }
Davidroid 2:a270bdb62fc8 179
Davidroid 2:a270bdb62fc8 180 /**
Davidroid 2:a270bdb62fc8 181 * @brief Getting the current flowing through the LED.
Davidroid 2:a270bdb62fc8 182 * @param None.
Davidroid 2:a270bdb62fc8 183 * @retval The current flowing through the LED, represented as a floating
Davidroid 2:a270bdb62fc8 184 * point number in the range [0.0, 1.0].
Davidroid 2:a270bdb62fc8 185 */
Davidroid 12:fc2d2d3a2499 186 virtual float get_current(void)
Davidroid 2:a270bdb62fc8 187 {
Davidroid 2:a270bdb62fc8 188 return current.read();
Davidroid 0:4a3d02667d9f 189 }
Davidroid 0:4a3d02667d9f 190
Davidroid 0:4a3d02667d9f 191 /**
Davidroid 2:a270bdb62fc8 192 * @brief Setting PWM dimming value.
Davidroid 2:a270bdb62fc8 193 * @param dimming PWM dimming value, represented as a floating
Davidroid 2:a270bdb62fc8 194 * point number in the range [0.0, 1.0].
Davidroid 0:4a3d02667d9f 195 * @retval None.
Davidroid 0:4a3d02667d9f 196 */
Davidroid 12:fc2d2d3a2499 197 virtual void set_pwm_dimming(float dimming)
Davidroid 0:4a3d02667d9f 198 {
Davidroid 13:8cd869d64965 199 if (dimming >= 0.0f && dimming <= 1.0f) {
Davidroid 2:a270bdb62fc8 200 pwm.write(dimming);
Davidroid 13:8cd869d64965 201 }
Davidroid 0:4a3d02667d9f 202 }
Davidroid 0:4a3d02667d9f 203
Davidroid 0:4a3d02667d9f 204 /**
Davidroid 2:a270bdb62fc8 205 * @brief Setting Analog dimming value.
Davidroid 2:a270bdb62fc8 206 * @param dimming Analog dimming value, represented as a floating
Davidroid 2:a270bdb62fc8 207 * point number in the range [0.0, 1.0].
Davidroid 0:4a3d02667d9f 208 * @retval None.
Davidroid 0:4a3d02667d9f 209 */
Davidroid 12:fc2d2d3a2499 210 virtual void set_analog_dimming(float dimming)
Davidroid 0:4a3d02667d9f 211 {
Davidroid 13:8cd869d64965 212 if (dimming >= 0.0f && dimming <= 1.0f) {
Davidroid 2:a270bdb62fc8 213 analog.write(dimming * (MAX_PWM_ANALOG_DIMMING - MIN_PWM_ANALOG_DIMMING) + MIN_PWM_ANALOG_DIMMING);
Davidroid 13:8cd869d64965 214 }
Davidroid 0:4a3d02667d9f 215 }
Davidroid 0:4a3d02667d9f 216
Davidroid 0:4a3d02667d9f 217 /**
Davidroid 4:771cbe8066dc 218 * @brief Powering ON at maximum light intensity.
Davidroid 4:771cbe8066dc 219 * @param None.
Davidroid 4:771cbe8066dc 220 * @retval None.
Davidroid 4:771cbe8066dc 221 */
Davidroid 12:fc2d2d3a2499 222 virtual void power_on(void)
Davidroid 4:771cbe8066dc 223 {
Davidroid 4:771cbe8066dc 224 pwm.write(PWM_DIMMING_ON);
Davidroid 4:771cbe8066dc 225 analog.write(PWM_DIMMING_ON);
Davidroid 4:771cbe8066dc 226 }
Davidroid 4:771cbe8066dc 227
Davidroid 4:771cbe8066dc 228 /**
Davidroid 2:a270bdb62fc8 229 * @brief Powering OFF.
Davidroid 0:4a3d02667d9f 230 * @param None.
Davidroid 2:a270bdb62fc8 231 * @retval None.
Davidroid 0:4a3d02667d9f 232 */
Davidroid 12:fc2d2d3a2499 233 virtual void power_off(void)
Davidroid 0:4a3d02667d9f 234 {
Davidroid 3:843080fc7f37 235 pwm.write(PWM_DIMMING_OFF);
Davidroid 3:843080fc7f37 236 analog.write(PWM_DIMMING_OFF);
Davidroid 0:4a3d02667d9f 237 }
Davidroid 2:a270bdb62fc8 238
Davidroid 11:5a7ee8e28f92 239 /**
Davidroid 11:5a7ee8e28f92 240 * @brief Starting-up the component.
Davidroid 11:5a7ee8e28f92 241 * @param None.
Davidroid 11:5a7ee8e28f92 242 * @retval None.
Davidroid 11:5a7ee8e28f92 243 */
Davidroid 12:fc2d2d3a2499 244 virtual void start_up(void)
Davidroid 11:5a7ee8e28f92 245 {
Davidroid 11:5a7ee8e28f92 246 /* Start-up sequence. */
Davidroid 12:fc2d2d3a2499 247 power_off();
Davidroid 11:5a7ee8e28f92 248 wait_ms(INITIALIZATION_INTERVAL_ms);
Davidroid 12:fc2d2d3a2499 249 power_on();
Davidroid 11:5a7ee8e28f92 250 }
Davidroid 11:5a7ee8e28f92 251
Davidroid 0:4a3d02667d9f 252
Davidroid 0:4a3d02667d9f 253 /*** Public Interrupt Related Methods ***/
Davidroid 0:4a3d02667d9f 254
Davidroid 0:4a3d02667d9f 255 /* ACTION 6 --------------------------------------------------------------*
Davidroid 0:4a3d02667d9f 256 * Implement here interrupt related methods, if any. *
Davidroid 0:4a3d02667d9f 257 * Note that interrupt handling is platform dependent, e.g.: *
Davidroid 0:4a3d02667d9f 258 * + mbed: *
Davidroid 12:fc2d2d3a2499 259 * InterruptIn feature_irq(pin); //Interrupt object. *
Davidroid 12:fc2d2d3a2499 260 * feature_irq.rise(callback); //Attach a callback. *
Davidroid 12:fc2d2d3a2499 261 * feature_irq.mode(PullNone); //Set interrupt mode. *
Davidroid 12:fc2d2d3a2499 262 * feature_irq.enable_irq(); //Enable interrupt. *
Davidroid 12:fc2d2d3a2499 263 * feature_irq.disable_irq(); //Disable interrupt. *
Davidroid 0:4a3d02667d9f 264 * + Arduino: *
Davidroid 0:4a3d02667d9f 265 * attachInterrupt(pin, callback, RISING); //Attach a callback. *
Davidroid 0:4a3d02667d9f 266 * detachInterrupt(pin); //Detach a callback. *
Davidroid 0:4a3d02667d9f 267 * *
Davidroid 0:4a3d02667d9f 268 * Example (mbed): *
Davidroid 12:fc2d2d3a2499 269 * void attach_feature_irq(void (*fptr) (void)) *
Davidroid 0:4a3d02667d9f 270 * { *
Davidroid 12:fc2d2d3a2499 271 * feature_irq.rise(fptr); *
Davidroid 0:4a3d02667d9f 272 * } *
Davidroid 0:4a3d02667d9f 273 * *
Davidroid 12:fc2d2d3a2499 274 * void enable_feature_irq(void) *
Davidroid 0:4a3d02667d9f 275 * { *
Davidroid 0:4a3d02667d9f 276 * feature_irq.enable_irq(); *
Davidroid 0:4a3d02667d9f 277 * } *
Davidroid 0:4a3d02667d9f 278 * *
Davidroid 12:fc2d2d3a2499 279 * void disable_feature_irq(void) *
Davidroid 0:4a3d02667d9f 280 * { *
Davidroid 0:4a3d02667d9f 281 * feature_irq.disable_irq(); *
Davidroid 0:4a3d02667d9f 282 * } *
Davidroid 0:4a3d02667d9f 283 *------------------------------------------------------------------------*/
Davidroid 1:eab47c592e8f 284 /**
Davidroid 1:eab47c592e8f 285 * @brief Attaching an interrupt handler to the XFAULT interrupt.
Davidroid 1:eab47c592e8f 286 * @param fptr An interrupt handler.
Davidroid 1:eab47c592e8f 287 * @retval None.
Davidroid 1:eab47c592e8f 288 */
Davidroid 12:fc2d2d3a2499 289 void attach_xfault_irq(void (*fptr)(void))
Davidroid 1:eab47c592e8f 290 {
Davidroid 4:771cbe8066dc 291 xfault_irq.fall(fptr);
Davidroid 1:eab47c592e8f 292 }
Davidroid 1:eab47c592e8f 293
Davidroid 1:eab47c592e8f 294 /**
Davidroid 1:eab47c592e8f 295 * @brief Enabling the XFAULT interrupt handling.
Davidroid 1:eab47c592e8f 296 * @param None.
Davidroid 1:eab47c592e8f 297 * @retval None.
Davidroid 1:eab47c592e8f 298 */
Davidroid 12:fc2d2d3a2499 299 void enable_xfault_irq(void)
Davidroid 1:eab47c592e8f 300 {
Davidroid 1:eab47c592e8f 301 xfault_irq.enable_irq();
Davidroid 1:eab47c592e8f 302 }
Davidroid 1:eab47c592e8f 303
Davidroid 1:eab47c592e8f 304 /**
Davidroid 1:eab47c592e8f 305 * @brief Disabling the XFAULT interrupt handling.
Davidroid 1:eab47c592e8f 306 * @param None.
Davidroid 1:eab47c592e8f 307 * @retval None.
Davidroid 1:eab47c592e8f 308 */
Davidroid 12:fc2d2d3a2499 309 void disable_xfault_irq(void)
Davidroid 1:eab47c592e8f 310 {
Davidroid 1:eab47c592e8f 311 xfault_irq.disable_irq();
Davidroid 1:eab47c592e8f 312 }
Davidroid 0:4a3d02667d9f 313
Davidroid 0:4a3d02667d9f 314
Davidroid 0:4a3d02667d9f 315 protected:
Davidroid 0:4a3d02667d9f 316
Davidroid 0:4a3d02667d9f 317 /*** Protected Component Related Methods ***/
Davidroid 0:4a3d02667d9f 318
Davidroid 0:4a3d02667d9f 319 /* ACTION 7 --------------------------------------------------------------*
Davidroid 0:4a3d02667d9f 320 * Declare here the component's specific methods. *
Davidroid 0:4a3d02667d9f 321 * They should be: *
Davidroid 0:4a3d02667d9f 322 * + Methods with the same name of the C component's virtual table's *
Davidroid 0:4a3d02667d9f 323 * functions (1); *
Davidroid 0:4a3d02667d9f 324 * + Methods with the same name of the C component's extended virtual *
Davidroid 0:4a3d02667d9f 325 * table's functions, if any (2); *
Davidroid 0:4a3d02667d9f 326 * + Helper methods, if any, like functions declared in the component's *
Davidroid 0:4a3d02667d9f 327 * source files but not pointed by the component's virtual table (3). *
Davidroid 0:4a3d02667d9f 328 * *
Davidroid 0:4a3d02667d9f 329 * Example: *
Davidroid 12:fc2d2d3a2499 330 * status_t COMPONENT_get_value(float *f); //(1) *
Davidroid 12:fc2d2d3a2499 331 * status_t COMPONENT_enable_feature(void); //(2) *
Davidroid 12:fc2d2d3a2499 332 * status_t COMPONENT_compute_average(void); //(3) *
Davidroid 0:4a3d02667d9f 333 *------------------------------------------------------------------------*/
Davidroid 0:4a3d02667d9f 334
Davidroid 0:4a3d02667d9f 335
Davidroid 0:4a3d02667d9f 336 /*** Component's I/O Methods ***/
Davidroid 0:4a3d02667d9f 337
Davidroid 0:4a3d02667d9f 338 /* ACTION 8 --------------------------------------------------------------*
Davidroid 0:4a3d02667d9f 339 * Implement here other I/O methods beyond those already implemented *
Davidroid 0:4a3d02667d9f 340 * above, which are declared extern within the component's header file. *
Davidroid 0:4a3d02667d9f 341 *------------------------------------------------------------------------*/
Davidroid 0:4a3d02667d9f 342
Davidroid 0:4a3d02667d9f 343
Davidroid 0:4a3d02667d9f 344 /*** Component's Instance Variables ***/
Davidroid 0:4a3d02667d9f 345
Davidroid 0:4a3d02667d9f 346 /* ACTION 9 --------------------------------------------------------------*
Davidroid 0:4a3d02667d9f 347 * Declare here interrupt related variables, if needed. *
Davidroid 0:4a3d02667d9f 348 * Note that interrupt handling is platform dependent, see *
Davidroid 0:4a3d02667d9f 349 * "Interrupt Related Methods" above. *
Davidroid 0:4a3d02667d9f 350 * *
Davidroid 0:4a3d02667d9f 351 * Example: *
Davidroid 0:4a3d02667d9f 352 * + mbed: *
Davidroid 0:4a3d02667d9f 353 * InterruptIn feature_irq; *
Davidroid 0:4a3d02667d9f 354 *------------------------------------------------------------------------*/
Davidroid 2:a270bdb62fc8 355 /* XFault Interrupt. */
Davidroid 2:a270bdb62fc8 356 InterruptIn xfault_irq;
Davidroid 0:4a3d02667d9f 357
Davidroid 0:4a3d02667d9f 358 /* ACTION 10 -------------------------------------------------------------*
Davidroid 0:4a3d02667d9f 359 * Declare here other pin related variables, if needed. *
Davidroid 0:4a3d02667d9f 360 * *
Davidroid 0:4a3d02667d9f 361 * Example: *
Davidroid 0:4a3d02667d9f 362 * + mbed: *
Davidroid 0:4a3d02667d9f 363 * DigitalOut standby_reset; *
Davidroid 0:4a3d02667d9f 364 *------------------------------------------------------------------------*/
Davidroid 2:a270bdb62fc8 365 /* Pin to sense the current flowing through the LED. */
Davidroid 2:a270bdb62fc8 366 AnalogIn current;
Davidroid 2:a270bdb62fc8 367
Davidroid 2:a270bdb62fc8 368 /* Pulse Width Modulation dimming pin. */
Davidroid 2:a270bdb62fc8 369 PwmOut pwm;
Davidroid 2:a270bdb62fc8 370
Davidroid 2:a270bdb62fc8 371 /* Analog dimming pin. */
Davidroid 2:a270bdb62fc8 372 PwmOut analog;
Davidroid 0:4a3d02667d9f 373
Davidroid 0:4a3d02667d9f 374 /* ACTION 11 -------------------------------------------------------------*
Davidroid 0:4a3d02667d9f 375 * Declare here communication related variables, if needed. *
Davidroid 0:4a3d02667d9f 376 * *
Davidroid 0:4a3d02667d9f 377 * Example: *
Davidroid 0:4a3d02667d9f 378 * + mbed: *
Davidroid 0:4a3d02667d9f 379 * DigitalOut address; *
Davidroid 0:4a3d02667d9f 380 * DevI2C &dev_i2c; *
Davidroid 0:4a3d02667d9f 381 *------------------------------------------------------------------------*/
Davidroid 0:4a3d02667d9f 382
Davidroid 0:4a3d02667d9f 383 /* ACTION 12 -------------------------------------------------------------*
Davidroid 0:4a3d02667d9f 384 * Declare here identity related variables, if needed. *
Davidroid 0:4a3d02667d9f 385 * Note that there should be only a unique identifier for each component, *
Davidroid 0:4a3d02667d9f 386 * which should be the "who_am_i" parameter. *
Davidroid 0:4a3d02667d9f 387 *------------------------------------------------------------------------*/
Davidroid 0:4a3d02667d9f 388
Davidroid 0:4a3d02667d9f 389 /* ACTION 13 -------------------------------------------------------------*
Davidroid 0:4a3d02667d9f 390 * Declare here the component's static and non-static data, one variable *
Davidroid 0:4a3d02667d9f 391 * per line. *
Davidroid 0:4a3d02667d9f 392 * *
Davidroid 0:4a3d02667d9f 393 * Example: *
Davidroid 0:4a3d02667d9f 394 * float measure; *
Davidroid 0:4a3d02667d9f 395 * int instance_id; *
Davidroid 0:4a3d02667d9f 396 * static int number_of_instances; *
Davidroid 0:4a3d02667d9f 397 *------------------------------------------------------------------------*/
Davidroid 0:4a3d02667d9f 398 };
Davidroid 0:4a3d02667d9f 399
Davidroid 0:4a3d02667d9f 400 #endif // __LED6001_CLASS_H
Davidroid 0:4a3d02667d9f 401
Davidroid 0:4a3d02667d9f 402 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/