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