1 // Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies). |
1 // Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies). |
2 // All rights reserved. |
2 // All rights reserved. |
3 // This component and the accompanying materials are made available |
3 // This component and the accompanying materials are made available |
4 // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members |
4 // under the terms of "Eclipse Public License v1.0" |
5 // which accompanies this distribution, and is available |
5 // which accompanies this distribution, and is available |
6 // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". |
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
7 // |
7 // |
8 // Initial Contributors: |
8 // Initial Contributors: |
9 // Nokia Corporation - initial contribution. |
9 // Nokia Corporation - initial contribution. |
10 // |
10 // |
11 // Contributors: |
11 // Contributors: |
52 public: |
50 public: |
53 //note the enum values must be kept to ensure future binary compatibility with the TSAREntry store. |
51 //note the enum values must be kept to ensure future binary compatibility with the TSAREntry store. |
54 /** Flags for the 6 basic PDU types in GSM SMS messaging. */ |
52 /** Flags for the 6 basic PDU types in GSM SMS messaging. */ |
55 enum TSmsPDUType |
53 enum TSmsPDUType |
56 { |
54 { |
57 ESmsDeliver = 0, ///< SMS-DELIVER, sent from SC to MS |
55 ESmsDeliver = 0, //< SMS-DELIVER, sent from SC to MS |
58 ESmsDeliverReport = 1, ///< SMS-DELIVER-REPORT, sent from MS to SC |
56 ESmsDeliverReport = 1, //< SMS-DELIVER-REPORT, sent from MS to SC |
59 ESmsSubmit = 2, ///< SMS-SUBMIT, sent from MS to SC |
57 ESmsSubmit = 2, //< SMS-SUBMIT, sent from MS to SC |
60 ESmsSubmitReport = 3, ///< SMS-SUBMIT-REPORT, sent from SC to MS |
58 ESmsSubmitReport = 3, //< SMS-SUBMIT-REPORT, sent from SC to MS |
61 ESmsStatusReport = 4, ///< SMS-STATUS-REQUEST, sent from SC to MS |
59 ESmsStatusReport = 4, //< SMS-STATUS-REQUEST, sent from SC to MS |
62 ESmsCommand = 5 ///< SMS-COMMAND, sent from MS to SC |
60 ESmsCommand = 5 //< SMS-COMMAND, sent from MS to SC |
63 }; |
61 }; |
64 public: |
62 public: |
65 IMPORT_C static CSmsPDU* NewL(RReadStream &aStream,CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs); |
63 IMPORT_C static CSmsPDU* NewL(RReadStream &aStream,CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs); |
66 IMPORT_C static CSmsPDU* NewL(const TGsmSms& aGsmSms,CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs,TBool aIsRPError=EFalse,TBool aIsMobileTerminated=ETrue); |
64 IMPORT_C static CSmsPDU* NewL(const TGsmSms& aGsmSms,CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs,TBool aIsRPError=EFalse,TBool aIsMobileTerminated=ETrue); |
67 IMPORT_C static CSmsPDU* NewL(TSmsPDUType aType,CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs,TBool aIsRPError=EFalse); |
65 IMPORT_C static CSmsPDU* NewL(TSmsPDUType aType,CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs,TBool aIsRPError=EFalse); |
68 |
66 |
69 inline TSmsPDUType Type() const; |
67 inline TSmsPDUType Type() const; |
70 |
68 |
71 IMPORT_C void ExternalizeL(RWriteStream& aStream) const; |
69 IMPORT_C void ExternalizeL(RWriteStream& aStream) const; |
72 |
70 |
73 IMPORT_C void EncodeMessagePDUL(TGsmSms& aGsmSms) const; |
71 IMPORT_C void EncodeMessagePDUL(TGsmSms& aGsmSms) const; |
|
72 void EncodeMessagePDUL(TGsmSms& aGsmSms, const TEncodeParams* aEncodeParams) const; |
74 |
73 |
75 IMPORT_C TPtrC ServiceCenterAddress() const; |
74 IMPORT_C TPtrC ServiceCenterAddress() const; |
76 IMPORT_C void SetServiceCenterAddressL(const TDesC& aAddress); |
75 IMPORT_C void SetServiceCenterAddressL(const TDesC& aAddress); |
77 IMPORT_C void ParsedServiceCenterAddress(TGsmSmsTelNumber& aParsedAddress) const; |
76 IMPORT_C void ParsedServiceCenterAddress(TGsmSmsTelNumber& aParsedAddress) const; |
78 IMPORT_C void SetParsedServiceCenterAddressL(const TGsmSmsTelNumber& aParsedAddress); |
77 IMPORT_C void SetParsedServiceCenterAddressL(const TGsmSmsTelNumber& aParsedAddress); |
136 IMPORT_C void SetProtocolIdentifierPresent(TBool aPresent); |
135 IMPORT_C void SetProtocolIdentifierPresent(TBool aPresent); |
137 |
136 |
138 IMPORT_C CSmsUserData& UserData(); |
137 IMPORT_C CSmsUserData& UserData(); |
139 IMPORT_C const CSmsUserData& UserData() const; |
138 IMPORT_C const CSmsUserData& UserData() const; |
140 virtual void DecodeL(TGsmuLex8& aPdu)=0; |
139 virtual void DecodeL(TGsmuLex8& aPdu)=0; |
141 void UpdateConcatenationDataL(TGsmSms& aGsmSms, TInt aRef, TInt aPduIndex, TInt aMaxPdu); |
140 void UpdateConcatenationDataL(TInt aRef, TInt aPduIndex, TInt aMaxPdu); |
142 void UpdateEmailHeaderDataL(TGsmSms& aGsmSms,TInt& aEmailOverallHeaderLength); |
141 void UpdateEmailHeaderDataL(TInt& aEmailOverallHeaderLength); |
143 |
142 |
144 // SMSC Control Parameters |
143 // SMSC Control Parameters |
145 TBool UpdateSMSCCtrlParameterL(TGsmSms& aGsmSms, const TUint8 aOctet); |
144 TBool UpdateSMSCCtrlParameterL(const TUint8 aOctet); |
146 |
145 |
147 // TPSRR Scheme |
146 // TPSRR Scheme |
148 TBool UpdateTPSRRL(TGsmSms& aGsmSms, TSmsFirstOctet aSmsReportRequest); |
147 TBool UpdateTPSRRL(TSmsFirstOctet aSmsReportRequest); |
149 |
148 |
150 // National Language Encoding |
149 // National Language Encoding |
151 IMPORT_C TSmsEncoding NationalLanguageEncoding() const; |
150 IMPORT_C TSmsEncoding NationalLanguageEncoding() const; |
152 IMPORT_C void SetNationalLanguageEncodingL(TSmsEncoding aEncoding); |
151 IMPORT_C void SetNationalLanguageEncodingL(TSmsEncoding aEncoding); |
153 |
152 |
|
153 IMPORT_C CSmsPDU* DuplicateL() const; |
|
154 |
154 protected: |
155 protected: |
155 CSmsPDU(TSmsPDUType aSmsPDUType); |
156 CSmsPDU(TSmsPDUType aSmsPDUType); |
156 |
157 |
157 virtual const TSmsDataCodingScheme* DataCodingScheme() const; // Functions made const to avoid too many definitions |
158 virtual const TSmsDataCodingScheme* DataCodingScheme() const; // Functions made const to avoid too many definitions |
158 virtual const TSmsProtocolIdentifier* ProtocolIdentifier() const; |
159 virtual const TSmsProtocolIdentifier* ProtocolIdentifier() const; |
160 virtual const CSmsUserData* UserDataPtr() const; |
161 virtual const CSmsUserData* UserDataPtr() const; |
161 virtual const CSmsAddress* ToFromAddressPtr() const; |
162 virtual const CSmsAddress* ToFromAddressPtr() const; |
162 |
163 |
163 virtual void ConstructL(CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs)=0; |
164 virtual void ConstructL(CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs)=0; |
164 virtual TUint8* EncodeL(TUint8* aPtr) const=0; |
165 virtual TUint8* EncodeL(TUint8* aPtr) const=0; |
|
166 virtual TUint8* EncodeL(TUint8* aPtr, const TEncodeParams* aEncodeParams) const=0; |
165 |
167 |
166 virtual void InternalizeMessagePDUL(RReadStream& aStream)=0; |
168 virtual void InternalizeMessagePDUL(RReadStream& aStream)=0; |
167 virtual void ExternalizeMessagePDUL(RWriteStream& aStream) const=0; |
169 virtual void ExternalizeMessagePDUL(RWriteStream& aStream) const=0; |
168 |
170 |
169 private: |
171 private: |
201 IMPORT_C void SetStatusReportIndication(TBool aIndication); |
203 IMPORT_C void SetStatusReportIndication(TBool aIndication); |
202 |
204 |
203 IMPORT_C void ServiceCenterTimeStamp(TTime& aTime,TInt& aNumQuarterHours); |
205 IMPORT_C void ServiceCenterTimeStamp(TTime& aTime,TInt& aNumQuarterHours); |
204 IMPORT_C void SetServiceCenterTimeStamp(const TTime& aTime,TInt aNumQuarterHours=0); |
206 IMPORT_C void SetServiceCenterTimeStamp(const TTime& aTime,TInt aNumQuarterHours=0); |
205 IMPORT_C const TSmsProtocolIdentifier* ProtocolIdentifier() const; |
207 IMPORT_C const TSmsProtocolIdentifier* ProtocolIdentifier() const; |
|
208 |
|
209 IMPORT_C CSmsDeliver* DuplicateL() const; |
206 |
210 |
207 protected: |
211 protected: |
208 const TSmsDataCodingScheme* DataCodingScheme() const; |
212 const TSmsDataCodingScheme* DataCodingScheme() const; |
209 const CSmsUserData* UserDataPtr() const; |
213 const CSmsUserData* UserDataPtr() const; |
210 const CSmsAddress* ToFromAddressPtr() const; |
214 const CSmsAddress* ToFromAddressPtr() const; |
211 |
215 |
212 void ConstructL(CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs); |
216 void ConstructL(CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs); |
213 TUint8* EncodeL(TUint8* aPtr) const; |
217 TUint8* EncodeL(TUint8* aPtr) const; |
|
218 TUint8* EncodeL(TUint8* aPtr, const TEncodeParams* aEncodeParams) const; |
214 void DecodeL(TGsmuLex8& aPdu); |
219 void DecodeL(TGsmuLex8& aPdu); |
215 void InternalizeMessagePDUL(RReadStream& aStream); |
220 void InternalizeMessagePDUL(RReadStream& aStream); |
216 void ExternalizeMessagePDUL(RWriteStream& aStream) const; |
221 void ExternalizeMessagePDUL(RWriteStream& aStream) const; |
217 |
222 |
218 private: |
223 private: |
251 IMPORT_C TInt MessageReference() const; |
256 IMPORT_C TInt MessageReference() const; |
252 IMPORT_C void SetMessageReference(TInt aMessageReference); |
257 IMPORT_C void SetMessageReference(TInt aMessageReference); |
253 |
258 |
254 IMPORT_C const TTimeIntervalMinutes& ValidityPeriod() const; |
259 IMPORT_C const TTimeIntervalMinutes& ValidityPeriod() const; |
255 IMPORT_C void SetValidityPeriod(const TTimeIntervalMinutes& aTimeIntervalMinutes); |
260 IMPORT_C void SetValidityPeriod(const TTimeIntervalMinutes& aTimeIntervalMinutes); |
|
261 |
|
262 IMPORT_C CSmsSubmit* DuplicateL() const; |
256 |
263 |
257 protected: |
264 protected: |
258 const TSmsDataCodingScheme* DataCodingScheme() const; |
265 const TSmsDataCodingScheme* DataCodingScheme() const; |
259 const TSmsProtocolIdentifier* ProtocolIdentifier() const; |
266 const TSmsProtocolIdentifier* ProtocolIdentifier() const; |
260 const CSmsUserData* UserDataPtr() const; |
267 const CSmsUserData* UserDataPtr() const; |
261 const CSmsAddress* ToFromAddressPtr() const; |
268 const CSmsAddress* ToFromAddressPtr() const; |
262 |
269 |
263 void ConstructL(CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs); |
270 void ConstructL(CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs); |
264 TUint8* EncodeL(TUint8* aPtr) const; |
271 TUint8* EncodeL(TUint8* aPtr) const; |
|
272 TUint8* EncodeL(TUint8* aPtr, const TEncodeParams* aEncodeParams) const; |
265 void DecodeL(TGsmuLex8& aPdu); |
273 void DecodeL(TGsmuLex8& aPdu); |
266 void InternalizeMessagePDUL(RReadStream& aStream); |
274 void InternalizeMessagePDUL(RReadStream& aStream); |
267 void ExternalizeMessagePDUL(RWriteStream& aStream) const; |
275 void ExternalizeMessagePDUL(RWriteStream& aStream) const; |
268 |
276 |
269 private: |
277 private: |
292 inline void SetIsRPError(TBool aIsRPError); |
300 inline void SetIsRPError(TBool aIsRPError); |
293 |
301 |
294 IMPORT_C TInt FailureCause() const; |
302 IMPORT_C TInt FailureCause() const; |
295 IMPORT_C void SetFailureCause(TSmsFailureCause::TSmsFailureCauseError aFailureCause); |
303 IMPORT_C void SetFailureCause(TSmsFailureCause::TSmsFailureCauseError aFailureCause); |
296 |
304 |
|
305 IMPORT_C CSmsDeliverReport* DuplicateL() const; |
|
306 |
297 protected: |
307 protected: |
298 const TSmsDataCodingScheme* DataCodingScheme() const; |
308 const TSmsDataCodingScheme* DataCodingScheme() const; |
299 const TSmsProtocolIdentifier* ProtocolIdentifier() const; |
309 const TSmsProtocolIdentifier* ProtocolIdentifier() const; |
300 const TSmsParameterIndicator* ParameterIndicator() const; |
310 const TSmsParameterIndicator* ParameterIndicator() const; |
301 const CSmsUserData* UserDataPtr() const; |
311 const CSmsUserData* UserDataPtr() const; |
302 |
312 |
303 void ConstructL(CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs); |
313 void ConstructL(CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs); |
304 TUint8* EncodeL(TUint8* aPtr) const; |
314 TUint8* EncodeL(TUint8* aPtr) const; |
|
315 TUint8* EncodeL(TUint8* aPtr, const TEncodeParams* aEncodeParams) const; |
305 void DecodeL(TGsmuLex8& aPdu); |
316 void DecodeL(TGsmuLex8& aPdu); |
306 void InternalizeMessagePDUL(RReadStream& aStream); |
317 void InternalizeMessagePDUL(RReadStream& aStream); |
307 void ExternalizeMessagePDUL(RWriteStream& aStream) const; |
318 void ExternalizeMessagePDUL(RWriteStream& aStream) const; |
308 |
319 |
309 private: |
320 private: |
333 inline void SetIsRPError(TBool aIsRPError); |
344 inline void SetIsRPError(TBool aIsRPError); |
334 |
345 |
335 IMPORT_C TInt FailureCause() const; |
346 IMPORT_C TInt FailureCause() const; |
336 IMPORT_C void SetFailureCause(TSmsFailureCause::TSmsFailureCauseError aFailureCause); |
347 IMPORT_C void SetFailureCause(TSmsFailureCause::TSmsFailureCauseError aFailureCause); |
337 |
348 |
|
349 IMPORT_C CSmsSubmitReport* DuplicateL() const; |
|
350 |
338 protected: |
351 protected: |
339 const TSmsDataCodingScheme* DataCodingScheme() const; |
352 const TSmsDataCodingScheme* DataCodingScheme() const; |
340 const TSmsProtocolIdentifier* ProtocolIdentifier() const; |
353 const TSmsProtocolIdentifier* ProtocolIdentifier() const; |
341 const TSmsParameterIndicator* ParameterIndicator() const; |
354 const TSmsParameterIndicator* ParameterIndicator() const; |
342 const CSmsUserData* UserDataPtr() const; |
355 const CSmsUserData* UserDataPtr() const; |
343 |
356 |
344 void ConstructL(CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs); |
357 void ConstructL(CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs); |
345 TUint8* EncodeL(TUint8* aPtr) const; |
358 TUint8* EncodeL(TUint8* aPtr) const; |
|
359 TUint8* EncodeL(TUint8* aPtr, const TEncodeParams* aEncodeParams) const; |
346 void DecodeL(TGsmuLex8& aPdu); |
360 void DecodeL(TGsmuLex8& aPdu); |
347 void InternalizeMessagePDUL(RReadStream& aStream); |
361 void InternalizeMessagePDUL(RReadStream& aStream); |
348 void ExternalizeMessagePDUL(RWriteStream& aStream) const; |
362 void ExternalizeMessagePDUL(RWriteStream& aStream) const; |
349 |
363 |
350 private: |
364 private: |
390 IMPORT_C void SetDischargeTime(const TTime& aTime,TInt& aNumQuarterHours); |
404 IMPORT_C void SetDischargeTime(const TTime& aTime,TInt& aNumQuarterHours); |
391 |
405 |
392 IMPORT_C TSmsStatus::TSmsStatusValue Status() const; |
406 IMPORT_C TSmsStatus::TSmsStatusValue Status() const; |
393 IMPORT_C void SetStatus(TSmsStatus::TSmsStatusValue aValue); |
407 IMPORT_C void SetStatus(TSmsStatus::TSmsStatusValue aValue); |
394 |
408 |
|
409 IMPORT_C CSmsStatusReport* DuplicateL() const; |
|
410 |
395 protected: |
411 protected: |
396 const TSmsDataCodingScheme* DataCodingScheme() const; |
412 const TSmsDataCodingScheme* DataCodingScheme() const; |
397 const TSmsProtocolIdentifier* ProtocolIdentifier() const; |
413 const TSmsProtocolIdentifier* ProtocolIdentifier() const; |
398 const TSmsParameterIndicator* ParameterIndicator() const; |
414 const TSmsParameterIndicator* ParameterIndicator() const; |
399 const CSmsUserData* UserDataPtr() const; |
415 const CSmsUserData* UserDataPtr() const; |
400 const CSmsAddress* ToFromAddressPtr() const; |
416 const CSmsAddress* ToFromAddressPtr() const; |
401 |
417 |
402 void ConstructL(CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs); |
418 void ConstructL(CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs); |
403 TUint8* EncodeL(TUint8* aPtr) const; |
419 TUint8* EncodeL(TUint8* aPtr) const; |
|
420 TUint8* EncodeL(TUint8* aPtr, const TEncodeParams* aEncodeParams) const; |
404 void DecodeL(TGsmuLex8& aPdu); |
421 void DecodeL(TGsmuLex8& aPdu); |
405 void InternalizeMessagePDUL(RReadStream& aStream); |
422 void InternalizeMessagePDUL(RReadStream& aStream); |
406 void ExternalizeMessagePDUL(RWriteStream& aStream) const; |
423 void ExternalizeMessagePDUL(RWriteStream& aStream) const; |
407 |
424 |
408 private: |
425 private: |
454 |
471 |
455 IMPORT_C TInt MaxCommandDataLength() const; |
472 IMPORT_C TInt MaxCommandDataLength() const; |
456 IMPORT_C TPtrC8 CommandData() const; |
473 IMPORT_C TPtrC8 CommandData() const; |
457 IMPORT_C void SetCommandDataL(const TDesC8& aData); |
474 IMPORT_C void SetCommandDataL(const TDesC8& aData); |
458 |
475 |
|
476 IMPORT_C CSmsCommand* DuplicateL() const; |
|
477 |
459 protected: |
478 protected: |
460 const TSmsProtocolIdentifier* ProtocolIdentifier() const; |
479 const TSmsProtocolIdentifier* ProtocolIdentifier() const; |
461 const CSmsAddress* ToFromAddressPtr() const; |
480 const CSmsAddress* ToFromAddressPtr() const; |
462 |
481 |
463 void ConstructL(CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs); |
482 void ConstructL(CCnvCharacterSetConverter& aCharacterSetConverter,RFs& aFs); |
464 TUint8* EncodeL(TUint8* aPtr) const; |
483 TUint8* EncodeL(TUint8* aPtr) const; |
|
484 TUint8* EncodeL(TUint8* aPtr, const TEncodeParams* aEncodeParams) const; |
465 void DecodeL(TGsmuLex8& aPdu); |
485 void DecodeL(TGsmuLex8& aPdu); |
466 void InternalizeMessagePDUL(RReadStream& aStream); |
486 void InternalizeMessagePDUL(RReadStream& aStream); |
467 void ExternalizeMessagePDUL(RWriteStream& aStream) const; |
487 void ExternalizeMessagePDUL(RWriteStream& aStream) const; |
468 void DoSetStatusReportRequest(TBool aRequest); |
488 void DoSetStatusReportRequest(TBool aRequest); |
469 |
489 |