FreeCalypso > hg > fc-magnetite
diff src/aci2/atb/ATBPb_i.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_i.h Mon Sep 26 00:29:36 2016 +0000 @@ -0,0 +1,131 @@ +/********************************************** + * T_PB_COMMAND + * + * Command ID of executing function + * + **********************************************/ + +typedef enum +{ + PB_INITIALISE, + PB_READREC, + PB_WRITEREC, + PB_DELETEREC, + PB_FIND, + PB_READRECLIST, + PB_SEARCH +} +T_PB_COMMAND; + + +/********************************************** + * T_PB_STATUS + * + * Status of executing function + * + **********************************************/ + +typedef enum +{ + PB_STATUS_NONE, + PB_STATUS_INIT, + PB_STATUS_EXEC, + PB_STATUS_COMPLETE +} T_PB_STATUS; + +typedef struct +{ + T_PB_TYPE type; /* The type of phonebook */ + SHORT records_max; /* The maximum no. of records that can be stored */ + SHORT phys_index; + T_PB_RECORD *record; /* Currently read record */ + UBYTE first_record; /* Flag that is true when the first record is being read */ +} +T_PB_INITIALISE; + +typedef struct +{ + SHORT log_index; + T_PB_TYPE index_type; + SHORT phys_index; + T_PB_RECORD *record; +} +T_PB_WRITEREC; + +typedef struct +{ + SHORT log_index; + T_PB_TYPE index_type; + SHORT phys_index; +} +T_PB_DELETEREC; + +typedef union +{ + T_PB_INITIALISE Initialise; + T_PB_WRITEREC WriteRec; + T_PB_DELETEREC DeleteRec; +} +T_PB_PARAM; + +/************************************************** + * T_PB_DATA + * + * Data structure to keep track of phonebook entries + * and index tables. + * +**************************************************/ + +typedef struct +{ + T_PB_TYPE current_type; /* Currently selected phonebook */ + SHORT records_max; /* Total number of records available */ + SHORT records_used; /* Number of records that are in use */ + SHORT search_results; /* Number of results for last search */ + + SHORT alpha_max; /* Max size of alpha tag in bytes */ + SHORT number_max; /* Max size of phone number in bytes */ + SHORT ext_max; /* Max size of extended data in bytes */ + + SHORT* name_table; /* Index table, sorted by name. Dynamically updated. */ + SHORT* number_table; /* Index table, sorted by phone number. Dynamically updated. */ + SHORT* search_table; /* Search table, contains matching elements. Sorted by whichever field is searched. + Not dynamically updated. */ + + SHORT* in_memory; /* -1 if the record does not exist + * 0 if the record is not in RAM + * >0 - number of times record has been read */ + SHORT cache_max; /* Maximum number of records that can be stored in memory concurrently*/ + SHORT cache_size; /* Current size of the cache */ + T_PB_RECORD** cache; /* List of entries in cache */ + + T_PB_COMMAND command_id; /* Currently processing command */ + T_PB_STATUS status; /* Status of current command */ + T_PB_PARAM param; /* Parameter storage for current command */ +} +T_PB_DATA; + + +/* FUNCTION PROTOTYPES */ +T_PB_DATA* ATB_hnd_GetPbData(SHORT phonebook_id); +void ATB_hnd_SetPbData(SHORT phonebook_id, T_PB_DATA *data); +PB_RET ATB_status_Initialise(SHORT phonebook_id); +PB_RET ATB_status_WriteRec(SHORT phonebook_id); +PB_RET ATB_status_DeleteRec(SHORT phonebook_id); + +PB_RET ATB_index_Find (SHORT phonebook_id, T_PB_INDEX index_type, T_PB_RECORD *record, SHORT *new_log_index, T_PB_MATCH *match); +SHORT *ATB_index_GetTable(SHORT phonebook_id, T_PB_INDEX index_type); +SHORT ATB_index_GetPhysIndex(SHORT phonebook_id, T_PB_INDEX index_type, SHORT log_index); +SHORT ATB_index_GetLogIndex(SHORT phonebook_id, T_PB_INDEX index_type, SHORT phys_index); +void ATB_index_AddRec(SHORT phonebook_id, T_PB_INDEX index_type, SHORT phys_index, T_PB_RECORD *record, SHORT *new_log_index); +void ATB_index_RemoveRec(SHORT phonebook_id, T_PB_INDEX index_type, SHORT log_index); + +T_PB_MATCH ATB_index_Match(T_PB_RECORD *record1, T_PB_RECORD *record2, T_PB_INDEX index_type); +T_PB_COMPARE ATB_index_Compare(T_PB_RECORD *record1, T_PB_RECORD *record2, T_PB_INDEX index_type); +T_PB_COMPARE ATB_alpha_Match(T_PB_ALPHA *alpha1, T_PB_ALPHA *alpha2); +T_PB_COMPARE ATB_alpha_Compare(T_PB_ALPHA *Alpha_1, T_PB_ALPHA *Alpha_2); +UBYTE ATB_num_Digit(UBYTE *num, SHORT numIndex); +T_PB_MATCH ATB_num_Match(UBYTE *num1, UBYTE *num2); +T_PB_COMPARE ATB_num_Compare(UBYTE *num1, UBYTE *num2); +void ATB_mem_UpdateCache(SHORT phonebook_id, SHORT phys_index, T_PB_RECORD *record); +PB_RET ATB_mem_ReadRec(SHORT phonebook_id, T_PB_INDEX index_type, SHORT log_index, T_PB_RECORD *record);