📄 aud_vr_si.c
字号:
kal_int32 aud_vrsi_del_tags(kal_int32 tagNum, const kal_uint16 *pTagID)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_int32 delTagNum;
kal_uint16 *pDelTagID;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (vrsi_ctx.state != MED_AUD_VRSI_STATE_READY)
{
ASSERT(KAL_FALSE);
}
pDelTagID = (kal_uint16*) get_ctrl_buffer(tagNum * 2);
if (VRSI_DeleteTags(vrsi_ctx.grammar, tagNum, pTagID, &delTagNum, pDelTagID) == VRSI_FAIL)
{
free_ctrl_buffer(pDelTagID);
return aud_vrsi_error();
}
free_ctrl_buffer(pDelTagID); /* check if MMI need successfully-deleted-tag information */
return MED_RES_VRSI_OK;
}
/*****************************************************************************
* FUNCTION
* aud_vrsi_reset_tags
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
*
*****************************************************************************/
kal_int32 aud_vrsi_reset_tags(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (vrsi_ctx.state != MED_AUD_VRSI_STATE_READY)
{
ASSERT(KAL_FALSE);
}
if (VRSI_Gram_DeleteAllTags(vrsi_ctx.grammar) == VRSI_FAIL)
{
return aud_vrsi_error();
}
return MED_RES_VRSI_OK;
}
/*****************************************************************************
* FUNCTION
* aud_vrsi_sync_db
* DESCRIPTION
*
* PARAMETERS
* tag_num [IN]
* id_list [?]
* name_list [IN]
* sync_flag [?]
* RETURNS
*
*****************************************************************************/
kal_int32 aud_vrsi_sync_db(kal_uint32 tag_num, kal_uint16 *id_list, kal_uint16 **name_list, kal_uint8 *sync_flag)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_int32 db_tag_num, tmp, i, j, k, del_num;
kal_uint16 *p_db_tag_id, *p_del_tag, *p_name;
kal_uint16 sync_id, db_id;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (vrsi_ctx.state != MED_AUD_VRSI_STATE_READY)
{
ASSERT(KAL_FALSE);
}
if (VRSI_Gram_GetTagNum(vrsi_ctx.grammar, &db_tag_num) == VRSI_FAIL)
return aud_vrsi_error();
if(db_tag_num == 0)
{
for(i = 0 ; i < tag_num ; i ++)
sync_flag[i] = 0;
return MED_RES_VRSI_OK;
}
p_db_tag_id = (kal_uint16*) get_ctrl_buffer(db_tag_num << 1);
p_del_tag = (kal_uint16*) get_ctrl_buffer(db_tag_num << 1);
p_name = (kal_uint16*) get_ctrl_buffer(32); /* need to make sure this value OK */
VRSI_Gram_ReadTagIDs(vrsi_ctx.grammar, p_db_tag_id, db_tag_num << 1, &tmp);
if (db_tag_num != tmp)
{
free_ctrl_buffer(p_db_tag_id);
free_ctrl_buffer(p_del_tag);
free_ctrl_buffer(p_name);
return MED_RES_VRSI_ERR_DATA_ERROR;
}
/* ask MMI to pass data by incremental tag_id */
k = 0;
del_num = 0;
for (i = 0; i < tag_num; i++)
{
sync_id = id_list[i];
for (j = k; j < db_tag_num; j++)
{
db_id = p_db_tag_id[j];
if (sync_id == db_id)
{
k++;
VRSI_ReadTags(vrsi_ctx.grammar, 1, &db_id, &p_name, &tmp);
if (aud_vrsi_compare(name_list[i], p_name))
{
sync_flag[i] = 1;
break;
}
else
{
sync_flag[i] = 0;
p_del_tag[del_num++] = db_id;
break;
}
}
else if (sync_id > db_id)
{
k++;
p_del_tag[del_num++] = db_id;
}
else
{
sync_flag[i] = 0;
break;
}
}
if (k == db_tag_num && sync_id != db_id)
{
sync_flag[i] = 0;
}
}
for (j = k; j < db_tag_num; j++)
{
db_id = p_db_tag_id[j];
p_del_tag[del_num++] = db_id;
}
if (del_num != 0)
{
aud_vrsi_del_tags(del_num, p_del_tag);
}
free_ctrl_buffer(p_db_tag_id);
free_ctrl_buffer(p_del_tag);
free_ctrl_buffer(p_name);
return MED_RES_VRSI_OK;
}
/*****************************************************************************
* FUNCTION
* aud_vrsi_sync_db_by_id
* DESCRIPTION
*
* PARAMETERS
* tag_num [IN]
* id_list [?]
* sync_flag [?]
* RETURNS
*
*****************************************************************************/
kal_int32 aud_vrsi_sync_db_by_id(kal_uint32 tag_num, kal_uint16 *id_list, kal_uint8 *sync_flag)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_int32 db_tag_num, tmp, i, j, del_num;
kal_uint16 *p_db_tag_id, *p_del_tag;
kal_uint16 sync_count, db_id;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (vrsi_ctx.state != MED_AUD_VRSI_STATE_READY)
{
ASSERT(KAL_FALSE);
}
if (VRSI_Gram_GetTagNum(vrsi_ctx.grammar, &db_tag_num) == VRSI_FAIL)
return aud_vrsi_error();
if(db_tag_num == 0)
{
for(i = 0 ; i < tag_num ; i ++)
sync_flag[i] = 0;
return MED_RES_VRSI_OK;
}
p_db_tag_id = (kal_uint16*) get_ctrl_buffer(db_tag_num << 1);
p_del_tag = (kal_uint16*) get_ctrl_buffer(db_tag_num << 1);
VRSI_Gram_ReadTagIDs(vrsi_ctx.grammar, p_db_tag_id, db_tag_num << 1, &tmp);
if (db_tag_num != tmp)
{
free_ctrl_buffer(p_db_tag_id);
free_ctrl_buffer(p_del_tag);
return MED_RES_VRSI_ERR_DATA_ERROR;
}
del_num = 0;
sync_count = 0;
for (i = 0; i < tag_num; i++)
{
sync_flag[i] = 0;
}
for (i = 0; i < db_tag_num; i++)
{
db_id = p_db_tag_id[i];
if (sync_count != tag_num)
{
for (j = 0; j < tag_num; j++)
{
if (db_id == id_list[j])
{
break;
}
}
if (j == tag_num) /* not found */
{
p_del_tag[del_num++] = db_id;
}
else
{
sync_flag[j] = 1;
sync_count++;
}
}
else
{
p_del_tag[del_num++] = db_id;
}
}
if (del_num != 0)
{
aud_vrsi_del_tags(del_num, p_del_tag);
}
free_ctrl_buffer(p_db_tag_id);
free_ctrl_buffer(p_del_tag);
return MED_RES_VRSI_OK;
}
/* termination */
/*****************************************************************************
* FUNCTION
* aud_vrsi_abort
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void aud_vrsi_abort(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (vrsi_ctx.state == MED_AUD_VRSI_STATE_IDLE)
{
ASSERT(KAL_FALSE);
}
VRSI_Stop();
vrsi_ctx.state = MED_AUD_VRSI_STATE_READY;
}
/*****************************************************************************
* FUNCTION
* aud_vrsi_close
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void aud_vrsi_close(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (vrsi_ctx.state != MED_AUD_VRSI_STATE_READY)
{
ASSERT(KAL_FALSE);
}
VRSI_Close();
/* return allocated memory */
med_free_ext_mem((void **)&vrsi_ctx.buffer);
vrsi_ctx.state = MED_AUD_VRSI_STATE_IDLE;
}
#endif /* __MED_VRSI_MOD__ */
#endif /* MED_NOT_PRESENT */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -