#line 1 "Src\BulbId.c" /0 #line 1 "Src\BulbId.h" /0 #line 1 "Src\BulbId_def.h" /0 #line 1 ".\Task\stdint.h" /0 typedef signed long int32_t; typedef unsigned long uint32_t; typedef signed char int8_t; typedef unsigned char uint8_t; typedef signed int int16_t; typedef unsigned int uint16_t; #line 3 "Src\BulbId_def.h" /0 enum MiLightFUT089Command { FUT089_ON = 0x01, FUT089_OFF = 0x01, FUT089_COLOR = 0x02, FUT089_BRIGHTNESS = 0x05, FUT089_MODE = 0x06, FUT089_KELVIN = 0x07, FUT089_SATURATION = 0x07 }; enum MiLightFUT089Arguments { FUT089_MODE_SPEED_UP = 0x12, FUT089_MODE_SPEED_DOWN = 0x13, FUT089_WHITE_MODE = 0x14 }; enum MiLightRemoteType { REMOTE_TYPE_UNKNOWN = 255, REMOTE_TYPE_RGBW = 0, REMOTE_TYPE_CCT = 1, REMOTE_TYPE_RGB_CCT = 2, REMOTE_TYPE_RGB = 3, REMOTE_TYPE_FUT089 = 4, REMOTE_TYPE_FUT091 = 5, REMOTE_TYPE_FUT020 = 6 }; enum BulbMode { BULB_MODE_WHITE, BULB_MODE_COLOR, BULB_MODE_SCENE, BULB_MODE_NIGHT }; enum IncDIR{ INCREASE = 1, DECREASE = -1U }; enum eCommands { UNPAIR , PAIR , SET_WHITE , NIGHT_MODE , LEVEL_UP , LEVEL_DOWN , TEMPERATURE_UP , TEMPERATURE_DOWN, NEXT_MODE , PREVIOUS_MODE , MODE_SPEED_DOWN , MODE_SPEED_UP , TOGGLE , TRANSITION }; enum LEDState { OFF = 0, ON }; struct Result { uint8_t button_id ; uint8_t argument ; uint8_t STATE ; uint8_t STATUS ; uint8_t BRIGHTNESS ; uint8_t LEVEL ; uint8_t HUE ; uint8_t SATURATION ; uint8_t COLOR ; uint8_t MODE ; uint8_t KELVIN ; uint8_t TEMPERATURE ; uint8_t COLOR_TEMP ; uint8_t BULB_MODE ; uint8_t COMPUTED_COLOR ; uint8_t EFFECT ; uint8_t DEVICE_ID ; uint8_t GROUP_ID ; uint8_t DEVICE_TYPE ; uint8_t OH_COLOR ; uint8_t HEX_COLOR ; uint8_t COMMAND ; uint8_t COMMANDS ; uint8_t COLOR_MODE ; }; struct BulbId { enum MiLightRemoteType deviceType; uint8_t groupId; uint16_t deviceId; uint16_t PWM_Value[5]; uint8_t bENPWM :1; uint8_t bInit :1; uint8_t repeatCnt; struct Result result; }; #line 4 "Src\BulbId.h" /0 #line 1 ".\Task\cfg\al_helper.h" /0 #line 1 ".\Task\stdint.h" /0 #line 2 ".\Task\stdint.h" /1 #line 11 ".\Task\cfg\al_helper.h" /0 #line 11 ".\Task\cfg\al_helper.h" /0 #line 14 ".\Task\cfg\al_helper.h" /1 #line 16 ".\Task\cfg\al_helper.h" /0 enum { false = 0, true =!false }; #line 41 ".\Task\cfg\al_helper.h" /1 #line 43 ".\Task\cfg\al_helper.h" /0 #line 5 "Src\BulbId.h" /0 #line 1 ".\Task\pt_thread\pt_header.h" /0 #line 1 "\1.Project\git\SinWave\Task\pt_thread\pt_timer.h" /0 #line 1 "\1.Project\git\SinWave\Task\pt_thread\pt.h" /0 #line 1 "\1.Project\git\SinWave\Task\pt_thread\lc.h" /0 #line 6 "\1.Project\git\SinWave\Task\pt_thread\lc.h" /1 #line 8 "\1.Project\git\SinWave\Task\pt_thread\lc.h" /0 #line 1 "\1.Project\git\SinWave\Task\pt_thread\lc-switch.h" /0 typedef unsigned short lc_t; #line 8 "\1.Project\git\SinWave\Task\pt_thread\lc.h" /0 #line 5 "\1.Project\git\SinWave\Task\pt_thread\pt.h" /0 struct pt { lc_t lc; }; #line 3 "\1.Project\git\SinWave\Task\pt_thread\pt_timer.h" /0 struct timer { unsigned long start; unsigned long interval; }; void timer_set(struct timer *t, unsigned long interval); unsigned char timer_expired(struct timer *t); void delay_ms(unsigned long t_ms); void Delay10us(void); void delay_us(unsigned int t); #line 4 ".\Task\pt_thread\pt_header.h" /0 #line 1 "\1.Project\git\SinWave\Task\pt_thread\pt-sem.h" /0 #line 1 "\1.Project\git\SinWave\Task\pt_thread\pt.h" /0 #line 3 "\1.Project\git\SinWave\Task\pt_thread\pt.h" /1 #line 72 "\1.Project\git\SinWave\Task\pt_thread\pt-sem.h" /0 #line 72 "\1.Project\git\SinWave\Task\pt_thread\pt-sem.h" /0 struct pt_sem { unsigned int count; }; #line 5 ".\Task\pt_thread\pt_header.h" /0 #line 6 "Src\BulbId.h" /0 void SetBulbInfo(uint8_t *pBulbInfo,uint8_t len1); void InitOrUninit(void* p); void waitForInitOrUnInit(void); int8_t TaskBlinLed(struct pt * pt1 ) ; #line 17 "Src\BulbId.h" /1 #line 19 "Src\BulbId.h" /0 #line 1 "Src\BulbId.c" /0 #line 2 "Src\BulbId.c" /0 #line 1 "Src\PWM.h" /0 #line 1 ".\Task\stdint.h" /0 #line 2 ".\Task\stdint.h" /1 #line 3 "Src\PWM.h" /0 #line 3 "Src\PWM.h" /0 #line 1 ".\Task\cfg\al_helper.h" /0 #line 9 ".\Task\cfg\al_helper.h" /1 #line 45 ".\Task\cfg\al_helper.h" /0 #line 4 "Src\PWM.h" /0 enum ePWM_INDEX { PWM_R = 0, PWM_G, PWM_B, PWM_C, PWM_W }; void SetPWMInfo(uint16_t *pPwmInfo,uint8_t len1) ; void InitPWM(void); void SetPWMDuty(unsigned char channel,unsigned int duty); void StartBlinkLED(uint8_t cnt); #line 3 "Src\BulbId.c" /0 #line 1 "d:\Keil\C51\Inc\string.h" /0 typedef unsigned int size_t; #pragma SAVE #pragma REGPARMS extern char *strcat (char *s1, const char *s2); extern char *strncat (char *s1, const char *s2, size_t n); extern char strcmp (const char *s1, const char *s2); extern char strncmp (const char *s1, const char *s2, size_t n); extern char *strcpy (char *s1, const char *s2); extern char *strncpy (char *s1, const char *s2, size_t n); extern size_t strlen (const char *); extern char *strchr (const char *s, char c); extern int strpos (const char *s, char c); extern char *strrchr (const char *s, char c); extern int strrpos (const char *s, char c); extern size_t strspn (const char *s, const char *set); extern size_t strcspn (const char *s, const char *set); extern char *strpbrk (const char *s, const char *set); extern char *strrpbrk(const char *s, const char *set); extern char *strstr (const char *s, const char *sub); extern char *strtok (char *str, const char *set); extern char memcmp (const void *s1, const void *s2, size_t n); extern void *memcpy (void *s1, const void *s2, size_t n); extern void *memchr (const void *s, char val, size_t n); extern void *memccpy (void *s1, const void *s2, char val, size_t n); extern void *memmove (void *s1, const void *s2, size_t n); extern void *memset (void *s, char val, size_t n); #pragma RESTORE #line 4 "Src\BulbId.c" /0 #line 1 "d:\Keil\C51\Inc\intrins.h" /0 #pragma SAVE #line 15 "d:\Keil\C51\Inc\intrins.h" /1 #line 18 "d:\Keil\C51\Inc\intrins.h" /0 extern void _nop_ (void); extern bit _testbit_ (bit); extern unsigned char _cror_ (unsigned char, unsigned char); extern unsigned int _iror_ (unsigned int, unsigned char); extern unsigned long _lror_ (unsigned long, unsigned char); extern unsigned char _crol_ (unsigned char, unsigned char); extern unsigned int _irol_ (unsigned int, unsigned char); extern unsigned long _lrol_ (unsigned long, unsigned char); extern unsigned char _chkfloat_(float); #line 29 "d:\Keil\C51\Inc\intrins.h" /1 #line 32 "d:\Keil\C51\Inc\intrins.h" /0 extern void _push_ (unsigned char _sfr); extern void _pop_ (unsigned char _sfr); #pragma RESTORE #line 5 "Src\BulbId.c" /0 #line 1 "d:\Keil\C51\Inc\math.h" /0 #line 14 "d:\Keil\C51\Inc\math.h" /1 #line 28 "d:\Keil\C51\Inc\math.h" /0 #pragma SAVE #pragma REGPARMS extern char cabs (char val); extern int abs (int val); extern long labs (long val); extern float fabs (float val); extern float sqrt (float val); extern float exp (float val); extern float log (float val); extern float log10 (float val); extern float sin (float val); extern float cos (float val); extern float tan (float val); extern float asin (float val); extern float acos (float val); extern float atan (float val); extern float sinh (float val); extern float cosh (float val); extern float tanh (float val); extern float atan2 (float y, float x); extern float ceil (float val); extern float floor (float val); extern float modf (float val, float *n); extern float fmod (float x, float y); extern float pow (float x, float y); #line 60 "d:\Keil\C51\Inc\math.h" /1 #line 63 "d:\Keil\C51\Inc\math.h" /0 #pragma RESTORE #line 6 "Src\BulbId.c" /0 #line 1 ".\Task\task.h" /0 #line 1 "\1.Project\git\SinWave\Task\cfg/task_header.h" /0 #line 1 ".\Task\cpu_port\S92F8003A\task_hal.h" /0 #line 1 ".\Task\stdint.h" /0 #line 2 ".\Task\stdint.h" /1 #line 5 ".\Task\cpu_port\S92F8003A\task_hal.h" /0 #line 5 ".\Task\cpu_port\S92F8003A\task_hal.h" /0 #line 1 "d:\Keil\C51\Inc\intrins.h" /0 #line 10 "d:\Keil\C51\Inc\intrins.h" /1 #line 40 "d:\Keil\C51\Inc\intrins.h" /0 #line 6 ".\Task\cpu_port\S92F8003A\task_hal.h" /0 #line 1 "\1.Project\git\SinWave\Task\cpu_port\S92F8003A\task_hal_cfg.h" /0 #line 1 ".\SC92F8003_Lib\Inc\SC92F8003.H" /0 #line 1 "\1.Project\git\SinWave\SC92F8003_Lib\Inc\SC92F8003_C.h" /0 sfr ACC = 0xE0; sfr B = 0xF0; sfr PSW = 0xD0; sfr DPH = 0x83; sfr DPL = 0x82; sfr SP = 0x81; sfr PCON = 0x87; sfr IP1 = 0XB9; sfr IP = 0xB8; sfr IE = 0xA8; sfr IE1 = 0XA9; sfr P2PH = 0xA2; sfr P2CON = 0xA1; sfr P2 = 0xA0; sfr P1PH = 0x92; sfr P1CON = 0x91; sfr P1 = 0x90; sfr P0PH = 0x9B; sfr P0CON = 0x9A; sfr P0 = 0x80; sfr TMCON = 0x8E; sfr TH1 = 0x8D; sfr TH0 = 0x8C; sfr TL1 = 0x8B; sfr TL0 = 0x8A; sfr TMOD = 0x89; sfr TCON = 0x88; sfr T2CON = 0xC8; sfr T2MOD = 0xC9; sfr RCAP2L = 0xCA; sfr RCAP2H = 0xCB; sfr TL2 = 0xCC; sfr TH2 = 0xCD; sfr ADCCFG1 = 0xAA; sfr ADCCFG0 = 0xAB; sfr ADCCON = 0XAD; sfr ADCVL = 0xAE; sfr ADCVH = 0xAF; sfr PWMCFG = 0xD1; sfr PWMCON0 = 0xD2; sfr PWMPRD = 0xD3; sfr PWMDTYA = 0xD4; sfr PWMDTY0 = 0xD5; sfr PWMDTY1 = 0xD6; sfr PWMDTY2 = 0xD7; sfr PWMCON1 = 0xDA; sfr PWMDTYB = 0xDB; sfr PWMDTY3 = 0xDC; sfr PWMDTY4 = 0xDD; sfr PWMDTY5 = 0xDE; sfr PWMDTY6 = 0xDF; sfr BTMCON = 0XCE; sfr WDTCON = 0xCF; sfr OTCON = 0X8F; sfr INT0F = 0XBA; sfr INT0R = 0XBB; sfr INT1F = 0XBC; sfr INT1R = 0XBD; sfr INT2F = 0XC6; sfr INT2R = 0XC7; sfr IAPCTL = 0xF6; sfr IAPDAT = 0xF5; sfr IAPADE = 0xF4; sfr IAPADH = 0xF3; sfr IAPADL = 0xF2; sfr IAPKEY = 0xF1; sfr SCON = 0X98; sfr SBUF = 0X99; sfr SSCON0 = 0X9D; sfr SSCON1 = 0X9E; sfr SSCON2 = 0X95; sfr SSDAT = 0X9F; sfr OPINX = 0XFE; sfr OPREG = 0XFF; sfr CHKSUML = 0XFC; sfr CHKSUMH = 0XFD; sfr OPERCON = 0xEF; sbit CY = PSW^7; sbit AC = PSW^6; sbit F0 = PSW^5; sbit RS1 = PSW^4; sbit RS0 = PSW^3; sbit OV = PSW^2; sbit F1 = PSW^1; sbit P = PSW^0; sbit TF2 = T2CON^7; sbit EXF2 = T2CON^6; sbit RCLK = T2CON^5; sbit TCLK = T2CON^4; sbit EXEN2 = T2CON^3; sbit TR2 = T2CON^2; sbit T2 = T2CON^1; sbit CP = T2CON^0; sbit IPADC = IP^6; sbit IPT2 = IP^5; sbit IPUART = IP^4; sbit IPT1 = IP^3; sbit IPINT1 = IP^2; sbit IPT0 = IP^1; sbit IPINT0 = IP^0; sbit EA = IE^7; sbit EADC = IE^6; sbit ET2 = IE^5; sbit EUART = IE^4; sbit ET1 = IE^3; sbit EINT1 = IE^2; sbit ET0 = IE^1; sbit EINT0 = IE^0; sbit TF1 = TCON^7; sbit TR1 = TCON^6; sbit TF0 = TCON^5; sbit TR0 = TCON^4; sbit SM0 = SCON^7; sbit SM1 = SCON^6; sbit SM2 = SCON^5; sbit REN = SCON^4; sbit TB8 = SCON^3; sbit RB8 = SCON^2; sbit TI = SCON^1; sbit RI = SCON^0; sbit P01 = P0^1; sbit P00 = P0^0; sbit P17 = P1^7; sbit P16 = P1^6; sbit P15 = P1^5; sbit P14 = P1^4; sbit P13 = P1^3; sbit P12 = P1^2; sbit P11 = P1^1; sbit P10 = P1^0; sbit P27 = P2^7; sbit P26 = P2^6; sbit P25 = P2^5; sbit P24 = P2^4; sbit P23 = P2^3; sbit P22 = P2^2; sbit P21 = P2^1; sbit P20 = P2^0; #line 4 ".\SC92F8003_Lib\Inc\SC92F8003.H" /0 #line 1 ".\Task\stdint.h" /0 #line 2 ".\Task\stdint.h" /1 #line 5 ".\SC92F8003_Lib\Inc\SC92F8003.H" /0 #line 5 ".\SC92F8003_Lib\Inc\SC92F8003.H" /0 typedef enum {FALSE = 0, TRUE = !FALSE} bool; typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus, BitStatus; typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; typedef enum {LOW = 0, HIGH = !LOW} PriorityStatus; #line 5 "\1.Project\git\SinWave\Task\cpu_port\S92F8003A\task_hal_cfg.h" /0 #line 7 ".\Task\cpu_port\S92F8003A\task_hal.h" /0 #line 1 ".\Task\cfg\al_helper.h" /0 #line 9 ".\Task\cfg\al_helper.h" /1 #line 45 ".\Task\cfg\al_helper.h" /0 #line 8 ".\Task\cpu_port\S92F8003A\task_hal.h" /0 #line 1 ".\Task\pt_thread\pt_header.h" /0 #line 2 ".\Task\pt_thread\pt_header.h" /1 #line 8 ".\Task\pt_thread\pt_header.h" /0 #line 9 ".\Task\cpu_port\S92F8003A\task_hal.h" /0 #line 1 "Src\LT89xx_rf.h" /0 #line 1 ".\Task\stdint.h" /0 #line 2 ".\Task\stdint.h" /1 #line 3 "Src\LT89xx_rf.h" /0 #line 3 "Src\LT89xx_rf.h" /0 void InitLT89xxRF(void); uint8_t DecodePackage(uint8_t *pBuf,uint8_t len1); void TaskLT89xx_thread_entry(void *param ); #line 11 ".\Task\cpu_port\S92F8003A\task_hal.h" /0 #line 1 "Src\key.h" /0 #line 1 ".\Task\pt_thread\pt.h" /0 #line 3 ".\Task\pt_thread\pt.h" /1 #line 3 "Src\key.h" /0 #line 3 "Src\key.h" /0 #line 1 ".\Task\cfg\al_helper.h" /0 #line 9 ".\Task\cfg\al_helper.h" /1 #line 45 ".\Task\cfg\al_helper.h" /0 #line 4 "Src\key.h" /0 void InitKey(void); int8_t TaskScanKey(struct pt *pt1 ) ; #line 10 "Src\key.h" /1 #line 12 "Src\key.h" /0 extern xdata unsigned char gcKey; unsigned char GetKey(void) ; #line 12 ".\Task\cpu_port\S92F8003A\task_hal.h" /0 #line 1 "Src\BulbId.h" /0 #line 2 "Src\BulbId.h" /1 #line 13 ".\Task\cpu_port\S92F8003A\task_hal.h" /0 #line 13 ".\Task\cpu_port\S92F8003A\task_hal.h" /0 typedef void (* func )(void); void Idle(void); void Init(void); void InitWdt(void); void InitPort(void); void SysTick_Handler(void); void Task_SysTick_Handler(void); int8_t TaskWDT(struct pt * pt1 ) ; #line 30 ".\Task\cpu_port\S92F8003A\task_hal.h" /1 #line 32 ".\Task\cpu_port\S92F8003A\task_hal.h" /0 int InitTaskStack(void); int InitTimerStack(void); #line 4 "\1.Project\git\SinWave\Task\cfg/task_header.h" /0 #line 4 ".\Task\task.h" /0 #line 1 "\1.Project\git\SinWave\Task\task_def.h" /0 #line 8 "\1.Project\git\SinWave\Task\task_def.h" /1 #line 10 "\1.Project\git\SinWave\Task\task_def.h" /0 #line 15 "\1.Project\git\SinWave\Task\task_def.h" /1 #line 17 "\1.Project\git\SinWave\Task\task_def.h" /0 #line 20 "\1.Project\git\SinWave\Task\task_def.h" /1 #line 22 "\1.Project\git\SinWave\Task\task_def.h" /0 #line 25 "\1.Project\git\SinWave\Task\task_def.h" /1 #line 27 "\1.Project\git\SinWave\Task\task_def.h" /0 #line 5 ".\Task\task.h" /0 #line 8 ".\Task\task.h" /1 #line 10 ".\Task\task.h" /0 enum TASK_ID { TASK_ID_TaskTimer, #line 1 "\1.Project\git\SinWave\Task\cfg/taskid.h" /0 TASK_ID_TaskBlinLed, TASK_ID_TaskWDT, TASK_ID_TaskScanKey, #line 15 ".\Task\task.h" /0 }; enum TASK_MODE { TASK_MODE_ONCE, TASK_MODE_PERIOD }; enum TIMER_MODE { TIMER_MODE_TIMER = 0, TIMER_MODE_ONCEROUTINE, TIMER_MODE_CYCROUTINE }; void InitT0(void); void InitTask(void); void TaskProc(void) ; int8_t ActiveTask(int8_t cTaskID, int32_t lPeriod); int8_t SuspendTask(int8_t cTaskID); void ActiveTaskNow(int8_t cTaskID, int32_t lPeriod); int8_t SetTaskLastTime(int8_t cTaskID,int32_t lLastTime); int8_t StartTimer2(int8_t *TimerID,int8_t cMode,uint32_t lPeriod,void (* routine)(void * Param1),void * Param1); int8_t StartTimer( int8_t cMode,int32_t lPeriod,void (* routine)(void * Param1),void * Param1); int8_t StopTimer ( int8_t * pcTimerNumber ); void StopAllTimer(void); uint32_t get_system_ms(void); void ResetTimer(void); int8_t TaskTimer(struct pt *pt1 ); #line 60 ".\Task\task.h" /1 #line 62 ".\Task\task.h" /0 #line 64 ".\Task\task.h" /1 #line 66 ".\Task\task.h" /0 #line 8 "Src\BulbId.c" /0 xdata uint8_t BulbInfo[2][9]; xdata struct BulbId bulbId; static uint8_t rescale(uint16_t value, uint16_t newMax, float oldMax) { float r = ((value * (newMax / oldMax))+0.5f); return (uint8_t)r; } static uint16_t whiteValToMireds(uint8_t value, uint8_t maxValue) { uint16_t scaled = rescale (value, (370 - 153), maxValue); return 153 + scaled; } uint8_t constrain(uint8_t in,uint8_t min,uint8_t max) { uint8_t r = 0; if(in max) r = max; return r; } uint16_t hiteValToMireds(uint8_t value, uint8_t maxValue) { uint16_t scaled = rescale(value, (370 - 153), maxValue); return 153 + scaled; } static void decodeCmd(uint8_t *pBulbInfo,uint8_t len1) { uint8_t *packetCopy = pBulbInfo; uint8_t command = (packetCopy[4] & 0x7F); uint8_t arg = packetCopy[5]; uint16_t deviceId = (packetCopy[2 ] << 8) | packetCopy[3 ]; uint8_t groupId = packetCopy[7 ]; if(!bulbId.bInit) { bulbId.deviceId = deviceId; bulbId.groupId = groupId; bulbId.deviceType = REMOTE_TYPE_FUT089; } if(bulbId.deviceId==deviceId) { switch(command) { case FUT089_ON: if ((packetCopy[4] & 0x80) == 0x80) { bulbId.result.COMMAND = NIGHT_MODE; } else if (arg == FUT089_MODE_SPEED_DOWN) { bulbId.result.COMMAND = MODE_SPEED_DOWN; } else if (arg == FUT089_MODE_SPEED_UP) { bulbId.result.COMMAND = MODE_SPEED_UP; } else if (arg == FUT089_WHITE_MODE) { bulbId.result.COMMAND = SET_WHITE; } else if (arg <9) { bulbId.result.STATE = ON ; bulbId.groupId = arg; } else if (arg > 10 && arg < 18) { bulbId.result.STATE = OFF ; bulbId.groupId = arg-9; } break; case FUT089_COLOR: { uint8_t rescaledColor = (arg - 0) % 0x100; uint16_t hue = rescale(rescaledColor, 360, 255.0); bulbId.result.HUE = hue; } break; case FUT089_BRIGHTNESS: { uint8_t level = constrain(arg, 0, 100); bulbId.result.BRIGHTNESS = rescale (level, 255, 100); } break; case FUT089_SATURATION: { } break; case FUT089_MODE: bulbId.result.MODE = arg; break; default: break; } bulbId.result.button_id = command; bulbId.result.argument = arg; _nop_(); } (void)(len1); } void SetLEDState(uint8_t state) { code uint16_t pPwmInfo_Low[5] = {0,0,0,0,0}; code uint16_t pPwmInfo_Hi[5] = {0xFF,0xFF,0xFF,0xFF,0xFF}; SetPWMInfo( state?pPwmInfo_Hi:pPwmInfo_Low,sizeof(pPwmInfo_Low)/sizeof(uint16_t)); } xdata uint8_t BlinkLEDCnt = 0; int8_t TaskBlinLed(struct pt *pt1 ) #line 157 "Src\BulbId.c" /1 #line 159 "Src\BulbId.c" /0 { static xdata struct timer input_timer; #line 164 "Src\BulbId.c" /1 #line 167 "Src\BulbId.c" /0 _nop_(); { int8_t PT_YIELD_FLAG = 1; switch((pt1)->lc) { case 0:; (pt1)->lc = 0;; while(1) { timer_set(&input_timer,100); SetLEDState(1); do { (pt1)->lc = 176; case 176:; if(!(timer_expired(&input_timer))) { return 0; } } while(0); _nop_(); timer_set(&input_timer,900); SetLEDState(0); do { (pt1)->lc = 182; case 182:; if(!(timer_expired(&input_timer))) { return 0; } } while(0); _nop_(); BlinkLEDCnt--; if(BlinkLEDCnt==0) { SuspendTask(TASK_ID_TaskBlinLed); do { (pt1)->lc = 0;; return 2; } while(0); } } }; PT_YIELD_FLAG = 0; (void)(PT_YIELD_FLAG); (pt1)->lc = 0;; return 3; }; } void StartBlinkLED(uint8_t cnt) { BlinkLEDCnt = cnt; ActiveTask(TASK_ID_TaskBlinLed,10); } int8_t InitTimer = -1; void InitOrUninit(void* p) { if(InitTimer>=0) { if(bulbId.bInit) { if(bulbId.repeatCnt>=5) { bulbId.bInit = 0; StartBlinkLED(10); bulbId.repeatCnt = 0; StopTimer(&InitTimer); } } else { if(bulbId.repeatCnt>=3) { bulbId.bInit = 1; StartBlinkLED(3); bulbId.repeatCnt = 0; StopTimer(&InitTimer); } } } (void)(p); } void waitForInitOrUnInit(void) { StartTimer2(&InitTimer,TIMER_MODE_TIMER,10000,((void *)0),((void *)0)); _nop_(); } uint8_t GetRepeatCnt(uint8_t curIndex,uint8_t preIndex) { uint8_t bCompMemValue = memcmp(BulbInfo[curIndex],BulbInfo[preIndex],6); uint8_t bCompGrp =(BulbInfo[curIndex][7]==BulbInfo[preIndex][7]); code uint8_t maxv = (1U<<3)-1; if( (bCompMemValue==0)&&bCompGrp ) { if(bulbId.repeatCnt