mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2026-01-13 14:35:49 +01:00
317 lines
11 KiB
ObjectPascal
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.
|