⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aud_vr_si.c

📁 最新MTK手机软件源码
💻 C
📖 第 1 页 / 共 3 页
字号:
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 + -