diff --git a/.gitattributes b/.gitattributes index 45cdfe473e..2ccd8cc3ab 100644 --- a/.gitattributes +++ b/.gitattributes @@ -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 diff --git a/packages/winceunits/Makefile b/packages/winceunits/Makefile index 7cbdc1b52c..c4716254d9 100644 --- a/packages/winceunits/Makefile +++ b/packages/winceunits/Makefile @@ -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 diff --git a/packages/winceunits/Makefile.fpc b/packages/winceunits/Makefile.fpc index 9f7a4beff8..d780051782 100644 --- a/packages/winceunits/Makefile.fpc +++ b/packages/winceunits/Makefile.fpc @@ -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 diff --git a/packages/winceunits/src/buildwinceunits.pp b/packages/winceunits/src/buildwinceunits.pp index 5f4406e14f..3a7245d23a 100644 --- a/packages/winceunits/src/buildwinceunits.pp +++ b/packages/winceunits/src/buildwinceunits.pp @@ -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 diff --git a/packages/winceunits/src/wap.pp b/packages/winceunits/src/wap.pp new file mode 100644 index 0000000000..22f7c76f4b --- /dev/null +++ b/packages/winceunits/src/wap.pp @@ -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.