diff -r 3406c99bc375 -r 07b41fa8d1dd hti/PC_Tools/HTIGateway/HtiGateway/inc/SerialCommPlugin.h --- a/hti/PC_Tools/HTIGateway/HtiGateway/inc/SerialCommPlugin.h Thu Jul 15 20:25:38 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,202 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "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: -* This file contains headers of SerialComm communication channel plugin objects. -* These classes are SerialComm, SerialCommPlugin and SerialCommIoThread classes. -*/ - -#ifndef SERIALCOMMPLUGIN_H -#define SERIALCOMMPLUGIN_H - -#pragma warning ( disable : 4786 ) -#include -#include -#include -#include -#include - -#include "common.h" -#include "plugin.h" -#include "safequeue.h" -#include "thread.h" - -using namespace std; - -#define SERIAL_INI_FILE_NAME "serialplugin.ini" - -#define SERIAL_INI_INIT_PARAM "INIT_STRING" -#define PARAM_SWITCH_INIT_PARAM "-INIT_STRING" -#define SERIAL_INI_COMPORT_PARAM "COMPORT" -#define PARAM_SWITCH_COMPORT_PARAM "-COMPORT" -#define SERIAL_INI_COMPORT_TIMEOUT "TIMEOUT" -#define PARAM_SWITCH_COMPORT_TIMEOUT "-TIMEOUT" -#define SERIAL_INI_USE_HW_FLOW_CONTROL "HW_FLOWCONTROL" -#define PARAM_SWITCH_USE_HW_FLOW_CONTROL "-HW_FLOWCONTROL" -#define SERIAL_INI_SEND_SLEEP_PAUSE "SEND_PAUSE" -#define PARAM_SWITCH_SEND_SLEEP_PAUSE "-SEND_PAUSE" -#define SERIAL_INI_SEND_SIZE "SEND_SIZE" -#define PARAM_SWITCH_SEND_SIZE "-SEND_SIZE" - -#define SERIAL_DEFAULT_INIT_STRING "115200,n,8,1" -#define SERIAL_DEFAULT_COMPORT "COM2" - -const DWORD g_SerialCommDefaultTimeout = 40000; //ms -const DWORD g_SerialPluginTimeout = 10000; //not used -const long g_SerialCommDefaultSendPause = 0; - -// Maximum time to wait -extern long g_MaximumShutdownWaitTime; - -//********************************************************************************** -// Class SerialComm -// -// This class implements the actual serial communication -//********************************************************************************** - -class SerialComm -{ -public: - SerialComm(); - ~SerialComm(); - /* - * This method opens a communication device that uses serial communication and - * configures it according initialization parameters - */ - WORD Open( const string& commPort, const string& initParameters, long timeout, - bool hwFlowControl, long sendPause, long sendMaxSize); - DWORD Close(); - /* - * This method is used to send Data object using serial communication - */ - DWORD Send(const Data& data_in); - /* - * This method reads all available data from communication media - * and returns it in the Data object given as parameter - */ - DWORD Receive(Data* data_out); - /* - * This method returns number of bytes available in incoming queue or - * -1 if communication error has occurred - */ - LONG GetRxBytesAvailable(); -private: - //handle to communication resource - HANDLE m_Com; - bool m_Open; - long m_SendPause; - long m_SendMaxSize; -}; - -//********************************************************************************** -// Class SerialCommIoThread -// -// This thread is used to send data from outgoing queue to serial port -// and read bytes from serial port and push it to incoming queue -//********************************************************************************** - -class SerialCommIoThread : public Thread -{ -public: - SerialCommIoThread(SafeQueue* in, SafeQueue* out, - const string& init, const string& commPort, long timeout, - bool hwFlowControl, long sendPause, long sendMaxSize); - /* - * Main execution loop which is used to send Data from outgoing queue to serial port - * and read bytes from serial port, encapsulate it to Data objects and push them to incoming queue - */ - void Run(); - void Stop(); - void SetTimeout(long timeout); - long GetTimeout() const; - Event GetOpenedEvent(); -private: - //incoming queue - SafeQueue* m_InQueue; - //outgoing queue - SafeQueue* m_OutQueue; - Event m_OpenedEvent; - bool m_Running; - long m_PropertySerialCommTimeout; - const string& m_InitString; - const string& m_CommPort; - long m_ProperySerialSendPause; - bool m_PropertySerialHwFlowControl; - long m_PropertySerialMaxSendSize; -}; - -//********************************************************************************** -// Class SerialCommPlugin -// -// This class implements a CommChannelPlugin used in serial communication with device -//********************************************************************************** - -class SerialCommPlugin : public CommChannelPlugin -{ -public: - /* - * This method initializes SerialCommPlugin and starts SerialCommPluginIoThread - */ - DWORD Init(); - /* - * This method is used to: - * -push given data to outgoing queue - * -wait for data to become available in incoming queue - * -pop the first Data object from queue and store it to the Data object given as parameter - */ - DWORD SendReceive(Data* data_in, Data** data_out, long timeout = g_SerialPluginTimeout); - /* - * This method pushes the given Data object(of type Data::EData) to outgoing queue - */ - DWORD Send(Data* data_in, long timeout = g_SerialPluginTimeout); - /* - * This method is used to pop the first data object from incoming queue and store it to data object given as parameter - */ - DWORD Receive(Data** data_out, long timeout = g_SerialPluginTimeout); - /* - * This method is used to wait for data to become available in incoming queue - * and then pop the first Data object from the queue and and store it to Data object given as parameter. - */ - DWORD ReceiveWait(Data** data_out, long timeout = g_SerialPluginTimeout); - /* - * This method checks if data is available on incoming queue - */ - bool IsDataAvailable(); - DWORD Open(); - /* - * This method stops SerialCommIoThread and waits for it to be in signaled state - */ - DWORD Close(); - SerialCommPlugin(const CommChannelPluginObserver* observer = NULL); - ~SerialCommPlugin(); -private: - void CheckProperties(map& props); -private: - //outgoing queue - SafeQueue m_TxQueue; - //incoming queue - SafeQueue m_RxQueue; - SerialCommIoThread* m_IoThread; - //map that properties are read to from ini file - map m_SerialCommPluginProperties; - long m_PropertySerialCommTimeout; - string m_PropertySerialCommInitString; - string m_PropertySerialCommPort; - long m_ProperySerialSendPause; - bool m_PropertySerialHwFlowControl; - long m_PropertySerialMaxSendSize; -}; - -#endif - -// End of the file \ No newline at end of file