palm-os-sdk/sdk-5r3/include/Libraries/INet/INetMgr.h
2016-04-06 13:22:15 -07:00

1006 lines
38 KiB
C

/******************************************************************************
*
* Copyright (c) 1996-2003 PalmSource, Inc. All rights reserved.
*
* File: INetMgr.h
*
* Release: Palm OS 5 SDK (68K) R3.
*
* Description:
* This header file contains equates for the Internet Library.
*
*****************************************************************************/
#ifndef __INETLIB_H__
#define __INETLIB_H__
#include <PalmTypes.h>
#include <LibTraps.h>
#include <DataMgr.h>
#include <SystemResources.h>
#ifdef STATIC_BUILD
#define INETLIB_TRAP(x)
#else
#define INETLIB_TRAP SYS_TRAP
#endif
#pragma mark Constants
// Creator. Used for both the database that contains the INet Library and
// it's features for the feature manager.
#define inetCreator sysFileCINetLib // The Net Library creator
// INet Library features have this creator
#define inetLibFtrCreator sysFileCINetLib // creatorID of INet Lib features.
// Name of the InetLib
#define inetLibName "INet.lib" // pass in to SysLibFind()
// Feature inetCreator, #0 is index of the the version number feature.
// The Feature creator is inetLibFtrCreator.
// Encoding is: 0xMMmfsbbb, where MM is major version, m is minor version
// f is bug fix, s is stage: 3-release,2-beta,1-alpha,0-development,
// bbb is build number for non-releases
// V1.12b3 would be: 0x01122003
// V2.00a2 would be: 0x02001002
// V1.01 would be: 0x01013000
#define inetFtrNumVersion 0
// INetLib owns the Ctp device bits feature.
// Those bits contains device specific info bits that are sent to the Elaine server.
// See Ctp.h for the bit descriptions
#define inetFtrNumCtpDeviceBits1 1
#define inetLibType sysFileTLibrary // Our Net Code Resources Database type
// ID for proxy IP address in flash
#define inetFlashProxyID 'IP'
#define inetDefaultFlashProxyID 'DP'
//Also uses mobitexNetworkIdUS and mobitexNetworkIdCanada (0xb433 and 0xc4d7) to store
//current proxies for US and Canada. The responsibility for writing these and keeping
//them in sync lies with the Wireless panel, not with netlib.
//-----------------------------------------------------------------------------
// IP addresses of Elaine servers - used for default wireless proxies
//-----------------------------------------------------------------------------
#define netProxyIPManhattanHGA 0x0A0186A5 // Manhattan HGA = 10.1.134.165 or MAN 100005
#define netProxyIPDefaultHGA netProxyIPManhattanHGA
#define netProxyIPDefaultHGAStr "10.1.134.165" //Should correspond to above value
#pragma mark ErrorCodes
/********************************************************************
* Error codes
********************************************************************/
#define inetErrNone 0
#define inetErrTooManyClients (inetErrorClass | 1) // Too many clients already
#define inetErrHandleInvalid (inetErrorClass | 2) // Invalid inetH or sockH
#define inetErrParamsInvalid (inetErrorClass | 3) //
#define inetErrURLVersionInvalid (inetErrorClass | 4) //
#define inetErrURLBufTooSmall (inetErrorClass | 5) //
#define inetErrURLInvalid (inetErrorClass | 6) //
#define inetErrTooManySockets (inetErrorClass | 7) //
#define inetErrNoRequestCreated (inetErrorClass | 8)
#define inetErrNotConnected (inetErrorClass | 9)
#define inetErrInvalidRequest (inetErrorClass | 10)
#define inetErrNeedTime (inetErrorClass | 11)
#define inetErrHostnameInvalid (inetErrorClass | 12)
#define inetErrInvalidPort (inetErrorClass | 13)
#define inetErrInvalidHostAddr (inetErrorClass | 14)
#define inetErrNilBuffer (inetErrorClass | 15)
#define inetErrConnectTimeout (inetErrorClass | 16)
#define inetErrResolveTimeout (inetErrorClass | 17)
#define inetErrSendReqTimeout (inetErrorClass | 18)
#define inetErrReadTimeout (inetErrorClass | 19)
#define inetErrBufTooSmall (inetErrorClass | 20)
#define inetErrSchemeNotSupported (inetErrorClass | 21)
#define inetErrInvalidResponse (inetErrorClass | 22)
#define inetErrSettingTooLarge (inetErrorClass | 25)
#define inetErrSettingSizeInvalid (inetErrorClass | 26)
#define inetErrRequestTooLong (inetErrorClass | 27)
#define inetErrSettingNotImplemented (inetErrorClass | 28)
// Configuration errors
#define inetErrConfigNotFound (inetErrorClass | 29)
#define inetErrConfigCantDelete (inetErrorClass | 30)
#define inetErrConfigTooMany (inetErrorClass | 31)
#define inetErrConfigBadName (inetErrorClass | 32)
#define inetErrConfigNotAlias (inetErrorClass | 33)
#define inetErrConfigCantPointToAlias (inetErrorClass | 34)
#define inetErrConfigEmpty (inetErrorClass | 35)
#define inetErrConfigAliasErr (inetErrorClass | 37)
#define inetErrNoWirelessInterface (inetErrorClass | 38)
// Encryption related errors
#define inetErrEncryptionNotAvail (inetErrorClass | 39)
// Need to re-send transaction because server told us to reset our
// encryption sequence number
#define inetErrNeedRetryEncSeqNum (inetErrorClass | 40)
// Need to re-send transaction because server sent us a new
// public key to use.
#define inetErrNeedRetryEncPublicKey (inetErrorClass | 41)
#define inetErrResponseTooShort (inetErrorClass | 42)
// errors specific to handling Mobitex ILLEGAL responses
#define inetErrMobitexIllegalOKHost (inetErrorClass | 43)
#define inetErrMobitexIllegalBadHost (inetErrorClass | 44)
// see error 92 also
// HTTP errors
#define inetErrHTTPBadRequest (inetErrorClass | 45)
#define inetErrHTTPUnauthorized (inetErrorClass | 46)
#define inetErrHTTPForbidden (inetErrorClass | 47)
#define inetErrHTTPNotFound (inetErrorClass | 48)
#define inetErrHTTPMethodNotAllowed (inetErrorClass | 49)
#define inetErrHTTPNotAcceptable (inetErrorClass | 50)
#define inetErrHTTPProxyAuthRequired (inetErrorClass | 51)
#define inetErrHTTPRequestTimeout (inetErrorClass | 52)
#define inetErrHTTPConflict (inetErrorClass | 53)
#define inetErrHTTPGone (inetErrorClass | 54)
#define inetErrHTTPLengthRequired (inetErrorClass | 55)
#define inetErrHTTPPreconditionFailed (inetErrorClass | 56)
#define inetErrHTTPRequestTooLarge (inetErrorClass | 57)
#define inetErrHTTPRequestURITooLong (inetErrorClass | 58)
#define inetErrHTTPUnsupportedType (inetErrorClass | 59)
#define inetErrHTTPServerError (inetErrorClass | 60)
// CTP errors
#define inetErrCTPServerError (inetErrorClass | 61)
// Cache errors
#define inetErrTypeNotCached (inetErrorClass | 62)
#define inetErrCacheInvalid (inetErrorClass | 63)
// Palm: and PalmCall: scheme errors
#define inetErrURLDispatched (inetErrorClass | 64)
#define inetErrDatabaseNotFound (inetErrorClass | 65)
#define inetErrCTPMalformedRequest (inetErrorClass | 66)
#define inetErrCTPUnknownCommand (inetErrorClass | 67)
#define inetErrCTPTruncated (inetErrorClass | 68)
#define inetErrCTPUnknownError (inetErrorClass | 69)
#define inetErrCTPProxyError (inetErrorClass | 70)
#define inetErrCTPSocketErr (inetErrorClass | 71)
#define inetErrCTPInvalidURL (inetErrorClass | 72)
#define inetErrCTPReferringPageOutOfDate (inetErrorClass | 73)
#define inetErrCTPBadRequest (inetErrorClass | 74)
#define inetErrUNUSED (inetErrorClass | 75)
#define inetErrCTPMailServerDown (inetErrorClass | 76)
#define inetErrCTPHostNotFound (inetErrorClass | 77)
// Content Conversion Errors
#define inetErrCTPContentInvalidTag (inetErrorClass | 78)
#define inetErrCTPContentInternal (inetErrorClass | 79)
#define inetErrCTPContentDataEnd (inetErrorClass | 80)
#define inetErrCTPContentResourceTooBig (inetErrorClass | 81)
#define inetErrCTPContentNoNoFrames (inetErrorClass | 82)
#define inetErrCTPContentUnsupportedContent (inetErrorClass | 83)
#define inetErrCTPContentUnsupportedEncoding (inetErrorClass | 84)
#define inetErrCTPContentBadForm (inetErrorClass | 85)
#define inetErrCTPContentBadFormMissingAction (inetErrorClass | 86)
#define inetErrCTPContentBadFormMissingMethod (inetErrorClass | 87)
#define inetErrCTPContentNoSourceData (inetErrorClass | 88)
#define inetErrCTPContentBadImage (inetErrorClass | 89)
#define inetErrCTPContentImageTooLarge (inetErrorClass | 90)
// Mobitex illegal handled error code. This error is sent after
//INetLib handles inetErrMobitexIllegalOKHost or inetErrMobitexIllegalBadHost
//errors. The application needs to know that something went wrong and it needs
//to change state. This error does not need to be displayed to the user.
#define inetErrMobitexErrorHandled (inetErrorClass | 91)
// Proxy down, non-default host, show dialog asking to revert to default
#define inetErrProxyDownBadHost (inetErrorClass | 92)
// A second type of readtime. This should occur only when some data is received
// and the connection is lost.
#define inetErrHostConnectionLost (inetErrorClass | 93)
// Unable to locate link record within a PQA file
#define inetErrLinkNotFound (inetErrorClass | 94)
//
#define inetErrCacheInvalidSort (inetErrorClass | 95)
#pragma mark Types
// The following are used and bit field parameters to the sort routine. They
// are additive but ordered. Precendence is given to the lowest ordered bit.
#define inetCacheCompareByMasterURL (0x01)
#define inetCacheCompareByURL (0x02)
#define inetCacheCompareByTime (0x04)
/********************************************************************
* Input flags
********************************************************************/
//-----------------------------------------------------------------------------
// flag word definitions for INetLibURLOpen
//-----------------------------------------------------------------------------
#define inetOpenURLFlagLookInCache 0x0001
#define inetOpenURLFlagKeepInCache 0x0002
#define inetOpenURLFlagForceEncOn 0x0008 // use encryption even if
// scheme does not desire it
#define inetOpenURLFlagForceEncOff 0x0010 // no encryption even if
// scheme desires it
//-----------------------------------------------------------------------------
// flag word definitions for INetURLInfo. These flags bits are set in the
// flags field of the INetURLINfoType structure by INetLibURLGetInfo()
//-----------------------------------------------------------------------------
#define inetURLInfoFlagIsSecure 0x0001
#define inetURLInfoFlagIsRemote 0x0002
#define inetURLInfoFlagIsInCache 0x0004
/********************************************************************
* Configuration Support
********************************************************************/
//-----------------------------------------------------------------------------
// Names of built-in configuration aliases available through the
// INetLibConfigXXX calls
//-----------------------------------------------------------------------------
#define inetCfgNameDefault ".Default" // The default configuration
#define inetCfgNameDefWireline ".DefWireline" // The default wireline configuration
#define inetCfgNameDefWireless ".DefWireless" // The default wireless configuration
#define inetCfgNameCTPDefault ".CTPDefault" // Points to either .CTPWireline or .CTPWireless
#define inetCfgNameCTPWireline ".CTPWireline" // Wireline through the Jerry Proxy
#define inetCfgNameCTPWireless ".CTPWireless" // Wireless through the Jerry Proxy
//--------------------------------------------------------------------
// Structure of a configuration name. Used by INetLibConfigXXX calls
//---------------------------------------------------------------------
#define inetConfigNameSize 32
typedef struct {
Char name[inetConfigNameSize]; // name of configuration
} INetConfigNameType, *INetConfigNamePtr;
/********************************************************************
* Scheme Types
********************************************************************/
typedef enum {
inetSchemeUnknown = -1,
inetSchemeDefault = 0,
inetSchemeHTTP, // http:
inetSchemeHTTPS, // https:
inetSchemeFTP, // ftp:
inetSchemeGopher, // gopher:
inetSchemeFile, // file:
inetSchemeNews, // news:
inetSchemeMailTo, // mailto:
inetSchemePalm, // palm:
inetSchemePalmCall, // palmcall:
inetSchemeMail, // not applicable to URLS, but used
// for the INetLibSockOpen call when
// creating a socket for mail IO
inetSchemeMac, // mac: - Mac file system HTML
inetSchemeFirst = inetSchemeHTTP, // first one
inetSchemeLast = inetSchemeMail // last one
} INetSchemeEnum;
/********************************************************************
* Scheme Ports
********************************************************************/
#define inetPortFTP 21
#define inetPortHTTP 80
#define inetPortGopher 70
#define inetPortNews 119
#define inetPortHTTPS 44
/********************************************************************
* Structure of a cracked URL.
********************************************************************/
typedef struct {
UInt16 version; // should be 0, for future compatibility
UInt8 * schemeP; // ptr to scheme portion
UInt16 schemeLen; // size of scheme portion
UInt16 schemeEnum; // INetSchemEnum
UInt8 * usernameP; // ptr to username portion
UInt16 usernameLen; // size of username
UInt8 * passwordP; // ptr to password portion
UInt16 passwordLen; // size of password
UInt8 * hostnameP; // ptr to host name portion
UInt16 hostnameLen; // size of host name
UInt16 port; // port number
UInt8 * pathP; // ptr to path portion
UInt16 pathLen; // size of path
UInt8 * paramP; // param (;param)
UInt16 paramLen; // size of param
UInt8 * queryP; // query (?query)
UInt16 queryLen; // size of query
UInt8 * fragP; // fragment (#frag)
UInt16 fragLen; // size of fragment
} INetURLType;
/********************************************************************
* Structure for INetURLInfo. This structure is filled in with info
* about a URL.
********************************************************************/
typedef struct {
UInt16 version; // should be 0, for future compatibility
UInt16 flags; // flags word, one or ore of
// inetURLInfoFlagXXX flags
UInt32 undefined; // reserved for future use
} INetURLInfoType;
/********************************************************************
* Content and Compression Type Enums(from proxy server or PQA Builder)
********************************************************************/
typedef enum {
inetContentTypeTextPlain = 0,
inetContentTypeTextHTML,
inetContentTypeImageGIF,
inetContentTypeImageJPEG,
inetContentTypeApplicationCML,
inetContentTypeImagePalmOS,
inetContentTypeOther
} INetContentTypeEnum;
typedef enum {
inetCompressionTypeNone = 0,
inetCompressionTypeBitPacked,
inetCompressionTypeLZ77,
inetCompressionTypeBest,
inetCompressionTypeLZ77Primer1
} INetCompressionTypeEnum;
/********************************************************************
* Proxy Types
********************************************************************/
typedef enum {
inetProxyNone = 0, // no proxy
inetProxyCTP = 1 // CTP (Jerry) proxy
} INetProxyEnum;
/********************************************************************
* Transport Types
********************************************************************/
typedef enum {
inetTransportPPP = 0, // PPP
inetTransportMobitex = 1 // Mobitex
} INetTransportEnum;
/********************************************************************
* Settings for the INetLibSettingSet/Get call.
********************************************************************/
typedef enum {
inetSettingProxyType, // (RW) UInt32, INetProxyEnum
inetSettingProxyName, // (RW) Char[], name of proxy
inetSettingProxyPort, // (RW) UInt32, TCP port # of proxy
inetSettingProxySocketType, // (RW) UInt32, which type of socket to use
// netSocketTypeXXX
inetSettingCacheSize, // (RW) UInt32, max size of cache
inetSettingCacheRef, // (R) DmOpenRef, ref of cache DB
inetSettingNetLibConfig, // (RW) UInt32, Which NetLib config to use.
inetSettingRadioID, // (R) UInt32[2], the 64-bit radio ID
inetSettingBaseStationID, // (R) UInt32, the radio base station ID
inetSettingMaxRspSize, // (W) UInt32 (in bytes)
inetSettingConvAlgorithm, // (W) UInt32 (CTPConvEnum)
inetSettingContentWidth, // (W) UInt32 (in pixels)
inetSettingContentVersion, // (W) UInt32 Content version (encoder version)
inetSettingNoPersonalInfo, // (RW) UInt32 send no deviceID/zipcode
inetSettingUserName,
//---------------------------------------------------------------------------------
// New Settings as of PalmOS 4.0
//---------------------------------------------------------------------------------
inetSettingGraphicsSel, // (W) UInt8 (User Graphics selection)
inetSettingTransportType, // (RW) UInt32, INetTransportEnum
inetSettingServerBits1, // (RW) UInt32, bits sent by the server over ctp
inetSettingSendRawLocationInfo, // (W) Boolean, make the handheld send its Raw Location information.
// One use of this feature is to convert Web clipping's "%Location:..." codes into content info
inetSettingEnableCookies, // (RW) Boolean
// true: Cookies are enabled
// false: Cookies are disabled (default)
inetSettingMaxCookieJarSize, // (RW) UInt32, maximum cookie jar size in
// in kilobytes
// The following setting is a new interface in PalmOS 4.0 that allow Clipper
// or other INetLib clients to get raw location information as described in
// PalmLocRawData.h.
// INetLib will return a pointer to a newly allocated memory buffer containing
// the raw location information to send to Elaine (Web Clipping proxy server).
// Elaine will then use a Windows DLL to analyse the raw location information
// in order to transform it into something useful like zipcode, cityname, etc.
// See PalmLocRawData.h for more details...
inetSettingLocRawInfo, // (R) void* Allocated memory buffer - must be free by caller
// The following affect how the "Web Clipping" panel will edit the
// configuration. When "reset to default" is pressed, these default
// values will be copied back into the appropriate place.
// If the field is set to not be editable, the panel will not allow
// the user to change it
inetSettingProxyNameDefault, // Default Name for this config
inetSettingProxyPortDefault, // Default Port for this config
inetSettingProxyNameEditable, // Is the proxy name editable?
inetSettingProxyPortEditable, // Is the proxy port editable?
inetSettingPalmUserID, // The palm.net user id
inetSettingLast
} INetSettingEnum;
/********************************************************************
* Settings for the INetLibSockSettingSet/Get call.
********************************************************************/
typedef enum {
inetSockSettingScheme, // (R) UInt32, INetSchemeEnum
inetSockSettingSockContext, // (RW) UInt32,
inetSockSettingCompressionType, // (R) Char[]
inetSockSettingCompressionTypeID, // (R) UInt32 (INetCompressionTypeEnum)
inetSockSettingContentType, // (R) Char[]
inetSockSettingContentTypeID, // (R) UInt32 (INetContentTypeEnum)
inetSockSettingData, // (R) UInt32, pointer to data
inetSockSettingDataHandle, // (R) UInt32, handle to data
inetSockSettingDataOffset, // (R) UInt32, offset to data from handle
inetSockSettingTitle, // (RW) Char[]
inetSockSettingURL, // (R) Char[]
inetSockSettingIndexURL, // (RW) Char[]
inetSockSettingFlags, // (W) UInt16, one or more of
// inetOpenURLFlagXXX flags
inetSockSettingReadTimeout, // (RW) UInt32. Read timeout in ticks
inetSockSettingContentVersion, // (R) UInt32, version number for content
inetSockSettingLast
} INetSockSettingEnum;
/********************************************************************
* Possible socket status values that can be returned from INetLibSockStatus
********************************************************************/
typedef enum {
inetStatusNew, // just opened
inetStatusResolvingName, // looking up host address
inetStatusNameResolved, // found host address
inetStatusConnecting, // connecting to host
inetStatusConnected, // connected to host
inetStatusSendingRequest, // sending request
inetStatusWaitingForResponse, // waiting for response
inetStatusReceivingResponse, // receiving response
inetStatusResponseReceived, // response received
inetStatusClosingConnection, // closing connection
inetStatusClosed, // closed
inetStatusAcquiringNetwork, // network temporarily
// unreachable; socket on hold
inetStatusPrvInvalid = 30 // internal value, not
// returned by INetMgr. Should
// be last.
} INetStatusEnum;
/********************************************************************
* HTTP Attributes which can be set/get using the
* INetLibHTTPAttrSet/Get calls.
*
* Generally, attributes are only set BEFORE calling
* INetLibSockHTTPReqSend
* and attributes are only gotten AFTER the complete response
* has been received.
*
* Attributes marked with the following flags:
* (R) - read only
* (W) - write only
* (RW) - read/write
* (-) - not implemented yet
********************************************************************/
typedef enum {
// local error trying to communicate with server, if any
inetHTTPAttrCommErr, // (R) UInt32, read-only
// object attributes, defined at creation
inetHTTPAttrEntityURL, // (-) Char[], which resource was requested
//-----------------------------------------------------------
// Request only attributes
//-----------------------------------------------------------
inetHTTPAttrReqAuthorization, // (-) Char[]
inetHTTPAttrReqFrom, // (-) Char[]
inetHTTPAttrReqIfModifiedSince, // (-) UInt32
inetHTTPAttrReqReferer, // (-) Char[]
// The following are ignored unless going through a CTP proxy
inetHTTPAttrWhichPart, // (W) UInt32 (0 -> N)
inetHTTPAttrIncHTTP, // (W) UInt32 (Boolean) only applicable
// when inetHTTPAttrConvAlgorithm set to
// ctpConvNone
inetHTTPAttrCheckMailHi, // (W) UInt32
inetHTTPAttrCheckMailLo, // (W) UInt32
inetHTTPAttrReqContentVersion, // (W) UInt32 Desired content version. Represented
// as 2 low bytes. Lowest byte is minor version,
// next higher byte is major version.
//--------------------------------------------------------------
// Response only attributes
//--------------------------------------------------------------
// Server response info
inetHTTPAttrRspAll, // (-) Char[] - entire HTTP response including
// data
inetHTTPAttrRspSize, // (R) UInt32 - entire HTTP Response size including
// header and data
inetHTTPAttrRspVersion, // (-) Char[]
inetHTTPAttrResult, // (R) UInt32 (ctpErrXXX when using CTP Proxy)
inetHTTPAttrErrDetail, // (R) UInt32 (server/proxy err code when
// using CTP Proxy)
inetHTTPAttrReason, // (R) Char[]
inetHTTPAttrDate, // (-) UInt32
inetHTTPAttrNoCache, // (-) UInt32
inetHTTPAttrPragma, // (-) Char[]
inetHTTPAttrServer, // (-) Char[]
inetHTTPAttrWWWAuthentication, // (-) Char[]
// Returned entity attributes
inetHTTPAttrContentAllow, // (-) Char[]
inetHTTPAttrContentLength, // (R) UInt32
inetHTTPAttrContentLengthUncompressed, // (R) UInt32 (in bytes)
inetHTTPAttrContentPtr, // (-) Char *
inetHTTPAttrContentExpires, // (-) UInt32
inetHTTPAttrContentLastModified, // (-) UInt32
inetHTTPAttrContentLocation, // (-) Char[]
inetHTTPAttrContentLengthUntruncated, // (R) UInt32
inetHTTPAttrContentVersion, // (R) UInt32, actual content version. Represented
// as 2 low bytes. Lowest byte is minor version,
// next higher byte is major version.
inetHTTPAttrContentCacheID, // (R) UInt32, cacheID for this item
inetHTTPAttrReqSize // (R) UInt32 size of request sent
} INetHTTPAttrEnum;
/********************************************************************
* Structure of our Internet events. This structure is a superset of
* the regular event type. Note that we use the first 2 user events
* for the Internet Library so any app that uses this library must be
* to use user event IDs greater than inetLastEvent.
*
* library refNum in it....
********************************************************************/
#define inetSockReadyEvent firstINetLibEvent
#define inetSockStatusChangeEvent (firstINetLibEvent+1)
#define inetLastEvent (firstINetLibEvent+1)
typedef struct {
UInt16 eType;
Boolean penDown;
UInt8 reserved;
Int16 screenX;
Int16 screenY;
union {
struct {
UInt16 datum[8];
} generic;
struct {
MemHandle sockH; // socket handle
UInt32 context; // application defined
Boolean inputReady; // true if ready for reads
Boolean outputReady; // true if ready for writes
} inetSockReady;
struct {
MemHandle sockH; // socket handle
UInt32 context; // application defined
UInt16 status; // new status
Err sockErr; // socket err, if any
}inetSockStatusChange;
} data;
} INetEventType;
/********************************************************************
* Commands for INetLibWirelessIndicatorCmd (and INetLibWiCmd)
********************************************************************/
typedef enum {
wiCmdInit =0,
wiCmdClear,
wiCmdSetEnabled,
wiCmdDraw,
wiCmdEnabled,
wiCmdSetLocation,
wiCmdErase
} WiCmdEnum;
/********************************************************************
* INet Library functions.
********************************************************************/
#pragma mark Traps
#define inetLibTrapSettingGet (sysLibTrapCustom)
#define inetLibTrapSettingSet (sysLibTrapCustom+1)
#define inetLibTrapGetEvent (sysLibTrapCustom+2)
#define inetLibTrapURLOpen (sysLibTrapCustom+3)
#define inetLibTrapSockRead (sysLibTrapCustom+4)
#define inetLibTrapSockWrite (sysLibTrapCustom+5)
#define inetLibTrapSockOpen (sysLibTrapCustom+6)
#define inetLibTrapSockClose (sysLibTrapCustom+7)
#define inetLibTrapSockStatus (sysLibTrapCustom+8)
#define inetLibTrapSockSettingGet (sysLibTrapCustom+9)
#define inetLibTrapSockSettingSet (sysLibTrapCustom+10)
#define inetLibTrapSockConnect (sysLibTrapCustom+11)
// Utilities
#define inetLibTrapURLCrack (sysLibTrapCustom+12)
#define inetLibTrapURLsAdd (sysLibTrapCustom+13)
#define inetLibTrapURLsCompare (sysLibTrapCustom+14)
#define inetLibTrapURLGetInfo (sysLibTrapCustom+15)
// HTTP calls
#define inetLibTrapSockHTTPReqCreate (sysLibTrapCustom+16)
#define inetLibTrapSockHTTPAttrSet (sysLibTrapCustom+17)
#define inetLibTrapSockHTTPReqSend (sysLibTrapCustom+18)
#define inetLibTrapSockHTTPAttrGet (sysLibTrapCustom+19)
// Mail traps
#define inetLibTrapSockMailReqCreate (sysLibTrapCustom+20)
#define inetLibTrapSockMailAttrSet (sysLibTrapCustom+21)
#define inetLibTrapSockMailReqAdd (sysLibTrapCustom+22)
#define inetLibTrapSockMailReqSend (sysLibTrapCustom+23)
#define inetLibTrapSockMailAttrGet (sysLibTrapCustom+24)
#define inetLibTrapSockMailQueryProgress (sysLibTrapCustom+25)
// Cache calls
#define inetLibTrapCacheList (sysLibTrapCustom+26)
#define inetLibTrapCacheGetObject (sysLibTrapCustom+27)
// Config calls
#define inetLibConfigMakeActive (sysLibTrapCustom+28)
#define inetLibConfigList (sysLibTrapCustom+29)
#define inetLibConfigIndexFromName (sysLibTrapCustom+30)
#define inetLibConfigDelete (sysLibTrapCustom+31)
#define inetLibConfigSaveAs (sysLibTrapCustom+32)
#define inetLibConfigRename (sysLibTrapCustom+33)
#define inetLibConfigAliasSet (sysLibTrapCustom+34)
#define inetLibConfigAliasGet (sysLibTrapCustom+35)
// old wireless Indicator
#define inetLibTrapWiCmd (sysLibTrapCustom+36)
// File Calls
#define inetLibTrapSockFileGetByIndex (sysLibTrapCustom+37)
#define inetLibTrapCheckAntennaState (sysLibTrapCustom+38)
#define inetLibTrapCTPSend (sysLibTrapCustom+39)
// Additional Cache calls
#define inetLibTrapCachePurge (sysLibTrapCustom+40)
// new wireless Indicator
#define inetLibTrapWirelessIndicatorCmd (sysLibTrapCustom+41)
// Additional Cache calls
#define inetLibTrapCacheGetObjectV2 (sysLibTrapCustom+42)
#define inetLibTrapIndexedCacheFind (sysLibTrapCustom+43)
#define inetLibTrapPrepareCacheForHistory (sysLibTrapCustom+44)
//This should be at the END ***********
#define inetLibTrapLast (sysLibTrapCustom+45)
/********************************************************************
* Structure of cache entry
* Used as a parameter to INetLibCacheList. If urlP or titleP are NULL,
* the corresponding length fields will be updated with the desired lengths
********************************************************************/
typedef struct {
UInt8 * urlP;
UInt16 urlLen;
UInt8 * titleP;
UInt16 titleLen;
UInt32 lastViewed; // seconds since 1/1/1904
UInt32 firstViewed; // seconds since 1/1/1904
} INetCacheEntryType, *INetCacheEntryP;
/********************************************************************
* Structure for INetLibCacheGetObject. This structure is filled in with info
* about a cache entry.
********************************************************************/
typedef struct
{
MemHandle recordH;
INetContentTypeEnum contentType;
INetCompressionTypeEnum encodingType;
UInt32 uncompressedDataSize;
UInt8 flags;
UInt8 reserved;
UInt16 dataOffset; // offset to content
UInt16 dataLength; // size of content
UInt16 urlOffset; // offset to URL
UInt32 viewTime; // time last viewed
UInt32 createTime; // time entry was created
UInt16 murlOffset; // offset to master URL
UInt32 serverBits1; // Bits sent by the server
} INetCacheInfoType, *INetCacheInfoPtr;
#pragma mark Functions
#ifdef __cplusplus
extern "C" {
#endif
//--------------------------------------------------
// Library initialization, shutdown, sleep and wake
//--------------------------------------------------
Err INetLibOpen (UInt16 libRefnum, UInt16 config, UInt32 flags,
DmOpenRef cacheRef, UInt32 cacheSize, MemHandle* inetHP)
INETLIB_TRAP(sysLibTrapOpen);
Err INetLibClose (UInt16 libRefnum, MemHandle inetH)
INETLIB_TRAP(sysLibTrapClose);
Err INetLibSleep (UInt16 libRefnum)
INETLIB_TRAP(sysLibTrapSleep);
Err INetLibWake (UInt16 libRefnum)
INETLIB_TRAP(sysLibTrapWake);
//--------------------------------------------------
// Settings
//--------------------------------------------------
Err INetLibSettingGet(UInt16 libRefnum, MemHandle inetH,
UInt16 /*INetSettingEnum */ setting,
void * bufP, UInt16 * bufLenP)
INETLIB_TRAP(inetLibTrapSettingGet);
Err INetLibSettingSet(UInt16 libRefnum, MemHandle inetH,
UInt16 /*INetSettingEnum*/ setting,
void * bufP, UInt16 bufLen)
INETLIB_TRAP(inetLibTrapSettingSet);
//--------------------------------------------------
// Event Management
//--------------------------------------------------
void INetLibGetEvent(UInt16 libRefnum, MemHandle inetH,
INetEventType* eventP, Int32 timeout)
INETLIB_TRAP(inetLibTrapGetEvent);
//--------------------------------------------------
// High level calls
//--------------------------------------------------
Err INetLibURLOpen(UInt16 libRefnum, MemHandle inetH, UInt8 * urlP,
UInt8 * cacheIndexURLP, MemHandle* sockHP, Int32 timeout, UInt16 flags)
INETLIB_TRAP(inetLibTrapURLOpen);
Err INetLibCTPSend(UInt16 libRefnum, MemHandle inetH, MemHandle *sockHP,
UInt8 *writeP, UInt32 writelen, Int32 timeout, UInt16 ctpCommand)
INETLIB_TRAP(inetLibTrapCTPSend);
Err INetLibSockClose(UInt16 libRefnum, MemHandle socketH)
INETLIB_TRAP(inetLibTrapSockClose);
//--------------------------------------------------
// Read/Write
//--------------------------------------------------
Err INetLibSockRead(UInt16 libRefnum, MemHandle sockH, void * bufP,
UInt32 reqBytes, UInt32 * actBytesP, Int32 timeout)
INETLIB_TRAP(inetLibTrapSockRead);
Err INetLibSockWrite(UInt16 libRefnum, MemHandle sockH, void * bufP,
UInt32 reqBytes, UInt32 * actBytesP, Int32 timeout)
INETLIB_TRAP(inetLibTrapSockWrite);
//--------------------------------------------------
// Low level Socket calls
//--------------------------------------------------
Err INetLibSockOpen(UInt16 libRefnum, MemHandle inetH,
UInt16 /*INetSchemEnum*/ scheme, MemHandle* sockHP)
INETLIB_TRAP(inetLibTrapSockOpen);
Err INetLibSockStatus(UInt16 libRefnum, MemHandle socketH, UInt16 * statusP,
Err* sockErrP, Boolean* inputReadyP, Boolean* outputReadyP)
INETLIB_TRAP(inetLibTrapSockStatus);
Err INetLibSockSettingGet(UInt16 libRefnum, MemHandle socketH,
UInt16 /*INetSockSettingEnum*/ setting,
void * bufP, UInt16 * bufLenP)
INETLIB_TRAP(inetLibTrapSockSettingGet);
Err INetLibSockSettingSet(UInt16 libRefnum, MemHandle socketH,
UInt16 /*INetSockSettingEnum*/ setting,
void * bufP, UInt16 bufLen)
INETLIB_TRAP(inetLibTrapSockSettingSet);
Err INetLibSockConnect(UInt16 libRefnum, MemHandle sockH, UInt8 * hostnameP,
UInt16 port, Int32 timeou)
INETLIB_TRAP(inetLibTrapSockConnect);
//--------------------------------------------------
// HTTP specific calls
//--------------------------------------------------
Err INetLibSockHTTPReqCreate(UInt16 libRefnum, MemHandle sockH,
UInt8 * verbP, UInt8 * resNameP, UInt8 * refererP)
INETLIB_TRAP(inetLibTrapSockHTTPReqCreate);
Err INetLibSockHTTPAttrSet(UInt16 libRefnum, MemHandle sockH,
UInt16 /*inetHTTPAttrEnum*/ attr, UInt16 attrIndex,
UInt8 * bufP, UInt16 bufLen, UInt16 flags)
INETLIB_TRAP(inetLibTrapSockHTTPAttrSet);
Err INetLibSockHTTPReqSend(UInt16 libRefnum, MemHandle sockH,
void * writeP, UInt32 writeLen,
Int32 timeout)
INETLIB_TRAP(inetLibTrapSockHTTPReqSend);
Err INetLibSockHTTPAttrGet(UInt16 libRefnum, MemHandle sockH,
UInt16 /*inetHTTPAttrEnum*/ attr, UInt16 attrIndex,
void * bufP, UInt32 * bufLenP)
INETLIB_TRAP(inetLibTrapSockHTTPAttrGet);
//--------------------------------------------------
// Utilities
//--------------------------------------------------
Err INetLibURLCrack(UInt16 libRefnum, UInt8 * urlTextP, INetURLType* urlP)
INETLIB_TRAP(inetLibTrapURLCrack);
Err INetLibURLsAdd(UInt16 libRefnum, Char * baseURLStr, Char * embeddedURLStr,
Char * resultURLStr, UInt16 * resultLenP)
INETLIB_TRAP(inetLibTrapURLsAdd);
Int16 INetLibURLsCompare(UInt16 libRefnum, Char * URLStr1, Char * URLStr2)
INETLIB_TRAP(inetLibTrapURLsCompare);
Err INetLibURLGetInfo(UInt16 libRefnum, MemHandle inetH,
UInt8 * urlTextP, INetURLInfoType* urlInfoP)
INETLIB_TRAP(inetLibTrapURLGetInfo);
Boolean INetLibWiCmd(UInt16 refNum, UInt16 /*WiCmdEnum*/ cmd, int enableOrX, int y)
INETLIB_TRAP(inetLibTrapWiCmd);
Boolean INetLibWirelessIndicatorCmd(UInt16 refNum, MemHandle inetH, UInt16 /*WiCmdEnum*/ cmd, int enableOrX, int y)
INETLIB_TRAP(inetLibTrapWirelessIndicatorCmd);
Err INetLibCheckAntennaState(UInt16 refNum)
INETLIB_TRAP(inetLibTrapCheckAntennaState);
//--------------------------------------------------
// Cache interface
//--------------------------------------------------
Err INetLibCacheList(UInt16 libRefnum, MemHandle inetH,
UInt8 * cacheIndexURLP, UInt16 * indexP, UInt32 * uidP,
INetCacheEntryP cacheP)
INETLIB_TRAP(inetLibTrapCacheList);
Err INetLibCacheGetObject(UInt16 libRefnum, MemHandle clientParamH, UInt8 * urlTextP,
UInt32 uniqueID, INetCacheInfoPtr cacheInfoP )
INETLIB_TRAP(inetLibTrapCacheGetObject);
Err INetLibCachePurge(UInt16 libRefnum, MemHandle clientParamH, UInt8 * urlTextP, UInt32 uniqueID)
INETLIB_TRAP(inetLibTrapCachePurge);
Err INetLibCacheGetObjectV2(UInt16 libRefnum, MemHandle clientParamH, UInt8 * urlTextP, UInt32 uniqueID,
UInt16 rcIndex, INetCacheInfoPtr cacheInfoP, INetCacheEntryP cacheEntryP )
INETLIB_TRAP(inetLibTrapCacheGetObjectV2);
Err INetLibIndexedCacheFind(UInt16 libRefnum, DmOpenRef cacheDBRef, UInt8 * dataP, Int16 lookFor, UInt16 * indexP,
Int16 order, UInt32 * cacheIdP)
INETLIB_TRAP(inetLibTrapIndexedCacheFind);
Err INetLibPrepareCacheForHistory(UInt16 libRefnum, MemHandle clientParamH)
INETLIB_TRAP(inetLibTrapPrepareCacheForHistory);
//--------------------------------------------------
// Configuration Calls
//--------------------------------------------------
Err INetLibConfigMakeActive( UInt16 refNum, MemHandle inetH,
UInt16 configIndex)
INETLIB_TRAP(inetLibConfigMakeActive);
Err INetLibConfigList( UInt16 refNum, INetConfigNameType nameArray[],
UInt16 * arrayEntriesP)
INETLIB_TRAP(inetLibConfigList);
Err INetLibConfigIndexFromName( UInt16 refNum, INetConfigNamePtr nameP,
UInt16 * indexP)
INETLIB_TRAP(inetLibConfigIndexFromName);
Err INetLibConfigDelete( UInt16 refNum, UInt16 index)
INETLIB_TRAP(inetLibConfigDelete);
Err INetLibConfigSaveAs( UInt16 refNum, MemHandle inetH,
INetConfigNamePtr nameP)
INETLIB_TRAP(inetLibConfigSaveAs);
Err INetLibConfigRename( UInt16 refNum, UInt16 index,
INetConfigNamePtr newNameP)
INETLIB_TRAP(inetLibConfigRename);
Err INetLibConfigAliasSet( UInt16 refNum, UInt16 configIndex,
UInt16 aliasToIndex)
INETLIB_TRAP(inetLibConfigAliasSet);
Err INetLibConfigAliasGet( UInt16 refNum, UInt16 aliasIndex,
UInt16 * indexP, Boolean * isAnotherAliasP)
INETLIB_TRAP(inetLibConfigAliasGet);
//--------------------------------------------------
// File specific calls
//--------------------------------------------------
Err INetLibSockFileGetByIndex(UInt16 libRefnum, MemHandle sockH,
UInt32 index, MemHandle *handleP, UInt32 * offsetP, UInt32 * lengthP)
INETLIB_TRAP(inetLibTrapSockFileGetByIndex);
#ifdef __cplusplus
}
#endif
#endif //__INETLIB_H__