60
|
1 |
/*
|
|
2 |
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
|
|
3 |
* All rights reserved.
|
|
4 |
* This component and the accompanying materials are made available
|
|
5 |
* under the terms of the License "Eclipse Public License v1.0"
|
|
6 |
* which accompanies this distribution, and is available
|
|
7 |
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
|
|
8 |
*
|
|
9 |
* Initial Contributors:
|
|
10 |
* Nokia Corporation - initial contribution.
|
|
11 |
*
|
|
12 |
* Contributors:
|
|
13 |
*
|
|
14 |
* Description:
|
|
15 |
*
|
|
16 |
*/
|
|
17 |
#ifndef __BASECOM_H__
|
|
18 |
#define __BASECOM_H__
|
|
19 |
#include "Registry.h"
|
|
20 |
#include "ServerClient.h"
|
|
21 |
#include "TCConstants.h"
|
|
22 |
#include "TCErrorConstants.h"
|
|
23 |
#include "BaseProtocol.h"
|
|
24 |
#include "TCDebugLog.h"
|
|
25 |
#include <time.h>
|
|
26 |
|
|
27 |
#ifdef _DEBUG
|
|
28 |
extern BOOL gDoLogging;
|
|
29 |
#endif
|
|
30 |
|
|
31 |
#define LOG_COMM
|
|
32 |
#if defined(LOG_COMM) && defined(_DEBUG)
|
|
33 |
|
|
34 |
#define COMMLOGOPEN() if (gDoLogging) { if (m_CommDebugLog) m_CommDebugLog->WaitForAccess(); }
|
|
35 |
#define COMMLOGS(s) if (gDoLogging) { sprintf(m_CommDebugLogMsg,"%s", s); if (m_CommDebugLog) m_CommDebugLog->log(m_CommDebugLogMsg); }
|
|
36 |
#define COMMLOGA1(s, a1) if (gDoLogging) { sprintf(m_CommDebugLogMsg, s, a1); if (m_CommDebugLog) m_CommDebugLog->log(m_CommDebugLogMsg); }
|
|
37 |
#define COMMLOGA2(s, a1, a2) if (gDoLogging) { sprintf(m_CommDebugLogMsg, s, a1, a2); if (m_CommDebugLog) m_CommDebugLog->log(m_CommDebugLogMsg); }
|
|
38 |
#define COMMLOGA3(s, a1, a2, a3) if (gDoLogging) { sprintf(m_CommDebugLogMsg, s, a1, a2, a3); if (m_CommDebugLog) m_CommDebugLog->log(m_CommDebugLogMsg); }
|
|
39 |
#define COMMLOGA4(s, a1, a2, a3, a4) if (gDoLogging) { sprintf(m_CommDebugLogMsg, s, a1, a2, a3, a4); if (m_CommDebugLog) m_CommDebugLog->log(m_CommDebugLogMsg); }
|
|
40 |
#define COMMLOGCLOSE() if (gDoLogging) { if (m_CommDebugLog) m_CommDebugLog->ReleaseAccess(); }
|
|
41 |
#else
|
|
42 |
#define COMMLOGOPEN()
|
|
43 |
#define COMMLOGS(s)
|
|
44 |
#define COMMLOGA1(s, a1)
|
|
45 |
#define COMMLOGA2(s, a1, a2)
|
|
46 |
#define COMMLOGA3(s, a1, a2, a3)
|
|
47 |
#define COMMLOGA4(s, a1, a2, a3, a4)
|
|
48 |
#define COMMLOGCLOSE()
|
|
49 |
#endif
|
|
50 |
|
|
51 |
#define LOG_PROCCOMM
|
|
52 |
#if defined(LOG_PROCCOMM) && defined(_DEBUG)
|
|
53 |
#define PROCLOGOPEN() if (gDoLogging) { m_ProcDebugLog->WaitForAccess(); }
|
|
54 |
#define PROCLOGS(s) if (gDoLogging) { sprintf(m_ProcDebugLogMsg,"%s", s); m_ProcDebugLog->log(m_ProcDebugLogMsg); }
|
|
55 |
#define PROCLOGA1(s, a1) if (gDoLogging) { sprintf(m_ProcDebugLogMsg, s, a1); m_ProcDebugLog->log(m_ProcDebugLogMsg); }
|
|
56 |
#define PROCLOGA2(s, a1, a2) if (gDoLogging) { sprintf(m_ProcDebugLogMsg, s, a1, a2); m_ProcDebugLog->log(m_ProcDebugLogMsg); }
|
|
57 |
#define PROCLOGA3(s, a1, a2, a3) if (gDoLogging) { sprintf(m_ProcDebugLogMsg, s, a1, a2, a3); m_ProcDebugLog->log(m_ProcDebugLogMsg); }
|
|
58 |
#define PROCLOGA4(s, a1, a2, a3, a4) if (gDoLogging) { sprintf(m_ProcDebugLogMsg, s, a1, a2, a3, a4); m_ProcDebugLog->log(m_ProcDebugLogMsg); }
|
|
59 |
#define PROCLOGA5(s, a1, a2, a3, a4, a5) if (gDoLogging) { sprintf(m_ProcDebugLogMsg, s, a1, a2, a3, a4, a5); m_ProcDebugLog->log(m_ProcDebugLogMsg); }
|
|
60 |
#define PROCLOGCLOSE() if (gDoLogging) { m_ProcDebugLog->ReleaseAccess(); }
|
|
61 |
#else
|
|
62 |
#define PROCLOGOPEN()
|
|
63 |
#define PROCLOGS(s)
|
|
64 |
#define PROCLOGA1(s, a1)
|
|
65 |
#define PROCLOGA2(s, a1, a2)
|
|
66 |
#define PROCLOGA3(s, a1, a2, a3)
|
|
67 |
#define PROCLOGA4(s, a1, a2, a3, a4)
|
|
68 |
#define PROCLOGA5(s, a1, a2, a3, a4, a5)
|
|
69 |
#define PROCLOGCLOSE()
|
|
70 |
#endif
|
|
71 |
|
|
72 |
class CConnection;
|
|
73 |
class CBaseProtocol;
|
|
74 |
|
|
75 |
class CBaseCom
|
|
76 |
{
|
|
77 |
public:
|
|
78 |
CBaseCom();
|
|
79 |
CBaseCom(ConnectData* connectSettings, DWORD connectionId, CBaseProtocol* protocol);
|
|
80 |
virtual ~CBaseCom();
|
|
81 |
|
|
82 |
// void SetConnectSettings(ConnectData* connectSettings);
|
|
83 |
// void SetProtocol(CBaseProtocol* protocol) { m_Protocol = protocol; }
|
|
84 |
// void SetConnectionId(DWORD id);
|
|
85 |
|
|
86 |
virtual long OpenPort()=0;
|
|
87 |
virtual long ClosePort()=0;
|
|
88 |
virtual long SendDataToPort(DWORD inSize, const void* inData)=0;
|
|
89 |
virtual long PollPort(DWORD& outSize)=0;
|
|
90 |
virtual long ReadPort(DWORD inSize, void* outData, DWORD& outSize)=0;
|
|
91 |
virtual long ProcessBuffer(CConnection* pConn, CRegistry* pRegistry, long& numberProcessed)=0;
|
|
92 |
virtual void DeleteMsg(DWORD inMsgLength)=0;
|
|
93 |
virtual bool IsConnected() { return m_isConnected; }
|
|
94 |
virtual bool GetVersion(char* outVersion)=0; // get version of whatever we're connected to
|
|
95 |
virtual bool HasVersion()=0; // does this connection have a version?
|
|
96 |
virtual long PreProcessMessage(int inMsgType, DWORD inMsgLength, BYTE* inMessage)=0;
|
|
97 |
virtual long PreProcessMessage(BYTE msgId, DWORD inMsgLength, BYTE* inMessage)=0;
|
|
98 |
virtual bool IsConnectionEqual(ConnectData* pConn)=0;
|
|
99 |
|
|
100 |
BYTE* m_pBuffer;
|
|
101 |
DWORD m_numberBytes;
|
|
102 |
bool m_isConnected;
|
|
103 |
DWORD m_connId;
|
|
104 |
|
|
105 |
ConnectData* m_ConnectSettings; // from connection
|
|
106 |
CBaseProtocol* m_Protocol; // used for this connection
|
|
107 |
|
|
108 |
// for Open/Close/Send thread
|
|
109 |
char m_CommDebugLogMsg[2000];
|
|
110 |
TCDebugLog* m_CommDebugLog;
|
|
111 |
|
|
112 |
// for Poll/Read/Process/PreProcess thread
|
|
113 |
char m_ProcDebugLogMsg[2000];
|
|
114 |
TCDebugLog* m_ProcDebugLog;
|
|
115 |
|
|
116 |
DWORD m_lastCommError;
|
|
117 |
};
|
|
118 |
|
|
119 |
typedef const char* (*COMMREGISTER)(void);
|
|
120 |
typedef CBaseCom* (*COMMCREATE)(ConnectData* connectSettings, DWORD connectionId, CBaseProtocol* protocol);
|
|
121 |
|
|
122 |
#define COMMREGISTER_FNNAME "RegisterComm"
|
|
123 |
#define COMMCREATE_FNNAME "CreateComm"
|
|
124 |
|
|
125 |
#define COMMDLL_BASENAME "TCFComm"
|
|
126 |
|
|
127 |
#endif __BASECOM_H__
|