常见问题FAQ
EW-DTU蓝牙4G网关V1.4版本为什么无法显示4G信号?
针对部分用户反馈EW-DTU固件版本V1.4版本无法显示4G信号的问题,原因是上个版本更新的时候,去掉了"return 0"返回,导致返回错误的结果,从而导致4G的进程走向错误的分支,已经修复。
if(dtu_find_rsp(rsp + sizeof(int), "OK") != -1) { //如果已经连接
printf("[%s]:[%d] recieve:%s\r\n", __FUNCTION__, __LINE__,rsp + sizeof(int));
p_instance->tag = rsp + sizeof(int);
p_instance->tag_len = *(int *)rsp;
}
改为:
if(dtu_find_rsp(rsp + sizeof(int), "OK") != -1) { //如果已经连接
printf("[%s]:[%d] recieve:%s\r\n", __FUNCTION__, __LINE__,rsp + sizeof(int));
p_instance->tag = rsp + sizeof(int);
p_instance->tag_len = *(int *)rsp;
return 0;
}
【2】去掉rc.local里面的内容,然后MT7628.dts增加“ble_moudle_reset”gpio的定义,用来
复位蓝牙模块,ble.c里面增加对“BLE_MOUDLE_EVENT_RESET_MODULE”的处理,在
程序每次重新来过的时候,复位一次蓝牙模块。
修改内容如下:
ble_moudle_Open函数:
if( p_instance == NULL \
|| p_instance->rx_buf == NULL \
|| p_instance->rx_size == 0) {
printf("[%s]:[%d]: param erro & reset port open failure!!\r\n", __FUNCTION__, __LINE__);
return -1;
}
修改为:
if( p_instance == NULL \
|| p_instance->rx_buf == NULL \
|| p_instance->rx_size == 0 \
|| (ble_moudle_reset_port_open(p_instance) == -1)) {
printf("[%s]:[%d]: param erro & reset port open failure!!\r\n", __FUNCTION__, __LINE__);
return -1;
}
增加:
int ble_moudle_reset_port_open(ble_moudle_t *p_instance) {
p_instance->reset_gpio_fd = -1;
if(dtu_file_exist("/sys/devices/gpio-leds/leds/mediatek:green:ble_moudle_reset/brightness") != -1) {
p_instance->reset_gpio_fd = open("/sys/devices/gpio-leds/leds/mediatek:green:ble_moudle_reset/brightness", O_WRONLY);
}
if(-1 == p_instance->reset_gpio_fd) {
return -1;
}
return 0;
}
ble_module_cmd_write函数增加:
case BLE_MOUDLE_EVENT_RESET_MODULE://复位模块
printf("[%s]:[%d]: reset moudle\r\n", __FUNCTION__, __LINE__);
write(p_instance->reset_gpio_fd, "1", 1);
sleep(1);
write(p_instance->reset_gpio_fd, "0", 1);
break;
ble_module_cmd_cmp函数增加:
case BLE_MOUDLE_EVENT_RESET_MODULE://复位模块
if(dtu_find_rsp(rsp + sizeof(int), "www.easywphy.com") != -1) {
printf("[%s]:[%d] recieve:%s\r\n", \
__FUNCTION__, __LINE__,rsp + sizeof(int));
p_instance->tag = rsp + sizeof(int);
p_instance->tag_len = *(int *)rsp;
return 0;
} else {
printf("[%s]:[%d] dtu_find_rsp failure\r\n", __FUNCTION__, __LINE__);
}
break;