1、同步BR28。add 文件传输crc校验心跳包,防止传输大文件校验超时;
2、修正科大讯飞、摄像头测试问题;
This commit is contained in:
@@ -61,7 +61,7 @@ struct auth_info_t {
|
||||
struct tm pt;
|
||||
};
|
||||
|
||||
extern void ntp_client_get_time(const char *host);
|
||||
extern int ntp_client_get_time(const char *host);
|
||||
extern size_t strftime_2(char *ptr, size_t maxsize, const char *format, const struct tm *timeptr);
|
||||
|
||||
/* void *_calloc_r(struct _reent *r, size_t a, size_t b) */
|
||||
@@ -134,12 +134,11 @@ char *ifly_authentication(char *host_name, char *host, char *path, int retry)
|
||||
__retry:
|
||||
//获取网络时间
|
||||
/* ntp_client_get_time("s2c.time.edu.cn"); */
|
||||
ntp_client_get_time("ntp.ntsc.ac.cn");
|
||||
/* int ntp = ntp_client_get_time("s2c.time.edu.cn"); */
|
||||
/* if (ntp == -1) { */
|
||||
/* log_error("get ntp error!!\n"); */
|
||||
/* return NULL; */
|
||||
/* } */
|
||||
int ntp = ntp_client_get_time("s2c.time.edu.cn");
|
||||
if (ntp == -1) {
|
||||
log_error("get ntp error!!\n");
|
||||
return NULL;
|
||||
}
|
||||
int week = ifly_get_sys_time(&(auth->curtime));
|
||||
auth->pt.tm_year = auth->curtime.year - 1900;
|
||||
auth->pt.tm_mon = auth->curtime.month - 1;
|
||||
|
||||
@@ -186,7 +186,7 @@ char *ifly_tts_format_text_data(void)
|
||||
cJSON *cjson_data = NULL;
|
||||
|
||||
char *buf = net_iflytek_malloc(MAX_SPARKDESK_LEN * 4); // 因base64编码比字符串要大,根据需要加大buf
|
||||
mbedtls_base64_encode((unsigned char *)buf, MAX_SPARKDESK_LEN, (size_t *)&out_len, (unsigned char *)tts_info.param->text_res, strlen(tts_info.param->text_res) + 1);
|
||||
mbedtls_base64_encode((unsigned char *)buf, MAX_SPARKDESK_LEN * 4, (size_t *)&out_len, (unsigned char *)tts_info.param->text_res, strlen(tts_info.param->text_res) + 1);
|
||||
//定义最长回答
|
||||
|
||||
cjson_test = cJSON_CreateObject();
|
||||
|
||||
@@ -178,6 +178,16 @@ static void ifly_vad_recv_cb(u8 *j_str, u32 len, u8 type)
|
||||
}
|
||||
vad_info.status = IFLY_VAD_STATUS_RECV;
|
||||
|
||||
cJSON *cjson_code = cJSON_GetObjectItem(cjson_root, "code");
|
||||
if (cjson_code && cjson_code->valueint != 0) {
|
||||
log_error("code error...%d\n", cjson_code->valueint);
|
||||
if (vad_info.status <= IFLY_VAD_STATUS_RECV_END) {
|
||||
vad_info.status = IFLY_VAD_STATUS_RECV_ERROR;
|
||||
}
|
||||
vad_info.param->event_cb(IFLY_VAD_EVT_NETWORK_RECV_ERROR, vad_info.param);
|
||||
return;
|
||||
}
|
||||
|
||||
cJSON *cjson_data = cJSON_GetObjectItem(cjson_root, "data");
|
||||
cJSON *cjson_status = cJSON_GetObjectItem(cjson_data, "status");
|
||||
cJSON *cjson_result = cJSON_GetObjectItem(cjson_data, "result");
|
||||
@@ -213,7 +223,7 @@ static void ifly_vad_recv_cb(u8 *j_str, u32 len, u8 type)
|
||||
|
||||
log_info("final res:%s\n", vad_info.param->vad_res);
|
||||
|
||||
if (cjson_status->valueint == STATUS_LAST_FRAME) {
|
||||
if (cjson_status && cjson_status->valueint == STATUS_LAST_FRAME) {
|
||||
vad_info.status = IFLY_VAD_STATUS_RECV_END;
|
||||
vad_info.recv_finish = 1;
|
||||
vad_info.param->event_cb(IFLY_VAD_EVT_RECV_OK, vad_info.param);
|
||||
|
||||
+26
-1
@@ -97,7 +97,31 @@ static void file_transfer_download_file_check_continue(void)
|
||||
msg[2] = 0;
|
||||
os_taskq_post_type("app_core", Q_CALLBACK, 3, msg);
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------------------*/
|
||||
/**
|
||||
* @brief file_transfer_verify_heartbeat_packet 心跳包
|
||||
*/
|
||||
/* ------------------------------------------------------------------------------------*/
|
||||
static void file_transfer_verify_heartbeat_packet(void)
|
||||
{
|
||||
// 每1M发送一次心跳包,保证不会因为校验时间过长触发超时
|
||||
static u8 heartbeat_cnt = 0;
|
||||
if (ftp_d) {
|
||||
if (ftp_d->start_timerout) {
|
||||
sys_timer_re_run(ftp_d->start_timerout);
|
||||
}
|
||||
u8 cur_cnt = (ftp_d->check.counter * sizeof(ftp_d->win)) / (1 * 1024 * 1024);
|
||||
u16 len = 0;
|
||||
u32 offset = 0;
|
||||
if (heartbeat_cnt != cur_cnt) {
|
||||
ftp_d->win[0] = 0;
|
||||
WRITE_BIG_U16(ftp_d->win + 1, len);
|
||||
WRITE_BIG_U32(ftp_d->win + 3, offset);
|
||||
JL_CMD_send(JL_OPCODE_FILE_TRANSFER, ftp_d->win, 7, 0, 0, NULL);
|
||||
heartbeat_cnt = cur_cnt;
|
||||
}
|
||||
}
|
||||
}
|
||||
//*----------------------------------------------------------------------------*/
|
||||
/**@brief 文件数据块crc校验
|
||||
@param
|
||||
@@ -119,6 +143,7 @@ static void __file_transfer_download_file_check_caculate(void *priv)
|
||||
cnt = ftp_d->check.counter;
|
||||
}
|
||||
log_info("cnt = %d, check.counter = %d, crc_tmp = %x\n", cnt, ftp_d->check.counter, ftp_d->check.crc_tmp);
|
||||
file_transfer_verify_heartbeat_packet();
|
||||
for (int i = 0; i < cnt; i++) {
|
||||
fread(ftp_d->win, sizeof(ftp_d->win), 1, ftp_d->file);
|
||||
ftp_d->check.crc_tmp = CRC16_with_initval(ftp_d->win, sizeof(ftp_d->win), ftp_d->check.crc_tmp);
|
||||
|
||||
Reference in New Issue
Block a user