* TAPI fixes by S0vNark0m.

+ SimMgr API by S0vNark0m.

git-svn-id: trunk@8251 -
This commit is contained in:
yury 2007-08-09 09:55:01 +00:00
parent a5fc8ad63f
commit 1a661dc254
5 changed files with 547 additions and 92 deletions

1
.gitattributes vendored
View File

@ -5516,6 +5516,7 @@ rtl/wince/wininc/makefile.inc -text
rtl/wince/wininc/messages.inc -text
rtl/wince/wininc/oleaut32.inc svneol=native#text/plain
rtl/wince/wininc/redef.inc -text
rtl/wince/wininc/simmgr.inc -text
rtl/wince/wininc/struct.inc -text
rtl/wince/wininc/tapi.inc -text
rtl/wince/winres.inc -text

View File

@ -47,6 +47,7 @@ interface
{$i ceshell.inc}
{$i oleaut32.inc}
{$i iphlpapi.inc}
{$i simmgr.inc}
{$i tapi.inc}
{$i cemiss.inc}
@ -69,6 +70,7 @@ implementation
{$i commdlg.inc}
{$i ceshell.inc}
{$i oleaut32.inc}
{$i simmgr.inc}
{$i tapi.inc}
{$i cemiss.inc}

View File

@ -2019,72 +2019,6 @@
583 labs
584 ldexp
585 ldiv
21F lineAccept
21D lineAddProvider
220 lineAddToConference
221 lineAnswer
222 lineBlindTransfer
20C lineClose
223 lineCompleteTransfer
21C lineConfigDialogEdit
20D lineDeallocateCall
224 lineDevSpecific
225 lineDial
20E lineDrop
226 lineForward
227 lineGenerateDigits
228 lineGenerateTone
229 lineGetAddressCaps
22A lineGetAddressID
22B lineGetAddressStatus
22C lineGetAppPriority
22D lineGetCallInfo
22E lineGetCallStatus
22F lineGetConfRelatedCalls
20F lineGetDevCaps
210 lineGetDevConfig
21A lineGetID
230 lineGetIcon
231 lineGetLineDevStatus
232 lineGetMessage
233 lineGetNewCalls
234 lineGetNumRings
235 lineGetProviderList
236 lineGetStatusMessages
211 lineGetTranslateCaps
237 lineHandoff
238 lineHold
212 lineInitialize
239 lineInitializeEx
213 lineMakeCall
23A lineMonitorDigits
23B lineMonitorMedia
214 lineNegotiateAPIVersion
23C lineNegotiateExtVersion
215 lineOpen
23D linePickup
23E linePrepareAddToConference
23F lineRedirect
240 lineReleaseUserUserInfo
241 lineRemoveFromConference
242 lineSendUserUserInfo
243 lineSetAppPriority
244 lineSetCallParams
245 lineSetCallPrivilege
21E lineSetCurrentLocation
216 lineSetDevConfig
246 lineSetMediaMode
247 lineSetNumRings
217 lineSetStatusMessages
248 lineSetTerminal
249 lineSetTollList
24A lineSetupConference
24B lineSetupTransfer
218 lineShutdown
24C lineSwapHold
219 lineTranslateAddress
21B lineTranslateDialog
24D lineUnhold
586 log
587 log10
589 longjmp
@ -2106,29 +2040,6 @@
2B0 mixerOpen
2B1 mixerSetControlDetails
596 modf
24E phoneClose
24F phoneConfigDialog
250 phoneDevSpecific
251 phoneGetDevCaps
252 phoneGetGain
253 phoneGetHookSwitch
255 phoneGetID
254 phoneGetIcon
256 phoneGetMessage
257 phoneGetRing
258 phoneGetStatus
259 phoneGetStatusMessages
25A phoneGetVolume
25B phoneInitializeEx
25C phoneNegotiateAPIVersion
25D phoneNegotiateExtVersion
25E phoneOpen
25F phoneSetGain
260 phoneSetHookSwitch
261 phoneSetRing
262 phoneSetStatusMessages
263 phoneSetVolume
264 phoneShutdown
599 pow
60D printf
610 putchar
@ -4296,3 +4207,4 @@ end;
{$endif read_implementation}

540
rtl/wince/wininc/simmgr.inc Normal file
View File

