6600L平台
客户要求:
如果我们调用一次以上相同的号码。然后,它无法直接显示计数。 [可以显示数是计数前:15108273063(5)
功能:在通话记录中,统计出所拔打电话的次数。
原理:(以已接为代表)
1, 每次通话挂电话的过程中,每次都要把当前号码信息写入NV保存。
2, 在写入NV之前,就对数据进行处理。(重复来电和统计重复的个数)。
3, 在读取NV后,显示到列表框时,在把当前的重复个数复制到号码后面。
数据处理:
1在MMICL_CALL_BCDINFO_T结构中新增一个成员,作用是保存号码的个数。
2 如果NV中没有重复的数据,不处理。否则处理,通过标记tag判断
3双重循环,外循环判断是否相同。内循环读取当前NV的次数并加1。
4再把最新的数据传给原数据。
显示功能:
看代码。
数据处理重要代码:
MMICL_ReadNV(call_type, arraycall_temp_1);
for( i = 1; i < arraycall_info->record_num; i++ )
{
if((strcmp(arraycall_info->call_bcdinfo[i].number,arraycall_info->call_bcdinfo[0].number) == 0) && (tag == 0))
{
arraycall_temp->call_bcdinfo[0]=arraycall_info->call_bcdinfo[0];
for(j=0 ;j < arraycall_temp_1->record_num; j++ )
{
if((strcmp(arraycall_info->call_bcdinfo[i].number,arraycall_temp_1->call_bcdinfo[j].number) == 0))
{
ss= arraycall_temp_1->call_bcdinfo[j].number_count ;
}
}
arraycall_temp->call_bcdinfo[0].number_count= ss + 1;
tag=1;
}
else
{
arraycall_temp->call_bcdinfo[count]=arraycall_info->call_bcdinfo[i];
count++;
}
}
if(tag==1)
{
count--;
arraycall_temp->record_num= arraycall_info->record_num-1;
arraycall_temp->dual_sys= arraycall_info->dual_sys;
SCI_MEMSET(arraycall_info,0, sizeof(MMICL_CALL_ARRAY_BCDINFO_T)); //初始化
SCI_MEMCPY(arraycall_info,arraycall_temp, sizeof(MMICL_CALL_ARRAY_BCDINFO_T)); // 把arraycall_info复制给arraycall_temp临时指针
}