FreeCalypso > hg > fc-magnetite
diff src/aci2/atb/ATBPb.h @ 3:93999a60b835
src/aci2, src/condat2: import of g23m/condat source pieces from TCS211
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 26 Sep 2016 00:29:36 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/aci2/atb/ATBPb.h Mon Sep 26 00:29:36 2016 +0000 @@ -0,0 +1,265 @@ +#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); +// Dec 22, 2004 REF: CRR MFW-SPR-27847 xnkulkar +// Description: MFW memory size variable changed from U16 -> U32 +// Solution: The use of variable U16 has been replaced with U32 +UBYTE* GI_pb_MemAlloc(U32 size); +void GI_pb_MemFree(UBYTE *mem, U32 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