void update_led_indicator(unsigned int low_time, unsigned int high_time) { BSP_GPIOSetValue(USER_GPIO_IDX_LED, GPIO_LOW_LEVEL); OSTimeDly(low_time); BSP_GPIOSetValue(USER_GPIO_IDX_LED, GPIO_HIGH_LEVEL); OSTimeDly(high_time); }
void Yeelink_initGPIO(void) { //GPIO09 BSP_GPIOPinMux(USER_GPIO_IDX_LED); /* led indicator */ BSP_GPIOSetDir(USER_GPIO_IDX_LED, 1); /* output */ BSP_GPIOSetValue(USER_GPIO_IDX_LED, 1); /* low level */ //GPIO30 BSP_GPIOPinMux(USER_GPIO_IDX_LED3); /* led indicator */ BSP_GPIOSetDir(USER_GPIO_IDX_LED3, 1); /* output */ BSP_GPIOSetValue(USER_GPIO_IDX_LED3, 1); /* low level */ /* DirectConfig gpio is valied when set to low level */ BSP_GPIOPinMux(USER_GPIO_DIRECTCONFIG); BSP_GPIOSetDir(USER_GPIO_DIRECTCONFIG, GPIO_DIRECTION_INPUT); }
/* * === FUNCTION ====================================================================== * Name: SysIdxLedThread * Description: Output indicator LED based on system status. * Note: * ===================================================================================== */ void SysIdxLedThread(void *arg) { log_info("Create system LED indicator task success.\n"); /* initialize LED indicator gpio */ BSP_GPIOPinMux(USER_GPIO_IDX_LED); /* led indicator */ BSP_GPIOSetDir(USER_GPIO_IDX_LED, 1); /* output */ BSP_GPIOSetValue(USER_GPIO_IDX_LED, 0); /* low level */ while (1) { switch (sys_status.status) { case SYS_STATUS_WIFI_STOP: while (sys_status.status == SYS_STATUS_WIFI_STOP) { BSP_GPIOSetValue(USER_GPIO_IDX_LED, GPIO_LOW_LEVEL); OSTimeDly(200); } break; case SYS_STATUS_WIFI_SOFTAP: update_led_indicator(300, 100); break; case SYS_STATUS_WIFI_DIRECTCONFING: update_led_indicator(20, 20); break; case SYS_STATUS_WIFI_STA_CONNECTED: update_led_indicator(100, 100); break; case SYS_STATUS_WIFI_STA_LOGIN: while (sys_status.status == SYS_STATUS_WIFI_STA_LOGIN) { BSP_GPIOSetValue(USER_GPIO_IDX_LED, GPIO_HIGH_LEVEL); OSTimeDly(200); } break; default: break; } } }
void timer_irq_handle(void) { int i; //if (led_data.status_flag == 1) { /* restart timer1 */ BSP_Timer1Init(10); /* Check red/green/blue/white led if (led_pwm > LED_MIN_BRIGHTNESS &&led_pwm <= LED_MAX_BRIGHTNESS) { if (timer_cnt == pwm &&led_data.timer_cnt != LED_MAX_BRIGHTNESS) { BSP_GPIOSetValue(led_gpio, 0); } else if (timer_cnt == 0) { BSP_GPIOSetValue(led_data.led_data.led_table[i].led_gpio, 1); } }else if(led_pwm == MIN_BRIGHTNESS){ if(led_data.timer_cnt == 0){ BSP_GPIOSetValue(led_gpio, 0); } } }*/ if(PWM_H>0) { BSP_GPIOSetValue(IR_GPIO, 1); PWM_H--; } else if (PWM_L>=0 && PWM_H == 0) { BSP_GPIOSetValue(IR_GPIO, 0); PWM_L--; } timer_cnt++; }