comparison 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
comparison
equal deleted inserted replaced
2:c41a534f33c6 3:93999a60b835
1 /**********************************************
2 * T_PB_COMMAND
3 *
4 * Command ID of executing function
5 *
6 **********************************************/
7
8 typedef enum
9 {
10 PB_INITIALISE,
11 PB_READREC,
12 PB_WRITEREC,
13 PB_DELETEREC,
14 PB_FIND,
15 PB_READRECLIST,
16 PB_SEARCH
17 }
18 T_PB_COMMAND;
19
20
21 /**********************************************
22 * T_PB_STATUS
23 *
24 * Status of executing function
25 *
26 **********************************************/
27
28 typedef enum
29 {
30 PB_STATUS_NONE,
31 PB_STATUS_INIT,
32 PB_STATUS_EXEC,
33 PB_STATUS_COMPLETE
34 } T_PB_STATUS;
35
36 typedef struct
37 {
38 T_PB_TYPE type; /* The type of phonebook */
39 SHORT records_max; /* The maximum no. of records that can be stored */
40 SHORT phys_index;
41 T_PB_RECORD *record; /* Currently read record */
42 UBYTE first_record; /* Flag that is true when the first record is being read */
43 }
44 T_PB_INITIALISE;
45
46 typedef struct
47 {
48 SHORT log_index;
49 T_PB_TYPE index_type;
50 SHORT phys_index;
51 T_PB_RECORD *record;
52 }
53 T_PB_WRITEREC;
54
55 typedef struct
56 {
57 SHORT log_index;
58 T_PB_TYPE index_type;
59 SHORT phys_index;
60 }
61 T_PB_DELETEREC;
62
63 typedef union
64 {
65 T_PB_INITIALISE Initialise;
66 T_PB_WRITEREC WriteRec;
67 T_PB_DELETEREC DeleteRec;
68 }
69 T_PB_PARAM;
70
71 /**************************************************
72 * T_PB_DATA
73 *
74 * Data structure to keep track of phonebook entries
75 * and index tables.
76 *
77 **************************************************/
78
79 typedef struct
80 {
81 T_PB_TYPE current_type; /* Currently selected phonebook */
82 SHORT records_max; /* Total number of records available */
83 SHORT records_used; /* Number of records that are in use */
84 SHORT search_results; /* Number of results for last search */
85
86 SHORT alpha_max; /* Max size of alpha tag in bytes */
87 SHORT number_max; /* Max size of phone number in bytes */
88 SHORT ext_max; /* Max size of extended data in bytes */
89
90 SHORT* name_table; /* Index table, sorted by name. Dynamically updated. */
91 SHORT* number_table; /* Index table, sorted by phone number. Dynamically updated. */
92 SHORT* search_table; /* Search table, contains matching elements. Sorted by whichever field is searched.
93 Not dynamically updated. */
94
95 SHORT* in_memory; /* -1 if the record does not exist
96 * 0 if the record is not in RAM
97 * >0 - number of times record has been read */
98 SHORT cache_max; /* Maximum number of records that can be stored in memory concurrently*/
99 SHORT cache_size; /* Current size of the cache */
100 T_PB_RECORD** cache; /* List of entries in cache */
101
102 T_PB_COMMAND command_id; /* Currently processing command */
103 T_PB_STATUS status; /* Status of current command */
104 T_PB_PARAM param; /* Parameter storage for current command */
105 }
106 T_PB_DATA;
107
108
109 /* FUNCTION PROTOTYPES */
110 T_PB_DATA* ATB_hnd_GetPbData(SHORT phonebook_id);
111 void ATB_hnd_SetPbData(SHORT phonebook_id, T_PB_DATA *data);
112 PB_RET ATB_status_Initialise(SHORT phonebook_id);
113 PB_RET ATB_status_WriteRec(SHORT phonebook_id);
114 PB_RET ATB_status_DeleteRec(SHORT phonebook_id);
115
116 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);
117 SHORT *ATB_index_GetTable(SHORT phonebook_id, T_PB_INDEX index_type);
118 SHORT ATB_index_GetPhysIndex(SHORT phonebook_id, T_PB_INDEX index_type, SHORT log_index);
119 SHORT ATB_index_GetLogIndex(SHORT phonebook_id, T_PB_INDEX index_type, SHORT phys_index);
120 void ATB_index_AddRec(SHORT phonebook_id, T_PB_INDEX index_type, SHORT phys_index, T_PB_RECORD *record, SHORT *new_log_index);
121 void ATB_index_RemoveRec(SHORT phonebook_id, T_PB_INDEX index_type, SHORT log_index);
122
123 T_PB_MATCH ATB_index_Match(T_PB_RECORD *record1, T_PB_RECORD *record2, T_PB_INDEX index_type);
124 T_PB_COMPARE ATB_index_Compare(T_PB_RECORD *record1, T_PB_RECORD *record2, T_PB_INDEX index_type);
125 T_PB_COMPARE ATB_alpha_Match(T_PB_ALPHA *alpha1, T_PB_ALPHA *alpha2);
126 T_PB_COMPARE ATB_alpha_Compare(T_PB_ALPHA *Alpha_1, T_PB_ALPHA *Alpha_2);
127 UBYTE ATB_num_Digit(UBYTE *num, SHORT numIndex);
128 T_PB_MATCH ATB_num_Match(UBYTE *num1, UBYTE *num2);
129 T_PB_COMPARE ATB_num_Compare(UBYTE *num1, UBYTE *num2);
130 void ATB_mem_UpdateCache(SHORT phonebook_id, SHORT phys_index, T_PB_RECORD *record);
131 PB_RET ATB_mem_ReadRec(SHORT phonebook_id, T_PB_INDEX index_type, SHORT log_index, T_PB_RECORD *record);