FreeCalypso > hg > fc-magnetite
view src/aci2/aci/phb.h @ 662:8cd8fd15a095
SIM speed enhancement re-enabled and made configurable
TI's original code supported SIM speed enhancement, but Openmoko had it
disabled, and OM's disabling of speed enhancement somehow caused certain
SIM cards to start working which didn't work before (OM's bug #666).
Because our FC community is much smaller in year 2020 than OM's community
was in their day, we are not able to find one of those #666-affected SIMs,
thus the real issue they had encountered remains elusive. Thus our
solution is to re-enable SIM speed enhancement and simply wait for if
and when someone runs into a #666-affected SIM once again. We provide
a SIM_allow_speed_enhancement global variable that allows SIM speed
enhancement to be enabled or disabled per session, and an /etc/SIM_spenh
file in FFS that allows it to enabled or disabled on a non-volatile
basis. SIM speed enhancement is now enabled by default.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 24 May 2020 05:02:28 +0000 |
parents | 93999a60b835 |
children |
line wrap: on
line source
/* +----------------------------------------------------------------------------- | Project : MMI-Framework (8417) | Modul : PSA_PHB +----------------------------------------------------------------------------- | Copyright 2002 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 phonebook management of MMI framework +----------------------------------------------------------------------------- */ #ifndef PHB_H #define PHB_H #ifdef TI_PS_FFS_PHB /* * Include the header files needed for the FFS based SIM phonebook. */ #include "db.h" #include "phb_sim.h" #include "phb_aci.h" #else /* * Old RAM based SIM phonebook. */ /* A definition to avoid TI_PS_FFS_PHB sometimes */ typedef UBYTE T_PHB_STAT; #define PHB_BUSY 4 #define PHB_READY 5 #define PHB_UNKNOWN 6 #define PHB_WRITE_FAIL 7 #define PHB_NUMBER 1 #define PHB_NAME 2 #define PHB_INDEX 3 #define PHB_NO_EXT 0 #define PHB_NUMBER_EXT 1 #define PHB_SUBADDR1_EXT 2 #define PHB_SUBADDR2_EXT 3 /* SIM operation mode */ #define NO_OPERATION 0 #define FDN_DISABLE 1 #define FDN_ENABLE 2 /* definition for the maximal records in the phone book. */ #define MAX_PHB_LIST 10 #define MAX_ECC_RCD 5 #define PHB_MAX_TAG_LEN 20 #ifdef PHONEBOOK_EXTENSION #define PHB_PACKED_NUM_LEN 22 #else #define PHB_PACKED_NUM_LEN 10 #endif /* #ifdef PHONEBOOK_EXTENSION */ #define PHB_EXT_RCD 4 #define MAX_PHB_ENTRY 5 #if !defined(FAX_AND_DATA) AND !defined(GPRS) /* * for GoLite decreased to 200 entries */ #define MAX_AFB_RECORDS 200 #else #ifndef _SIMULATION /* * Increased from 255 to 300 entries - * now 16bit encoded - might be even * larger to maintain all SIM phb entries */ #define MAX_AFB_RECORDS 300 #else /* _SIMULATION */ /* The number is decreased iin case of simulation for phonebook testing purpose */ #define MAX_AFB_RECORDS 8 #endif /* _SIMULATION */ #endif #define MAX_RDM_RECORDS 30 #define MAX_ADN_BITMAP 32 #define MAX_FDN_BITMAP 10 #define MAX_BDN_BITMAP 5 #define MAX_SDN_BITMAP 5 #define MAX_ECC_BITMAP 1 #define MAX_UPN_BITMAP 1 #define PHB_ELEMENT_FREE 0 #define PHB_ELEMENT_USED 1 #ifdef PHONEBOOK_EXTENSION #define MAX_EXT1_BITMAP 8 #define MAX_EXT2_BITMAP 4 typedef enum { EXT1 = 0, /* ADN, LDN phonebook Extention */ EXT2, /* FDN phonebook Extention */ MAX_PHB_EXT } T_PHB_EXT_TYPE; typedef struct { UBYTE mem; UBYTE max_rcd; UBYTE *rcd_bitmap; } T_PHB_EXT_RECORDS; #endif /* PHONEBOOK_EXTENSION */ typedef enum { NO_PHB_ENTRY = 0, SIM_MEMORY, TE_MEMORY } T_PHB_MEMORY; #ifndef NO_ASCIIZ #define NO_ASCIIZ #endif typedef enum { ECC = 0, /* Emergency call numbers */ ADN, /* Abbreviated dialing number */ FDN, /* Fixed dialing number */ BDN, /* Barred dialing number */ LDN, /* Last dialing number */ LRN, /* Last received number */ SDN, /* Service dialing number */ LMN, /* last missed number */ ADN_FDN, /* merged ADN and FDN */ UPN, /* User person number */ MAX_PHONEBOOK } T_PHB_TYPE; /* Phonebook functional return codes */ typedef enum { PHB_FAIL = -1, /* execution of command failed */ 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 */ } T_PHB_RETURN; /* Phonebook search flag */ typedef enum { PHB_NEW_SEARCH = 0, /* execution of command failed */ PHB_NEXT_SEARCH /* execution of command completed */ } T_PHB_SEARCH; typedef struct { UBYTE book; UBYTE index; /* record number ( might be > 255) */ UBYTE tag_len; /* Length of Alpha identifier */ UBYTE tag[PHB_MAX_TAG_LEN]; /* Alpha identifier */ UBYTE len; /* Length of BCD number/SSC contens */ UBYTE ton_npi; /* TON and NPI */ UBYTE number[PHB_PACKED_NUM_LEN]; /* Dialing number/SSC string */ UBYTE subaddr[PHB_PACKED_NUM_LEN]; UBYTE cc_id; /* Capability/Configuration identifier */ UBYTE year; UBYTE month; UBYTE day; UBYTE hour; UBYTE minute; UBYTE second; UBYTE line; /* MC line call was made from/received upon */ } T_PHB_RECORD; typedef struct { UBYTE index; /* record number */ UBYTE tag_len; /* Length of Alpha identifier */ UBYTE tag[PHB_MAX_TAG_LEN]; /* Alpha identifier */ UBYTE len; /* Length of BCD number/SSC contens */ UBYTE ton_npi; /* TON and NPI */ UBYTE number[PHB_PACKED_NUM_LEN]; /* Dialing number/SSC string */ #ifdef PHONEBOOK_EXTENSION UBYTE subaddr[PHB_PACKED_NUM_LEN]; UBYTE ext_rcd_num; /* number of the extention record (0xFF => not used) */ #endif UBYTE cc_id; /* Capability/Configuration identifier */ } T_AFB_RECORD; /* Phone book entries */ /* define UNUSED_INDEX 0xFFFF */ #define UNUSED_INDEX (-1) #define UNUSED_BYTE_INDEX 0xFF typedef struct T_PHB_AFB_ELEMENT { UBYTE free; UBYTE type; SHORT prev_rcd; SHORT next_rcd; SHORT prev_trcd; SHORT next_trcd; SHORT prev_nrcd; SHORT next_nrcd; SHORT prev_mtrcd; SHORT next_mtrcd; SHORT prev_mnrcd; SHORT next_mnrcd; T_AFB_RECORD entry; } T_PHB_AFB_ELEMENT; typedef struct { UBYTE index; /* record number */ UBYTE tag_len; /* Length of Alpha identifier */ UBYTE tag[PHB_MAX_TAG_LEN]; /* Alpha identifier */ UBYTE year; UBYTE month; UBYTE day; UBYTE hour; UBYTE minute; UBYTE second; UBYTE len; /* Length of BCD number/SSC contens */ UBYTE ton_npi; /* TON and NPI */ UBYTE number[PHB_PACKED_NUM_LEN]; /* Dialing number/SSC string */ #ifdef PHONEBOOK_EXTENSION UBYTE subaddr[PHB_PACKED_NUM_LEN]; #endif UBYTE cc_id; /* Capability/Configuration identifier */ UBYTE line; /* line call was made from/received upon....*/ } T_RDM_RECORD; /* Phone book entries */ typedef struct T_PHB_RDM_ELEMENT { UBYTE free; UBYTE type; UBYTE prev_rcd; UBYTE next_rcd; T_RDM_RECORD entry; } T_PHB_RDM_ELEMENT; /* typedef struct T_PHB_RDM_ELEMENT { UBYTE free; UBYTE type; SHORT prev_rcd; SHORT next_rcd; T_RDM_RECORD entry; } T_PHB_RDM_ELEMENT; */ /* Control block for phone book */ typedef struct { UBYTE mem; UBYTE type; UBYTE service; UBYTE alpha_len; SHORT max_rcd; SHORT used_rcd; SHORT first_rcd; SHORT first_trcd; SHORT first_nrcd; SHORT first_mtrcd; SHORT first_mnrcd; UBYTE *rcd_bitmap; } T_PHB_CTB; /* typedef struct { UBYTE mem; UBYTE type; UBYTE service; UBYTE alpha_len; UBYTE max_rcd; UBYTE used_rcd; SHORT first_rcd; SHORT first_trcd; SHORT first_nrcd; SHORT first_mtrcd; SHORT first_mnrcd; UBYTE *rcd_bitmap; } T_PHB_CTB; */ typedef SHORT (*T_PHB_EXT_CMP_FCT)(UBYTE*, USHORT, UBYTE*, USHORT); EXTERN void pb_set_compare_fct (T_PHB_EXT_CMP_FCT fct_compare); EXTERN void phb_Init (void); EXTERN void pb_init (void); EXTERN void pb_init_afb (void); EXTERN void pb_exit (void); EXTERN void pb_reset (void); EXTERN T_PHB_RETURN pb_read_ecc (USHORT error, UBYTE ecc_len, UBYTE *sim_ecc); EXTERN BOOL pb_read_sim (USHORT data_id, UBYTE rcd_num, UBYTE len); EXTERN void pb_copy_sim_entry (SHORT cur_index); EXTERN void pb_read_cb (SHORT table_id); EXTERN void pb_read_ext_cb (SHORT table_id); EXTERN void pb_build_req (T_SIM_MMI_INSERT_IND *sim_mmi_insert_ind); EXTERN T_PHB_RETURN pb_start_build (BOOL unchanged); EXTERN T_PHB_RETURN pb_read_eeprom_req (void); EXTERN void pb_read_sim_req (void); EXTERN T_PHB_RETURN pb_write_sim (UBYTE type, UBYTE rcd_num); EXTERN void pb_write_eeprom (void); EXTERN UBYTE pb_ssc (UBYTE nr, UBYTE * serv_table); EXTERN void pb_record_sort (SHORT cur_index); EXTERN void pb_l_record_sort (SHORT cur_index); EXTERN void pb_alpha_sort (SHORT cur_index); EXTERN void pb_num_sort (SHORT cur_index); EXTERN void pb_malpha_sort (SHORT cur_index); EXTERN void pb_mnum_sort (SHORT cur_index); EXTERN T_PHB_RETURN pb_add_record (UBYTE type, UBYTE index, T_PHB_RECORD *entry); EXTERN T_PHB_RETURN pb_delete_record (UBYTE type, UBYTE index, UBYTE *ext_rcd_num, BOOL permanent); EXTERN T_PHB_RETURN pb_read_phys_record (UBYTE type, SHORT index, T_PHB_RECORD *entry); EXTERN T_PHB_RETURN pb_read_index_record (UBYTE type, SHORT index, T_PHB_RECORD *entry); EXTERN T_PHB_RETURN pb_read_alpha_record (UBYTE type, SHORT index, T_PHB_RECORD *entry); EXTERN T_PHB_RETURN pb_read_number_record (UBYTE type, SHORT index, T_PHB_RECORD *entry); EXTERN T_PHB_RETURN pb_search_name (T_ACI_CMD_SRC srcId, UBYTE type, T_ACI_PB_TEXT *searchName, UBYTE mode, SHORT *first_ind, SHORT *result, T_PHB_RECORD *entry); EXTERN T_PHB_RETURN pb_search_number (UBYTE type, UBYTE *number, UBYTE mode, SHORT *first_ind, SHORT *result, T_PHB_RECORD *entry); EXTERN void pb_rcd_chain (UBYTE type, SHORT prev_index, SHORT cur_index, SHORT next_index); EXTERN void pb_l_rcd_chain (UBYTE type, SHORT prev_index, SHORT cur_index, SHORT next_index); EXTERN void pb_name_chain (UBYTE type, SHORT prev_index, SHORT cur_index, SHORT next_index); EXTERN void pb_num_chain (UBYTE type, SHORT prev_index, SHORT cur_index, SHORT next_index); EXTERN void pb_mname_chain (UBYTE type, SHORT prev_index, SHORT cur_index, SHORT next_index); EXTERN void pb_mnum_chain (UBYTE type, SHORT prev_index, SHORT cur_index, SHORT next_index); EXTERN T_PHB_RETURN pb_read_status (UBYTE type, UBYTE *service, SHORT *max_rcd, SHORT *used_rcd, UBYTE *tag_len, SHORT *avail_rcd); EXTERN void pb_status_req (UBYTE *mode); EXTERN T_PHB_RETURN pb_first_free (UBYTE type,SHORT *first_free); EXTERN T_PHB_RETURN pb_check_fdn (UBYTE toa, const UBYTE *number); EXTERN UBYTE pb_check_number (char *cur_number, char *number); #ifdef PHONEBOOK_EXTENSION EXTERN T_PHB_RETURN pb_write_sim_ext (USHORT data_id, UBYTE rcd_num); #endif EXTERN T_PHB_RETURN pb_switch_adn_fdn (UBYTE mode, T_ACI_CLASS classFDN); EXTERN void pb_copy_ldn_record (SHORT index, UBYTE flag); EXTERN void pb_copy_lrn_record (SHORT index, UBYTE flag); EXTERN void pb_copy_lmn_record (SHORT index, UBYTE flag); EXTERN T_PHB_RETURN pb_delete_book (UBYTE book); EXTERN void pb_delete_sim_book (UBYTE book); EXTERN void pb_update_ecc (void); EXTERN int pb_get_entry_len (const UBYTE *pb_tag, UBYTE max_pb_len); EXTERN T_ACI_CLASS pb_get_fdn_classtype (void); EXTERN void pb_set_fdn_input_classtype (T_ACI_CLASS classtype); EXTERN UBYTE pb_get_fdn_mode (void); EXTERN void pb_set_fdn_mode (UBYTE fdnmode); #endif /* else, #ifdef TI_PS_FFS_PHB */ #endif /* #ifndef PHB_H */