#include "awtk.h" #include "gpio_protocol.h" #include "board.h" #include "chip.h" void right_led_on(void){ gpio_direction_output(GPIO_LIGHT_R_LED, TRUE); } void right_led_off(void){ gpio_direction_output(GPIO_LIGHT_R_LED, FALSE); } void left_led_on(void){ gpio_direction_output(GPIO_LIGHT_L_LED, TRUE); } void left_led_off(void){ gpio_direction_output(GPIO_LIGHT_L_LED, FALSE); } void yg_led_on(void){ gpio_direction_output(GPIO_LIGHT_YG_LED, TRUE); } void yg_led_off(void){ gpio_direction_output(GPIO_LIGHT_YG_LED, FALSE); } void abs_led_on(void){ gpio_direction_output(GPIO_LIGHT_ABS, TRUE); } void abs_led_off(void){ gpio_direction_output(GPIO_LIGHT_ABS, FALSE); } void oil_led_on(void){ gpio_direction_output(GPIO_LIGHT_OIL, TRUE); } void oil_led_off(void){ gpio_direction_output(GPIO_LIGHT_OIL, FALSE); } void n_led_on(void){ gpio_direction_output(GPIO_LIGHT_N_LED, TRUE); } void n_led_off(void){ gpio_direction_output(GPIO_LIGHT_N_LED, FALSE); } void eng_led_on(void){ gpio_direction_output(GPIO_LIGHT_ENG_LED, TRUE); } void eng_led_off(void){ gpio_direction_output(GPIO_LIGHT_ENG_LED, FALSE); } void vbat_led_on(void){ gpio_direction_output(GPIO_LIGHT_VBAT_LED, TRUE); } void vbat_led_off(void){ gpio_direction_output(GPIO_LIGHT_VBAT_LED, FALSE); } void right_led_switch(uint8_t type){ switch(type){ case 0:right_led_off();break; case 1:right_led_on();break; default:break; } } void left_led_switch(uint8_t type){ switch(type){ case 0:left_led_off();break; case 1:left_led_on();break; default:break; } } void yg_led_switch(uint8_t type){ switch(type){ case 0:yg_led_off();break; case 1: yg_led_on(); break; default:break; } } void abs_led_switch(uint8_t type){ switch(type){ case 0:abs_led_off();break; case 1:abs_led_on();break; default:break; } } void oil_led_switch(uint8_t type){ switch(type){ case 0:oil_led_off();break; case 1:oil_led_on();break; default:break; } } void n_led_switch(uint8_t type){ switch(type){ case 0:n_led_off();break; case 1:n_led_on();break; default:break; } } void vbat_led_switch(uint8_t type){ switch(type){ case 0:vbat_led_off();break; case 1:vbat_led_on();break; default:break; } } void eng_led_switch(uint8_t type){ switch(type){ case 0:eng_led_off();break; case 1:eng_led_on();break; default:break; } } void light_gpio_init(void){ //灯光使能 gpio_direction_output(47, TRUE); //R_LED gpio_direction_output(GPIO_LIGHT_R_LED, TRUE); //YG_LED gpio_direction_output(GPIO_LIGHT_YG_LED, TRUE); //OIL_LED gpio_direction_output(GPIO_LIGHT_OIL, TRUE); //L_LED gpio_direction_output(GPIO_LIGHT_L_LED, TRUE); //N_LED gpio_direction_output(GPIO_LIGHT_N_LED, TRUE); #if DEVICE_MXC_A58 //ABS_LED gpio_direction_output(GPIO_LIGHT_ABS, TRUE); //ENG_LED gpio_direction_output(GPIO_LIGHT_ENG_LED, TRUE); #endif //VBAT_LED gpio_direction_output(GPIO_LIGHT_VBAT_LED, TRUE); gpio_direction_input(GPIO_LIGHT_SET); gpio_direction_input(GPIO_LIGHT_MODE); gpio_timer();//按键 //左右灯光 } void light_off(void){ //R_LED gpio_direction_output(GPIO_LIGHT_R_LED, FALSE); //YG_LED gpio_direction_output(GPIO_LIGHT_YG_LED, FALSE); //OIL_LED gpio_direction_output(GPIO_LIGHT_OIL, FALSE); //L_LED gpio_direction_output(GPIO_LIGHT_L_LED, FALSE); //N_LED gpio_direction_output(GPIO_LIGHT_N_LED, FALSE); #if DEVICE_MXC_A58 //ABS_LED gpio_direction_output(GPIO_LIGHT_ABS, FALSE); //ENG_LED gpio_direction_output(GPIO_LIGHT_ENG_LED, FALSE); #endif //VBAT_LED gpio_direction_output(GPIO_LIGHT_VBAT_LED, FALSE); } uint8_t gpio_state = 0; extern uint8_t complex_call; extern void Set_sys_call_state(uint8_t value); extern void Set_sys_call_key_state(uint8_t value); extern void Set_sys_call_number(char *value); extern void Set_sys_call_renumber(char *value); static void gpio_bt2_handler(void *param) { if(gpio_get_value(BT2_CALL_INT)){ gpio_state = 0; printf("gpio 47 >1 cat1\n"); //if(Get_sys_call_state() == 2) Set_sys_call_state(0); complex_call = 0; Set_sys_call_key_state(0); Set_sys_call_number(0); Set_sys_call_renumber(0); // gpio_direction_output(BT2_CALL_UART_SW, 0);//����ֻ�������� Ӧ��Ϊ1 ����cat1 }else{ printf("gpio 47 >0 bt2\n"); // gpio_direction_output(BT2_CALL_UART_SW, 0); } return; } void BT2_reset(void) { gpio_direction_input(BT2_CALL_INT); gpio_direction_output(BT2_CALL_UART_SW, 0); gpio_irq_request(BT2_CALL_INT,GPIOIRQ_TYPE_EDGE_BOTH, gpio_bt2_handler, NULL); } void BT2_state_error_reset(void){ gpio_direction_output(BT2_CALL_RET, 1); mdelay(100); gpio_direction_output(BT2_CALL_RET, 0); } void cat1_enable(void){ printf("cat1 close .\r\n"); // printf("cat1 open .\r\n"); // gpio_direction_output(CAT_PWTKEY_GPIO, 1); } void CAT1_reset(void) { // gpio_direction_output(CAT1_UART_SW_GPIO, 1); gpio_direction_output(CAT1_RESET_GPIO, 0); gpio_direction_output(CAT_PWTKEY_GPIO, 0); // gpio_direction_output(CAT1_UART_SW_GPIO, 0); }