/* +----------------------------------------------------------------------------- | Project : MMI-Framework (8417)| Modul : PSA_PHB+----------------------------------------------------------------------------- | Copyright 2005 Texas Instruments Berlin, AG | All rights reserved. | | This file is confidential and a trade secret of Texas | Instruments Berlin, AG | The receipt of or possession of this file does not convey | any rights to reproduce or disclose its contents or to | manufacture, use, or sell anything it may describe, in | whole, or in part, without the specific written consent of | Texas Instruments Berlin, AG. +----------------------------------------------------------------------------- | Purpose : Definitions for SIM phonebook management block| The functions of this block are aware about SIM data structures,| they are not responsible for communication with the SIM itself.| | Details can be found in the design document | "Phone Book Re-Architecture+----------------------------------------------------------------------------- */ #ifndef PHB_SIM_H#define PHB_SIM_H#include "db.h"/* * Constants */#define PHB_MAX_TAG_LEN 20 /* Arbitrary, old phonebook, nobody complained *//* * 04.08 clause 9.3.23.2 Called Party BCD allows for a * PHB_PACKED_NUM_LEN of 40 as biggest definition which * still could make any sense, but we have also to consider * ACI's MAX_PHB_NUM_LEN in aci_cmh.h, therefore a definition * of PHB_PACKED_NUM_LEN with size 20 makes more sense. * With this, an ADN entry plus exatly one EXT1 record is filled. */#define PHB_PACKED_NUM_LEN 20 /* See MAX_PHB_NUM_LEN in aci_cmh.h */#define PHB_PACKED_SUB_LEN 22 /* 11.11 clause 10.5.10, chained 2 EXT records */#define ECC_NUM_LEN 3#define FFS_PHB_DIR "/phb_db"//#define SIM_ICI 0x6f80 /* Release 1999 LRN, LMN */#define FFS_LRN 0xFF00 /* Structure of SIM_OCI, for LRN, arbitrary unique value */#define FFS_LMN 0xFF01 /* Structure of SIM_OCI, for LMN, arbitrary unique value */#define FFS_EXT_LRN 0xFF02 /* Structure of EXT5 for LRN, arbitrary unique value */#define FFS_EXT_LMN 0xFF03 /* Structure of EXT5 for LMN, arbitrary unique value */#define SIM_OCI 0x6f81 /* Release 1999 LDN */// 0x6f4e is for the SIM EXT4, so we to assign another value for EXT5 here//#define SIM_EXT5 0x6f4e /* Release 1999 EXT5 */#define SIM_EXT5 0x6f55 /* Arbitrary EXT5 value for EF_ICI/EF_OCI */#define NAME_IDX 1#define NUMBER_IDX 2/* ECC Phonebook Structure */typedef struct{ USHORT phy_idx; /* physical record number */ UBYTE number[ECC_NUM_LEN]; /* Dialing number/SSC string */} T_PHB_ECC_RECORD;/* Type of phonebook */typedef enum{ INVALID_PHB = -1, /* Invalid Phonebook Type. */ ECC = 0, /* Emergency call numbers */ /* SIM => EF_ECC */ ADN, /* Abbreviated dialing number */ /* SIM => EF_ADN */ FDN, /* Fixed dialing number */ /* SIM => EF_FDN */ BDN, /* Barred dialing number */ /* SIM => EF_BDN */ LDN, /* Last dialing number */ /* FFS => "/pcm/LDN" (old phb) */ LRN, /* Last received number */ /* FFS => "/pcm/LRN" (old phb) */ SDN, /* Service dialing number */ /* SIM => "EF_SDN" */ LMN, /* last missed number */ /* FFS => "/pcm/LMN" (old phb) */ UPN, /* User person number */ /* SIM => EF_MSISDN */ ME, /* ME phonebook, flash based */ /* FFS => to be defined */ ADN_ME, /* ADN and ME phonebook merged */ MAX_PHONEBOOK} T_PHB_TYPE;/* Phonebook result codes. Note: Not every result code occurs within the * SIM block of the phonebook (e.g. PHB_EXCT) */typedef enum{ PHB_FAIL = -1, /* execution of command failed */ PHB_LOCKED, /* needed elementary file locked */ PHB_OK, /* execution of command completed */ PHB_FULL, /* Phonebook is full */ PHB_EXCT, /* execution (writing to SIM) is running */ PHB_INVALID_IDX, /* invalid index requested */ PHB_TAG_EXCEEDED, /* entry is too long to fit on SIM */ PHB_EMPTY_RECORD /* attempted to read a free record */} T_PHB_RETURN;/* Phonebook entry match criteria */ // ### Is this PHB_SIM?typedef enum{ PHB_MATCH_GE, /* Match entry if greater or equal */ PHB_MATCH_PARTIAL /* Match entry if exact partial match */} T_PHB_MATCH;/* File locking type */typedef enum{ PHB_UNLOCKED = 0, /* Elementary file not locked */ PHB_W_LOCK = 1, /* Elementary file locked for writing */ PHB_R_LOCK = 2, /* Elementary file locked for reading */ PHB_RW_LOCK = 3 /* Elementary file locked */} T_PHB_LOCK;/* * Type definitions *//* Phonebook time */typedef struct{ UBYTE year; UBYTE month; UBYTE day; UBYTE hour; UBYTE minute; UBYTE second; UBYTE time_zone; /* 0xff means not present */ ULONG duration; /* 0 means not answered, */ /* 0xFFFFFFFF not present */} T_PHB_TIME;/* Phonebook record */typedef struct{ USHORT phy_recno; /* physical record number */ UBYTE tag_len; /* Length of Alpha identifier */ UBYTE tag[PHB_MAX_TAG_LEN]; /* Alpha identifier */ UBYTE len; /* Length of BCD number/SSC contents */ UBYTE ton_npi; /* TON and NPI */ UBYTE number[PHB_PACKED_NUM_LEN]; /* Dialing number/SSC string */ UBYTE subaddr[PHB_PACKED_SUB_LEN]; UBYTE cc_id; /* Capability/Configuration identifier */ UBYTE v_time; /* Valid flag */ T_PHB_TIME time; /* Time of phone call */ UBYTE v_line; /* Valid flag */ UBYTE line; /* MC line call was made/received upon */} T_PHB_RECORD;/* * Function prototypes */EXTERN void pb_sim_init (void);EXTERN void pb_sim_exit (void);EXTERN T_PHB_RETURN pb_sim_set_ecc (UBYTE ecc_len, const UBYTE *sim_ecc);EXTERN T_PHB_RETURN pb_sim_create_ef (USHORT ef, USHORT record_size, USHORT records);EXTERN T_PHB_RETURN pb_sim_write_ef (USHORT ef, USHORT phy_recno, USHORT entry_size, const UBYTE *buffer, BOOL *changed, USHORT *ext_record_ef, UBYTE *ext_record_no);EXTERN T_PHB_RETURN pb_sim_open (const T_imsi_field *imsi_field, BOOL *changed);EXTERN T_PHB_RETURN pb_sim_read_ef (USHORT ef, USHORT phy_recno, USHORT *entry_size, UBYTE *buffer);EXTERN T_PHB_RETURN pb_sim_remove_ef (USHORT ef);EXTERN T_PHB_RETURN pb_sim_build_index (T_PHB_TYPE type);EXTERN T_PHB_RETURN pb_sim_flush_data (void);EXTERN T_PHB_RETURN pb_sim_add_record (T_PHB_TYPE type, USHORT phy_recno, const T_PHB_RECORD *entry, T_DB_CHANGED *rec_affected);EXTERN T_PHB_RETURN pb_sim_del_record (T_PHB_TYPE type, USHORT phy_recno, T_DB_CHANGED *rec_affected);EXTERN T_PHB_RETURN pb_sim_read_record (T_PHB_TYPE type, USHORT phy_recno, T_PHB_RECORD *entry);EXTERN T_PHB_RETURN pb_sim_read_alpha_record (T_PHB_TYPE type, USHORT order_num, T_PHB_RECORD *entry);EXTERN T_PHB_RETURN pb_sim_read_number_record (T_PHB_TYPE type, USHORT order_num, T_PHB_RECORD *entry);EXTERN T_PHB_RETURN pb_sim_search_name (T_PHB_TYPE type, T_PHB_MATCH match, const T_ACI_PB_TEXT *search_tag, SHORT *order_num);EXTERN T_PHB_RETURN pb_sim_search_number (T_PHB_TYPE type, const UBYTE *number, SHORT *order_num);EXTERN T_PHB_RETURN pb_sim_read_sizes (T_PHB_TYPE type, /* IN */ SHORT *max_rcd, /* OUT */ SHORT *used_rcd, /* OUT */ UBYTE *tag_len);EXTERN int pb_sim_get_entry_len (const UBYTE *pb_tag, UBYTE max_pb_len);EXTERN int pb_sim_find_free_record (T_PHB_TYPE type);#endif /* #ifndef PHB_SIM_H */