| 
														
															@@ -11,12 +11,13 @@ uint8 task_btn_id; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 #define KEY_DEMO_ONCE_TIMER      0x0001 
														 | 
														
														 | 
														
															 #define KEY_DEMO_ONCE_TIMER      0x0001 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 #define KEY_DEMO_CYCLE_TIMER     0x0002 
														 | 
														
														 | 
														
															 #define KEY_DEMO_CYCLE_TIMER     0x0002 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+int last_release_btn_ind = -1; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 void evt_press_release(int i){ 
														 | 
														
														 | 
														
															 void evt_press_release(int i){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	// 短按抬起  
														 | 
														
														 | 
														
															 	// 短按抬起  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	osal_start_timerEx(task_btn_id, EVT_TIME_CHECK, TIME_CHECK_TEMP); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	// 短按抬起后,1000ms 后检测该按键是否为长按,是则 调整色温 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	osal_start_timerEx(task_btn_id, BTN_EVT_TIME_CHECK, TIME_CHECK_TEMP * 3); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	// 500ms 后检测是否 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	last_release_btn_ind = i; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -26,7 +27,17 @@ static void key_press_evt(uint8_t i,key_evt_t key_evt) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	switch(key_evt) 
														 | 
														
														 | 
														
															 	switch(key_evt) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	{ 
														 | 
														
														 | 
														
															 	{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		case HAL_KEY_EVT_PRESS: 
														 | 
														
														 | 
														
															 		case HAL_KEY_EVT_PRESS: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			LOG("key(press down)\n");		 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			LOG("key(press down)\n");	 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			if (last_release_btn_ind != -1) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				if (last_release_btn_ind == i)	 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					// 按下后再次按下 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			}else { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				osal_stop_timeEx(task_btn_id, BTN_EVT_TIME_CHECK) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			 
														 | 
														
														 | 
														
															 			 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 #ifdef HAL_KEY_SUPPORT_LONG_PRESS 
														 | 
														
														 | 
														
															 #ifdef HAL_KEY_SUPPORT_LONG_PRESS 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			osal_start_timerEx(task_btn_id, KEY_DEMO_LONG_PRESS_EVT, HAL_KEY_LONG_PRESS_TIME); 
														 | 
														
														 | 
														
															 			osal_start_timerEx(task_btn_id, KEY_DEMO_LONG_PRESS_EVT, HAL_KEY_LONG_PRESS_TIME); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -35,7 +46,7 @@ static void key_press_evt(uint8_t i,key_evt_t key_evt) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		 
														 | 
														
														 | 
														
															 		 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		case HAL_KEY_EVT_RELEASE: 
														 | 
														
														 | 
														
															 		case HAL_KEY_EVT_RELEASE: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			LOG("key(press release)\n"); 
														 | 
														
														 | 
														
															 			LOG("key(press release)\n"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			// evt_press_release(i); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			evt_press_release(i); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			break; 
														 | 
														
														 | 
														
															 			break; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 #ifdef HAL_KEY_SUPPORT_LONG_PRESS		 
														 | 
														
														 | 
														
															 #ifdef HAL_KEY_SUPPORT_LONG_PRESS		 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -65,7 +76,6 @@ int btn_init(task_id){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         key_state.key[i].idle_level = HAL_HIGH_IDLE; 
														 | 
														
														 | 
														
															         key_state.key[i].idle_level = HAL_HIGH_IDLE; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     // 注册同时按下事件 
														 | 
														
														 | 
														
															     // 注册同时按下事件 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     key_state.task_id = task_btn_id; 
														 | 
														
														 | 
														
															     key_state.task_id = task_btn_id; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	key_state.key_callbank = key_press_evt; 
														 | 
														
														 | 
														
															 	key_state.key_callbank = key_press_evt; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	key_init(); 
														 | 
														
														 | 
														
															 	key_init(); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -76,23 +86,21 @@ int btn_init(task_id){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 // 按钮事件处理函数 
														 | 
														
														 | 
														
															 // 按钮事件处理函数 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 uint16 Key_ProcessEvent( uint8 task_id, uint16 events ) 
														 | 
														
														 | 
														
															 uint16 Key_ProcessEvent( uint8 task_id, uint16 events ) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 { 
														 | 
														
														 | 
														
															 { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	// LOG("Key_ProcessEvent\n"); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	// LOG("key event:%04x\n",events); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	if(task_id != task_btn_id){ 
														 | 
														
														 | 
														
															 	if(task_id != task_btn_id){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		return 0; 
														 | 
														
														 | 
														
															 		return 0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	} 
														 | 
														
														 | 
														
															 	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	if( events & KEY_DEMO_ONCE_TIMER){		 
														 | 
														
														 | 
														
															 	if( events & KEY_DEMO_ONCE_TIMER){		 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		//LOG("once timer\n\n"); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		LOG("once timer\n\n"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		osal_start_timerEx( task_btn_id, KEY_DEMO_ONCE_TIMER , 5000); 
														 | 
														
														 | 
														
															 		osal_start_timerEx( task_btn_id, KEY_DEMO_ONCE_TIMER , 5000); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		return (events ^ KEY_DEMO_ONCE_TIMER); 
														 | 
														
														 | 
														
															 		return (events ^ KEY_DEMO_ONCE_TIMER); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	} 
														 | 
														
														 | 
														
															 	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	if( events & KEY_DEMO_CYCLE_TIMER){		 
														 | 
														
														 | 
														
															 	if( events & KEY_DEMO_CYCLE_TIMER){		 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		//LOG("recycle timer\n\n"); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		LOG("recycle timer\n\n"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		return (events ^ KEY_DEMO_CYCLE_TIMER); 
														 | 
														
														 | 
														
															 		return (events ^ KEY_DEMO_CYCLE_TIMER); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	} 
														 | 
														
														 | 
														
															 	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	 
														 | 
														
														 | 
														
															 	 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	if( events & HAL_KEY_EVENT){	 
														 | 
														
														 | 
														
															 	if( events & HAL_KEY_EVENT){	 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		// LOG("HAL_KEY_EVENT \n");											//do not modify,key will use it 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		LOG("HAL_KEY_EVENT \n");											//do not modify,key will use it 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		for (uint8 i = 0; i < HAL_KEY_NUM; ++i){ 
														 | 
														
														 | 
														
															 		for (uint8 i = 0; i < HAL_KEY_NUM; ++i){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			if ((key_state.temp[i].in_enable == TRUE)|| 
														 | 
														
														 | 
														
															 			if ((key_state.temp[i].in_enable == TRUE)|| 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			(key_state.key[i].state == HAL_STATE_KEY_RELEASE_DEBOUNCE)){ 
														 | 
														
														 | 
														
															 			(key_state.key[i].state == HAL_STATE_KEY_RELEASE_DEBOUNCE)){ 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -105,12 +113,13 @@ uint16 Key_ProcessEvent( uint8 task_id, uint16 events ) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 #ifdef HAL_KEY_SUPPORT_LONG_PRESS	 
														 | 
														
														 | 
														
															 #ifdef HAL_KEY_SUPPORT_LONG_PRESS	 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	if( events & KEY_DEMO_LONG_PRESS_EVT){ 
														 | 
														
														 | 
														
															 	if( events & KEY_DEMO_LONG_PRESS_EVT){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		LOG("KEY_DEMO_LONG_PRESS_EVT\n"); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		for (int i = 0; i < HAL_KEY_NUM; ++i){ 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			if(key_state.key[i].state == HAL_KEY_EVT_PRESS){ 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-				LOG("key:%d gpio:%d	",i,key_state.key[i].pin); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-				LOG("key(long press down)\n"); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		// LOG("KEY_DEMO_LONG_PRESS_EVT\n"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		for (int i = 0; i <= HAL_KEY_NUM; i++){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			// LOG("%d --- state [%d]",i, key_state.key[i].state); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			if(key_state.key[i].state == HAL_KEY_EVT_PRESS) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				osal_start_timerEx(task_btn_id, KEY_DEMO_LONG_PRESS_EVT, HAL_KEY_LONG_PRESS_TIME); 
														 | 
														
														 | 
														
															 				osal_start_timerEx(task_btn_id, KEY_DEMO_LONG_PRESS_EVT, HAL_KEY_LONG_PRESS_TIME); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		} 
														 | 
														
														 | 
														
															 		} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		return (events ^ KEY_DEMO_LONG_PRESS_EVT); 
														 | 
														
														 | 
														
															 		return (events ^ KEY_DEMO_LONG_PRESS_EVT); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	} 
														 | 
														
														 | 
														
															 	} 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -124,4 +133,3 @@ uint16 Key_ProcessEvent( uint8 task_id, uint16 events ) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return 0; 
														 | 
														
														 | 
														
															 	return 0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-} 
														 | 
														
														 | 
														
															 
														 |