@ -0,0 +1,540 @@
{
This file is part of the Free Pascal run time library.
Copyright (c) 2007 Free Pascal development team.
See the file COPYING.FPC, included in this distribution,
for details about the copyright.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
**********************************************************************}
{ Declarations for tapi WinCE API, note than on WinCE simmgr functions originally
based in coredll.dll
SIM Manager is an API set that allows access to information stored on the SIM Card
This port based on Windows Mobile 5 Smartphone Edition SDK
contact S0vNark0m for more information snk_post@mail.ru (en, ru)
}
{$ifdef read_interface}
//*****************************************************************************
// consts
//*****************************************************************************
const
SIM_ERRORCLASS_SIM = $02; // Problem with the SIM
SIM_ERRORCLASS_PASSWORD = $01; // Unspecified phone failure
SIM_ERRORCLASS_STORAGE = $03; // Error relating to storage
SIM_ERRORCLASS_NONE = $00; // Misc error
FACILITY_SIM = $800;
ERROR_BASE = Longword(SEVERITY_ERROR) shl 31 or Longword(FACILITY_SIM) shl 16; // C Macros conversion, internal def
// Internal def = errclass shl 8
MSE_ERRORCLASS_SIM = ERROR_BASE or Word(SIM_ERRORCLASS_SIM) shl 8;
MSE_ERRORCLASS_PASSWORD = ERROR_BASE or Word(SIM_ERRORCLASS_PASSWORD) shl 8;
MSE_ERRORCLASS_STORAGE = ERROR_BASE or Word(SIM_ERRORCLASS_STORAGE) shl 8;
MSE_ERRERRORCLASS_NONE = ERROR_BASE or Word(SIM_ERRORCLASS_NONE) shl 8;
// Error | Various errors
SIM_E_SIMFAILURE = MSE_ERRORCLASS_SIM or $01; // SIM failure was detected
SIM_E_SIMBUSY = MSE_ERRORCLASS_SIM or $02; // SIM is busy
SIM_E_SIMWRONG = MSE_ERRORCLASS_SIM or $03; // Inorrect SIM was inserted
SIM_E_NOSIMMSGSTORAGE = MSE_ERRORCLASS_SIM or $04; // SIM isn't capable of storing messages
SIM_E_SIMTOOLKITBUSY = MSE_ERRORCLASS_SIM or $05; // SIM Application Toolkit is busy
SIM_E_SIMDOWNLOADERROR = MSE_ERRORCLASS_SIM or $06; // SIM data download error
SIM_E_SIMNOTINSERTED = MSE_ERRORCLASS_SIM or $07; // SIM isn't inserted into the phone
SIM_E_PHSIMPINREQUIRED = MSE_ERRORCLASS_PASSWORD or $20; // PH-SIM PIN is required to perform this operation
SIM_E_PHFSIMPINREQUIRED = MSE_ERRORCLASS_PASSWORD or $21; // PH-FSIM PIN is required to perform this operation
SIM_E_PHFSIMPUKREQUIRED = MSE_ERRORCLASS_PASSWORD or $22; // PH-FSIM PUK is required to perform this operation
SIM_E_SIMPINREQUIRED = MSE_ERRORCLASS_PASSWORD or $23; // SIM PIN is required to perform this operation
SIM_E_SIMPUKREQUIRED = MSE_ERRORCLASS_PASSWORD or $24; // SIM PUK is required to perform this operation
SIM_E_INCORRECTPASSWORD = MSE_ERRORCLASS_PASSWORD or $25; // Incorrect password was supplied
SIM_E_SIMPIN2REQUIRED = MSE_ERRORCLASS_PASSWORD or $26; // SIM PIN2 is required to perform this operation
SIM_E_SIMPUK2REQUIRED = MSE_ERRORCLASS_PASSWORD or $27; // SIM PUK2 is required to perform this operation
SIM_E_NETWKPINREQUIRED = MSE_ERRORCLASS_PASSWORD or $28; // Network Personalization PIN is required to perform this operation
SIM_E_NETWKPUKREQUIRED = MSE_ERRORCLASS_PASSWORD or $29; // Network Personalization PUK is required to perform this operation
SIM_E_SUBSETPINREQUIRED = MSE_ERRORCLASS_PASSWORD or $2A; // Network Subset Personalization PIN is required to perform this operation
SIM_E_SUBSETPUKREQUIRED = MSE_ERRORCLASS_PASSWORD or $2B; // Network Subset Personalization PUK is required to perform this operation
SIM_E_SVCPINREQUIRED = MSE_ERRORCLASS_PASSWORD or $2C; // Service Provider Personalization PIN is required to perform this operation
SIM_E_SVCPUKREQUIRED = MSE_ERRORCLASS_PASSWORD or $2D; // Service Provider Personalization PUK is required to perform this operation
SIM_E_CORPPINREQUIRED = MSE_ERRORCLASS_PASSWORD or $2E; // Corporate Personalization PIN is required to perform this operation
SIM_E_CORPPUKREQUIRED = MSE_ERRORCLASS_PASSWORD or $2F; // Corporate Personalization PUK is required to perform this operation
SIM_E_MEMORYFULL = MSE_ERRORCLASS_STORAGE or $40; // Storage memory is full
SIM_E_INVALIDINDEX = MSE_ERRORCLASS_STORAGE or $41; // Invalid storage index was supplied
SIM_E_NOTFOUND = MSE_ERRORCLASS_STORAGE or $42; // A requested storage entry was not found
SIM_E_MEMORYFAILURE = MSE_ERRORCLASS_STORAGE or $43; // Storage memory failure
SIM_E_SIMMSGSTORAGEFULL = MSE_ERRORCLASS_STORAGE or $44; // Message storage on the SIM is full
SIM_E_EMPTYINDEX = MSE_ERRORCLASS_STORAGE or $45; // Storage location is empty
SIM_E_NOTREADY = MSE_ERRERRORCLASS_NONE or $60; // SIM isn't yet ready to perform the requested operation
SIM_E_SECURITYFAILURE = MSE_ERRERRORCLASS_NONE or $61; // SIM isn't yet ready to perform the requested operation
SIM_E_BUFFERTOOSMALL = MSE_ERRERRORCLASS_NONE or $62; // Buffer too small
SIM_E_NOTTEXTMESSAGE = MSE_ERRERRORCLASS_NONE or $63; // Requested SMS message is not a text message
SIM_E_NOSIM = MSE_ERRERRORCLASS_NONE or $64; // Device doesn't have a SIM
SIM_E_NETWORKERROR = MSE_ERRERRORCLASS_NONE or $65; // There was a network error
SIM_E_MOBILEERROR = MSE_ERRERRORCLASS_NONE or $66; // Mobile error
SIM_E_UNSUPPORTED = MSE_ERRERRORCLASS_NONE or $67; // The command is unsupported
SIM_E_BADPARAM = MSE_ERRERRORCLASS_NONE or $68; // Bad parameter
SIM_E_UNDETERMINED = MSE_ERRERRORCLASS_NONE or $69; // Undetermined error
SIM_E_RADIONOTPRESENT = MSE_ERRERRORCLASS_NONE or $6A; // The Radio is not present
SIM_E_RADIOOFF = MSE_ERRERRORCLASS_NONE or $6B; // The Radio is off
// Callback | Various notifications that are passed to the callback
SIM_NOTIFY_CARD_REMOVED = $100; // SIM card was removed; lpData is NULL
SIM_NOTIFY_FILE_REFRESH = $101; // Files on the SIM were refreshed; lpData points to a SIMFILEREFRESH structure
SIM_NOTIFY_MSG_STORED = $102; // A message was stored to the SIM; lpData points to a SIMMESSAGECHANGE structure
SIM_NOTIFY_MSG_DELETED = $103; // A message was removed from the SIM; lpData points to a SIMMESSAGECHANGE structure
SIM_NOTIFY_PBE_STORED = $104; // A phone book entry was stored to the SIM; lpData points to a SIMPBECHANGE structure
SIM_NOTIFY_PBE_DELETED = $105; // A phone book entry was removed from the SIM; lpData points to a SIMPBECHANGE structure
SIM_NOTIFY_MSG_RECEIVED = $106; // Class 2 SMS was sent directly to the SIM; lpData points to a SIMMESSAGECHANGE structure
SIM_NOTIFY_RADIOOFF = $107; // The Radio has been turned off but AT interpreter is still on; lpData is NULL
SIM_NOTIFY_RADIOON = $108; // The Radio is present and is now on; lpData is NULL
SIM_NOTIFY_RADIOPRESENT = $109; // A Radio Module/Driver has been installed; lpData is points to a DWORD which is 0 if the radio is OFF and 1 if the radio is ON
SIM_NOTIFY_RADIOREMOVED = $10A; // A Radio Module/Driver has been removed; lpData is NULL }
// Parameter flags for SimInitialize
SIM_INIT_NONE = $00000000; // Do not send any notifications
SIM_INIT_SIMCARD_NOTIFICATIONS = $00000001; // Send SIM card related notifications
// SIMPHONEBOOKENTRY
SIM_PARAM_PBE_ADDRESS = $00000001; // lpszAddress field is valid
SIM_PARAM_PBE_ADDRESS_TYPE = $00000002; // dwAddressType field is valid
SIM_PARAM_PBE_NUMPLAN = $00000004; // dwNumPlan field is valid
SIM_PARAM_PBE_TEXT = $00000008; // lpszText field is valid
SIM_PARAM_PBE_ALL = $0000000f; // All fields are valid
// SIMMESSAGE
SIM_PARAM_MSG_ADDRESS = $00000001; // lpszAddress field is valid
SIM_PARAM_MSG_ADDRESS_TYPE = $00000002; // dwAddressType field is valid
SIM_PARAM_MSG_NUMPLAN = $00000004; // dwNumPlan field is valid
SIM_PARAM_MSG_RECEIVE_TIME = $00000008; // stReceiveTime field is valid
SIM_PARAM_MSG_HEADER = $00000010; // rgbHeader field is valid
SIM_PARAM_MSG_HEADER_LENGTH = $00000020; // cbHdrLength field is valid
SIM_PARAM_MSG_MESSAGE = $00000040; // lpszMessage field is valid
SIM_PARAM_MSG_ALL = $0000007f; // All fields are valid
// SIMCAPS }
SIM_PARAM_CAPS_PBSTORAGES = $00000001; // dwPBStorages field is valid
SIM_PARAM_CAPS_PBEMAXADDRESSLENGTH = $00000002; // dwPBEMaxAddressLength field is valid
SIM_PARAM_CAPS_PBEMAXTEXTLENGTH = $00000004; // dwPBEMaxTextLength field is valid
SIM_PARAM_CAPS_PBEMININDEX = $00000008; // dwMinPBIndex field is valid
SIM_PARAM_CAPS_PBEMAXINDEX = $00000010; // dwMaxPBIndex field is valid
SIM_PARAM_CAPS_LOCKFACILITIES = $00000020; // dwLockFacilities field is valid
SIM_PARAM_CAPS_LOCKINGPWDLENGTH = $00000040; // dwNumLockingPwdLengths and rgLockingPwdLengths fields are valid
SIM_PARAM_CAPS_READMSGSTORAGES = $00000080; // dwReadMsgStorages field is valid
SIM_PARAM_CAPS_WRITEMSGSTORAGES = $00000100; // dwWriteMsgStorages field is valid
SIM_PARAM_CAPS_ALL = $000001ff; // All fields are valid
// SIMRECORDINFO
SIM_PARAM_RECORDINFO_RECORDTYPE = $00000001; // dwRecordType field is valid
SIM_PARAM_RECORDINFO_ITEMCOUNT = $00000002; // dwItemCount field is valid
SIM_PARAM_RECORDINFO_SIZE = $00000004; // dwSize field is valid
SIM_PARAM_RECORDINFO_ALL = $00000007; // All fields are valid
// SIMFILEREFRESH }
SIM_PARAM_FILEREFRESH_FLAGS = $00000001; // dwFlags field is valid
SIM_PARAM_FILEREFRESH_FILECOUNT = $00000002; // dwFileCount field is valid
SIM_PARAM_FILEREFRESH_FILEARRAY = $00000004; // rgdwAddress field is valid
SIM_PARAM_FILEREFRESH_ALL = $00000007; // All fields are valid
// Phonebook Storage | Phone book storage locations }
SIM_PBSTORAGE_EMERGENCY = $00000001; // Emergency dial list
SIM_PBSTORAGE_FIXEDDIALING = $00000002; // SIM fixed dialing list
SIM_PBSTORAGE_LASTDIALING = $00000004; // SIM last dialing list
SIM_PBSTORAGE_OWNNUMBERS = $00000008; // SIM ownnumbers lists
SIM_PBSTORAGE_SIM = $00000010; // General SIM Storage
SIM_NUMPBSTORAGES = 5; // Number of phonebook storages
// SIM DevCaps | Device Capabilities }
SIM_CAPSTYPE_PBENTRYLENGTH = $00000001; // Phonebook entry lengths
SIM_CAPSTYPE_PBSTORELOCATIONS = $00000002; // Phonebook storage locations
SIM_CAPSTYPE_LOCKFACILITIES = $00000004; // Lock facilities
SIM_CAPSTYPE_PBINDEXRANGE = $00000008; // Valid phonebook entry indexes
SIM_CAPSTYPE_LOCKINGPWDLENGTHS = $00000010; // Locking password lengths
SIM_CAPSTYPE_MSGMEMORYLOCATIONS = $00000020; // Message memory locations
SIM_CAPSTYPE_ALL = $0000003F; // All of the above
// SMS Storage | SMS storage locations }
SIM_SMSSTORAGE_BROADCAST = $00000001; // Broadcast message storage location
SIM_SMSSTORAGE_SIM = $00000002; // SIM storage location
SIM_NUMSMSSTORAGES = 2; // Number of message storage locations
// Address Type | Defines different address types }
SIM_ADDRTYPE_UNKNOWN = $00000000; // Unknown
SIM_ADDRTYPE_INTERNATIONAL = $00000001; // International number
SIM_ADDRTYPE_NATIONAL = $00000002; // National number
SIM_ADDRTYPE_NETWKSPECIFIC = $00000003; // Network specific number
SIM_ADDRTYPE_SUBSCRIBER = $00000004; // Subscriber number (protocol-specific)
SIM_ADDRTYPE_ALPHANUM = $00000005; // Alphanumeric address
SIM_ADDRTYPE_ABBREV = $00000006; // Abbreviated number
// Numbering Plan | Defines different numbering plans for SIM_ADDRTYPE_UNKNOWN,
// SIM_ADDRTYPE_INTERNATIONAL, and SIM_ADDRTYPE_NATIONAL
SIM_NUMPLAN_UNKNOWN = $00000000; // Unknown
SIM_NUMPLAN_TELEPHONE = $00000001; // ISDN/telephone numbering plan (E.164/E.163)
SIM_NUMPLAN_DATA = $00000002; // Data numbering plan (X.121)
SIM_NUMPLAN_TELEX = $00000003; // Telex numbering plan
SIM_NUMPLAN_NATIONAL = $00000004; // National numbering plan
SIM_NUMPLAN_PRIVATE = $00000005; // Private numbering plan
SIM_NUMPLAN_ERMES = $00000006; // ERMES numbering plan (ETSI DE/PS 3 01-3)
// Phone Locked | Indicates if the phone is currently locked (i.e.
// awaiting password) and what password to enter
SIM_LOCKEDSTATE_UNKNOWN = $00000000; // Locking state is unknown
SIM_LOCKEDSTATE_READY = $00000001; // Not awaiting a password (unlocked)
SIM_LOCKEDSTATE_SIM_PIN = $00000002; // Awaiting the SIM PIN
SIM_LOCKEDSTATE_SIM_PUK = $00000003; // Awaiting the SIM PUK
SIM_LOCKEDSTATE_PH_SIM_PIN = $00000004; // Awaiting the Phone to SIM Personalization PIN
SIM_LOCKEDSTATE_PH_FSIM_PIN = $00000005; // Awaiting the Phone to first SIM Personalization PIN
SIM_LOCKEDSTATE_PH_FSIM_PUK = $00000006; // Awaiting the Phone to first SIM Personalization PUK
SIM_LOCKEDSTATE_SIM_PIN2 = $00000007; // Awaiting the SIM PIN2
SIM_LOCKEDSTATE_SIM_PUK2 = $00000008; // Awaiting the SIM PUK2
SIM_LOCKEDSTATE_PH_NET_PIN = $00000009; // Awaiting the Network Personalization PIN
SIM_LOCKEDSTATE_PH_NET_PUK = $0000000a; // Awaiting the Network Personalization PUK
SIM_LOCKEDSTATE_PH_NETSUB_PIN = $0000000b; // Awaiting the Network Subset Personalization PIN
SIM_LOCKEDSTATE_PH_NETSUB_PUK = $0000000c; // Awaiting the Network Subset Personalization PUK
SIM_LOCKEDSTATE_PH_SP_PIN = $0000000d; // Awaiting the Service Provider Personalization PIN
SIM_LOCKEDSTATE_PH_SP_PUK = $0000000e; // Awaiting the Service Provider Personalization PUK
SIM_LOCKEDSTATE_PH_CORP_PIN = $0000000f; // Awaiting the Corporate Personalization PIN
SIM_LOCKEDSTATE_PH_CORP_PUK = $00000010; // Awaiting the Corporate Personalization PUK
// Phonebook Misc | Special phonebook constants }
SIM_PBINDEX_FIRSTAVAILABLE = $ffffffff; // Use first phonebook storage entry available
// Phone Locking | Indicates the phone's locking behavior }
SIM_LOCKFACILITY_CNTRL = $00000001; // Lock control curface
SIM_LOCKFACILITY_PH_SIM = $00000002; // Lock phone to SIM card
SIM_LOCKFACILITY_PH_FSIM = $00000004; // Lock phone to first SIM card
SIM_LOCKFACILITY_SIM = $00000008; // Lock SIM card
SIM_LOCKFACILITY_SIM_PIN2 = $00000010; // Lock SIM card
SIM_LOCKFACILITY_SIM_FIXEDIALING = $00000020; // SIM fixed dialing memory
SIM_LOCKFACILITY_NETWORKPERS = $00000040; // Network personalization
SIM_LOCKFACILITY_NETWORKSUBPERS = $00000080; // Network subset personalization
SIM_LOCKFACILITY_SERVICEPROVPERS = $00000100; // Service provider personalization
SIM_LOCKFACILITY_CORPPERS = $00000200; // Corporate personalization
SIM_NUMLOCKFACILITIES = 10; // Number of locking facilities
// SIM Record | Different SIM file types
SIM_RECORDTYPE_UNKNOWN = $00000000; // An unknown file type
SIM_RECORDTYPE_TRANSPARENT = $00000001; // A single veriable lengthed record
SIM_RECORDTYPE_CYCLIC = $00000002; // A cyclic set of records, each of the same length
SIM_RECORDTYPE_LINEAR = $00000003; // A linear set of records, each of the same length
SIM_RECORDTYPE_MASTER = $00000004; // Every SIM has a single master record, effectively the head node
SIM_RECORDTYPE_DEDICATED = $00000005; // Effectively a "directory" file which is a parent of other records
// SIM Record Refresh | Different ways of being notified that SIM
// have been updated
SIMFILE_FULLFILECHANGE = $00000001; // All files have been changed
SIMFILE_FILECHANGE = $00000002; // Only a few files have been changed
SIMFILE_SIMINIT = $00000004; // SIM Initiailization
SIMFILE_SIMRESET = $00000008; // Reset the SIM
// Max_Length | Maximum length constants }
MAX_LENGTH_ADDRESS = 256; // Maximum length of an address
MAX_LENGTH_PHONEBOOKENTRYTEXT = 256; // Maximum length of text in a phonebook entry
MAX_LENGTH_HEADER = 256; // Maximum length of a SMS header
MAX_LENGTH_MESSAGE = 256; // Maximum length of a SMS message
MAX_FILES = 32; // Maximum number of files in a file change list
//*****************************************************************************
// types
//*****************************************************************************
type
// HSIM | Handle to a SIM }
HSIM = HANDLE;
LPHSIM = ^HSIM;
// SIMPHONEBOOKENTRY | A SIM phonebook entry
simphonebookentry_tag = record
cbSize : DWORD; // Size of the structure in bytes
dwParams : DWORD; // Indicates valid parameter values
lpszAddress : array[0..(MAX_LENGTH_ADDRESS)-1] of TCHAR; // The actual phone number
dwAddressType : DWORD; // A SIM_ADDRTYPE_* constant
dwNumPlan : DWORD; // A SIM_NUMPLAN_* constant
lpszText : array[0..(MAX_LENGTH_PHONEBOOKENTRYTEXT)-1] of TCHAR; // Text assocaited with the entry
end;
TSIMPHONEBOOKENTRY = simphonebookentry_tag;
LPSIMPHONEBOOKENTRY = ^simphonebookentry_tag;
// SIMMESSAGE | A SIM message entry
simmessage_tag = record
cbSize : DWORD; // Size of the structure in bytes
dwParams : DWORD; // Indicates valid parameter values
lpszAddress : array[0..(MAX_LENGTH_ADDRESS)-1] of TCHAR; // The actual phone number
dwAddressType : DWORD; // A SIM_ADDRTYPE_* constant
dwNumPlan : DWORD; // A SIM_NUMPLAN_* constant
stReceiveTime : SYSTEMTIME; // Timestamp for the incoming message
cbHdrLength : DWORD; // Header length in bytes
rgbHeader : array[0..(MAX_LENGTH_HEADER)-1] of BYTE; // The actual header data
lpszMessage : array[0..(MAX_LENGTH_MESSAGE)-1] of TCHAR; // The actual message data
end;
TSIMMESSAGE = simmessage_tag;
LPSIMMESSAGE = ^simmessage_tag;
// SIMLOCKINGPWDLENGTH | Minimum password length }
simlockingpwdlength = record
dwFacility : DWORD; // The locking facility
dwPasswordLength : DWORD; // The minimum password length
end;
LPSIMLOCKINGPWDLENGTH = ^simlockingpwdlength;
// SIMCAPS | Capabilities of the SIM
simcaps_tag = record
cbSize : DWORD; // Size of the structure in bytes
dwParams : DWORD; // Indicates valid parameter values
dwPBStorages : DWORD; // Supported phonebook storages
dwMinPBIndex : DWORD; // Minimum phonebook storages
dwMaxPBIndex : DWORD; // Maximum phonebook storages
dwMaxPBEAddressLength : DWORD; // Maximum address length of phonebook entries
dwMaxPBETextLength : DWORD; // Maximum text length of phonebook entries
dwLockFacilities : DWORD; // Supported locking facilities
dwReadMsgStorages : DWORD; // Supported read message stores
dwWriteMsgStorages : DWORD; // Supported write message stores
dwNumLockingPwdLengths : DWORD; // Number of entries in rgLockingPwdLengths
rgLockingPwdLengths : array[0..(SIM_NUMLOCKFACILITIES)-1] of SIMLOCKINGPWDLENGTH; // Password lengths for each facility
end;
TSIMCAPS = simcaps_tag;
LPSIMCAPS = ^simcaps_tag;
// SIMRECORDINFO | Information about a particular SIM file
simrecordinfo_tag = record
cbSize : DWORD; // Size of the structure in bytes
dwParams : DWORD; // Indicates valid parameter values
dwRecordType : DWORD; // SIM_RECORDTYPE_* Constant
dwItemCount : DWORD; // Number of items in the record
dwSize : DWORD; // Size in bytes of each item
end;
TSIMRECORDINFO = simrecordinfo_tag;
LPSIMRECORDINFO = ^simrecordinfo_tag;
// SIMFILEREFRESH | Information about which file(s) have been updated
simfilerefresh_tag = record
cbSize : DWORD; // Size of the structure in bytes
dwParams : DWORD; // Indicates valid parameter values
dwFlags : DWORD; // Combination of SIMFILE_* constants
dwFileCount : DWORD; // Number of files in the update list
rgdwAddress : array[0..(MAX_FILES)-1] of DWORD; // Array of files
end;
TSIMFILEREFRESH = simfilerefresh_tag;
LPSIMFILEREFRESH = ^simfilerefresh_tag;
// SIMPBECHANGE | Information about which SIM Phonebook entries have changed
simpbechange_tag = record
dwEntry : DWORD; // The index of the entry that has changed
dwStorage : DWORD; // SIM_PBSTORAGE_* constant detailing which phonebook this entry is in
end;
TSIMPBECHANGE = simpbechange_tag;
LPSIMPBECHANGE = ^simpbechange_tag;
// SIMMESSAGECHANGE | Information about which SMS messages on the SIM have changed }
simmessagechange_tag = record
dwEntry : DWORD; // The index of the entry that has changed
dwStorage : DWORD; // SIM_SMSSTORAGE_* constant details which storage location this entry is in
end;
TSIMMESSAGECHANGE = simmessagechange_tag;
LPSIMMESSAGECHANGE = ^simmessagechange_tag;
// This is the callback function prototype used by SIM Manager when
// sending notifications.
// -
// Indicates type of notification received
// Points to data structure specific to the notification
// Size of data structure in bytes
// Parameter passed to simInititialize
TSIMCALLBACK = procedure (dwNotifyCode:DWORD; const pData:pointer; dwDataSize:DWORD; dwParam:DWORD);
//*****************************************************************************
// functions
//*****************************************************************************
// This function must be called by applications in order to use any of the
// functions in this API.
// Passing in a function callback is required only for applications that
// wish to obtain notifications.
// -
// Indicates which notifications to receive
// Function callback for notifications, may be NULL if notifications are not desired
// Parameter to pass on each notification function call, may be NULL
// Points to a HSIM handle to use on subsequent function calls
function SimInitialize(dwFlags:DWORD; lpfnCallBack:TSIMCALLBACK; dwParam:DWORD; lphSim:LPHSIM):HRESULT;external KernelDLL name 'SimInitialize';
// This function deinitializes an HSIM handle.
// -
// A valid HSIM handle to deinitialize
function SimDeinitialize(hSim:HSIM):HRESULT;external KernelDLL name 'SimDeinitialize';
// Gets the device capabilities of the SIM.
// -
// Points to a valid HSIM handle
// Which device capabilities are we interested in?
// Capabilities structure
function SimGetDevCaps(hSim:HSIM; dwCapsType:DWORD; lpSimCaps:LPSIMCAPS):HRESULT;external KernelDLL name 'SimGetDevCaps';
// Reads a phonebook entry off the SIM card.
// -
// Points to a valid HSIM handle
// A SIMPBSTORAGE_* Constant
// Index of the entry to retrieve
// Points to a phonebook entry structure
function SimReadPhonebookEntry(hSim:HSIM; dwLocation:DWORD; dwIndex:DWORD; lpPhonebookEntry:LPSIMPHONEBOOKENTRY):HRESULT;external KernelDLL name 'SimReadPhonebookEntry';
// Gets the status of a phonebook location.
// -
// Points to a valid HSIM handle
// A SIMPBSTORAGE_* Constant
// Nubmer of used locations
// Total number of locations
function SimGetPhonebookStatus(hSim:HSIM; dwLocation:DWORD; lpdwUsed:LPDWORD; lpdwTotal:LPDWORD):HRESULT;external KernelDLL name 'SimGetPhonebookStatus';
// Writes a phonebook entry to the SIM card.
// -
// Points to a valid HSIM handle
// A SIMPBSTORAGE_* Constant
// Index of the entry to retrieve (may be SIM_PBINDEX_FIRSTAVAILABLE)
// Points to a phonebook entry structure
function SimWritePhonebookEntry(hSim:HSIM; dwLocation:DWORD; dwIndex:DWORD; lpPhonebookEntry:LPSIMPHONEBOOKENTRY):HRESULT;external KernelDLL name 'SimWritePhonebookEntry';
// Deletes a phonebook entry from the SIM card.
// -
// Points to a valid HSIM handle
// A SIMPBSTORAGE_* Constant
// Index of the entry to retrieve
function SimDeletePhonebookEntry(hSim:HSIM; dwLocation:DWORD; dwIndex:DWORD):HRESULT;external KernelDLL name 'SimDeletePhonebookEntry';
// Checks if the SIM is currently awaiting a password.
// This is called when powering on the phone.
// -
// Points to a valid HSIM handle
// Points to a SIM_LOCKEDSTATE_* constant
function SimGetPhoneLockedState(hSim:HSIM; lpdwLockedState:LPDWORD):HRESULT;external KernelDLL name 'SimGetPhoneLockedState';
// Sends a password to unlock the phone.
// -
// Points to a valid HSIM handle
// Points to password string
// Some locked states require a second password (e.g. PUK requires a new PIN to replace the old, presumably forgotten PIN)
function SimUnlockPhone(hSim:HSIM; lpszPassword:LPTSTR; lpszNewPin:LPTSTR):HRESULT;external KernelDLL name 'SimUnlockPhone';
// Gets the locking status of the phone.
// -
// Points to a valid HSIM handle
// A SIMLOCKFACILITY_* constant
// Some facilities require a password
// Enabled or diabled
function SimGetLockingStatus(hSim:HSIM; dwLockingFacility:DWORD; lpszPassword:LPTSTR; var pfEnabled:BOOL):HRESULT;external KernelDLL name 'SimGetLockingStatus';
// Sets the locking status of the phone.
// -
// Points to a valid HSIM handle
// A SIMLOCKFACILITY_* constant
// Some facilities require a password
// Enable or diable
function SimSetLockingStatus(hSim:HSIM; dwLockingFacility:DWORD; lpszPassword:LPTSTR; fEnabled:BOOL):HRESULT;external KernelDLL name 'SimSetLockingStatus';
// Changes a locking password.
// -
// Points to a valid HSIM handle
// A SIMLOCKFACILITY_* constant
// The old password
// The new password
function SimChangeLockingPassword(hSim:HSIM; dwLockingFacility:DWORD; lpszOldPassword:LPTSTR; lpszNewPassword:LPTSTR):HRESULT;external KernelDLL name 'SimChangeLockingPassword';
// Gets the status of a SMS storage location.
// -
// Points to a valid HSIM handle
// A SIM_SMSSTORAGE_* constant
// Nubmer of used locations
// Total number of locations
function SimGetSmsStorageStatus(hSim:HSIM; dwStorage:DWORD; lpdwUsed:LPDWORD; lpdwTotal:LPDWORD):HRESULT;external KernelDLL name 'SimGetSmsStorageStatus';
// Reads an SMS from a particular storage location.
// -
// Points to a valid HSIM handle
// A SIM_SMSSTORAGE_* constant
// Index of the entry to retrieve
// Points to an SMS message structure
function SimReadMessage(hSim:HSIM; dwStorage:DWORD; dwIndex:DWORD; lpSimMessage:LPSIMMESSAGE):HRESULT;external KernelDLL name 'SimReadMessage';
// Writes an SMS to a particular storage location.
// Note that SMS messages are always written to the first available storage location
// -
// lpdwIndex will be set to the index to which the message was written
// Points to a valid HSIM handle
// A SIM_SMSSTORAGE_* constant
// Set to the index where the message was written
// Points to an SMS message structure
function SimWriteMessage(hSim:HSIM; dwStorage:DWORD; lpdwIndex:LPDWORD; lpSimMessage:LPSIMMESSAGE):HRESULT;external KernelDLL name 'SimWriteMessage';
// Deletes an SMS from a particular storage location.
// -
// Points to a valid HSIM handle
// A SIM_SMSSTORAGE_* constant
// Index of the entry to retrieve
function SimDeleteMessage(hSim:HSIM; dwStorage:DWORD; dwIndex:DWORD):HRESULT;external KernelDLL name 'SimDeleteMessage';
// Reads a file form the SIM.
// -
// Points to a valid HSIM handle
// SIM address
// A SIM_RECORDTYPE_* constant
// Applies only to SIM_RECORDTYPE_CYCLIC and SIM_RECORDTYPE_LINEAR, otherwise ignored
// Data buffer
// Size of data buffer
// Number of bytes read
function SimReadRecord(hSim:HSIM; dwAddress:DWORD; dwRecordType:DWORD; dwIndex:DWORD;
lpData: LPBYTE; dwBufferSize: DWORD; lpdwBytesRead: LPDWORD):HRESULT;external KernelDLL name 'SimReadRecord';
// Writes a file to the SIM.
// -
// Points to a valid HSIM handle
// SIM address
// A SIM_RECORDTYPE_* constant
// Applies only to SIM_RECORDTYPE_CYCLIC and SIM_RECORDTYPE_LINEAR, otherwise ignored
function SimWriteRecord(hSim:HSIM; dwAddress:DWORD; dwRecordType:DWORD; dwIndex:DWORD;
lpData: LPBYTE; dwByteCount: DWORD):HRESULT;external KernelDLL name 'SimWriteRecord';
// Gets information about a particular record.
// -
// Points to a valid HSIM handle
// SIM address
// Points to a SIM record information structure
function SimGetRecordInfo(hSim:HSIM; dwAddress:DWORD; lpSimRecordInfo:LPSIMRECORDINFO):HRESULT;external KernelDLL name 'SimGetRecordInfo';
{$endif read_interface}
{$ifdef read_implementation}
{$endif read_implementation}

