freertos: version release v4.1.4

[Audio][Feature]Remove log for VQE config function
[Audio][Feature]Add VQE config function

Change-Id: Ib0c06db87375b17429bb125fbcee73018bdb6910
This commit is contained in:
forum_service
2023-10-13 09:43:36 +08:00
committed by carbon
parent 446ba0b5f8
commit bf2d6014f8
10 changed files with 112 additions and 67 deletions

View File

@ -318,6 +318,8 @@ typedef struct _ISP_AWB_RESULT_S {
CVI_U8 u8Saturation[4]; CVI_U8 u8Saturation[4];
ISP_AWB_RAW_STAT_ATTR_S stRawStatAttr; ISP_AWB_RAW_STAT_ATTR_S stRawStatAttr;
CVI_BOOL bStable; CVI_BOOL bStable;
CVI_U8 u8AdjCASaturation;
CVI_U8 u8AdjCASatLuma;
} ISP_AWB_RESULT_S; } ISP_AWB_RESULT_S;
typedef struct _ISP_AWB_STAT_1_S { typedef struct _ISP_AWB_STAT_1_S {

View File

@ -869,7 +869,7 @@ typedef struct _ISP_AWB_EXTRA_LIGHTSOURCE_INFO_S {
CVI_U8 u8Radius; /*RW; Range:[0x1, 0xFF]*/ CVI_U8 u8Radius; /*RW; Range:[0x1, 0xFF]*/
} ISP_AWB_EXTRA_LIGHTSOURCE_INFO_S; } ISP_AWB_EXTRA_LIGHTSOURCE_INFO_S;
struct ST_ISP_AWB_INTERFERNCE_S { struct ST_ISP_AWB_INTERFERENCE_S {
CVI_U8 u8Mode; /*RW; Range:[0x0, 0x1]*/ CVI_U8 u8Mode; /*RW; Range:[0x0, 0x1]*/
CVI_U8 u8Limit; /*RW; Range:[0x32, 0x64]*/ CVI_U8 u8Limit; /*RW; Range:[0x32, 0x64]*/
CVI_U8 u8Radius; /*RW; Range:[0x1, 0xFF]*/ CVI_U8 u8Radius; /*RW; Range:[0x1, 0xFF]*/
@ -976,12 +976,15 @@ typedef struct _ISP_AWB_ATTR_EX_S {
CVI_BOOL bMultiLightSourceEn; CVI_BOOL bMultiLightSourceEn;
ISP_AWB_MULTI_LS_TYPE_E enMultiLSType; ISP_AWB_MULTI_LS_TYPE_E enMultiLSType;
CVI_U16 u16MultiLSScaler; /*RW; Range:[0x0, 0x100]*/ CVI_U16 u16MultiLSScaler; /*RW; Range:[0x0, 0x100]*/
CVI_U16 u16MultiLSThr; /*RW; Range:[0x20, 0x200]*/
CVI_U16 u16CALumaDiff; /*RW; Range:[0x0, 0x100]*/
CVI_U16 u16CAAdjustRatio; /*RW; Range:[0x0, 0x10]*/
CVI_U16 au16MultiCTBin[AWB_CT_BIN_NUM]; /*RW; Range:[0x0, 0xFFFF]*/ CVI_U16 au16MultiCTBin[AWB_CT_BIN_NUM]; /*RW; Range:[0x0, 0xFFFF]*/
CVI_U16 au16MultiCTWt[AWB_CT_BIN_NUM]; /*RW; Range:[0x0, 0x400]*/ CVI_U16 au16MultiCTWt[AWB_CT_BIN_NUM]; /*RW; Range:[0x0, 0x400]*/
CVI_BOOL bFineTunEn; CVI_BOOL bFineTunEn;
CVI_U8 u8FineTunStrength; CVI_U8 u8FineTunStrength;
//AWB Algo 6 //AWB Algo 6
struct ST_ISP_AWB_INTERFERNCE_S stInterfernce; struct ST_ISP_AWB_INTERFERENCE_S stInterference;
struct ST_ISP_AWB_SKIN_S stSkin; struct ST_ISP_AWB_SKIN_S stSkin;
struct ST_ISP_AWB_SKY_S stSky; struct ST_ISP_AWB_SKY_S stSky;
struct ST_ISP_AWB_GRASS_S stGrass; struct ST_ISP_AWB_GRASS_S stGrass;
@ -989,7 +992,6 @@ typedef struct _ISP_AWB_ATTR_EX_S {
struct ST_ISP_AWB_SHIFT_LV_S stShiftLv; struct ST_ISP_AWB_SHIFT_LV_S stShiftLv;
struct ST_ISP_AWB_REGION_S stRegion; struct ST_ISP_AWB_REGION_S stRegion;
CVI_U8 adjBgainMode; CVI_U8 adjBgainMode;
CVI_U8 reserve[239];
} ISP_AWB_ATTR_EX_S;//keep size to 512 bytes } ISP_AWB_ATTR_EX_S;//keep size to 512 bytes
typedef struct _ISP_MWB_ATTR_S { typedef struct _ISP_MWB_ATTR_S {

View File

@ -5,6 +5,7 @@
void *CviAud_Algo_Init(int s32FunctMask, void *param_info); void *CviAud_Algo_Init(int s32FunctMask, void *param_info);
int CviAud_Algo_Process(void *pHandle, uint64_t mic_in, int CviAud_Algo_Process(void *pHandle, uint64_t mic_in,
uint64_t ref_in, uint64_t out, int iLength); uint64_t ref_in, uint64_t out, int iLength);
int CviAud_Algo_Fun_Config(void *pHandle, int u32OpenMask);
void CviAud_Algo_DeInit(void *pHandle); void CviAud_Algo_DeInit(void *pHandle);
void CviAud_Algo_GetVersion(char *pstrVersion); void CviAud_Algo_GetVersion(char *pstrVersion);
#ifdef NEXT_SSP_ALGO #ifdef NEXT_SSP_ALGO

View File

@ -158,6 +158,7 @@ typedef struct _ssp_spk_data_rtos_ret {
#define CVIAUDIO_RTOS_CMD_SSP_INIT_BLOCK 0x0B #define CVIAUDIO_RTOS_CMD_SSP_INIT_BLOCK 0x0B
#define CVIAUDIO_RTOS_CMD_SSP_PROC_BLOCK 0x0C #define CVIAUDIO_RTOS_CMD_SSP_PROC_BLOCK 0x0C
#define CVIAUDIO_RTOS_CMD_SSP_DEINIT_BLOCK 0x0D #define CVIAUDIO_RTOS_CMD_SSP_DEINIT_BLOCK 0x0D
#define CVIAUDIO_RTOS_CMD_SSP_CONFIG_BLOCK 0x0E
#define CVIAUDIO_RTOS_CMD_SSP_MAX 0xFF #define CVIAUDIO_RTOS_CMD_SSP_MAX 0xFF

View File

@ -326,7 +326,26 @@ void *audio_ssp_init(void *para_obj, unsigned int sample_rate)
return (void *)pst3Ainfo; return (void *)pst3Ainfo;
} }
int audio_ssp_fun_config(void *handle, int u32OpenMask)
{
struct st3AInfo *pst3Ainfo = (struct st3AInfo *)handle;
if (!pst3Ainfo) {
LOG_PRINTF("audio_ssp_process error.\n");
return -1;
}
if(!(pst3Ainfo && pst3Ainfo->bInitOk))
{
LOG_ERROR("audio_ssp_process error params.\n");
return -1;
}
pst3Ainfo->para_obj.para_fun_config = u32OpenMask;
printf("para_fun_config = %d\n", pst3Ainfo->para_obj.para_fun_config);
return 0;
}
int audio_ssp_process(void *handle, short *mic_in, short *ref_in, short *dataout, int iLength) int audio_ssp_process(void *handle, short *mic_in, short *ref_in, short *dataout, int iLength)
{ {

View File

@ -6,6 +6,7 @@
#define AEC_PRO_DATA_LEN (160) #define AEC_PRO_DATA_LEN (160)
//for uplink VQE(MIC in) //for uplink VQE(MIC in)
void *audio_ssp_init(void *para_obj, unsigned int sample_rate); void *audio_ssp_init(void *para_obj, unsigned int sample_rate);
int audio_ssp_fun_config(void *handle, int u32OpenMask);
int audio_ssp_process(void *handle, short *mic_in, short *ref_in, short *dataout, int iLength); int audio_ssp_process(void *handle, short *mic_in, short *ref_in, short *dataout, int iLength);
int audio_ssp_deinit(void *handle); int audio_ssp_deinit(void *handle);

View File

@ -204,6 +204,35 @@ int CviAud_Algo_Process(void *pHandle, uint64_t mic_in,
} }
/**************************************************************************************
* Function: CviAud_Algo_Fun_Config
*
* Description: free platform-specific data allocated by CviAud_Algo_Init
*
* Inputs: instance pointer (pHandle)
* Outputs: none
*
* Return: CVI_SUCCESS / CVI_FAILURE
**************************************************************************************/
int CviAud_Algo_Fun_Config(void *pHandle, int u32OpenMask)
{
int ret = 0;
if (pHandle == NULL) {
printf("Null input [%s][%d]\n", __func__, __LINE__);
return -1;
}
ret = audio_ssp_fun_config(pHandle, u32OpenMask);
if (ret != 0) {
printf("audio_ssp_process error ret(%d).\n", ret);
return -1;
}
return ret;
}
/************************************************************************************** /**************************************************************************************
* Function: CviAud_Algo_DeInit * Function: CviAud_Algo_DeInit
* *

View File

@ -165,7 +165,7 @@ void prvAudioRunTask(void *pvParameters)
#endif #endif
cvi_audio_init_test(); cvi_audio_init_test();
printf("pAudioRunTask run Version:20220519\n"); aud_info("pAudioRunTask run Version:20220519\n");
xQueueAudioCmdqu = main_GetMODHandle(E_QUEUE_CMDQU); xQueueAudioCmdqu = main_GetMODHandle(E_QUEUE_CMDQU);
xQueueAudio = main_GetMODHandle(E_QUEUE_AUDIO); xQueueAudio = main_GetMODHandle(E_QUEUE_AUDIO);
@ -514,10 +514,10 @@ void prvAudioRunTask(void *pvParameters)
aud_debug("[Rtos][%s][%d]....xxxxxxxcounter[%d]\n", __func__, __LINE__, counter); aud_debug("[Rtos][%s][%d]....xxxxxxxcounter[%d]\n", __func__, __LINE__, counter);
aud_debug("[Rtos]keep waiting....\n"); aud_debug("[Rtos]keep waiting....\n");
} else { } else {
//printf("[Rtos][%s][%d]index[%d]not full\n", __func__, __LINE__, index); //aud_info("[Rtos][%s][%d]index[%d]not full\n", __func__, __LINE__, index);
//count += 1; //count += 1;
//if (count % 1000000 == 0) { //if (count % 1000000 == 0) {
// printf("[Rtos][%s][%d]out count[%d]index[%d]\n", __func__, __LINE__, count, index); // aud_info("[Rtos][%s][%d]out count[%d]index[%d]\n", __func__, __LINE__, count, index);
//} //}
} }
bCheck_input_full = 1; //reset the check flag bCheck_input_full = 1; //reset the check flag
@ -550,14 +550,14 @@ void prvAudioRunTask(void *pvParameters)
_pstVqeConfig = (AI_TALKVQE_CONFIG_S_RTOS *)pstAudBlockMailBox->AinVqeCfgPhy; _pstVqeConfig = (AI_TALKVQE_CONFIG_S_RTOS *)pstAudBlockMailBox->AinVqeCfgPhy;
inv_dcache_range((uintptr_t)_pstVqeConfig, sizeof(AI_TALKVQE_CONFIG_S_RTOS)); inv_dcache_range((uintptr_t)_pstVqeConfig, sizeof(AI_TALKVQE_CONFIG_S_RTOS));
printf("SSP_INIT dump-----------------------------------------------------\n"); aud_info("SSP_INIT dump-----------------------------------------------------\n");
printf("para_client_config[%d]\n", _pstVqeConfig->para_client_config); aud_info("para_client_config[%d]\n", _pstVqeConfig->para_client_config);
printf("u32OpenMask[0x%x]\n", _pstVqeConfig->u32OpenMask); aud_info("u32OpenMask[0x%x]\n", _pstVqeConfig->u32OpenMask);
printf("s32WorkSampleRate[%d]\n", _pstVqeConfig->s32WorkSampleRate); aud_info("s32WorkSampleRate[%d]\n", _pstVqeConfig->s32WorkSampleRate);
printf("stAecCfg.para_aec_filter_len[%d]\n", _pstVqeConfig->stAecCfg.para_aec_filter_len); aud_info("stAecCfg.para_aec_filter_len[%d]\n", _pstVqeConfig->stAecCfg.para_aec_filter_len);
printf("stAecCfg.para_aes_std_thrd[%d]\n", _pstVqeConfig->stAecCfg.para_aes_std_thrd); aud_info("stAecCfg.para_aes_std_thrd[%d]\n", _pstVqeConfig->stAecCfg.para_aes_std_thrd);
printf("stAecCfg.para_aes_supp_coeff[%d]\n", _pstVqeConfig->stAecCfg.para_aes_supp_coeff); aud_info("stAecCfg.para_aes_supp_coeff[%d]\n", _pstVqeConfig->stAecCfg.para_aes_supp_coeff);
printf("SSP_INIT dump-----------------------------------------------------[end]\n"); aud_info("SSP_INIT dump-----------------------------------------------------[end]\n");
AI_TALKVQE_CONFIG_S VqeConfig; AI_TALKVQE_CONFIG_S VqeConfig;
AI_TALKVQE_CONFIG_S *pVqeConfigSsp = &VqeConfig; AI_TALKVQE_CONFIG_S *pVqeConfigSsp = &VqeConfig;
@ -595,6 +595,39 @@ void prvAudioRunTask(void *pvParameters)
} else } else
aud_error("warning paudio_ssp_blcok not Null..\n"); aud_error("warning paudio_ssp_blcok not Null..\n");
xQueueSend(xQueueAudioCmdqu, &rtos_cmdq, 0U);
}
break;
case CVIAUDIO_RTOS_CMD_SSP_CONFIG_BLOCK:
{
aud_info("CVIAUDIO_RTOS_CMD_SSP_CONFIG_BLOCK\n");
ST_CVIAUDIO_MAILBOX_BLOCK *pstAudBlockMailBox =
(ST_CVIAUDIO_MAILBOX_BLOCK *)rtos_cmdq.param_ptr;
AI_TALKVQE_CONFIG_S_RTOS *_pstVqeConfig = NULL;
inv_dcache_range((uintptr_t)pstAudBlockMailBox, sizeof(ST_CVIAUDIO_MAILBOX_BLOCK));
aud_debug("CVIAUDIO_RTOS_CMD_SSP_INIT_BLOCK phy[0x%x]\n", rtos_cmdq.param_ptr);
if (pstAudBlockMailBox->u64RevMask != CVIAUDIO_RTOS_MAGIC_WORD_USERSPACE_BLOCK_MODE) {
aud_error("[CVIAUDIO_RTOS_CMD_SSP_INIT_BLOCK]magic word mismatch[0x%lx]\n",
pstAudBlockMailBox->u64RevMask);
rtos_cmdq.param_ptr = CVIAUDIO_RTOS_BLOCK_MODE_FAILURE_FLAG;
clean_dcache_range((uintptr_t)pstAudBlockMailBox, sizeof(ST_CVIAUDIO_MAILBOX_BLOCK));
xQueueSend(xQueueAudioCmdqu, &rtos_cmdq, 0U);
break;
} else
aud_debug("CVIAUDIO_RTOS_CMD_SSP_INIT_BLOCK magic word matched\n");
_pstVqeConfig = (AI_TALKVQE_CONFIG_S_RTOS *)pstAudBlockMailBox->AinVqeCfgPhy;
inv_dcache_range((uintptr_t)_pstVqeConfig, sizeof(AI_TALKVQE_CONFIG_S_RTOS));
aud_debug("u32OpenMask[0x%x]\n", _pstVqeConfig->u32OpenMask);
if (paudio_ssp_block != NULL) {
CviAud_Algo_Fun_Config(paudio_ssp_block, _pstVqeConfig->u32OpenMask);
aud_info("CVIAUDIO_RTOS_CMD_SSP_INIT_BLOCK init success!!\n");
} else
aud_error("warning paudio_ssp_blcok not Null..\n");
xQueueSend(xQueueAudioCmdqu, &rtos_cmdq, 0U); xQueueSend(xQueueAudioCmdqu, &rtos_cmdq, 0U);
} }
break; break;
@ -656,7 +689,7 @@ void prvAudioRunTask(void *pvParameters)
xTimer3AProcEnd = xTaskGetTickCount(); xTimer3AProcEnd = xTaskGetTickCount();
total_diff += xTimer3AProcEnd - xTimer3AProcStart; total_diff += xTimer3AProcEnd - xTimer3AProcStart;
if (frame_count == 8000/CVIAUDIO_BASIC_AEC_LENGTH*3) { if (frame_count == 8000/CVIAUDIO_BASIC_AEC_LENGTH*3) {
printf("total_diff = %ld, cpu = %ld, portTICK_PERIOD_MS=%d\n", aud_info("total_diff = %ld, cpu = %ld, portTICK_PERIOD_MS=%d\n",
total_diff, total_diff,
total_diff*portTICK_PERIOD_MS/30, total_diff*portTICK_PERIOD_MS/30,
portTICK_PERIOD_MS); portTICK_PERIOD_MS);
@ -666,7 +699,7 @@ void prvAudioRunTask(void *pvParameters)
#endif #endif
} }
//pvincent = (short *)pstBlockFrm->output_addr; //pvincent = (short *)pstBlockFrm->output_addr;
//printf("CVIAUDIO_RTOS_CMD_SSP_PROC_BLOCK---success[0x%x][0x%x][0x%x]\n", pvincent[0], pvincent[1], pvincent[2]); //aud_info("CVIAUDIO_RTOS_CMD_SSP_PROC_BLOCK---success[0x%x][0x%x][0x%x]\n", pvincent[0], pvincent[1], pvincent[2]);
clean_dcache_range((uintptr_t)pstBlockFrm, sizeof(ST_CVIAUDIO_BLOCK_FRAME)); clean_dcache_range((uintptr_t)pstBlockFrm, sizeof(ST_CVIAUDIO_BLOCK_FRAME));
clean_dcache_range((uintptr_t)pstBlockFrm->mic_in_addr, 1280); clean_dcache_range((uintptr_t)pstBlockFrm->mic_in_addr, 1280);
clean_dcache_range((uintptr_t)pstBlockFrm->output_addr, 1280); clean_dcache_range((uintptr_t)pstBlockFrm->output_addr, 1280);

View File

@ -32,7 +32,7 @@ void prvRGNRunTask(void *pvParameters)
(void)pvParameters; (void)pvParameters;
cmdqu_t rtos_cmdq; cmdqu_t rtos_cmdq;
int i, j, delta_x, delta_y; int i;
void *pvAddr = NULL; void *pvAddr = NULL;
unsigned char obj_num = 0, line_num = 0; unsigned char obj_num = 0, line_num = 0;
int bs_size, status; int bs_size, status;
@ -40,7 +40,6 @@ void prvRGNRunTask(void *pvParameters)
RGN_CMPR_OBJ_ATTR_S *obj_attr = NULL; RGN_CMPR_OBJ_ATTR_S *obj_attr = NULL;
OSDC_Canvas_Attr_S canvas; OSDC_Canvas_Attr_S canvas;
OSDC_DRAW_OBJ_S *obj_vec = NULL; OSDC_DRAW_OBJ_S *obj_vec = NULL;
RGN_LINE_ATTR_S *line_attr = NULL;
rgn_printf("%s run\n", __func__); rgn_printf("%s run\n", __func__);
xQueueRGN = main_GetMODHandle(E_QUEUE_RGN); xQueueRGN = main_GetMODHandle(E_QUEUE_RGN);
@ -84,13 +83,6 @@ void prvRGNRunTask(void *pvParameters)
goto WRONG_CMD_IP_ID; goto WRONG_CMD_IP_ID;
} }
line_attr = (RGN_LINE_ATTR_S *)pvPortMalloc((obj_num ? obj_num : 1) * sizeof(RGN_LINE_ATTR_S));
if (line_attr == NULL) {
rgn_printf("(%s) malloc failed!\n", __func__);
vPortFree(obj_vec);
goto WRONG_CMD_IP_ID;
}
obj_attr = (RGN_CMPR_OBJ_ATTR_S *)((CVI_U8 *)rtos_cmdq.param_ptr + sizeof(RGN_CANVAS_CMPR_ATTR_S)); obj_attr = (RGN_CMPR_OBJ_ATTR_S *)((CVI_U8 *)rtos_cmdq.param_ptr + sizeof(RGN_CANVAS_CMPR_ATTR_S));
if (obj_num) { if (obj_num) {
for (i = 0; i < obj_num; ++i) { for (i = 0; i < obj_num; ++i) {
@ -102,7 +94,6 @@ void prvRGNRunTask(void *pvParameters)
obj_attr[i].stLine.stPointEnd.s32Y, obj_attr[i].stLine.stPointEnd.s32Y,
obj_attr[i].stLine.u32Thick, obj_attr[i].stLine.u32Thick,
obj_attr[i].stLine.u32Color); obj_attr[i].stLine.u32Color);
line_attr[line_num] = obj_attr[i].stLine;
line_num++; line_num++;
} else if (obj_attr[i].enObjType == RGN_CMPR_RECT) { } else if (obj_attr[i].enObjType == RGN_CMPR_RECT) {
rgn_printf("xywh(%d %d %d %d) Thick(%d) Color(0x%x) is_fill(%d)\n", rgn_printf("xywh(%d %d %d %d) Thick(%d) Color(0x%x) is_fill(%d)\n",
@ -124,51 +115,18 @@ void prvRGNRunTask(void *pvParameters)
} }
} }
// workaroud to fix draw line issue for now
j = 0;
while (j++ < 5) {
for (i = 0; i < line_num; ++i) {
delta_x = abs(line_attr[i].stPointStart.s32X - line_attr[i].stPointEnd.s32X);
delta_y = abs(line_attr[i].stPointStart.s32Y - line_attr[i].stPointEnd.s32Y);
if (delta_y < line_attr[i].u32Thick) {
if (i < line_num - 1) {
line_attr[i + 1].stPointStart.s32Y = line_attr[i].stPointEnd.s32Y
= line_attr[i].stPointStart.s32Y;
} else {
line_attr[0].stPointStart.s32Y = line_attr[i].stPointEnd.s32Y
= line_attr[i].stPointStart.s32Y;
}
}
if (delta_x < line_attr[i].u32Thick) {
if (i < line_num - 1) {
line_attr[i + 1].stPointStart.s32X = line_attr[i].stPointEnd.s32X
= line_attr[i].stPointStart.s32X;
} else {
line_attr[0].stPointStart.s32X = line_attr[i].stPointEnd.s32X
= line_attr[i].stPointStart.s32X;
}
}
}
delta_x = abs(line_attr[0].stPointStart.s32X - line_attr[0].stPointEnd.s32X);
delta_y = abs(line_attr[0].stPointStart.s32Y - line_attr[0].stPointEnd.s32Y);
if ((delta_x > line_attr[0].u32Thick || delta_x == 0) &&
(delta_y > line_attr[0].u32Thick || delta_y == 0))
break;
}
if (obj_num) { if (obj_num) {
for (i = 0, j = 0; i < obj_num; ++i) { for (i = 0; i < obj_num; ++i) {
if (obj_attr[i].enObjType == RGN_CMPR_LINE) { if (obj_attr[i].enObjType == RGN_CMPR_LINE) {
CVI_OSDC_SetLineObjAttr( CVI_OSDC_SetLineObjAttr(
&canvas, &canvas,
&obj_vec[i], &obj_vec[i],
line_attr[j].u32Color, obj_attr[i].stLine.u32Color,
line_attr[j].stPointStart.s32X, obj_attr[i].stLine.stPointStart.s32X,
line_attr[j].stPointStart.s32Y, obj_attr[i].stLine.stPointStart.s32Y,
line_attr[j].stPointEnd.s32X, obj_attr[i].stLine.stPointEnd.s32X,
line_attr[j].stPointEnd.s32Y, obj_attr[i].stLine.stPointEnd.s32Y,
line_attr[j].u32Thick); obj_attr[i].stLine.u32Thick);
j++;
} else if (obj_attr[i].enObjType == RGN_CMPR_RECT) { } else if (obj_attr[i].enObjType == RGN_CMPR_RECT) {
CVI_OSDC_SetRectObjAttr( CVI_OSDC_SetRectObjAttr(
&canvas, &canvas,
@ -256,7 +214,6 @@ void prvRGNRunTask(void *pvParameters)
rgn_printf("%s rtos_cmdq.cmd_id(%d)!\n", __func__, rtos_cmdq.cmd_id); rgn_printf("%s rtos_cmdq.cmd_id(%d)!\n", __func__, rtos_cmdq.cmd_id);
break; break;
} }
vPortFree(line_attr);
vPortFree(obj_vec); vPortFree(obj_vec);
WRONG_CMD_IP_ID: WRONG_CMD_IP_ID: