📄 db_talk.c
字号:
/****************************************************************
** *
** FILE : DB_TALK.C *
** COPYRIGHT : (c) 2001 .Xiamen Yaxon NetWork CO.LTD *
** *
** *
** By : CCH 2002.1.15 *
****************************************************************/
#include "includes.h"
#include "tools.h"
#include "database.h"
#include "record.h"
#include "db_talk.h"
#if EN_HANDSET > 0
/*
********************************************************************************
* DEFINE TALK RECORD FIELD
********************************************************************************
*/
#define FIELD_TEL 0
#define FIELD_TALKTIME 1
#define FIELD_DATE 2
#define FIELD_TIME 3
/*
********************************************************************************
* DEFINE DB_TALK FIELDS
********************************************************************************
*/
static FIELD_STRUCT fields[] = { {0, TALKREC_SIZE_TEL}, /* field: tel */
{FIELD_FIXED, 2}, /* field: talktime */
{FIELD_FIXED, TALKREC_SIZE_DATE}, /* field: date */
{FIELD_FIXED, TALKREC_SIZE_TIME} /* field: time */
};
static INT8U nsector;
static INT16U offset;
static BOOLEAN GetDBPara(INT8U talktype)
{
switch (talktype)
{
case TALK_DIAL:
nsector = DB_TALK_DIAL_SECTOR;
offset = DB_TALK_DIAL_OFFSET;
return TRUE;
case TALK_RECV:
nsector = DB_TALK_RECV_SECTOR;
offset = DB_TALK_RECV_OFFSET;
return TRUE;
case TALK_MISS:
nsector = DB_TALK_MISS_SECTOR;
offset = DB_TALK_MISS_OFFSET;
return TRUE;
default:
return FALSE;
}
}
void InitDB_Talk(void)
{
if (!DB_IsValid(DB_TALK_DIAL)) {
DB_Init(DB_TALK_DIAL, FALSE, sizeof(fields)/sizeof(FIELD_STRUCT), fields, MAX_TALKREC, 0, 0);
}
if (!DB_IsValid(DB_TALK_RECV)) {
DB_Init(DB_TALK_RECV, FALSE, sizeof(fields)/sizeof(FIELD_STRUCT), fields, MAX_TALKREC, 0, 0);
}
if (!DB_IsValid(DB_TALK_MISS)) {
DB_Init(DB_TALK_MISS, FALSE, sizeof(fields)/sizeof(FIELD_STRUCT), fields, MAX_TALKREC, 0, 0);
}
}
void AddTalkRecord(INT8U talktype, TALKREC_STRUCT *talkrec)
{
INT16S numrec;
if (GetDBPara(talktype)) {
if ((numrec = DB_FindRec(nsector, offset, 0, FIELD_TEL, talkrec->tellen, talkrec->tel)) != -1)
DB_DelRec(nsector, offset, numrec);
if (!DB_AddRec(nsector, offset, TRUE, (INT8U *)talkrec))
DB_Del(nsector, offset);
}
}
void DelTalkRecord(INT8U talktype, INT16U numrec)
{
if (GetDBPara(talktype))
DB_DelRec(nsector, offset, numrec);
}
void DelAllTalkRecord(INT8U talktype)
{
if (GetDBPara(talktype))
DB_Init(nsector, offset, FALSE, sizeof(fields)/sizeof(FIELD_STRUCT), fields, MAX_TALKREC, 0, 0);
}
INT16U GetTalkRecord(INT8U talktype, INT16U numrec, TALKREC_STRUCT *recptr)
{
if (GetDBPara(talktype)) {
return DB_GetRec(nsector, offset, numrec, (INT8U *)recptr);
} else {
return 0;
}
}
INT16U GetNumTalkRecord(INT8U talktype)
{
if (GetDBPara(talktype))
return DB_GetItem(nsector, offset);
else
return 0;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -