MAX_CARLINK_A270S/MXC_A27-PCB4.5-270T/app/moto/protocol/gpio_protocol.c

248 lines
5.2 KiB
C
Raw Permalink Blame History

#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);
}