248 lines
5.2 KiB
C
248 lines
5.2 KiB
C
#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);//<2F><><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ӧ<><D3A6>Ϊ1 <20><><EFBFBD><EFBFBD>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);
|
||
}
|