| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- /**
- * @file LED_ATY.c
- *
- * @param Project DEVICE_GENERAL_ATY_LIB
- *
- * @author ATY
- *
- * @copyright
- * - Copyright 2017 - 2026 MZ-ATY
- * - This code follows:
- * - MZ-ATY Various Contents Joint Statement -
- * <a href="https://mengze.top/MZ-ATY_VCJS">
- * https://mengze.top/MZ-ATY_VCJS</a>
- * - CC 4.0 BY-NC-SA -
- * <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">
- * https://creativecommons.org/licenses/by-nc-sa/4.0/</a>
- * - Your use will be deemed to have accepted the terms of this statement.
- *
- * @brief functions of LED blink for C platform
- *
- * @version
- * - 1_01_220901 > ATY
- * -# Preliminary version, first Release
- * - 1_02_231229 > ATY
- * -# change struct to dev type
- * - 1_03_240111 > ATY
- * -# add lock
- * - 1_04_251114 > ATY
- * -# remove breath type
- ********************************************************************************
- */
- #ifndef __LED_ATY_C
- #define __LED_ATY_C
- #include "LED_ATY.h"
- #define LED_ATY_TAG "\r\n[LED_ATY] "
- /******************************* For user *************************************/
- /******************************************************************************/
- /**
- * @brief set sysled blink ledBlinkType
- *
- * @param dev device
- * @return uint8_t
- * @note put this function at timer IT callback
- * level H LED off, level L LED on
- * @note 0x01: light on and off cycle
- 0x10: light on and off cycle long time ver
- 0x02: light on blink twice
- 0x20: light off blink twice
- 0x03: light on blink thrice
- 0x30: light off blink thrice
- */
- uint8_t SysLedBlink(struct LED_ATY_Dev* dev){
- static uint8_t ledBlinkLastType = 0;
- __ATY_LOCK(dev);
- if(ledBlinkLastType != dev->ledBlinkType){
- ledBlinkLastType = dev->ledBlinkType;
- dev->ledBlinkStep = 0;
- }
- if(dev->ledBlinkType == 0x00){
- dev->ledBlinkStep = 0;
- dev->ioSet(__ATY_HL_H);
- }
- else if(dev->ledBlinkType == 0x01){
- if(dev->ledBlinkStep == 0){
- dev->ledBlinkStep = 1;
- dev->ioSet(__ATY_HL_L);
- }
- else if(dev->ledBlinkStep != 0){
- dev->ledBlinkStep = 0;
- dev->ioSet(__ATY_HL_H);
- printf_ATY_D("%sSysLed Blink.", LED_ATY_TAG);
- }
- }
- else if(dev->ledBlinkType == 0x10){
- dev->ledBlinkStep++;
- if(dev->ledBlinkStep < 10)
- dev->ioSet(__ATY_HL_L);
- else if(dev->ledBlinkStep >= 10 && dev->ledBlinkStep < 20)
- dev->ioSet(__ATY_HL_H);
- else{
- dev->ledBlinkStep = 0;
- }
- }
- // Type 2 & 3 put at short timer is better, like 100ms
- else if(dev->ledBlinkType == 0x02){
- if(dev->ledBlinkStep == 0){
- dev->ledBlinkStep = 1;
- dev->ioSet(__ATY_HL_L);
- }
- else if(dev->ledBlinkStep == 1){
- dev->ledBlinkStep = 2;
- dev->ioSet(__ATY_HL_H);
- }
- else if(dev->ledBlinkStep == 2){
- dev->ledBlinkStep = 3;
- dev->ioSet(__ATY_HL_L);
- }
- else if(dev->ledBlinkStep == 3){
- dev->ledBlinkStep = 4;
- dev->ioSet(__ATY_HL_H);
- }
- else if((dev->ledBlinkStep >= 4) && (dev->ledBlinkStep < dev->longSteps)){
- dev->ledBlinkStep++;
- }
- else if(dev->ledBlinkStep == dev->longSteps){
- dev->ledBlinkStep = 0;
- printf_ATY_D("%sSysLed Blink.", LED_ATY_TAG);
- }
- }
- else if(dev->ledBlinkType == 0x20){
- if(dev->ledBlinkStep == 0){
- dev->ledBlinkStep = 1;
- dev->ioSet(__ATY_HL_H);
- }
- else if(dev->ledBlinkStep == 1){
- dev->ledBlinkStep = 2;
- dev->ioSet(__ATY_HL_L);
- }
- else if(dev->ledBlinkStep == 2){
- dev->ledBlinkStep = 3;
- dev->ioSet(__ATY_HL_H);
- }
- else if(dev->ledBlinkStep == 3){
- dev->ledBlinkStep = 4;
- dev->ioSet(__ATY_HL_L);
- }
- else if((dev->ledBlinkStep >= 4) && (dev->ledBlinkStep < dev->longSteps)){
- dev->ledBlinkStep++;
- }
- else if(dev->ledBlinkStep == dev->longSteps){
- dev->ledBlinkStep = 0;
- printf_ATY_D("%sSysLed Blink.", LED_ATY_TAG);
- }
- }
- else if(dev->ledBlinkType == 0x03){
- if(dev->ledBlinkStep == 0){
- dev->ledBlinkStep = 1;
- dev->ioSet(__ATY_HL_L);
- }
- else if(dev->ledBlinkStep == 1){
- dev->ledBlinkStep = 2;
- dev->ioSet(__ATY_HL_H);
- }
- else if(dev->ledBlinkStep == 2){
- dev->ledBlinkStep = 3;
- dev->ioSet(__ATY_HL_L);
- }
- else if(dev->ledBlinkStep == 3){
- dev->ledBlinkStep = 4;
- dev->ioSet(__ATY_HL_H);
- }
- else if(dev->ledBlinkStep == 4){
- dev->ledBlinkStep = 5;
- dev->ioSet(__ATY_HL_L);
- }
- else if(dev->ledBlinkStep == 5){
- dev->ledBlinkStep = 6;
- dev->ioSet(__ATY_HL_H);
- }
- else if((dev->ledBlinkStep >= 6) && (dev->ledBlinkStep < dev->longSteps)){
- dev->ledBlinkStep++;
- }
- else if(dev->ledBlinkStep == dev->longSteps){
- dev->ledBlinkStep = 0;
- printf_ATY_D("%sSysLed Blink.", LED_ATY_TAG);
- }
- }
- else if(dev->ledBlinkType == 0x30){
- if(dev->ledBlinkStep == 0){
- dev->ledBlinkStep = 1;
- dev->ioSet(__ATY_HL_H);
- }
- else if(dev->ledBlinkStep == 1){
- dev->ledBlinkStep = 2;
- dev->ioSet(__ATY_HL_L);
- }
- else if(dev->ledBlinkStep == 2){
- dev->ledBlinkStep = 3;
- dev->ioSet(__ATY_HL_H);
- }
- else if(dev->ledBlinkStep == 3){
- dev->ledBlinkStep = 4;
- dev->ioSet(__ATY_HL_L);
- }
- else if(dev->ledBlinkStep == 4){
- dev->ledBlinkStep = 5;
- dev->ioSet(__ATY_HL_H);
- }
- else if(dev->ledBlinkStep == 5){
- dev->ledBlinkStep = 6;
- dev->ioSet(__ATY_HL_L);
- }
- else if((dev->ledBlinkStep >= 6) && (dev->ledBlinkStep < dev->longSteps)){
- dev->ledBlinkStep++;
- }
- else if(dev->ledBlinkStep == dev->longSteps){
- dev->ledBlinkStep = 0;
- printf_ATY_D("%sSysLed Blink.", LED_ATY_TAG);
- }
- }
- __ATY_UNLOCK(dev);
- return 0;
- }
- #endif /* __LED_ATY_C */
- /************************************ etc *************************************/
- /* init */
- // Sysled ----------------------------------------------------------------------
- // #include "LED_ATY.h"
- // void SysLed_1_IO_SET(uint8_t level){
- // if(level)
- // HAL_GPIO_WritePin(SYSLED_GPIO_Port, SYSLED_Pin, GPIO_PIN_SET);
- // else
- // HAL_GPIO_WritePin(SYSLED_GPIO_Port, SYSLED_Pin, GPIO_PIN_RESET);
- // }
- // struct LED_ATY_Dev LED_ATY_t_1 = {
- // .ledBlinkStep = 0,
- // .ledBlinkType = 0x20,
- // .ioSet = SysLed_1_IO_SET,
- // .longSteps = 20,
- // .lock = __ATY_UNLOCKED
- // };
- /* use */
- // SysLedBlink(&LED_ATY_t_1); // put at 1ms cycle
- // LED_ATY_t_1.ledBlinkType = 0x02;
- /******************************************************************************/
- /******************************** End Of File *********************************/
|