常見問題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.edgewoodplacebb.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;