examples/Base/MessageQueueExample/src/CMsgQActive.cpp

Go to the documentation of this file.
00001 /*
00002 Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
00003 
00004 Redistribution and use in source and binary forms, with or without
00005 modification, are permitted provided that the following conditions are met:
00006 
00007 * Redistributions of source code must retain the above copyright notice, this
00008   list of conditions and the following disclaimer.
00009 * Redistributions in binary form must reproduce the above copyright notice,
00010   this list of conditions and the following disclaimer in the documentation
00011   and/or other materials provided with the distribution.
00012 * Neither the name of Nokia Corporation nor the names of its contributors
00013   may be used to endorse or promote products derived from this software
00014   without specific prior written permission.
00015 
00016 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00017 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00018 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00019 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
00020 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00021 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
00022 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00023 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00024 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00025 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00026 
00027 Description:  
00028 The following class opens the InverterOutQ message Queue and displays 
00029 recieved data in console.
00030 */
00031 
00032 
00033 
00034 
00035 
00041 #include "CMsgQActive.h"
00042 #include "e32cons.h"
00043 
00044 _LIT(KCommonFormat2,"%S");
00045 _LIT(KTitle , "OutputMessage");
00046 
00050 CMsgQActive::CMsgQActive(TInt aPriority):CActive(aPriority)
00051         {
00052         CActiveScheduler::Add( this );
00053         }
00054 
00055 
00056 CMsgQActive* CMsgQActive::NewL(TInt aPriority)
00057         {
00058         CMsgQActive* self=new(ELeave)CMsgQActive(aPriority);
00059         CleanupStack::PushL(self);
00060         self->ConstructL();
00061         CleanupStack::Pop(self);
00062         return self;
00063         }
00064 
00068 void CMsgQActive::ConstructL()
00069         {
00070         iConsole = Console::NewL(KTitle, TSize(KConsFullScreen, KConsFullScreen));
00071         _LIT(KWelcomeScreen,".......Words recieved from the inverter......\n");
00072         iConsole->Printf(KWelcomeScreen);
00073         
00074         //Open the InverterOutQ Message Queue.
00075         _LIT(KGlobalInverterOutQ, "InverterOutQ");
00076         User::LeaveIfError(iInverterOutQ.OpenGlobal(KGlobalInverterOutQ));              
00077         }
00078 
00083 void CMsgQActive::StartRecieving()
00084         {
00085         iInverterOutQ.NotifyDataAvailable(iStatus);
00086         SetActive();
00087         }
00088 
00089 CMsgQActive::~CMsgQActive()
00090         {
00091         }
00092 
00096 void CMsgQActive::DoCancel()
00097         {
00098         //Cancel any data which is present in the message Queue.
00099         iInverterOutQ.CancelDataAvailable();
00100         delete iConsole;
00101         }
00102 
00107 void CMsgQActive::RunL()
00108         {
00109         // Recieve all available messages from the message queue.
00110         iInverterOutQ.ReceiveBlocking(imsgQData);       
00111         
00112         //Print the recieved message in the output message console.
00113         iConsole->Printf(KCommonFormat2,&imsgQData);
00114         
00115         _LIT(KNextLine , "\n");
00116         iConsole->Printf(KNextLine);
00117         
00118         // Make asynchronous request to be notified when data is available
00119         iInverterOutQ.NotifyDataAvailable(iStatus);
00120         SetActive();
00121         }

Generated by  doxygen 1.6.2