换卡或不插卡时删除通话记录

129 篇文章 0 订阅
1.1     10A1032实现
 static srv_clog_job_struct *srv_clog_submit_next_init_job(srv_clog_cntx_struct *cntx, srv_clog_job_type_enum cur_type)
{
…………………
    next_type = srv_clog_get_next_init_job_type(cntx, cur_type);
    MMI_TRACE(SRV_CLOG_TRC_INFO, TRC_SRV_CLOG_SUBMIT_NEXT_INIT_JOB, cur_type, next_type);
    if (cur_type == SRV_CLOG_JOB_TYPE_CMN_INIT)
    {
        job = srv_clog_job_submit_head(cntx->comp->job_mgr, next_type);
        job->pid = srv_clog_new_pid(cntx);
    }
    else if (next_type == SRV_CLOG_JOB_TYPE_INIT_DONE)
    {
        /* All initialized jobs are done, just remove the job node */
        job = srv_clog_job_remove_head(cntx->comp->job_mgr);
        SRV_CLOG_ASSERT(job);
        srv_clog_job_free(job);
        return NULL;
    }
    else if(next_type==SRV_CLOG_JOB_TYPE_DEL_ALL_LOGS)   
//for removing call logs when the inserted sim card changed
    {
        srv_clog_del_all_logs_req_struct *req;
    job = srv_clog_job_index(cntx->comp->job_mgr, 0);
       SRV_CLOG_ASSERT(job && job->job_type == cur_type);
    job = srv_clog_job_reuse(cntx->comp->job_mgr, job, next_type);
       job->req_data=srv_clog_job_new_para(job,sizeof(srv_clog_del_all_logs_req_struct));
       req=(srv_clog_del_all_logs_req_struct *)job->req_data;     
       srv_clog_init_para(SRV_CLOG_PARA_DEL_ALL_LOGS_REQ,req);
       job->pid = srv_clog_new_pid(cntx);
    }
    else
    {
        job = srv_clog_job_index(cntx->comp->job_mgr, 0);
        SRV_CLOG_ASSERT(job && job->job_type == cur_type);
        job = srv_clog_job_reuse(cntx->comp->job_mgr, job, next_type);
        job->pid = srv_clog_new_pid(cntx);
    }
    return job;
}
static srv_clog_job_type_enum srv_clog_get_next_init_job_type(
                                srv_clog_cntx_struct *cntx,
                                srv_clog_job_type_enum cur_job_type)
{
    srv_clog_job_type_enum next_job_type = SRV_CLOG_JOB_TYPE_INIT_DONE;
    switch (cur_job_type)
    {
                
        case SRV_CLOG_JOB_TYPE_CMN_INIT:
            next_job_type = SRV_CLOG_JOB_TYPE_LOAD_LOGS;
            break;
        case SRV_CLOG_JOB_TYPE_LOAD_LOGS:
            next_job_type = SRV_CLOG_JOB_TYPE_PARSE_LOGS;
            break;
        case SRV_CLOG_JOB_TYPE_PARSE_LOGS:      
              next_job_type = SRV_CLOG_JOB_TYPE_DEL_ALL_LOGS;     
            break;
                                                                                           
       case SRV_CLOG_JOB_TYPE_DEL_ALL_LOGS:  
            next_job_type = SRV_CLOG_JOB_TYPE_INIT_DONE;
            break;
        default:
            SRV_CLOG_ASSERT(!"Wrong job_type");
            break;
    }
    return next_job_type;
}
static S32 srv_clog_delete_all_logs_hdlr(srv_clog_cntx_struct *cntx, srv_clog_job_struct *job)
{
   
 ………………………
    comp = srv_clog_get_cur_comp(cntx, job->handle);
    if (job->proc_state == SRV_CLOG_JOB_DEL_ALL_LOGS_STATE_INIT)
    {
        if (!SRV_CLOG_CHECK_BIT_GRP
            (cntx->flags, SRV_CLOG_CNTX_FLAG_PHB_READY_TOTAL, SRV_CLOG_CNTX_FLAG_PHB_READY_TOTAL))    
//not ready to check sim status ,so have to wait
        {
                job->job_state=SRV_CLOG_JOB_STATE_WAITING;                                                                   
            return SRV_CLOG_RET_CONTINUE;
        }
       else
{
job->job_state = SRV_CLOG_JOB_STATE_HANDLING;        
}
              if(!srv_clog_is_ready())                //callog service is not ready means it’s in init process ,so we can treat this job as a Delete job in init process
                     {
                            srv_clog_del_all_logs_req_struct* req; 
                            req=(srv_clog_del_all_logs_req_struct* )job->req_data;
             req->sim_id=0;
                     if(srv_clog_is_single_sim_replaced(MMI_SIM1))
//如果是不插卡也需要删除,请加上“||!srv_sim_ctrl_is_inserted(MMI_SIM1))”  
                                   req->sim_id=MMI_SIM1;
                     
                     #if (MMI_MAX_SIM_NUM >=2)
                                   if(srv_clog_is_single_sim_replaced(MMI_SIM2))、
//如果是不插卡也需要删除,请加上“||!srv_sim_ctrl_is_inserted(MMI_SIM2))” 
                                                 req->sim_id|=MMI_SIM2;
                     #endif
                /// 如果是3卡或4可也请考虑             
                            if(req->sim_id==0)
                           {
            srv_clog_cb_delete_all_logs_result(cntx, job);
            job->job_state = SRV_CLOG_JOB_STATE_FINISHED;
            return SRV_CLOG_RET_OK;
                            }                  
                     }
        job->cursor = 0;
        job->init_value = 0;
        job->proc_state = SRV_CLOG_JOB_DEL_ALL_LOGS_STATE_DELETING;
    }
    if (job->proc_state == SRV_CLOG_JOB_DEL_ALL_LOGS_STATE_DELETING)
    {
     .。。。。。。。。。。。。。。。
    return SRV_CLOG_RET_OK;
}
void srv_clog_evt_init(void)
{
    mmi_frm_set_protocol_event_handler(
        MSG_ID_SRV_CLOG_JOB_CONTINUE_IND,
        (PsIntFuncPtr) srv_clog_job_continue_ind_hdlr,
        MMI_FALSE);
    srv_clog_set_pevt_hdlr(
        SRV_CLOG_SIM_ID_ALL,
        MSG_ID_MMI_PHB_LAST_NUMBER_READY_IND,
        (PsIntFuncPtr) srv_clog_sim_phb_last_number_ready_ind_hdlr);
}
备注:并把srv_clog_sim_phb_last_number_ready_ind_hdlr的定义移到srv_clog_evt_init的前面,原本是定义在ClogSrvSimSync.c
  
1.2    10A1108的实现(较新的版本都可以参考)
static srv_clog_job_type_enum srv_clog_get_next_init_job_type( 
                                srv_clog_cntx_struct *cntx, 
                                srv_clog_job_type_enum cur_job_type) 

    /*----------------------------------------------------------------*/ 
    /* Local Variables                                                */ 
    /*----------------------------------------------------------------*/ 
    srv_clog_job_type_enum next_job_type = SRV_CLOG_JOB_TYPE_INIT_DONE; 
  
    /*----------------------------------------------------------------*/ 
    /* Code Body                                                      */ 
    /*----------------------------------------------------------------*/ 
    switch (cur_job_type) 
    { 
        case SRV_CLOG_JOB_TYPE_CMN_INIT: 
            next_job_type = SRV_CLOG_JOB_TYPE_LOAD_LOGS; 
            break; 
  
        case SRV_CLOG_JOB_TYPE_LOAD_LOGS: 
            next_job_type = SRV_CLOG_JOB_TYPE_PARSE_LOGS; 
            break; 
  
        case SRV_CLOG_JOB_TYPE_PARSE_LOGS: 
            next_job_type = SRV_CLOG_JOB_TYPE_REVISE_LOGS; 
            break; 
  
        case SRV_CLOG_JOB_TYPE_REVISE_LOGS: 
                      
                     next_job_type=SRV_CLOG_JOB_TYPE_DEL_ALL_LOGS; 
  
                     /* 
           // if (srv_clog_stl_support_sim_sync(cntx->comp->style_mgr)) 
            //    next_job_type = SRV_CLOG_JOB_TYPE_SIM_SYNC; 
            //else 
             //   next_job_type = SRV_CLOG_JOB_TYPE_INIT_DONE; 
                */ 
            break; 
  
        case SRV_CLOG_JOB_TYPE_DEL_ALL_LOGS: 
            next_job_type = SRV_CLOG_JOB_TYPE_INIT_DONE; 
            break; 
  
        default: 
            SRV_CLOG_ASSERT(0); 
            break; 
    } 
    return next_job_type; 

static srv_clog_job_struct *srv_clog_submit_next_init_job(srv_clog_cntx_struct *cntx, srv_clog_job_type_enum cur_type) 

    srv_clog_job_struct *job; 
    srv_clog_job_type_enum next_type; 
  
    /* It's the first time to start the initialized job, need to add a new job node */ 
    next_type = srv_clog_get_next_init_job_type(cntx, cur_type); 
  
    MMI_TRACE(SRV_CLOG_TRC_INFO, TRC_SRV_CLOG_SUBMIT_NEXT_INIT_JOB, cur_type, next_type); 
    if (next_type == SRV_CLOG_JOB_TYPE_INIT_DONE) 
        return NULL; 
  
    job = srv_clog_job_submit_head(cntx->comp->job_mgr, next_type); 
    job->pid = srv_clog_new_pid(cntx); 
       if(next_type==SRV_CLOG_JOB_TYPE_DEL_ALL_LOGS) 
              {                   
                     srv_clog_del_all_logs_req_struct *req; 
                      
                     job->req_data=srv_clog_job_new_para(job,sizeof(srv_clog_del_all_logs_req_struct)); 
                     req=(srv_clog_del_all_logs_req_struct *)job->req_data; 
                     srv_clog_init_para(SRV_CLOG_PARA_DEL_ALL_LOGS_REQ,req);     
              } 
  
    return job; 

static S32 srv_clog_delete_all_logs_hdlr(srv_clog_cntx_struct *cntx, srv_clog_job_struct *job) 

  
。。。。。。。。。。。。。
    comp = srv_clog_get_cur_comp(cntx, job->handle); 
  
    if (job->proc_state == SRV_CLOG_JOB_DEL_ALL_LOGS_STATE_INIT) 
    { 
       if (!SRV_CLOG_CHECK_BIT_GRP 
            (cntx->flags, SRV_CLOG_CNTX_FLAG_PHB_READY_TOTAL, SRV_CLOG_CNTX_FLAG_PHB_READY_TOTAL))   
 //not ready to check sim status ,so have to wait 
        { 
            job->job_state = SRV_CLOG_JOB_STATE_WAITING;                                                                   
            return SRV_CLOG_RET_CONTINUE; 
        } 
else
{
            job->job_state = SRV_CLOG_JOB_STATE_HANDLING;  
}
        if(!srv_clog_is_ready())                //callog service is not ready means it’s in init process ,so we can treat this job as a Delete job in init process 
        { 
                srv_clog_del_all_logs_req_struct* req; 
             req=(srv_clog_del_all_logs_req_struct* )job->req_data; 
     req->sim_id=0;
                     if(srv_clog_is_single_sim_replaced(MMI_SIM1))
//如果是不插卡也需要删除,请加上“||!srv_sim_ctrl_is_inserted(MMI_SIM1))” 
                                   req->sim_id=MMI_SIM1; 
                      
                     #if (MMI_MAX_SIM_NUM >=2) 
                                   if(srv_clog_is_single_sim_replaced(MMI_SIM2)
//如果是不插卡也需要删除,请加上“||!srv_sim_ctrl_is_inserted(MMI_SIM1))” 
                                                 req->sim_id|=MMI_SIM2; 
                     #endif 
                /// 如果是3卡或4可也请考虑           
                     if(!req->sim_id) 
                     { 
                   srv_clog_cb_delete_all_logs_result(cntx, job); 
                   job->job_state = SRV_CLOG_JOB_STATE_FINISHED; 
                   return SRV_CLOG_RET_OK; 
                     } 
                            
       }                 
        job->cursor = 0; 
        job->init_value = 0; 
        job->proc_state = SRV_CLOG_JOB_DEL_ALL_LOGS_STATE_DELETING; 
    } 
    if (job->proc_state == SRV_CLOG_JOB_DEL_ALL_LOGS_STATE_DELETING) 
    { 
     。。。。。。。。。。。。。。。。。
    return SRV_CLOG_RET_OK; 

 
 
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下 4载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值