View File

@ -12,7 +12,7 @@
**********************************************************************}
{ Declarations for tapi WinCE API, note than on WinCE tapi functions originally
based in core.dll
based in coredll.dll
}
{ this port based on Windows Mobile 5 Smartphone Edition SDK
@ -1791,13 +1791,13 @@ function phoneSetStatusMessages(hPhone:HPHONE; dwPhoneStates:DWORD; dwButtonMode
function phoneSetVolume(hPhone:HPHONE; dwHookSwitchDev:DWORD; dwVolume:DWORD):LONG;external KernelDLL name 'phoneSetVolume';
function phoneShutdown(hPhoneApp:HPHONEAPP):LONG;external KernelDLL name 'phoneShutdown';
function TAPIERROR_FORMATMESSAGE(const AErrCode: Longint): Longint; // C Macros conversion, may be wrong
function TAPIERROR_FORMATMESSAGE(const AErrCode: Longword): Longword; // C Macros conversion, may be wrong
{$endif read_interface}
{$ifdef read_implementation}
function TAPIERROR_FORMATMESSAGE(const AErrCode: Longint): Longint;
function TAPIERROR_FORMATMESSAGE(const AErrCode: Longword): Longword;
begin
if AErrCode>$FFFF0000 then Exit(AErrCode and $0000FFFF);
if (AErrCode and $10000000)<>0 then Exit(AErrCode-$90000000+$F000);