FreeCalypso > hg > fc-tourmaline
view src/cs/drivers/drv_app/ffs/pcm.h @ 275:79cfefc1e2b4
audio mode load: gracefully handle mode files of wrong AEC version
Unfortunately our change of enabling L1_NEW_AEC (which is necessary
in order to bring our Calypso ARM fw into match with the underlying
DSP reality) brings along a change in the audio mode file binary
format and file size - all those new tunable AEC parameters do need
to be stored somewhere, after all. But we already have existing
mode files in the old format, and setting AEC config to garbage when
loading old audio modes (which is what would happen without the
present change) is not an appealing proposition.
The solution implemented in the present change is as follows: the
audio mode loading code checks the file size, and if it differs
from the active version of T_AUDIO_MODE, the T_AUDIO_AEC_CFG structure
is cleared - set to the default (disabled AEC) for the compiled type
of AEC. We got lucky in that this varying T_AUDIO_AEC_CFG structure
sits at the end of T_AUDIO_MODE!
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 30 Jul 2021 02:55:48 +0000 |
parents | 4e78acac3d88 |
children |
line wrap: on
line source
/* +--------------------------------------------------------------------+ | PROJECT: GSM-MFW (?) $Workfile:: pcm.h $| | $Author: mmj $Revision:: 1 $| | CREATED: 07.10.98 $Modtime:: 15.12.99 10:59 $| | STATE : code | +--------------------------------------------------------------------+ PURPOSE : Types definitions for the permanent memory configuration */ #ifndef DEF_PCM #define DEF_PCM #ifndef TARGET #include "ffs.cfg" #endif #if (TARGET == 1) #include "rv/general.h" #else typedef unsigned char UBYTE; typedef unsigned short USHORT; #endif #define LEN_MSCAP (NR_EF_MSCAP * SIZE_EF_MSCAP) + 2 #define LEN_IMEI (NR_EF_IMEI * SIZE_EF_IMEI) + 2 #define LEN_IMSI (NR_EF_IMSI * SIZE_EF_IMSI) + 2 #define LEN_SMS (NR_EF_SMS * SIZE_EF_SMS) + 2 #define LEN_CLASS2 (NR_EF_CLASS2 * SIZE_EF_CLASS2) + 2 #define LEN_CLASS3 (NR_EF_CLASS3 * SIZE_EF_CLASS3) + 2 #define LEN_MSSUP (NR_EF_MSSUP * SIZE_EF_MSSUP) + 2 #define LEN_CLNG (NR_EF_CLNG * SIZE_EF_CLNG) + 2 #define LEN_MSSET (NR_EF_MSSET * SIZE_EF_MSSET) + 2 #define LEN_HZCACHE (NR_EF_HZCACHE * SIZE_EF_HZCACHE) + 2 #define LEN_LDN (NR_EF_LDN * SIZE_EF_LDN) + 2 #define LEN_LRN (NR_EF_LRN * SIZE_EF_LRN) + 2 #define LEN_LMN (NR_EF_LMN * SIZE_EF_LMN) + 2 #define LEN_UPN (NR_EF_UPN * SIZE_EF_UPN) + 2 #define LEN_MBN (NR_EF_MBN * SIZE_EF_MBN) + 2 #define LEN_VMN (NR_EF_VMN * SIZE_EF_VMN) + 2 #define LEN_CTIM (NR_EF_CTIM * SIZE_EF_CTIM) + 2 #define LEN_CCNT (NR_EF_CCNT * SIZE_EF_CCNT) + 2 #define LEN_ECC (NR_EF_ECC * SIZE_EF_ECC) + 2 #define LEN_ORG (NR_EF_ORG * SIZE_EF_ORG) + 2 #define LEN_CCP (NR_EF_CCP * SIZE_EF_CCP) + 2 #define LEN_EXT1 (NR_EF_EXT1 * SIZE_EF_EXT1) + 2 #define LEN_SIMLCK (NR_EF_SIMLCK * SIZE_EF_SIMLCK) + 2 #define LEN_MAIN (NR_EF_MAIN * SIZE_EF_MAIN) + 2 #define LEN_SFK (NR_EF_SFK * SIZE_EF_SFK) + 2 #define LEN_FAULT (NR_EF_FAULT * SIZE_EF_FAULT) + 2 #define LEN_DEBUG (NR_EF_DEBUG * SIZE_EF_DEBUG) + 2 #define LEN_POWER (NR_EF_POWER * SIZE_EF_POWER) + 2 #define LEN_KEYB (NR_EF_KEYB * SIZE_EF_KEYB) + 2 #define LEN_RADIO (NR_EF_RADIO * SIZE_EF_RADIO) + 2 #define LEN_CGMI (NR_EF_CGMI * SIZE_EF_CGMI) + 2 #define LEN_INF0 (NR_EF_INF0 * SIZE_EF_INF0) + 2 #define LEN_CGMM (NR_EF_CGMM * SIZE_EF_CGMM) + 2 #define LEN_CGMR (NR_EF_CGMR * SIZE_EF_CGMR) + 2 #define LEN_CGSN (NR_EF_CGSN * SIZE_EF_CGSN) + 2 #define LEN_SMSPRFL (NR_EF_SMSPRFL * SIZE_EF_SMSPRFL) + 2 #define LEN_PLMN (NR_EF_PLMN * SIZE_EF_PLMN) + 2 #define LEN_BCCHINFO (NR_EF_BCCHINFO * SIZE_EF_BCCHINFO) + 2 #define LEN_ALS (NR_EF_ALS * SIZE_EF_ALS) + 2 #define LEN_LOCGPRS (NR_EF_LOCGPRS * SIZE_EF_LOCGPRS) + 2 #define LEN_KCGPRS (NR_EF_KCGPRS * SIZE_EF_KCGPRS) + 2 #define LEN_IMSIGPRS (NR_EF_IMSIGPRS * SIZE_EF_IMSIGPRS) + 2 #define PCM_SIZE (LEN_MSCAP + LEN_IMEI + LEN_IMSI + LEN_SMS + \ LEN_CLASS2 + LEN_CLASS3 + LEN_MSSUP + LEN_CLNG + \ LEN_MSSET + LEN_HZCACHE+ LEN_LDN + LEN_LRN + LEN_LMN + \ LEN_UPN + LEN_MBN + LEN_VMN + LEN_CTIM + \ LEN_CCNT + LEN_ECC + LEN_ORG + LEN_CCP + \ LEN_EXT1 + LEN_SIMLCK + LEN_MAIN + LEN_SFK + \ LEN_FAULT + LEN_DEBUG + LEN_POWER + LEN_KEYB + \ LEN_RADIO + LEN_CGMI + LEN_INF0 + LEN_CGMM + \ LEN_CGMR + LEN_CGSN + LEN_SMSPRFL + LEN_PLMN + \ LEN_BCCHINFO + LEN_ALS + LEN_LOCGPRS + LEN_KCGPRS + \ LEN_IMSIGPRS) /******************************************************************** * * Parameters written in flash memory * ********************************************************************/ #define PCM_SERIAL_CONFIG (0) /******************************************************************** * * Access functions to bit fields * ********************************************************************/ #define EXTERN extern #ifndef __BF_FUNCCALL__ #define FldGet(f,n) ((((ULONG)f)&((ULONG)n##m))>>n##s) #define FldSet(f,n,v) ((((ULONG)f)&(~((ULONG)n##m)))|(((ULONG)v)<<n##s)) #else ULONG FldGet (ULONG f, ULONG m, int s) { return ((f&m)>>s); } ULONG FldSet (ULONG f, ULONG m, int s, ULONG v) { return ((f&(~m))|((v<<s)&m)); } #endif /******************************************************************** * * Field Identitifer * ********************************************************************/ #define EF_MSCAP_ID "MSCAP" /* Mobile Capabilities */ #define EF_IMEI_ID "IMEI" /* Int. Mobile Equipment Id. */ #define EF_IMSI_ID "IMSI" /* Int. Mobile Subscriber Id. */ #define EF_SMS_ID "SMS" /* Short Message Service */ #define EF_CLASS2_ID "CLASS2" /* MS Classmark 2 */ #define EF_CLASS3_ID "CLASS3" /* MS Classmark 3 */ #define EF_MSSUP_ID "MSSUP" /* Mobile Setup */ #define EF_CLNG_ID "CLNG" /* Current Language */ #define EF_MSSET_ID "MSSET" /* MS Settings */ #define EF_HZCACHE_ID "HZCACHE" /* Homezone cache */ #define EF_LDN_ID "LDN" /* Last MOC Numbers */ #define EF_LRN_ID "LRN" /* Last MTC Numbers */ #define EF_LMN_ID "LMN" /* Last MTC Missed Numbers */ #define EF_UPN_ID "UPN" /* User Personal Numbers */ #define EF_MBN_ID "MBN" /* Mailbox Numbers */ #define EF_VMN_ID "VMN" /* Voice Mail Number */ #define EF_CTIM_ID "CTIM" /* Call Timer */ #define EF_CCNT_ID "CCNT" /* Call Counter */ #define EF_ECC_ID "ECC" /* Emergency Call Codes */ #define EF_ORG_ID "ORG" /* Organizer and Alarm */ #define EF_CCP_ID "CCP" /* Cap and Config Params */ #define EF_EXT1_ID "EXT1" /* Extension 1 */ #define EF_SIMLCK_ID "SIMLCK" /* SIM Lock */ #define EF_SIMLCKEXT_ID "SIMLCKEXT" /* Extended SIM Lock */ #define EF_MAIN_ID "MAIN" /* Maintenance Information */ #define EF_SFK_ID "SFK" /* Special Function Keys */ #define EF_FAULT_ID "FAULT" /* Fault Conditions */ #define EF_DEBUG_ID "DEBUG" /* Debug Information */ #define EF_POWER_ID "POWER" /* Power Management */ #define EF_KEYB_ID "KEYB" /* Keyboard Mapping */ #define EF_RADIO_ID "RADIO" /* Radio Parameters */ #define EF_CGMI_ID "CGMI" /* Manufacturer */ #define EF_INF0_ID "INF0" /* Identification Information */ #define EF_CGMM_ID "CGMM" /* Model */ #define EF_CGMR_ID "CGMR" /* Revision */ #define EF_CGSN_ID "CGSN" /* Product Serial Number */ #define EF_SMSPRFL_ID "SMSPRFL" /* SMS Profile */ #define EF_PLMN_ID "PLMN" /* PLMN Identifier */ #define EF_BCCHINFO_ID "BCCHINF" /* BCCH Information */ #define EF_ALS_ID "ALS" /* Alternative Line Service */ #define EF_LOCGPRS_ID "LOCGPRS" /* Location Info. (GPRS) */ #define EF_KCGPRS_ID "KCGPRS" /* Ciphering Key (GPRS) */ #define EF_IMSIGPRS_ID "IMSIGPRS" /* IMSI (GPRS) */ /******************************************************************** * * Return Values * ********************************************************************/ #define drv_Return_Type UBYTE #define PCM_OK 0 #define PCM_INITIALIZED 1 #define PCM_INVALID_FILE 2 #define PCM_INVALID_SIZE 3 #define PCM_INVALID_CKSM 4 #define PCM_INVALID_RECORD 5 #define PCM_NVRAM_ACCS_FAIL 6 #define PCM_ERASE_ERROR 7 #define PCM_WRITE_ERROR 8 /* * Field Info Structure */ typedef struct pcm_FileInfo_Type { UBYTE *FileLocation; USHORT FileSize; UBYTE Version; } pcm_FileInfo_Type; typedef struct { char *identifier; USHORT start; USHORT length; USHORT records; } T_PCM_DESCRIPTION; /******************************************************************** * * Field MOBILE CAPABILITIES - MSCAP * ********************************************************************/ typedef struct pcm_EFmscap_Type { UBYTE chnMode; /* channel modes */ UBYTE datCap1; /* data capabilities */ UBYTE datCap2; /* data capabilities */ UBYTE featLst1; /* feature list */ UBYTE featLst2; /* feature list */ UBYTE featLst3; /* feature list */ } EF_MSCAP; #define SIZE_EF_MSCAP 6 #define NR_EF_MSCAP 1 /* * chnMode bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |L1 |Tm |afs |ahs |spV3 |efrV2 |hr |spV1 | * ------------------------------------------------------- */ #define spchSupV1 0x00000001,0 /* speech support (vers. 1) */ #define spchSupV1m 0x00000001 #define spchSupV1s 0 #define hrSup 0x00000002,1 /* HR support */ #define hrSupm 0x00000002 #define hrSups 1 #define HR_EFRSup 0x00000006,1 /* HR and EFR support */ #define HR_EFRSupm 0x00000006 #define HR_EFRSups 1 #define EFRSupV2 0x00000004,2 /* enhanced FR support (v2) */ #define EFRSupV2m 0x00000004 #define EFRSupV2s 2 #define EFRSupV3 0x00000008,3 /* speech support (vers 3) */ #define EFRSupV3m 0x00000008 #define EFRSupV3s 3 #define VocSup 0x0000000F,0 /* vocoder support */ #define VocSupm 0x0000000F #define VocSups 0 #define AHS 0x00000010,4 /* adaptive multirate half rate speech */ #define AHSm 0x00000010 #define AHSs 4 #define AFS 0x00000020,5 /* adaptive multirate full rate speech */ #define AFSm 0x00000020 #define AFSs 5 #define TestMobile 0x00000040,6 /* Test Mobile */ #define TestMobilem 0x00000040 #define TestMobiles 6 #define L1Ver 0x00000080,7 /* Layer 1 Version */ #define L1Verm 0x00000080 #define L1Vers 7 /* * datCap1 bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |14.4 |tfax |ntfax |tsyn |syn |asyn |rlp |ds | * ------------------------------------------------------- */ #define datSup 0x00000001,0 /* Data support */ #define datSupm 0x00000001 #define datSups 0 #define RLPSup 0x00000002,1 /* RLP data (NT Async) */ #define RLPSupm 0x00000002 #define RLPSups 1 #define AsySup 0x00000004,2 /* T Async data support */ #define AsySupm 0x00000004 #define AsySups 2 #define NTSynSup 0x00000008,3 /* NT Sync data support */ #define NTSynSupm 0x00000008 #define NTSynSups 3 #define TSynSup 0x00000010,4 /* T Sync data support */ #define TSynSupm 0x00000010 #define TSynSups 4 #define NTFaxSup 0x00000020,5 /* NT Fax support */ #define NTFaxSupm 0x00000020 #define NTFaxSups 5 #define TFaxSup 0x00000040,6 /* T Fax support */ #define TFaxSupm 0x00000040 #define TFaxSups 6 #define Dr14_4Sup 0x00000080,7 /* Data rate 14.4 support */ #define Dr14_4Supm 0x00000080 #define Dr14_4Sups 7 /* * datCap2 bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |DHR | | |NAS |TPD |NTPD |TP |NTP | * ------------------------------------------------------- */ #define NTPackSup 0x00000001,0 /* NT Packet Service */ #define NTPackSupm 0x00000001 #define NTPackSups 0 #define TPackSup 0x00000002,1 /* T Packet Service */ #define TPackSupm 0x00000002 #define TPackSups 1 #define NTPadSup 0x00000004,2 /* NT PAD Access Service */ #define NTPadSupm 0x00000004 #define NTPadSups 2 #define TPadSup 0x00000008,3 /* T PAD Access Service */ #define TPadSupm 0x00000008 #define TPadSups 3 #define NAltSrvSup 0x00000010,4 /* No Alternate Services */ #define NAltSrvSupm 0x00000010 #define NAltSrvSups 4 #define DHRSup 0x00000080,7 /* Data Halfrate support */ #define DHRSupm 0x00000080 #define DHRSups 7 /******************************************************************** * * Field INTERNATIONAL MOBILE EQUIPMENT ID - IMEI * ********************************************************************/ typedef struct pcm_EFimei_Type { UBYTE tac1; UBYTE tac2; UBYTE tac3; UBYTE fac; UBYTE snr1; UBYTE snr2; UBYTE snr3; UBYTE svn; } EF_IMEI; #define SIZE_EF_IMEI 8 #define NR_EF_IMEI 1 /******************************************************************** * * Field INTERNATIONAL MOBILE SUBSCRIBER ID - IMSI * ********************************************************************/ typedef struct pcm_EFimsi_Type { UBYTE len; /* length IMSI */ UBYTE IMSI[8]; /* IMSI */ } EF_IMSI; #define SIZE_EF_IMSI 9 #define NR_EF_IMSI 1 /******************************************************************** * * Field SHORT MESSAGE SERVICE - SMS * ********************************************************************/ typedef struct pcm_EFsms_Type { UBYTE stat; /* status */ UBYTE rmd[175]; /* remainder */ } EF_SMS; #define SIZE_EF_SMS 176 #define NR_EF_SMS 1 /* * stat bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |reserved |status | * ------------------------------------------------------- */ /******************************************************************** * * Field MOBILE STATION CLASSMARK 2 - CLASS2 * ********************************************************************/ typedef struct pcm_EFclass2_Type { UBYTE byte1; /* class2 byte 1 */ UBYTE byte2; /* class2 byte 2 */ UBYTE byte3; /* class2 byte 3 */ } EF_CLASS2; #define SIZE_EF_CLASS2 3 #define NR_EF_CLASS2 1 /* * byte1 bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |- |rev |es |a5/1 |rfpwr | * ------------------------------------------------------- */ #define rfPwrCap 0x00000007,0 /* rf power capability */ #define rfPwrCapm 0x00000007 #define rfPwrCaps 0 #define a51 0x00000008,3 /* rf power capability */ #define a51m 0x00000008 #define a51s 3 #define esInd 0x00000010,4 /* ES indicator */ #define esIndm 0x00000010 #define esInds 4 #define revLev 0x00000060,5 /* revision level */ #define revLevm 0x00000060 #define revLevs 5 /* * byte2 bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |- |ps |ss |sm |reserved |frq | * ------------------------------------------------------- */ #define freqCap 0x00000001,0 /* frequency capability */ #define freqCapm 0x00000001 #define freqCaps 0 #define smCap 0x00000008,3 /* SM capability */ #define smCapm 0x00000008 #define smCaps 3 #define ssScrInd 0x00000030,4 /* SS Screen Indicator */ #define ssScrIndm 0x00000030 #define ssScrInds 4 #define psCap 0x00000040,6 /* PS capability */ #define psCapm 0x00000040 #define psCaps 6 /* * byte3 bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |CM3 |reserved |A5/3 |A5/2 | * ------------------------------------------------------- */ #define a52 0x00000001,0 /* encryption algorithm A5/2 */ #define a52m 0x00000001 #define a52s 0 #define a53 0x00000002,1 /* encryption algorithm A5/3 */ #define a53m 0x00000002 #define a53s 1 #define cm3 0x000000f8,7 /* CM3 */ #define cm3m 0x000000f8 #define cm3s 7 /******************************************************************** * * Field MOBILE STATION CLASSMARK 3 - CLASS3 * ********************************************************************/ typedef struct pcm_EFclass3_Type { UBYTE byte1; /* class3 byte 1 */ UBYTE byte2; /* class3 byte 2 */ UBYTE byte3; /* class3 byte 3 */ } EF_CLASS3; #define SIZE_EF_CLASS3 3 #define NR_EF_CLASS3 1 /* * byte1 bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |- |bnd3 |bnd2 |bnd1 |a5/7 |a5/6 |a5/5 |a5/4 | * ------------------------------------------------------- */ #define a54 0x00000001,0 /* encryption algorithm A5/4 */ #define a54m 0x00000001 #define a54s 0 #define a55 0x00000002,1 /* encryption algorithm A5/5 */ #define a55m 0x00000002 #define a55s 1 #define a56 0x00000004,2 /* encryption algorithm A5/6 */ #define a56m 0x00000004 #define a56s 2 #define a57 0x00000008,3 /* encryption algorithm A5/7 */ #define a57m 0x00000008 #define a57s 3 #define bnd1 0x00000010,4 /* Band 1 */ #define bnd1m 0x00000010 #define bnd1s 4 #define bnd2 0x00000020,5 /* Band 2 */ #define bnd2m 0x00000020 #define bnd2s 5 #define bnd3 0x00000040,6 /* Band 3 */ #define bnd3m 0x00000040 #define bnd3s 6 /* * byte2 bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |rfcap2 |rfcap1 | * ------------------------------------------------------- */ #define rfCap1 0x0000000f,0 /* associated RF capability 1 */ #define rfCap1m 0x0000000f #define rfCap1s 0 #define rfCap2 0x000000f0,4 /* associated RF capability 2 */ #define rfCap2m 0x000000f0 #define rfCap2s 4 /* * byte3 bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |0 |0 |0 |xm |0 |0 |0 |0 | * ------------------------------------------------------- */ /******************************************************************** * * Field MOBILE SETUP - MSSUP * ********************************************************************/ typedef struct pcm_EFmssup_Type { UBYTE lng1; /* language 1 */ UBYTE lng2; /* language 2 */ UBYTE lng3; /* language 3 */ UBYTE feat1; /* features byte 1 */ UBYTE feat2; /* features byte 2 */ } EF_MSSUP; #define SIZE_EF_MSSUP 5 #define NR_EF_MSSUP 1 /* * lng1 bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |por |swe |spa |ita |dut |ger |fre |eng | * ------------------------------------------------------- */ #define eng 0x00000001,0 /* English */ #define engm 0x00000001 #define engs 0 #define fre 0x00000002,1 /* French */ #define frem 0x00000002 #define fres 1 #define ger 0x00000004,2 /* German */ #define germ 0x00000004 #define gers 2 #define dut 0x00000008,3 /* Dutch */ #define dutm 0x00000008 #define duts 3 #define ita 0x00000010,4 /* Italian */ #define itam 0x00000010 #define itas 4 #define spa 0x00000020,5 /* Spanish */ #define spam 0x00000020 #define spas 5 #define swe 0x00000040,6 /* Swedish */ #define swem 0x00000040 #define swes 6 #define por 0x00000080,7 /* Portuguese */ #define porm 0x00000080 #define pors 7 /* * lng2 bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |rus |pol |slo |hun |tur |gre |nor |fin | * ------------------------------------------------------- */ #define fin 0x00000001,0 /* Finnish */ #define finm 0x00000001 #define fins 0 #define nor 0x00000002,1 /* Norwegian */ #define norm 0x00000002 #define nors 1 #define gre 0x00000004,2 /* Greek */ #define grem 0x00000004 #define gres 2 #define tur 0x00000008,3 /* Turkish */ #define turm 0x00000008 #define turs 3 #define hun 0x00000010,4 /* Hungarian */ #define hunm 0x00000010 #define huns 4 #define slo 0x00000020,5 /* Slovenian */ #define slom 0x00000020 #define slos 5 #define pol 0x00000040,6 /* Polish */ #define polm 0x00000040 #define pols 6 #define rus 0x00000080,7 /* Russian */ #define rusm 0x00000080 #define russ 7 /* * lng3 bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |- |ara |tai |man |can |chi |cze |ind | * ------------------------------------------------------- */ #define ind 0x00000001,0 /* Indonesian */ #define indm 0x00000001 #define inds 0 #define cze 0x00000002,1 /* Czech */ #define czem 0x00000002 #define czes 1 #define chi 0x00000004,2 /* Chinese */ #define chim 0x00000004 #define chis 2 #define can 0x00000008,3 /* Cantonese */ #define canm 0x00000008 #define cans 3 #define man 0x00000010,4 /* Mandarin */ #define manm 0x00000010 #define mans 4 #define tai 0x00000020,5 /* Taiwanese */ #define taim 0x00000020 #define tais 5 #define ara 0x00000040,6 /* Arabic */ #define aram 0x00000040 #define aras 6 /* * feat1 bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |stk |irda |etc |ussd |cb |cf |dtmf |aoc | * ------------------------------------------------------- */ #define AoC 0x00000001,0 /* Advice of Charge */ #define AoCm 0x00000001 #define AoCs 0 #define DTMF 0x00000002,1 /* DTMF */ #define DTMFm 0x00000002 #define DTMFs 1 #define CF 0x00000004,2 /* Call Forwarding */ #define CFm 0x00000004 #define CFs 2 #define CB 0x00000008,3 /* Call Barring */ #define CBm 0x00000008 #define CBs 3 #define USSD 0x00000010,4 /* USSD */ #define USSDm 0x00000010 #define USSDs 4 #define ETC 0x00000020,5 /* ETC */ #define ETCm 0x00000020 #define ETCs 5 #define IRDA 0x00000040,6 /* IRDA */ #define IRDAm 0x00000040 #define IRDAs 6 /******************************************************************** * * Field CURRENT LANGUAGE - CLNG * ********************************************************************/ #define SIZE_EF_CLNG_DATA 2 /* two-letter abbreviation of the language */ typedef struct pcm_EFclng_Type { UBYTE data[SIZE_EF_CLNG_DATA]; /* abbreviation of the language */ } EF_CLNG; #define SIZE_EF_CLNG (SIZE_EF_CLNG_DATA) #define NR_EF_CLNG 1 /******************************************************************** * * Field MOBILE STATION SETTTINGS - MSSET * ********************************************************************/ typedef struct pcm_EFmsset_Type { UBYTE buzzer1; /* buzzer byte 1 */ UBYTE buzzer2; /* buzzer byte 2 */ UBYTE buzzer3; /* buzzer byte 3 */ UBYTE audio; /* audio */ UBYTE misc; /* miscellaneous */ UBYTE display; /* display */ UBYTE language; /* language */ UBYTE recent_ldn_ref; /* recent ldn reference */ UBYTE recent_lrn_ref; /* recent lrn reference */ UBYTE recent_upn_ref; /* recent upn reference */ } EF_MSSET; #define SIZE_EF_MSSET 10 #define NR_EF_MSSET 1 /* * buzzer1 bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |vib |callvol |calltype | * ------------------------------------------------------- */ #define calltype 0x00000007,0 /* ringer type incoming calls */ #define calltypem 0x00000007 #define calltypes 0 #define callvol 0x00000038,3 /* ringer volume incoming calls */ #define callvolm 0x00000038 #define callvols 3 #define vib 0x000000c0,6 /* vibrator */ #define vibm 0x000000c0 #define vibs 6 /* * buzzer2 bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |reserved |msgvol |msgtype | * ------------------------------------------------------- */ #define msgtype 0x00000007,0 /* ringer type messages */ #define msgtypem 0x00000007 #define msgtypes 0 #define msgvol 0x00000038,3 /* ringer volume messages */ #define msgvolm 0x00000038 #define msgvols 3 /* * buzzer3 bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |reserved |batw |keytone | * ------------------------------------------------------- */ #define keytone 0x00000003,0 /* key tone mode */ #define keytonem 0x00000003 #define keytones 0 #define batw 0x00000004,2 /* low battery warning */ #define batwm 0x00000004 #define batws 2 /* * audio bits * _________________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |--------|------|------|------|------|------|------|------| * |VoiceRec|Ext |Outvol |lnamp | * --------------------------------------------------------- */ #define lnamp 0x00000007,0 /* microphone amplification */ #define lnampm 0x00000007 #define lnamps 0 #define outvol 0x00000038,3 /* output volume */ #define outvolm 0x00000038 #define outvols 3 #define ext 0x00000040,6 /* external audio */ #define extm 0x00000040 #define exts 6 #define voicerec 0x00000080,7 /* voice recording */ #define voicerecm 0x00000080 #define voicerecs 7 /* * miscellaneous bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * | | |redial |calinf|clip |clir |pmod | * ------------------------------------------------------- */ #define pmod 0x00000001,0 /* PLMN selection mode */ #define pmodm 0x00000001 #define pmods 0 #define clir 0x00000002,1 /* CLIR */ #define clirm 0x00000002 #define clirs 1 #define clip 0x00000004,2 /* CLIP */ #define clipm 0x00000004 #define clips 2 #define calinf 0x00000008,3 /* call information display */ #define calinfm 0x00000008 #define calinfs 3 #define redial 0x00000030,4 /* redial mode */ #define redialm 0x00000030 #define redials 4 /* * display bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |bckdr |brgt |ctrt | * ------------------------------------------------------- */ #define ctrt 0x00000007,0 /* contrast */ #define ctrtm 0x00000007 #define ctrts 0 #define brgt 0x00000018,3 /* brightness */ #define brgtm 0x00000018 #define brgts 3 #define bckdr 0x000000E0,5 /* duration for back light */ #define bckdrm 0x000000E0 #define bckdrs 5 /******************************************************************** * * Field Homezone cache * ********************************************************************/ typedef struct pcm_EFhzcache_Type { UBYTE cid[2]; UBYTE zone; } EF_HZCACHE; #define SIZE_EF_HZCACHE 3 #define NR_EF_HZCACHE 5 /******************************************************************** * * Field LAST MOC NUMBERS - LDN * ********************************************************************/ typedef struct pcm_EFldn_Type { UBYTE calDrMsb; /* call duration (MSB) */ UBYTE calDrLsb; /* call duration (LSB) */ UBYTE year; /* year } */ UBYTE month; /* month } = date */ UBYTE day; /* day } */ UBYTE hour; /* hour } */ UBYTE minute; /* minute } = time */ UBYTE second; /* second } */ UBYTE len; /* length of BCD number */ UBYTE numTp; /* TON and NPI */ UBYTE dldNum[10]; /* called number */ UBYTE ccp; /* capability/configuration identifier */ UBYTE ext1; /* extension1 record identifier */ } EF_LDN; #define SIZE_EF_LDN 22 #define NR_EF_LDN 1 /* * numTp bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |- |ton |npi | * ------------------------------------------------------- */ #define numTp_npi 0x0000000F,0 /* numbering plan identification */ #define numTp_npim 0x0000000F #define numTp_npis 0 #define numTp_ton 0x00000070,4 /* Type of number */ #define numTp_tonm 0x00000070 #define numTp_tons 4 /******************************************************************** * * Field LAST MTC NUMBERS - LRN * ********************************************************************/ typedef struct pcm_EFlrn_Type { UBYTE calDrMsb; /* call duration (MSB) */ UBYTE calDrLsb; /* call duration (LSB) */ UBYTE year; /* year } */ UBYTE month; /* month } = date */ UBYTE day; /* day } */ UBYTE hour; /* hour } */ UBYTE minute; /* minute } = time */ UBYTE second; /* second } */ UBYTE id; /* identifier */ UBYTE len; /* length of BCD number */ UBYTE numTp; /* TON and NPI - bitmap same as EF_LDN */ UBYTE dldNum[10]; /* calling number */ UBYTE ccp; /* capability/configuration identifier */ UBYTE ext1; /* extension1 record identifier */ } EF_LRN; #define SIZE_EF_LRN 23 #define NR_EF_LRN 1 /* * id bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |reserved |type | * ------------------------------------------------------- */ /******************************************************************** * * Field LAST MTC MISSED NUMBERS - LMN * ********************************************************************/ typedef struct pcm_EFlmn_Type { UBYTE year; /* year } */ UBYTE month; /* month } = date */ UBYTE day; /* day } */ UBYTE hour; /* hour } */ UBYTE minute; /* minute } = time */ UBYTE second; /* second } */ UBYTE id; /* identifier - bitmap same as EF_LRN */ UBYTE len; /* length of BCD number */ UBYTE numTp; /* TON and NPI - bitmap same as EF_LDN */ UBYTE dldNum[10]; /* calling number */ UBYTE ccp; /* capability/configuration identifier */ UBYTE ext1; /* extension1 record identifier */ } EF_LMN; #define SIZE_EF_LMN 21 #define NR_EF_LMN 1 /******************************************************************** * * Field USER PERSONAL NUMBERS - UPN * ********************************************************************/ typedef struct pcm_EFupn_Type { UBYTE alphId[10]; /* alpha identifier */ UBYTE len; /* length of BCD number */ UBYTE numTp; /* TON and NPI - bitmap same as EF_LDN */ UBYTE usrNum[10]; /* number */ UBYTE ccp; /* capability/configuration identifier */ UBYTE ext1; /* extension1 record identifier */ } EF_UPN; #define SIZE_EF_UPN 24 #define NR_EF_UPN 1 /******************************************************************** * * Field MAILBOX NUMBERS - MBN * ********************************************************************/ typedef struct pcm_EFmbn_Type { UBYTE alphId[10]; /* alpha identifier */ UBYTE len; /* length of BCD number */ UBYTE numTp; /* TON and NPI - bitmap same as EF_LDN */ UBYTE mbNum[10]; /* number */ } EF_MBN; #define SIZE_EF_MBN 22 #define NR_EF_MBN 4 /******************************************************************** * * Field VOICE MAIL NUMBER - VMN * ********************************************************************/ /* * note that with new 04.08 the called party bcd number of the CC * protocol can have up to 43 octets, 3 are used for other things * than the BCD coded digits */ #define MAX_CALLED_PARTY_BCD_NO_OCTETS 40 typedef struct pcm_EFvmn_Type { UBYTE vmNum[MAX_CALLED_PARTY_BCD_NO_OCTETS + 1]; /* voice mail number */ UBYTE numTp; /* TON and NPI - bitmap same as EF_LDN */ } EF_VMN; #define SIZE_EF_VMN (MAX_CALLED_PARTY_BCD_NO_OCTETS + 1 + 1) #define NR_EF_VMN 1 /******************************************************************** * * Field CALL TIMER - CTIM * ********************************************************************/ typedef struct pcm_EFctim_Type { UBYTE moVcDrHm[4]; /* MO voice duration home PLMN */ UBYTE mtVcDrHm[4]; /* MT voice duration home PLMN */ UBYTE moDtDrHm[4]; /* MO data duration home PLMN */ UBYTE mtDtDrHm[4]; /* MT data duration home PLMN */ UBYTE moFxDrHm[4]; /* MO fax duration home PLMN */ UBYTE mtFxDrHm[4]; /* MT fax duration home PLMN */ UBYTE moVcDrRm[4]; /* MO voice duration roaming */ UBYTE mtVcDrRm[4]; /* MT voice duration roaming */ UBYTE moDtDrRm[4]; /* MO data duration roaming */ UBYTE mtDtDrRm[4]; /* MT data duration roaming */ UBYTE moFxDrRm[4]; /* MO fax duration roaming */ UBYTE mtFxDrRm[4]; /* MT fax duration roaming */ } EF_CTIM; #define SIZE_EF_CTIM 48 #define NR_EF_CTIM 1 /******************************************************************** * * Field CALL COUNTER - CCNT * ********************************************************************/ typedef struct pcm_EFccnt_Type { UBYTE Total[4]; /* total duration */ UBYTE moVcDrHm[4]; /* MO voice counter home PLMN */ UBYTE mtVcDrHm[4]; /* MT voice counter home PLMN */ UBYTE moDtDrHm[4]; /* MO data counter home PLMN */ UBYTE mtDtDrHm[4]; /* MT data counter home PLMN */ UBYTE moFxDrHm[4]; /* MO fax counter home PLMN */ UBYTE mtFxDrHm[4]; /* MT fax counter home PLMN */ UBYTE moVcDrRm[4]; /* MO voice counter roaming */ UBYTE mtVcDrRm[4]; /* MT voice counter roaming */ UBYTE moDtDrRm[4]; /* MO data counter roaming */ UBYTE mtDtDrRm[4]; /* MT data counter roaming */ UBYTE moFxDrRm[4]; /* MO fax counter roaming */ UBYTE mtFxDrRm[4]; /* MT fax counter roaming */ } EF_CCNT; #define SIZE_EF_CCNT 52 #define NR_EF_CCNT 1 /******************************************************************** * * Field EMERGENCY CALL CODES - ECC * ********************************************************************/ typedef struct pcm_EFecc_Type { UBYTE ecc1[3]; /* emergency call code 1 */ UBYTE ecc2[3]; /* emergency call code 2 */ UBYTE ecc3[3]; /* emergency call code 3 */ UBYTE ecc4[3]; /* emergency call code 4 */ UBYTE ecc5[3]; /* emergency call code 5 */ } EF_ECC; #define SIZE_EF_ECC 15 #define NR_EF_ECC 1 /******************************************************************** * * Field ORGANIZER AND ALARM - ORG * ********************************************************************/ typedef struct pcm_EForg_Type { UBYTE date[6]; /* year, month, day, hour, minute, second */ UBYTE alrm; /* alarm */ UBYTE alphMem[16]; /* alpha memo */ } EF_ORG; #define SIZE_EF_ORG 23 #define NR_EF_ORG 1 /* * alrm bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |reserved |type |stat | * ------------------------------------------------------- */ #define alrm_stat 0x00000001,0 #define alrm_statm 0x00000001 #define alrm_stats 0 #define alrm_type 0x0000000E,1 #define alrm_typem 0x0000000E #define alrm_types 1 /******************************************************************** * * Field CAPABILITY AND CONFIGURATION PARAMETERS - CCP * ********************************************************************/ typedef struct pcm_EFccp_Type { UBYTE usrRate; /* user rate */ UBYTE bearServ; /* bearer service */ UBYTE conElem; /* connection element */ UBYTE stopBits; /* stop bits */ UBYTE dataBits; /* data bits */ UBYTE parity; /* parity */ UBYTE flowCntrl; /* flow control */ } EF_CCP; #define SIZE_EF_CCP 7 #define NR_EF_CCP 1 /******************************************************************** * * Field EXTENSION 1 - EXT1 * ********************************************************************/ typedef struct pcm_EFext1_Type { UBYTE recTp; /* record type */ UBYTE extDat[11]; /* extension data */ UBYTE id; /* identifier */ } EF_EXT1; #define SIZE_EF_EXT1 13 #define NR_EF_EXT1 1 /* * recTp bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |reserved |type | * ------------------------------------------------------- */ /******************************************************************** * * Field SIM LOCK & EXTENDED SIM LOCK (use alternatively) - SIMLCK * ********************************************************************/ typedef struct pcm_EFsimlck_Type { UBYTE locks1; /* lock byte 1 */ UBYTE locks2; /* lock byte 2 */ UBYTE cnt; /* unlock attempt counter */ UBYTE maxcnt; /* maximum attempt */ UBYTE PKey[8]; /* P control key */ UBYTE SPKey[8]; /* SP control key */ UBYTE NSKey[8]; /* NS control key */ UBYTE CKey[8]; /* C control key */ UBYTE NKey[8]; /* N control key */ UBYTE len_imsi; /* length of IMSI */ UBYTE imsi[15]; /* IMSI */ UBYTE gidl1; /* group identifier level 1 */ UBYTE gidl2; /* group identifier level 2 */ } EF_SIMLCK; #define SIZE_EF_SIMLCK 62 #define NR_EF_SIMLCK 1 typedef struct pcm_EFsimlckext_Type { UBYTE locks1; /* lock byte 1 */ UBYTE locks2; /* lock byte 2 */ UBYTE cnt; /* unlock attempt counter */ UBYTE maxcnt; /* maximum attempt */ UBYTE PKey[8]; /* P control key */ UBYTE SPKey[8]; /* SP control key */ UBYTE NSKey[8]; /* NS control key */ UBYTE CKey[8]; /* C control key */ UBYTE NKey[8]; /* N control key */ UBYTE len_p_imsi; /* length of IMSI P-Lock */ UBYTE p_imsi[15]; /* IMSI P-Lock */ UBYTE len_sp_imsi; /* length of IMSI SP-Lock */ UBYTE sp_imsi[15]; /* IMSI SP-Lock */ UBYTE len_ns_imsi; /* length of IMSI NS-Lock */ UBYTE ns_imsi[15]; /* IMSI NS-Lock */ UBYTE len_c_imsi; /* length of IMSI C-Lock */ UBYTE c_imsi[15]; /* IMSI C-Lock */ UBYTE len_n_imsi; /* length of IMSI N-Lock */ UBYTE n_imsi[15]; /* IMSI N-Lock */ UBYTE len_u_imsi; /* length of IMSI U-Lock */ UBYTE u_imsi[15]; /* IMSI U-Lock */ UBYTE gidl1; /* group identifier level 1 */ UBYTE gidl2; /* group identifier level 2 */ } EF_SIMLCKEXT; #define SIZE_EF_SIMLCKEXT 142 #define NR_EF_SIMLCKEXT 1 /* * locks1 bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |splock |nslock |nlock |plock | * ------------------------------------------------------- */ #define plock 0x00000003,0 #define plockm 0x00000003 #define plocks 0 #define nlock 0x0000000C,2 #define nlockm 0x0000000C #define nlocks 2 #define nslock 0x00000030,4 #define nslockm 0x00000030 #define nslocks 4 #define spslock 0x000000C0,6 #define splockm 0x000000C0 #define splocks 6 /* * locks2 bits * _______________________________________________________ * |8 |7 |6 |5 |4 |3 |2 |1 | * |------|------|------|------|------|------|------|------| * |reserved |clock | * ------------------------------------------------------- */ #define clock 0x00000003,0 #define clockm 0x00000003 #define clocks 0 /******************************************************************** * * Field MAINTENANCE INFORMATION - MAIN * ********************************************************************/ /* * T.B.D. */ #define SIZE_EF_MAIN 8 #define NR_EF_MAIN 1 /******************************************************************** * * Field SPECIAL FUNCTION KEY - SFK * ********************************************************************/ /* * T.B.D. */ #define SIZE_EF_SFK 8 #define NR_EF_SFK 1 /******************************************************************** * * Field FAULT CONDITIONS - FAULT * ********************************************************************/ /* * T.B.D. */ #define SIZE_EF_FAULT 8 #define NR_EF_FAULT 1 /******************************************************************** * * Field DEBUG INFORMATION - DEBUG * ********************************************************************/ /* * T.B.D. */ #define SIZE_EF_DEBUG 8 #define NR_EF_DEBUG 1 /******************************************************************** * * Field POWER MANAGEMENT - POWER * ********************************************************************/ /* * T.B.D. */ #define SIZE_EF_POWER 8 #define NR_EF_POWER 1 /******************************************************************** * * Field KEYBOARD MAPPING - KEYB * ********************************************************************/ typedef struct pcm_EFkbd_Type { UBYTE logical_key [32]; /* logical key map */ UBYTE raw_key [32]; /* raw key map */ } EF_KBD; #define SIZE_EF_KEYB 64 #define NR_EF_KEYB 1 /******************************************************************** * * Field RADIO PARAMETERS - RADIO * ********************************************************************/ /* * T.B.D. */ #define SIZE_EF_RADIO 8 #define NR_EF_RADIO 1 /******************************************************************** * * Field MANUFACTURER - CGMI * ********************************************************************/ #define SIZE_EF_CGMI_DATA 20 /* value depends on manufacturer spec. */ typedef struct pcm_EFcgmi_Type { UBYTE data[SIZE_EF_CGMI_DATA]; /* name of manufacturer */ } EF_CGMI; #define SIZE_EF_CGMI (SIZE_EF_CGMI_DATA) #define NR_EF_CGMI 1 /******************************************************************** * * Field IDENTIFICATION INFORMATION - INF0 * ********************************************************************/ #define SIZE_EF_INF0_DATA 20 /* value depends on manufacturer spec. */ typedef struct pcm_EFinf0_Type { UBYTE data[SIZE_EF_INF0_DATA]; /* identification information */ } EF_INF0; #define SIZE_EF_INF0 (SIZE_EF_INF0_DATA) #define NR_EF_INF0 2 /******************************************************************** * * Field MODEL - CGMM * ********************************************************************/ #define SIZE_EF_CGMM_DATA 20 /* value depends on manufacturer spec. */ typedef struct pcm_EFcgmm_Type { UBYTE data[SIZE_EF_CGMM_DATA]; /* name of product */ } EF_CGMM; #define SIZE_EF_CGMM (SIZE_EF_CGMM_DATA) #define NR_EF_CGMM 1 /******************************************************************** * * Field REVISION - CGMR * ********************************************************************/ #define SIZE_EF_CGMR_DATA 20 /* value depends on manufacturer spec. */ typedef struct pcm_EFcgmr_Type { UBYTE data[SIZE_EF_CGMR_DATA]; /* version of product */ } EF_CGMR; #define SIZE_EF_CGMR (SIZE_EF_CGMR_DATA) #define NR_EF_CGMR 1 /******************************************************************** * * Field PRODUCT SERIAL NUMBER - CGSN * ********************************************************************/ #define SIZE_EF_CGSN_DATA 20 /* value depends on manufacturer spec. */ typedef struct pcm_EFcgsn_Type { UBYTE data[SIZE_EF_CGSN_DATA]; /* serial number of product */ } EF_CGSN; #define SIZE_EF_CGSN (SIZE_EF_CGSN_DATA) #define NR_EF_CGSN 1 /******************************************************************** * * Field SMS PROFILE - SMSPRFL * ********************************************************************/ #define SIZE_EF_SMSPRFL_SCA 20 #define SIZE_EF_SMSPRFL_MIDS 40 #define SIZE_EF_SMSPRFL_DCSS 20 #define SIZE_EF_SMSPRFL_VPABS 14 typedef struct pcm_EFsmsprfl_Type { UBYTE vldFlag; /* valid flag */ UBYTE CSCAsca[SIZE_EF_SMSPRFL_SCA]; /* service center address */ UBYTE CSCAlenSca; /* length of service center address */ UBYTE CSCAton; /* type of number */ UBYTE CSCAnpi; /* numbering plan identification */ UBYTE CSCBmode; /* cell broadcast mode */ UBYTE CSCBmids[SIZE_EF_SMSPRFL_MIDS]; /* message identifiers */ UBYTE CSCBdcss[SIZE_EF_SMSPRFL_DCSS]; /* data coding schemes */ UBYTE CSMPfo; /* first octet */ UBYTE CSMPvprel; /* validity period relative */ UBYTE CSMPvpabs[SIZE_EF_SMSPRFL_VPABS]; /* validity period absolute */ UBYTE CSMPpid; /* protocol identifier */ UBYTE CSMPdcs; /* data coding scheme */ } EF_SMSPRFL; #define SIZE_EF_SMSPRFL (SIZE_EF_SMSPRFL_SCA + \ SIZE_EF_SMSPRFL_MIDS + \ SIZE_EF_SMSPRFL_DCSS + \ SIZE_EF_SMSPRFL_VPABS + 9) #define NR_EF_SMSPRFL 2 /* * vldFlag values */ #define EF_SMSPRFL_VLD 0x00 #define EF_SMSPRFL_INVLD 0xFF /******************************************************************** * * Field PLMN IDENTIFIER - PLMN * ********************************************************************/ #define SIZE_EF_PLMN_MCC 2 #define SIZE_EF_PLMN_MNC 2 #define SIZE_EF_PLMN_LONG 20 #define SIZE_EF_PLMN_SHRT 10 typedef struct pcm_EFplmn_Type { UBYTE mcc[SIZE_EF_PLMN_MCC]; /* mobile country code */ UBYTE mnc[SIZE_EF_PLMN_MNC]; /* mobile network code */ UBYTE lngNam[SIZE_EF_PLMN_LONG]; /* MT voice counter home PLMN */ UBYTE shrtNam[SIZE_EF_PLMN_SHRT]; /* MO data counter home PLMN */ } EF_PLMN; #define SIZE_EF_PLMN (SIZE_EF_PLMN_MCC + \ SIZE_EF_PLMN_MNC + \ SIZE_EF_PLMN_LONG + \ SIZE_EF_PLMN_SHRT) #define NR_EF_PLMN 2 /******************************************************************** * * Field BCCH INFORMATION - BCCHINF * ********************************************************************/ typedef struct pcm_EFbcchinfo_Type { UBYTE bcch_info[54]; /* content of bcch_info */ } EF_BCCHINFO; #define SIZE_EF_BCCHINFO 54 #define NR_EF_BCCHINFO 1 /******************************************************************** * * Field ALTERNATIVE LINE SERVICE - ALS * ********************************************************************/ typedef struct pcm_EFals_Type { UBYTE selLine; /* selected line */ UBYTE statLine; /* status line */ } EF_ALS; #define SIZE_EF_ALS 2 #define NR_EF_ALS 1 /******************************************************************** * * Field LOCATION INFORMATION (GPRS) - LOCGPRS * ********************************************************************/ typedef struct pcm_EFlocgprs_Type { UBYTE ptmsi[4]; /* packet TMSI */ UBYTE ptmsi_signature[3]; /* packet TMSI signature value */ UBYTE rai[6]; /* routing area information */ UBYTE ra_status; /* status of rai */ } EF_LOCGPRS; #define SIZE_EF_LOCGPRS sizeof (EF_LOCGPRS) #define NR_EF_LOCGPRS 1 /******************************************************************** * * Field CIPHERING KEY (GPRS) - KCGPRS * ********************************************************************/ typedef struct pcm_EFkcgprs_Type { UBYTE kc[8]; /* currently used cyphering key */ UBYTE cksn; /* ciphering key sequence number of kc */ } EF_KCGPRS; #define SIZE_EF_KCGPRS sizeof (EF_KCGPRS) #define NR_EF_KCGPRS 1 /******************************************************************** * * Field IMSI (GPRS) - IMSIGPRS * ********************************************************************/ typedef struct pcm_EFimsigprs_Type { UBYTE len; /* length IMSI */ UBYTE IMSI[8]; /* IMSI */ } EF_IMSIGPRS; #define SIZE_EF_IMSIGPRS sizeof (EF_IMSIGPRS) #define NR_EF_IMSIGPRS 1 /******************************************************************** * * Prototypes * ********************************************************************/ EXTERN unsigned char pcm_find_active_pcm_sector (void); EXTERN void pcm_read_flash (UBYTE *pcm_mem, unsigned size, UBYTE pcm_sector); EXTERN drv_Return_Type pcm_erase_flash_sector (UBYTE pcm_sector); EXTERN drv_Return_Type pcm_write_flash (UBYTE *pcm_mem, unsigned size, UBYTE pcm_sector); EXTERN drv_Return_Type pcm_Init (void); EXTERN void pcm_Exit (void); EXTERN drv_Return_Type pcm_ReadFile (UBYTE *in_FileName, USHORT in_BufferSize, UBYTE *out_BufferPtr, UBYTE *out_VersionPtr); EXTERN drv_Return_Type pcm_GetFileInfo (UBYTE *in_FileName, pcm_FileInfo_Type *out_FileInfoPtr); EXTERN drv_Return_Type pcm_ReadRecord (UBYTE *in_FileName, USHORT in_Record, USHORT in_BufferSize, UBYTE *out_BufferPtr, UBYTE *out_VersionPtr, USHORT *out_MaxRecordsPtr); EXTERN drv_Return_Type pcm_WriteFile (UBYTE *in_FileName, USHORT in_BufferSize, UBYTE *in_BufferPtr); EXTERN drv_Return_Type pcm_WriteRecord (UBYTE *in_FileName, USHORT in_Record, USHORT in_BufferSize, UBYTE *in_BufferPtr); EXTERN drv_Return_Type pcm_Flush (void); #endif // ifndef DEF_PCM