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