fpc/packages/extra/palmunits/smslib.pp
2005-02-14 17:13:06 +00:00

317 lines
11 KiB
ObjectPascal

(******************************************************************************
*
* Copyright (c) 1997-2000 Palm, Inc. or its subsidiaries.
* All rights reserved.
*
* File: SmsLib.h
*
* Release: Palm OS SDK 4.0 (63220)
*
* Description:
* Include file for PalmOS SMS Library
*
* History:
* 1/26/00 Created by Hatem Oueslati
* 3/01/00 Ludovic Ferrandis - Add API
* 8/28/00 Ludovic Ferrandis - Update structure
*
*****************************************************************************)
unit smslib;
interface
uses palmos, errorbase, exgmgr, telephonymgrui, telephonymgrtypes, telephonymgr;
// The Sms library is used as an Exchange library. ExgLib.h defines all the
// primary entrypoints into the library. The rest of this include file defines the
// specials opCodes used in the ExgControl function and the structure used in the
// socketRef field of the Exchange Manager Socket structure.
(****************************************************************************
*
* ExgLibControl opcodes
*
****************************************************************************)
// Those Op codes take SmsPrefType as parameter
const
exgLibSmsPrefGetOp = exgLibCtlSpecificOp or 1;
exgLibSmsPrefGetDefaultOp = exgLibCtlSpecificOp or 2;
exgLibSmsPrefSetOp = exgLibCtlSpecificOp or 3;
// This Op code takes a network type constant as parameter kSmsNetworkXxx
exgLibSmsPrefDisplayOp = exgLibCtlSpecificOp or 4;
// This Op code takes an UInt16 as parameter
exgLibSmsIncompleteGetCountOp = exgLibCtlSpecificOp or 5;
// This OpCode takes a SmsID (UInt16) as parameter
exgLibSmsIncompleteDeleteOp = exgLibCtlSpecificOp or 6;
(****************************************************************************
*
* Types and Constants
*
****************************************************************************)
const
kSmsLibName = 'SMS Library'; // name of Sms library
// Feature Creators and numbers, for use with the FtrGet() call. This
// feature can be obtained to get the current version of the Sms Library
const
kSmsFtrNumVersion = UInt16(0);
// $MMmfsbbb, 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: $01122003
// V2.00a2 would be: $02001002
// V1.01 would be: $01013000
const
kSmsMessageRegExtensionType = 'sms';
kSmsReportRegExtensionType = 'rps';
kSmsExtensionTypeLength = 3;
kSmsScheme = '_sms';
kSmsMaxPhoneSize = kTelMaxPhoneNumberLen + 1; // Max length for Phone number
kSmsNBSConverter = UInt8(0); // NBS header will be add to the data
kSmsNoConverter = UInt8(1); // No header will be add to the data.
kSmsRowDataEncoding = UInt8(0); // 8 bit encoding scheme
kSmsTextEncoding = UInt8(1); // 7 bit compressed encoding scheme.
kSmsNetworkAuto = UInt8(-1);
kSmsNetworkCDMA = UInt8(kTelNwkCDMA);
kSmsNetworkGSM = UInt8(kTelNwkGSM);
kSmsNetworkTDMA = UInt8(kTelNwkTDMA);
kSmsNetworkPDC = UInt8(kTelNwkPDC);
kSmsMessageType = UInt8(0);
kSmsIncompleteType = UInt8(1);
kSmsReportType = UInt8(2);
(****************************************************************************
*
* Sms Error
*
****************************************************************************)
const kSmsErrMaxSizeExceeded = smsErrorClass or $01; // Message exceeds maximum size supported by network
(****************************************************************************
*
* Data Structures
*
****************************************************************************)
(****************************************************************************
* Report parameters
****************************************************************************)
(* Report Parameters Type
---------------------- *)
type
SmsReportParamsType = record
timeStamp: UInt32; // TimeStamp of the report (when delivered, or last attempt, ...)
index: UInt16; // SMS index on the phone storage
reportType: UInt8; // Delivery report type
report: UInt8; // Status report indicator
originatingAddress: PChar; // Phone number to which belong the report (was sent)
end;
SmsReportParamsTag = SmsReportParamsType;
SmsReportParamsPtr = ^SmsReportParamsType;
(****************************************************************************
* Send parameters
****************************************************************************)
(* Advanced Parameters Type for TDMA & CDMA network
------------------------------------------------ *)
type
SmsSendCDMAParamsType = record
messageType: UInt8; // Message Type
deferredDate: TelSmsDateTimeType;
priority: UInt8;
privacy: UInt8;
bits: UInt8;
{
alertOnDelivery: UInt8 ; //:1
manualAckRequest: UInt8; //:1
reserved: UInt8; //:6
}
callbackNumber: PChar; // Address to reply
end;
SmsSendCDMAParamsTag = SmsSendCDMAParamsType;
SmsSendCDMAParamsPtr = ^SmsSendCDMAParamsType;
SmsSendTDMAParamsType = SmsSendCDMAParamsType;
SmsSendTDMAParamsPtr = ^SmsSendCDMAParamsType;
(* Advanced Parameters Type for GSM network
---------------------------------------- *)
type
SmsSendGSMParamsType = record
protocolId: UInt16; // Reserved - not supported (Fax, paging, . . .)
serviceCenterNumber: PChar; // SMS Center number - Optionel
rejectDuplicated: Boolean; // Network must reject msg if the same exists
replyPath: Boolean; // Use reply specified path
end;
SmsSendGSMParamsTag = SmsSendGSMParamsType;
SmsSendGSMParamsPtr = ^SmsSendGSMParamsType;
(* SMS Send Parameters Type
------------------------ *)
type
SmsSendParamsType = record
validityPeriod: TelSmsDateTimeType; // SMS validity Period
destinationAddress: PChar; // recipient number -> to send the sms to
bits: UInt8;
{
networkDeliveryRequested: UInt8; // (:1) Sms report wanted
ignoreDefaultValue: UInt8; // (:1) If false, the field validityPeriod, ackRequested, reportRequested, smsCenter are ignored.
reserved: UInt8; // (:6)
}
partCount: UInt16; // number of parts of the SMS (output)
lastPart: UInt16; // if error, the last part sent (output)
converter: UInt8; // How the data are going to be typed (0 = NBS, 1 = None)
case Integer of // union 'protocol'
1: (gsm: SmsSendGSMParamsType);
2: (cdma: SmsSendCDMAParamsType);
3: (tdma: SmsSendTDMAParamsType);
end;
SmsSendParamsTag = SmsSendParamsType;
SmsSendParamsPtr = ^SmsSendParamsType;
(****************************************************************************
* Receive parameters
****************************************************************************)
(* Advanced Parameters Type for TDMA & CDMA network
----------------------------------------------- *)
type
SmsReceiveCDMAParamsType = record
messageType: UInt8; // Delivery Message Type
validityPeriod: TelSmsDateTimeType;
priority: UInt8;
privacy: UInt8;
alertOnDeliveryRequest: Boolean;
manualAckRequest: Boolean;
voiceMessageNumber: UInt8;
languageIndicator: UInt8;
callbackNumberAddress: PChar; // Store callback address
end;
SmsReceiveCDMAParamsTag = SmsReceiveCDMAParamsType;
SmsReceiveCDMAParamsPtr = ^SmsReceiveCDMAParamsType;
SmsReceiveTDMAParamsType = SmsReceiveCDMAParamsType;
SmsReceiveTDMAParamsPtr = ^SmsReceiveCDMAParamsType;
(* Advanced Parameters Type for GSM network
---------------------------------------- *)
type
SmsReceiveGSMParamsType = record
protocolId: UInt16; // reserved - not supported
serviceCenterNumber: PChar;
replyPath: Boolean; // Must use specified reply path
end;
SmsReceiveGSMParamsTag = SmsReceiveGSMParamsType;
SmsReceiveGSMParamsPtr = ^SmsReceiveGSMParamsType;
(* SMS Receive Parameters Type
--------------------------- *)
type
SmsReceiveParamsType = record
timeStamp: UInt32; // Palm
originatingAddress: PChar; // originating number -> to send the sms to
bits: UInt8;
{
leaveOnPhone: UInt8 // (:1) Received messages won't be deleted on the phone (Input)
forceSlotMode: UInt8 // (:1) Force parsing methode to Slot Mode (default is Block mode) (Input)
reserved: UInt8 // (:6)
}
index: UInt16; // Index of the storage in the mobile where the message is stored
otherToReceive: Boolean;
reportDeliveryIndicator: Boolean;
case Integer of // union 'protocol'
1: (gsm: SmsReceiveGSMParamsType);
2: (cdma: SmsReceiveCDMAParamsType);
3: (tdma: SmsReceiveTDMAParamsType);
end;
SmsReceiveParamsTag = SmsReceiveParamsType;
SmsReceiveParamsPtr = ^SmsReceiveParamsType;
(****************************************************************************
* Sms parameters
****************************************************************************)
(* SMS Parameters Type
------------------- *)
type
SmsParamsType = record
creator: UInt32; // MUST ALWAYS BE SET TO sysFileCSmsLib
smsID: UInt16; // ID of the SMS (output)
extension: PChar; // Extension type of the data - Optionel (Output)
mimeTypes: PChar; // Mime type of object - Optionel (Output)
appCreator: UInt32; // Application Creator of the target - Optionel (Output)
dataCodingScheme: UInt8; // How SMS are going to convert the data (0 = 8 bit, 1 = 7 bit)
networkType: UInt8; // Indicates the type of advanced parameters (input - output)
dataType: UInt8; // Indicates the kind of message: Sms, incomplete Sms, Report (Output)
nbsDestPort: UInt16; // NBS port to use to encode the data (input) - port used in received Sms (output)
nbsSrcPort: UInt16; // NBS port to use to encode the data (input) - port used in received Sms (output)
case Integer of // union 'data'
1: (send: SmsSendParamsType);
2: (receive: SmsReceiveParamsType);
3: (report: SmsReportParamsType);
end;
SmsParamsTag = SmsParamsType;
SmsParamsPtr = ^SmsParamsType;
(* Preferences Type
------------------- *)
type
SmsPrefType = record
validity: UInt32; // Validity period of SMS (relatif) in seconds
warnOver: UInt16; // Display an alert if sending more Sms than this value.
leave: Boolean; // Leave SMS on Phone
report: Boolean; // Ask for a network delivery report
autoSMSC: Boolean; // If set, don't use the value stored in smscNumber field
smscNumber: array [1..kSmsMaxPhoneSize] of Char; // SMS Service Center. Could be null
end;
SmsPrefTag = SmsPrefType;
SmsPrefPtr = ^SmsPrefType;
implementation
end.