📄 atbpb.h
字号:
#ifndef ATBPB_H
#define ATBPB_H
#define BLOCKING
#define trace(x) TRACE_EVENT(x)
#define tracefunction(x) TRACE_FUNCTION(x)
#define trace_P1(x,a) TRACE_EVENT_P1(x,a)
#define trace_P2(x,a,b) TRACE_EVENT_P2(x,a,b)
#define trace_P3(x,a,b,c) TRACE_EVENT_P3(x,a,b,c)
#define trace_P4(x,a,b,c,d) TRACE_EVENT_P4(x,a,b,c,d)
#define trace_P5(x,a,b,c,d,e) TRACE_EVENT_P5(x,a,b,c,d,e)
#define trace_P6(x,a,b,c,d,e,f) TRACE_EVENT_P6(x,a,b,c,d,e,f)
/**********************************************
* STANDARD DEFINITIONS
*
**********************************************/
#define UBYTE unsigned char
#define USHORT unsigned short
#define ULONG unsigned long
#define TRUE 1
#define FALSE 0
/**********************************************
* CONSTANTS
*
**********************************************/
#define PB_BOOK_DEFAULT 0 /* Default phonebook id */
#define PB_PHONEBOOKS_MAX 1 /* Maximum number of concurrent phonebooks possible */
#define PB_RECORDS_MAX 50 /* Max number of records per phonebook */
#define PB_CACHE_MAX 5 /* Maximum records stored in the RAM cache */
#define PB_ALPHATAG_MAX 20 /* Maximum length of alpha tag in characters */
#define PB_NUMBER_MAX 41 /* Maximum length of BCD number in digits*/
#define PB_EXT_MAX 0 /* Maximum length of extended data in bytes */
#define PB_NEW_RECORD -1 /* Indicate that a new record is to be created. */
#define PB_EMPTY_RECORD -1 /* Indicates that the physical record is empty */
/**********************************************
* PB_RET
*
* Standard return type from functions
*
**********************************************/
typedef enum
{
PB_OK,
PB_EXCT,
PB_ERROR, /* Generic error */
PB_BUSY, /* Phonebook is busy */
PB_FILEREADFAIL, /* File read encountered an error */
PB_FILEWRITEFAIL, /* File write encountered an error */
PB_BOOKDOESNOTEXIST, /* Tried to access a phonebook that does not exist */
PB_BOOKALREADYEXISTS, /* Tried to create a phonebook that exists already */
PB_BOOKFULL, /* Tried to add a record to a full phonebook */
PB_RECDOESNOTEXIST, /* Tried to access a record that does not exist */
PB_INDEXINVALID /* Index type is not valid for this operation */
} PB_RET;
/**********************************************
* T_PB_TYPE
*
* Type of phonebook (storage type)
*
**********************************************/
typedef enum
{
PB_TYPE_FFS = 0,
PB_TYPE_SIM = 1
} T_PB_TYPE;
/**************************************************
* T_PB_INFO
*
* Data structure to contain phonebook information.
*
**************************************************/
typedef struct
{
SHORT records_max; /* Total number of records available */
SHORT records_used; /* Number of records that are in use */
SHORT records_free; /* Number of free records */
SHORT search_results; /* Number of search results in search table */
}
T_PB_INFO;
/**************************************************
* T_PB_ALPHA
*
* Phonebook string type
*
**************************************************/
typedef struct
{
UBYTE dcs; /* Data coding scheme */
USHORT length; /* Length of the alpha tag */
USHORT *data; /* Alpha tag data */
}
T_PB_ALPHA;
/**************************************************
* T_PB_RECORD
*
* Phonebook record
*
**************************************************/
typedef struct
{
T_PB_ALPHA alpha; /* Alpha tag */
UBYTE *number; /* Number - BCD format */
UBYTE ton_npi;
void *ext_data; /* Extended data */
} T_PB_RECORD;
/**************************************************
* T_PB_LIST
*
* List of records
*
**************************************************/
typedef struct
{
SHORT records_max; /* Maximum number of items in list */
SHORT records_used; /* Occupied items in list */
T_PB_RECORD *record; /* Array of records */
}
T_PB_LIST;
/**********************************************
* T_PB_INDEX
*
* Type of index list
*
**********************************************/
typedef enum
{
INDEX_PHYSICAL = 0, /* Direct mapping logical-physical */
INDEX_NAME = 1, /*Index list sorted by the name field*/
INDEX_NUMBER = 2, /*Index list sorted by the number field*/
INDEX_SEARCH = 3, /* Index list created by search */
INDEX_DEFAULT_MAX /*Anything above this is a user-specific index */
} T_PB_INDEX;
/**********************************************
* T_PB_MATCH
*
* Result of matching operation
*
**********************************************/
typedef enum
{
MATCH_DEFAULT, /* No match made - use the default matching method */
MATCH_EXACT, /* The string matches a record exactly */
MATCH_START, /* The string is found at the start of a record */
MATCH_FRAGMENT, /* The string is found within a record */
MATCH_NONE /* The string does not match any record */
}
T_PB_MATCH;
/**********************************************
* T_PB_COMPARE
*
* Result of comparison operation
*
**********************************************/
typedef enum
{
COMPARE_DEFAULT, /* No comparison made - use the default comparison method*/
COMPARE_IDENTICAL, /* The two records are identical */
COMPARE_FIRSTBEFORE, /* The first record should come before the second record*/
COMPARE_FIRSTAFTER /* The first record should come after the second record*/
}
T_PB_COMPARE;
/**********************************************
* ATB PB FUNCTION PROTOTYPES
*
**********************************************/
PB_RET ATB_pb_GetPhonebook(SHORT phonebook_id, T_PB_TYPE *current_type);
PB_RET ATB_pb_Initialise(SHORT phonebook_id, T_PB_TYPE type, SHORT records_max, SHORT cache_max,
SHORT alpha_max, SHORT number_max, SHORT ext_max);
PB_RET ATB_pb_Exit(SHORT phonebook_id);
PB_RET ATB_pb_Status(SHORT phonebook_id);
PB_RET ATB_pb_Info(SHORT phonebook_id, T_PB_INFO *phonebook_info);
PB_RET ATB_pb_ReadRec(SHORT phonebook_id, T_PB_INDEX index_type, SHORT log_index, T_PB_RECORD *record);
PB_RET ATB_pb_WriteRec(SHORT phonebook_id, T_PB_TYPE index_type, SHORT log_index, T_PB_RECORD *record);
PB_RET ATB_pb_DeleteRec(SHORT phonebook_id, T_PB_TYPE index_type, SHORT log_index);
PB_RET ATB_pb_Find (SHORT phonebook_id, T_PB_INDEX index_type, T_PB_RECORD *record, SHORT *new_log_index, T_PB_MATCH *match);
PB_RET ATB_pb_ReadRecList(SHORT phonebook_id, T_PB_INDEX index_type, SHORT start_log_index, SHORT num_recs, T_PB_LIST *list);
PB_RET ATB_pb_Search(SHORT phonebook_id, T_PB_INDEX index_type, T_PB_RECORD *record, SHORT *recs_count);
PB_RET ATB_pb_ConvIndex(SHORT phonebook_id, T_PB_INDEX src_index_type, SHORT log_index,
T_PB_INDEX dest_index_type, SHORT *new_log_index);
PB_RET ATB_pb_OK(SHORT phonebook_id);
void ATB_pb_Error(SHORT phonebook_id, SHORT error_id);
T_PB_RECORD *ATB_pb_AllocRec(SHORT phonebook_id);
void ATB_pb_FreeRec(SHORT phonebook_id, T_PB_RECORD *record);
T_PB_LIST *ATB_pb_AllocRecList(SHORT phonebook_id, SHORT num_recs);
void ATB_pb_FreeRecList(SHORT phonebook_id, T_PB_LIST *list);
void ATB_pb_CopyRec(SHORT phonebook_id, T_PB_RECORD *dest_record, T_PB_RECORD *src_record);
void ATB_pb_CharToBCD(UBYTE *dest, char *src, int max_len);
void ATB_pb_BCDToChar(char *dest, UBYTE *src, int max_len);
/**********************************************
* GI FUNCTION PROTOTYPES
*
* Functions in GI called by ATB PB
*
**********************************************/
void GI_pb_OK(SHORT phonebook_id, SHORT command_id, void *param);
void GI_pb_Error(SHORT phonebook_id, SHORT command_id, SHORT error_id);
UBYTE* GI_pb_MemAlloc(int size);
void GI_pb_MemFree(UBYTE *mem, int size);
T_PB_COMPARE GI_pb_Compare (T_PB_RECORD *record1,T_PB_RECORD *record2, T_PB_INDEX index_type);
T_PB_MATCH GI_pb_Match(T_PB_RECORD *record1,T_PB_RECORD *record2, T_PB_INDEX index_type);
SHORT* GI_pb_GetTable (T_PB_INDEX index_type);
/**********************************************
* FS FUNCTION PROTOTYPES
*
* Functions in FS called by ATB PB
*
**********************************************/
PB_RET FS_pb_GetPhonebook(SHORT phonebook_id, T_PB_TYPE *current_type);
PB_RET FS_pb_SetPhonebook(SHORT phonebook_id, T_PB_TYPE current_type);
PB_RET FS_pb_Initialise(SHORT phonebook_id, T_PB_TYPE type, SHORT records_max, SHORT alpha_max, SHORT number_max, SHORT ext_max);
PB_RET FS_pb_ReadRec(SHORT phonebook_id, SHORT phys_index, T_PB_RECORD *record);
PB_RET FS_pb_WriteRec(SHORT phonebook_id, SHORT phys_index, T_PB_RECORD *record);
PB_RET FS_pb_DeleteRec(SHORT phonebook_id, SHORT phys_index);
PB_RET FS_pb_Finished(SHORT phonebook_id);
PB_RET FS_pb_ReadTables(SHORT phonebook_id, SHORT *records_used, SHORT *name_table, SHORT *number_table);
PB_RET FS_pb_WriteTables(SHORT phonebook_id, SHORT records_used, SHORT *name_table, SHORT *number_table);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -