1、同步BR28。add 文件传输crc校验心跳包,防止传输大文件校验超时;

2、修正科大讯飞、摄像头测试问题;
This commit is contained in:
huxi
2025-12-15 14:39:25 +08:00
parent 719f612ab5
commit 48416abdf1
67 changed files with 3512 additions and 2958 deletions
@@ -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();
+11 -1
View File
@@ -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);
@@ -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);