📄 dcw_pb_interface.c
字号:
/*****************************************************************************
** File Name: dcw_pb_interface.c *
** Author: ************* *
** Date: 2006-04-05 *
** Copyright: 2006 ************* All Rights *
** Description: 此文件包括 PB 的所有对外接口 *
/*****************************************************************************
** Important Edit History *
** --------------------------------------------------------------------------*
** DATE NAME DESCRIPTION *
** 2006-04-05 ************* Create *
******************************************************************************/
#ifndef _DCW_PB_INTERFACE_C_
#define _DCW_PB_INTERFACE_C_
#include "dcw_pb.h"
/****************************************************************************
* Function name : DCW_PB_InitApp
* Description : 此函数由开机时候的初始化程序调用,用于初始化 PB 的数据
* Param : None
* Return : None
* Author: : *************
* Note : None
*****************************************************************************/
void DCW_PB_InitApp(void)
{
/* 初始化 PB 的全局变量 */
DCW_PB_InitGlobeValiable();
/* 初始化 PB 的 Application */
g_pb_app.ProcessMsg = DCW_PB_handlePsMsg;
g_pb_app.component_type = CT_APPLICATION;
}
/****************************************************************************
* Function name : DCW_PB_handlePsMsg
* Description : PB 的协议栈消息处理函数
* Param : None
* Return : None
* Author: : *************
* Note : None
*****************************************************************************/
MMI_RESULT_E DCW_PB_handlePsMsg(PWND app_ptr, uint16 msg_id, DPARAM param)
{
MMI_RESULT_E result = MMI_RESULT_TRUE;
SCI_TRACE_LOW("\r\n--DCW_PB_handlePsMsg---all--msg_id = %d", msg_id);
switch (msg_id)
{
case APP_MN_CALL_READY_IND:
/* 发送从 SIM卡 装载数据的请求 */
SCI_TRACE_LOW("DCW_PB_handlePsMsg: received APP_MN_CALL_READY_IND");
DCW_PB_ReadDataFromSimCard();
result = MMI_RESULT_CONTINUE;
break;
case APP_MN_MSISDN_UPDATE_CNF:
/* 关于本机号码 */
SCI_TRACE_LOW("DCW_PB_handlePsMsg: received APP_MN_MSISDN_UPDATE_CNF");
break;
case APP_MN_ADN_UPDATE_CNF:
SCI_TRACE_LOW("DCW_PB_handlePsMsg: received APP_MN_ADN_UPDATE_CNF");
SCI_TRACE_LOW("\r\n--DCW_PB_handlePsMsg-----received APP_MN_ADN_UPDATE_CNF");
DCW_PB_handleSimCallBack(param);
break;
default:
result = MMI_RESULT_FALSE;
break;
}
return (result);
}
/****************************************************************************
* Function name : DCW_PB_ReadDataFromSimCard
* Description : 读取 SIM卡 里的数据,并整理从Nv及SIm卡读度出来的数据。
* Param : None
* Return : None
* Author: : *************
* Note : None
*****************************************************************************/
void DCW_PB_ReadDataFromSimCard(void)
{
/* 读取 SIM卡 里的记录信息*/
DCW_PB_ReadSimCardRecordsInfo();
/* 发送从nv装载数据的请求 */
DCW_PB_AskReadDataFromNv();
}
/****************************************************************************
* Function name : DCW_PB_ReadDataFromNv
* Description : 读取 Nv 里的数据,并发出读SIM请求
* Param : None
* Return : None
* Author: : *************
* Note : None
*****************************************************************************/
void DCW_PB_ReadDataFromNv(void)
{
/* 读取组信息 */
DCW_PB_ReadGroupsInfo();
/* 读取Nv里的 记录 信息*/
DCW_PB_ReadNvRecordsInfo();
/* 生成号码列表,以便于从号码查找记录 */
DCW_PB_createNumberList();
/* 初始化完成 */
DCW_PB_initialFinish();
}
/****************************************************************************
* Function name : DCW_PB_OpenMainMenuWin
* Description : 打开电话薄的主菜单
* Param : None
* Return : None
* Author: : *************
* Note : None
*****************************************************************************/
void DCW_PB_OpenMainMenuWin(void)
{
DCW_PB_openWindows(g_pb_mainMenuWinTab,PNULL);
DCW_PB_setBaseWinId(MMK_GetFocusWinId());
}
/****************************************************************************
* Function name : DCW_PB_IsReady
* Description : PB是否可以调用
* Param : void
* Return : BOOLEAN
* Author: : *************
* Note : None
*****************************************************************************/
BOOLEAN DCW_PB_IsReady(void)
{
if(g_pb.operate.processing == FALSE && DCW_PB_IsPBInitialized() == TRUE)
{
return TRUE;
}
else
{
return FALSE;
}
}
BOOLEAN DCW_PB_Processing(void)
{
return g_pb.operate.processing;
}
/****************************************************************************
* Function name : DCW_PB_IsPBInitialized
* Description : PB是否初始化完成
* Param : None
* Return : BOOLEAN TRUE 完成了
FALSE 没有完成
* Author: : *************
* Note : None
***************************************************************************/
BOOLEAN DCW_PB_IsPBInitialized(void)
{
return (g_pb.nv.initialize == TRUE && g_pb.sim.initialize == TRUE);
}
/****************************************************************************
* Function name : DCW_PB_browseRecords
* Description : 浏览电话记录
* Param : operateType 操作类型
maxSelectedNum 最大可选条目
* Return : None
* Author: : *************
* Note : None
*****************************************************************************/
void DCW_PB_browseRecords(E_PB_OPERATE_TYPE operateType,uint16 maxSelectedNum)
{
if(g_pb.nv.usedRecord != 0 || g_pb.sim.usedRecord != 0)
{
switch(operateType)
{
case PB_OPERATE_SMS_SGL_SELECT_BROWSE_E:
case PB_OPERATE_MMS_SGL_SELECT_BROWSE_E:
DCW_PB_loadOperateInfo(operateType,PB_SUB_OPERATE_NONE_E,(void *)&maxSelectedNum);
DCW_PB_openWindows(g_pb_singleSelectBrowseWinTab, PNULL);
DCW_PB_setBaseWinId(MMK_GetFocusWinId());
break;
case PB_OPERATE_SMS_MUL_SELECT_BROWSE_E:
case PB_OPERATE_MMS_MUL_SELECT_BROWSE_E:
DCW_PB_loadOperateInfo(operateType,PB_SUB_OPERATE_NONE_E,(void *)&maxSelectedNum);
DCW_PB_openWindows(g_pb_multipleSelectBrowseWinTab, PNULL);
DCW_PB_setBaseWinId(MMK_GetFocusWinId());
break;
case PB_OPERATE_GENERAL_BROWSE_E:
DCW_PB_loadOperateInfo(operateType,PB_SUB_OPERATE_NONE_E,(void *)&maxSelectedNum);
DCW_PB_openWindows(g_pb_recordBrowseWinTab, PNULL);
DCW_PB_setBaseWinId(MMK_GetFocusWinId());
break;
default:
break;
}
}
else
{
DCW_PB_openWindows(PNULL,&g_pb_recordEmptyWinTab);
}
}
/****************************************************************************
* Function name : DCW_PB_addOneBcdNumberToRecord
* Description : 把一个电话添加为一条nv记录的一项
* Param : *bcdNum 要添加的电话号码
* Return : None
* Author: : *************
* Note : None
*****************************************************************************/
void DCW_PB_addOneBcdNumberToRecord(T_PB_BCD_NUMBER *bcdNumPtr)
{
SCI_ASSERT(bcdNumPtr != PNULL && bcdNumPtr->len != 0);
g_pb_bcdNum = *bcdNumPtr;
if(g_pb.nv.usedRecord > 0)
{
DCW_PB_loadOperateInfo(PB_OPERATE_ADD_NUM_TO_RECORD_E,PB_SUB_OPERATE_NONE_E,PNULL);
DCW_PB_openWindows(g_pb_recordBrowseWinTab, PNULL);
DCW_PB_setBaseWinId(MMK_GetFocusWinId());
}
else
{
DCW_PB_openWindows(PNULL,&g_pb_recordEmptyWinTab);
}
}
/****************************************************************************
* Function name : DCW_PB_IsTwoBcdEqual
* Description : 判断两个BCD电话码是否相等
* Param : *bcdNumSrc BCD电话码1
*bcdNumDst BCD电话码2
* Return : BOOLEAN TRUE 相等
FALSE 不等
* Author: : *************
* Note : None
*****************************************************************************/
BOOLEAN DCW_PB_IsTwoBcdEqual(T_PB_BCD_NUMBER *bcdNumSrcPtr,T_PB_BCD_NUMBER *bcdNumDstPtr)
{
T_PB_COMPARE_NUMBER cmpNumSrc;
T_PB_COMPARE_NUMBER cmpNumDst;
DCW_PB_getCompareNumber(bcdNumSrcPtr,&cmpNumSrc);
DCW_PB_getCompareNumber(bcdNumDstPtr,&cmpNumDst);
if(cmpNumSrc.high == cmpNumDst.high && cmpNumSrc.low == cmpNumDst.low && cmpNumSrc.len == cmpNumDst.len)
{
return TRUE;
}
else
{
return FALSE;
}
}
/****************************************************************************
* Function name : DCW_PB_addOneRecordByNum
* Description : 由一个电话做一条记录,并且插入Nv或者Sim卡
* Param : bcdNum 电话的BCD码
* Return : None
* Author: : *************
* Note : None
*****************************************************************************/
void DCW_PB_addOneRecordByNum(T_PB_BCD_NUMBER *bcdNumPtr)
{
SCI_MEMSET(&g_pb_simRecord,0x00,sizeof(T_PB_SIM_RECORD));
SCI_MEMSET(&g_pb_nvRecord,0x00,sizeof(T_PB_NV_RECORD));
g_pb_simRecord.num = *bcdNumPtr;
/* 先暂时把电话保存在g_pb_bcdNum,等选择类型后,再把此电话放在相应的位置 */
g_pb_bcdNum = *bcdNumPtr;
/* 打开一个Menu */
DCW_PB_openWindows(g_pb_addOneRecordWinTab, PNULL);
DCW_PB_setBaseWinId(MMK_GetFocusWinId());
}
/****************************************************************************
* Function name : DCW_PB_addOneRecordByMail
* Description : 由一个mail做一条记录,并且插入Nv
* Param : mail 电子邮件
* Return : None
* Author: : *************
* Note : None
*****************************************************************************/
void DCW_PB_addOneRecordByMail(T_PB_L_STRING *mailPtr)
{
SCI_MEMSET(&g_pb_nvRecord,0x00,sizeof(T_PB_NV_RECORD));
g_pb_nvRecord.mail = *mailPtr;
if(g_pb.nv.usedRecord < g_pb.nv.maxRecord)
{
DCW_PB_loadOperateInfo(PB_OPERATE_ADD_IN_NV_E,PB_SUB_OPERATE_NONE_E,PNULL);
DCW_PB_openWindows(g_pb_editNvRecordWinTab, PNULL);
DCW_PB_setBaseWinId(MMK_GetFocusWinId());
}
else
{ /* Nv记录满 */
DCW_PB_openWindows(PNULL,&g_pb_nvFullWinTab);
}
}
/****************************************************************************
* Function name : DCW_PB_getRecordInfoByBcdNum
* Description : 通过一个BCD电话码,查找包含该电话的记录的信息
* Param : *namePtr 记录的名字
nameMaxLen 名字的最大长度
groupId 该电话在记录重的组别
iconId 该电话对应的小图标
bcdNum BCD电话码,InPut
* Return : BOOLEAN TRUE 查找成功
FALSE 查找失败
* Author: : *************
* Note : None
*****************************************************************************/
BOOLEAN DCW_PB_getRecordInfoByBcdNum(MMI_STRING_T *namePtr,
uint16 nameMaxLen,
uint8 *groupIdPtr,
MMI_IMAGE_ID_T *iconIdPtr,
T_PB_BCD_NUMBER *bcdNumPtr)
{
uint16 id;
PHONEBOOK_STORAGE_E type;
if(DCW_PB_searchNumInNumList(bcdNumPtr,&id,&type) == TRUE)
{ /* 存在包含该电话码的记录 */
if(type == PHONEBOOK_SIM_STORAGE)
{ /* 包含该电话码的记录在SIM卡里 */
T_PB_SIM_RECORD record;
if(DCW_PB_ReadOneRecordFromSim(&record,id,PHONEBOOK_SIM_STORAGE) == FALSE)
{ /* 读出记录 */
SCI_ASSERT(FALSE);
}
if(namePtr != PNULL)
{
namePtr->is_ucs2 = record.outerName.ucs2;
namePtr->length = MIN(nameMaxLen,record.outerName.len);
SCI_MEMCPY(namePtr->str_ptr,record.outerName.array,namePtr->length);
}
}
else if(type == PHONEBOOK_NV_STORAGE)
{ /* 包含该电话码的记录在NV里 */
T_PB_NV_RECORD record;
if(DCW_PB_ReadOneRecordFromNv(&record,id) == FALSE)
{ /* 读出记录 */
SCI_ASSERT(FALSE);
}
if(namePtr != PNULL)
{
namePtr->is_ucs2 = record.outerName.ucs2;
namePtr->length = MIN(nameMaxLen,record.outerName.len);
SCI_MEMCPY(namePtr->str_ptr,record.outerName.array,namePtr->length);
}
if(groupIdPtr != PNULL)
{
*groupIdPtr = record.groupId;
if(iconIdPtr != PNULL)
{
switch(*groupIdPtr)
{
case 1:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -