+ Added wap wince api unit by AnarchyMob.

git-svn-id: trunk@12370 -
This commit is contained in:
yury 2008-12-16 11:40:45 +00:00
parent 9e19ef3a2c
commit 6dd66f09b9
5 changed files with 244 additions and 4 deletions

1
.gitattributes vendored
View File

@ -4648,6 +4648,7 @@ packages/winceunits/src/sipapi.pp svneol=native#text/plain
packages/winceunits/src/sms.pp svneol=native#text/plain
packages/winceunits/src/tapi.pp svneol=native#text/plain
packages/winceunits/src/todaycmn.pp svneol=native#text/plain
packages/winceunits/src/wap.pp svneol=native#text/plain
packages/winceunits/src/windbase.pp svneol=native#text/plain
packages/winceunits/src/windbase_edb.inc svneol=native#text/plain
packages/winceunits/src/wininet.pp svneol=native#text/plain

View File

@ -275,10 +275,10 @@ ifeq ($(FULL_TARGET),arm-wince)
override TARGET_UNITS+=comobj buildwinceunits
endif
ifeq ($(FULL_TARGET),i386-wince)
override TARGET_IMPLICITUNITS+=aygshell commctrl commdlg iphlpapi notify oleauto power shellapi simmgr tapi gpsapi todaycmn windbase cesync gx winioctl msgqueue pm service htmlctrl sipapi cpl bt_api bt_sdp bthapi bthutil pimstore ril sms ws2bth keybd nled phone connmgr devload devmgmt mmreg mmsystem msacm wininet ras raserror sip projects activex ole2 comconst
override TARGET_IMPLICITUNITS+=aygshell commctrl commdlg iphlpapi notify oleauto power shellapi simmgr tapi gpsapi todaycmn windbase cesync gx winioctl msgqueue pm service htmlctrl sipapi cpl bt_api bt_sdp bthapi bthutil pimstore ril sms ws2bth keybd nled phone connmgr devload devmgmt mmreg mmsystem msacm wininet ras raserror sip projects wap activex ole2 comconst
endif
ifeq ($(FULL_TARGET),arm-wince)
override TARGET_IMPLICITUNITS+=aygshell commctrl commdlg iphlpapi notify oleauto power shellapi simmgr tapi gpsapi todaycmn windbase cesync gx winioctl msgqueue pm service htmlctrl sipapi cpl bt_api bt_sdp bthapi bthutil pimstore ril sms ws2bth keybd nled phone connmgr devload devmgmt mmreg mmsystem msacm wininet ras raserror sip projects activex ole2 comconst
override TARGET_IMPLICITUNITS+=aygshell commctrl commdlg iphlpapi notify oleauto power shellapi simmgr tapi gpsapi todaycmn windbase cesync gx winioctl msgqueue pm service htmlctrl sipapi cpl bt_api bt_sdp bthapi bthutil pimstore ril sms ws2bth keybd nled phone connmgr devload devmgmt mmreg mmsystem msacm wininet ras raserror sip projects wap activex ole2 comconst
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_RSTS+=comconst

View File

@ -12,7 +12,7 @@ implicitunits_wince=aygshell commctrl commdlg iphlpapi notify oleauto power shel
gpsapi todaycmn windbase cesync gx winioctl msgqueue pm service htmlctrl \
sipapi cpl bt_api bt_sdp bthapi bthutil pimstore ril sms ws2bth keybd nled \
phone connmgr devload devmgmt mmreg mmsystem msacm wininet ras raserror \
sip projects \
sip projects wap \
activex ole2 comconst
units_win32=rapi cesync

View File

@ -25,7 +25,7 @@ uses
gpsapi,todaycmn,windbase,cesync,gx,winioctl,msgqueue,pm,service,htmlctrl,
sipapi, cpl, bt_api, bt_sdp, bthapi, bthutil, pimstore, ril, sms, ws2bth,
keybd, nled, phone, connmgr, devload, devmgmt, mmreg, mmsystem, msacm,
wininet, ras, raserror, sip, projects;
wininet, ras, raserror, sip, projects, wap;
implementation

View File

@ -0,0 +1,239 @@
{
This file is part of the Free Pascal run time library.
Copyright (c) 2008 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.
********************************************************************** }
unit wap;
interface
uses
Windows;
{$calling cdecl}
//*********************************************************
//
// Constants
//
//*********************************************************
const
wapdll = 'wap.dll';
//*******************************************************
FACILITY_WAP = $500;
//WTLS errors
WAP_E_WTLS = (SEVERITY_ERROR shl 31) or (FACILITY_WAP shl 16) or $0001;
WAP_E_WTLS_CERTIFICATE = (SEVERITY_ERROR shl 31) or (FACILITY_WAP shl 16) or $0002;
WAP_E_WTLS_HANDSHAKE = (SEVERITY_ERROR shl 31) or (FACILITY_WAP shl 16) or $0003;
WAP_E_WTLS_CRYPTERROR = (SEVERITY_ERROR shl 31) or (FACILITY_WAP shl 16) or $0004;
WAP_E_WTLS_BADMAC = (SEVERITY_ERROR shl 31) or (FACILITY_WAP shl 16) or $0005;
WAP_E_NO_UDP_ACCESS = (SEVERITY_ERROR shl 31) or (FACILITY_WAP shl 16) or $00100;
//Maximum sizes
const
MAX_WAP_ADDRESS_LENGTH = 64;
//WDP field identifiers
WDP_FIELD_NONE = $00000000;
WDP_FIELD_SOURCEADDRESS = $00000001;
WDP_FIELD_SOURCEPORT = $00000002;
WDP_FIELD_DESTINATIONADDRESS = $00000004;
WDP_FIELD_DESTINATIONPORT = $00000008;
WDP_FIELD_USERDATA = $00000010;
WDP_FIELD_ERRORCODE = $00000020;
//WTP field identifiers
WTP_FIELD_NONE = $00000000;
WTP_FIELD_SOURCEADDRESS = $00000001;
WTP_FIELD_SOURCEPORT = $00000002;
WTP_FIELD_DESTINATIONADDRESS = $00000004;
WTP_FIELD_DESTINATIONPORT = $00000008;
WTP_FIELD_USERACKNOWLEDGEMENT = $00000010;
WTP_FIELD_WANTSECURETRANSACTION = $00000020;
WTP_FIELD_USERDATA = $00000040;
WTP_FIELD_CLASSTYPE = $00000080;
WTP_FIELD_EXITINFO = $00000100;
WTP_FIELD_HANDLE = $00000200;
WTP_FIELD_ABORTCODE = $00000400;
WTP_FIELD_TRANSACTIONSECURITYLEVEL = $00000800;
INVALID_WTP_TRANSACTION_HANDLE = 0;
//****************************************************************
//
// Types
//
//****************************************************************
type
WAP_LAYER = (
WAP_LAYER_WDP = 1,
WAP_LAYER_WTLS,
WAP_LAYER_WTP,
WAP_LAYER_WSP,
WAP_LAYER_WAE);
PWAP_LAYER = ^WAP_LAYER;
//WAP primitives
WAP_PRIMITIVE_ID = (
WAP_PRIMITIVE_ID_T_DUNITDATA = 1);
PWAP_PRIMITIVE_ID = ^WAP_PRIMITIVE_ID;
//WAP primitive type
WAP_PRIMITIVE_TYPE = (
WAP_PRIMITIVE_TYPE_REQUEST = 1,
WAP_PRIMITIVE_TYPE_INDICATION,
WAP_PRIMITIVE_TYPE_RESPONSE,
WAP_PRIMITIVE_TYPE_CONFIRM);
PWAP_PRIMITIVE_TYPE = ^WAP_PRIMITIVE_TYPE;
//WAP address types
WAP_ADDRESS_TYPE = (
WAP_ADDRESS_TYPE_UDP = 1,
WAP_ADDRESS_TYPE_GSM_SMS);
PWAP_ADDRESS_TYPE = ^WAP_ADDRESS_TYPE;
//WAP address structure
WAP_ADDRESS_tag = record
watAddressType: WAP_ADDRESS_TYPE;
ptsAddress : Array[0..MAX_WAP_ADDRESS_LENGTH-1] of TCHAR;
end {WAP_ADDRESS_tag};
WAP_ADDRESS = WAP_ADDRESS_tag;
PWAP_ADDRESS = ^WAP_ADDRESS_tag;
WAP_HANDLE = LongInt;
PWAP_HANDLE = ^WAP_HANDLE;
//WTP transaction class types
WTP_TRANSACTION_CLASS_TYPE = (
WTP_TRANSACTION_CLASS_TYPE_0 = 1,
WTP_TRANSACTION_CLASS_TYPE_1,
WTP_TRANSACTION_CLASS_TYPE_2);
PWTP_TRANSACTION_CLASS_TYPE = ^WTP_TRANSACTION_CLASS_TYPE;
//WTP secure transaction (WTLS) security levels
WTP_TRANSACTION_SECURITY_LEVEL = (
WTP_TRANSACTION_SECURITY_LEVEL_NOTSECURE = 1,
WTP_TRANSACTION_SECURITY_LEVEL_SECURENOAUTH,
WTP_TRANSACTION_SECURITY_LEVEL_GATEWAYAUTH);
PWTP_TRANSACTION_SECURITY_LEVEL = ^WTP_TRANSACTION_SECURITY_LEVEL;
WTP_TRANSACTION_HANDLE = LongInt;
//WAP primitives
//Base primitive type - all other primitive types derive from this one
wap_primitive_base_tag = record
wpiPrimitiveID : WAP_PRIMITIVE_ID;
wptPrimitiveType: WAP_PRIMITIVE_TYPE;
dwValidFields : LongInt;
end {wap_primitive_base_tag};
WAP_PRIMITIVE_BASE = wap_primitive_base_tag;
PWAP_PRIMITIVE_BASE = ^wap_primitive_base_tag;
//T-DUnitdata primitive (WDP)
wdp_unitdata_tag = record
wpiPrimitiveID : WAP_PRIMITIVE_ID;
wptPrimitiveType : WAP_PRIMITIVE_TYPE;
dwValidFields : LongInt;
waSourceAddress : WAP_ADDRESS;
dwSourcePort : LongInt;
waDestinationAddress: WAP_ADDRESS;
dwDestinationPort : LongInt;
pbUserData : PBYTE;
dwUserDataSize : LongInt;
end {wdp_unitdata_tag};
WDP_INITDATA = wdp_unitdata_tag;
PWDP_INITDATA = ^wdp_unitdata_tag;
//T-DError primitive (WDP)
//typedef struct wap_primitive_t_derror_tag
//WAP_PRIMITIVE_ID wpiPrimitiveID;
//WAP_PRIMITIVE_TYPE wptPrimitiveType;
//DWORD dwValidFields;
//WAP_ADDRESS waSourceAddress;
//DWORD dwSourcePort;
//WAP_ADDRESS waDestinationAddress;
//DWORD dwDestinationPort;
//HRESULT hrErrorCode;
//WAP_PRIMITIVE_T_DERROR;
//TR-Invoke primitive (WTP)
wtp_invoke_tag = record
wpiPrimitiveID : WAP_PRIMITIVE_ID;
wptPrimitiveType : WAP_PRIMITIVE_TYPE;
dwValidFields : LongInt;
waSourceAddress : WAP_ADDRESS;
dwSourcePort : LongInt;
waDestinationAddress : WAP_ADDRESS;
dwDestinationPort : LongInt;
bUserAcknowledgement : Bool;
bWantSecureTransaction: Bool;
pbUserData : PBYTE;
dwUserDataSize : LongInt;
wtctClassType : WTP_TRANSACTION_CLASS_TYPE;
pbExitInfo : PBYTE;
dwExitInfoSize : LongInt;
wthTransactionHandle : WTP_TRANSACTION_HANDLE;
end {wtp_invoke_tag};
WTP_INVOKE = wtp_invoke_tag;
PWTP_INVOKE = ^wtp_invoke_tag;
//TR-Result primitive (WTP)
wtp_result_tag = record
wpiPrimitiveID : WAP_PRIMITIVE_ID;
wptPrimitiveType : WAP_PRIMITIVE_TYPE;
dwValidFields : LongInt;
pbUserData : PBYTE;
dwUserDataSize : LongInt;
pbExitInfo : PBYTE;
dwExitInfoSize : LongInt;
wthTransactionHandle : WTP_TRANSACTION_HANDLE ;
wtslTransactionSecurityLevel: WTP_TRANSACTION_SECURITY_LEVEL;
end {wtp_result_tag};
WTP_RESULT = wtp_result_tag;
PWTP_RESULT = ^wtp_result_tag;
//TR-Abort primitive (WTP)
wtp_abort_tag = record
wpiPrimitiveID : WAP_PRIMITIVE_ID;
wptPrimitiveType : WAP_PRIMITIVE_TYPE;
dwValidFields : LongInt;
bAbortCode : BYTE;
wthTransactionHandle: WTP_TRANSACTION_HANDLE ;
end {wtp_abort_tag};
WTP_ABORT = wtp_abort_tag;
PWTP_ABORT = ^wtp_abort_tag;
//************************************************************
//
// WinAPI functions
//
//************************************************************
function WapOpen(const wlLayer: WAP_LAYER;
const dwLocalPort: LongInt;
const pwhHandle: PWAP_HANDLE;
const phMessageAvailableEvent: PHandle): HRESULT; external wapdll name 'WapOpen';
function WapClose(const whHandle: WAP_HANDLE): HRESULT; external wapdll name 'WapClose';
function WapSend(const whHandle: WAP_HANDLE;
const pwpbPrimitive: PWAP_PRIMITIVE_BASE): HRESULT; external wapdll name 'WapSend';
function WapGetNextPrimitiveSize(const whHandle: WAP_HANDLE;
const pdwNextPrimitiveSize: PLongInt): HRESULT; external wapdll name 'WapGetNextPrimitiveSize';
function WapRead(const whHandle: WAP_HANDLE;
const pwpbPrimitiveBuffer: WAP_PRIMITIVE_BASE;
const dwPrimitiveBufferSize: LongInt): HRESULT; external wapdll name 'WapRead';
function WapPing(const pwaAddress: PWAP_ADDRESS;
const wIdentifier: Word;
const dwSendDataSize: LongInt;
const pdwReceiveDataSize: PLongInt;
const dwTimeout: LongInt): HRESULT; external wapdll name 'WapPing';
implementation
end.