--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/adaptationlayer/tsy/simatktsy_dll/inc/satmosmsctrl.h Fri Nov 06 17:28:23 2009 +0000
@@ -0,0 +1,264 @@
+/*
+* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+
+#ifndef SATMOSMSCTRL_H
+#define SATMOSMSCTRL_H
+
+
+// INCLUDES
+#include <e32base.h> // base class cbase
+#include <etelsat.h> // etel sat api
+
+
+// Message Type received in SMS_RESOURCE_REQ message
+const TUint8 KSmsCommandType = 2;
+const TUint8 KSmsSubmitType = 1;
+
+// FORWARD DECLARATIONS
+class CSatMessHandler;
+class CTsySatMessaging;
+class TIsiReceiveC;
+
+
+// CLASS DECLARATION
+/**
+* CSatMoSmsCtrl
+* Sat MO SMS control handling
+* @lib SIMATKTSY.LIB
+* @since Series 60 Series60_2.6
+*/
+class CSatMoSmsCtrl : public CBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ * @since NCP 5.0
+ * @param aSatMessHandler pointer to satmessagehandler class
+ * @param aSatMessaging pointer to satmessaging class
+ */
+ static CSatMoSmsCtrl* NewL( CSatMessHandler* aSatMessHandler,
+ CTsySatMessaging* aSatMessaging );
+
+ /**
+ * Destructor.
+ * @since NCP 5.0
+ */
+ virtual ~CSatMoSmsCtrl();
+
+
+ private: // Constructors
+
+ /**
+ * C++ default constructor.
+ * @since NCP 5.0
+ * @param aSatMessHandler pointer to satmessagehandler class
+ * @param aSatMessaging pointer to satmessaging class
+ */
+ CSatMoSmsCtrl( CSatMessHandler* aSatMessHandler,
+ CTsySatMessaging* aSatMessaging );
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ * @since NCP 5.0
+ */
+ void ConstructL();
+
+
+ public: // New methods
+
+ /**
+ * Handles an incoming command from phonet
+ * Called by Phonet receiver when it receives ISI msg.
+ * @since NCP 5.0
+ * @param aIsiMessage proactive command from phonet
+ * @return TInt
+ */
+ TInt MessageReceived( const TIsiReceiveC& aIsiMessage );
+
+ /*
+ * Returns iIsMoSmsCtrlActivated
+ * This is used by CTsySatMessaging::MoSmsControlReceived
+ * @since Series 60 Series60_2.6
+ */
+ TBool IsActivated();
+
+ /*
+ * Set iIsMoSmsCtrlActivated to ETrue
+ * Allows this object to process incoming Mo-Sm requests
+ * @since Series 60 Series60_2.6
+ */
+ void Activate();
+
+ /*
+ * Set iIsMoSmsCtrlActivated to EFalse
+ * Prevents this object to process incoming Mo-Sm requests
+ * @since Series 60 Series60_2.6
+ */
+ void Deactivate();
+
+
+ private: // New methods
+
+ /*
+ * Indication received from SMS server with the SMS parameters
+ * of the SMS to be sent by the Mobile Equipment.
+ * The response will tell whether the SMS can be sent
+ * to network or not.
+ * @since NCP 5.0
+ * @param aIsiMessage coming from ISA SMS Server
+ * @return none
+ */
+ void SmsResourceIndReceived( const TIsiReceiveC& aIsiMessage );
+
+ /*
+ * Send an envelope to SIM server in order to check wheter the SMS
+ * can be sent or not. The response will be used to send a response
+ * to SMS server
+ * @since Series 60 Series60_2.6
+ * @param aTraId transaction id
+ * @param aAddressData1 RP address
+ * @param aAddressData2 TP address
+ * @return none
+ */
+ void SendMoSmsCtrlEnvelope( TUint8 aTraId, TDes8& aAddressData1,
+ TDes8& aAddressData2 );
+
+ /*
+ * Handles UICC_CAT_RESP, which comes from SIM as a reply
+ * to MO SMS control envelope.
+ * @param aIsiMessage Received ISI message
+ * @return success code of ISI message sending attempt
+ */
+ TInt UiccCatRespEnvelopeReceived( const TIsiReceiveC& aIsiMessage );
+
+ /*
+ * Extracts data from AtkSwDataNtf message data part
+ * @since Series 60 Series60_2.6
+ * @param aAtkData input
+ * @param aAddr1 output, contains the RP address provided by the SIM
+ * @param aAddr2 ouput, contains the TP address provided by the SIM
+ * @param aAlphaId output, contains the alpha id provided by the SIM
+ * @param aEmptyAlphaId output, ETrue if alpha id is present and empty
+ * @return none
+ */
+ void ParseAtkSwDataNtf( TPtrC8& aAtkData, TDes8& aAddr1, TDes8& aAddr2,
+ RSat::TAlphaId& aAlphaId, TBool& aEmptyAlphaId );
+
+ /*
+ * This method cleans the address data, so that all the byte found
+ * after a 0xXF or a 0xFX are ignored and removed.
+ * @param aAddr Address data to be cleaned
+ * @return None
+ */
+ void CleanAddressData( TDes8& aAddr );
+
+ /*
+ * This method checks the consistency of the data sent by the SIM to
+ * the ME, when the call is allowed and modified.
+ * @param aRPAddr SMSC RP address
+ * @param aTPAddr TP Destinatiion address
+ * @return ETtrue if data are consistent, else EFalse
+ */
+ TBool VerifySimRespData( TDes8& aRPAddr, TDes8& aTPAddr );
+
+ /*
+ * This method prepare subblocks for SMS_RESOURCE_REQ IsiMessage
+ * @param number number of subblocks
+ * @param status SMS is Denied or allowed
+ * @param data Actual data to me send in IsiMessage
+ * @param address1 Changed Service centre address received from SIM
+ * @pram address2 Changed destination address received from SIM
+ */
+ void FormSmsResourceReqSb( const TUint8 status,TDes8& data, const TDes8& address1, const TDes8& address2 );
+
+
+ private: // Data
+
+ // This object receives and sends messages to the external world
+ // using the message handler and messaging classes.
+ CSatMessHandler* iSatMessHandler;
+ CTsySatMessaging* iSatMessaging;
+
+ // Boolean to check whether a Sim response is expected by MO-SMS Control
+ TBool iWaitingForEnvelopeResp;
+
+ // Boolean to check whether MO-SMS Control is activated.
+ // This is used by CTsySatMessaging::MoSmsControlReceived,
+ // in order to know if this object is in use or not
+ TBool iIsMoSmsCtrlActivated;
+
+ // Save transaction id of the envelope, in order to check whether
+ // the incoming SwDataNtf is for MO-SMS Control. This has to be
+ // ANDed with iWaitingForEnvelopeResp.
+ // If this test condition is not strong enough, then it is recommended
+ // to use an array like in Call Control, see SatCC.cpp/h.
+ TUint8 iMoSmsCtrlEnvelopeTransactionId;
+
+ // Save the transaction id of the incoming Mo-Sm request, which is
+ // re-used in the resp.
+ // It is questionable whether or not another boolean should be used
+ // to remind if there is already an ongoing request not completed while
+ // a new request is received. There is a risk that this transaction id
+ // gets overwritten. But most likely ISA SMS server doesn't send
+ // the next request before the completion of the previous one.
+ TUint8 iMoSmsCtrlReqTransactionId;
+
+ // Save the sender object id of the MO-SM req, which is
+ // re-used in the resp.
+ // The type TUint8 is based on the assumption on having at maximum
+ // 256 ISA servers. There is a chance that future products possess
+ // more than 256 servers, and therefore this type TUint8 would be
+ // too small.
+ TUint8 iSenderObject;
+
+ // Save the Sequence id of MO SMS Indication, which is reused in
+ // the resp messgae.
+ // the type is TUint8 is based on the value range defined in ISI SMS Server
+ // Message document
+ TUint8 iSequenceId;
+
+ // Save the Resource id of MO SMS Indication, which is reused in
+ // the resp messgae.
+ // the type is TUint16 is based on the value range defined in ISI SMS Server
+ // Message document
+ TUint16 iResourceId;
+
+ // Save the Destination address TPDU Type of MO SMS Indication, which is reused in
+ // the resp messgae.
+ // the type is TUint8 is based on the information from 3gpp document
+ TUint8 iMessageType;
+
+ // Save the SMSC address subblock of MO SMS Indication, which is reused in
+ // the resp messgae if message is allowed without any change or disallowed.
+ // The size of buffer is based on the value range defined in
+ // ISI SMS Server message document
+ TBuf8<256> iAddressSubblock;
+
+ // Save the Destination address subblock of MO SMS Indication, which is reused in
+ // the resp messgae if message is allowed without any change or disallowed.
+ // The size of buffer is based on the value range defined in
+ // ISI SMS Server message document
+ TBuf8<256> iUserDataSubblock;
+ };
+
+#endif // SATMOSMSCTRL_H
+
+
+// End of file