105 lines
4.9 KiB
C++
105 lines
4.9 KiB
C++
/*=============================================================================|
|
|
| PROJECT SNAP7 1.3.0 |
|
|
|==============================================================================|
|
|
| Copyright (C) 2013, 2015 Davide Nardella |
|
|
| All rights reserved. |
|
|
|==============================================================================|
|
|
| SNAP7 is free software: you can redistribute it and/or modify |
|
|
| it under the terms of the Lesser GNU General Public License as published by |
|
|
| the Free Software Foundation, either version 3 of the License, or |
|
|
| (at your option) any later version. |
|
|
| |
|
|
| It means that you can distribute your commercial software linked with |
|
|
| SNAP7 without the requirement to distribute the source code of your |
|
|
| application and without the requirement that your application be itself |
|
|
| distributed under LGPL. |
|
|
| |
|
|
| SNAP7 is distributed in the hope that it will be useful, |
|
|
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
|
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
|
| Lesser GNU General Public License for more details. |
|
|
| |
|
|
| You should have received a copy of the GNU General Public License and a |
|
|
| copy of Lesser GNU General Public License along with Snap7. |
|
|
| If not, see http://www.gnu.org/licenses/ |
|
|
|=============================================================================*/
|
|
#ifndef s7_client_h
|
|
#define s7_client_h
|
|
//---------------------------------------------------------------------------
|
|
#include "snap_threads.h"
|
|
#include "s7_micro_client.h"
|
|
//---------------------------------------------------------------------------
|
|
|
|
extern "C" {
|
|
typedef void (S7API *pfn_CliCompletion) (void * usrPtr, int opCode, int opResult);
|
|
}
|
|
class TSnap7Client;
|
|
|
|
class TClientThread: public TSnapThread
|
|
{
|
|
private:
|
|
TSnap7Client * FClient;
|
|
public:
|
|
TClientThread(TSnap7Client *Client)
|
|
{
|
|
FClient = Client;
|
|
}
|
|
void Execute();
|
|
};
|
|
//---------------------------------------------------------------------------
|
|
class TSnap7Client: public TSnap7MicroClient
|
|
{
|
|
private:
|
|
TClientThread *FThread;
|
|
bool ThreadCreated;
|
|
void CloseThread();
|
|
void OpenThread();
|
|
void StartAsyncJob();
|
|
protected:
|
|
PSnapEvent EvtJob;
|
|
PSnapEvent EvtComplete;
|
|
pfn_CliCompletion CliCompletion;
|
|
void *FUsrPtr;
|
|
void DoCompletion();
|
|
public:
|
|
friend class TClientThread;
|
|
TSnap7Client();
|
|
~TSnap7Client();
|
|
int Reset(bool DoReconnect);
|
|
int SetAsCallback(pfn_CliCompletion pCompletion, void * usrPtr);
|
|
int GetParam(int ParamNumber, void *pValue);
|
|
int SetParam(int ParamNumber, void *pValue);
|
|
// Async functions
|
|
bool CheckAsCompletion( int & opResult);
|
|
int WaitAsCompletion(unsigned long Timeout);
|
|
int AsReadArea(int Area, int DBNumber, int Start, int Amount, int WordLen, void * pUsrData);
|
|
int AsWriteArea(int Area, int DBNumber, int Start, int Amount, int WordLen, void * pUsrData);
|
|
int AsListBlocksOfType(int BlockType, PS7BlocksOfType pUsrData, int & ItemsCount);
|
|
int AsReadSZL(int ID, int Index, PS7SZL pUsrData, int & Size);
|
|
int AsReadSZLList(PS7SZLList pUsrData, int &ItemsCount);
|
|
int AsUpload(int BlockType, int BlockNum, void * pUsrData, int & Size);
|
|
int AsFullUpload(int BlockType, int BlockNum, void * pUsrData, int & Size);
|
|
int AsDownload(int BlockNum, void * pUsrData, int Size);
|
|
int AsCopyRamToRom(int Timeout);
|
|
int AsCompress(int Timeout);
|
|
int AsDBRead(int DBNumber, int Start, int Size, void * pUsrData);
|
|
int AsDBWrite(int DBNumber, int Start, int Size, void * pUsrData);
|
|
int AsMBRead(int Start, int Size, void * pUsrData);
|
|
int AsMBWrite(int Start, int Size, void * pUsrData);
|
|
int AsEBRead(int Start, int Size, void * pUsrData);
|
|
int AsEBWrite(int Start, int Size, void * pUsrData);
|
|
int AsABRead(int Start, int Size, void * pUsrData);
|
|
int AsABWrite(int Start, int Size, void * pUsrData);
|
|
int AsTMRead(int Start, int Amount, void * pUsrData);
|
|
int AsTMWrite(int Start, int Amount, void * pUsrData);
|
|
int AsCTRead(int Start, int Amount, void * pUsrData);
|
|
int AsCTWrite(int Start, int Amount, void * pUsrData);
|
|
int AsDBGet(int DBNumber, void * pUsrData, int & Size);
|
|
int AsDBFill(int DBNumber, int FillChar);
|
|
};
|
|
|
|
typedef TSnap7Client *PSnap7Client;
|
|
|
|
//---------------------------------------------------------------------------
|
|
#endif // s7_client_h
|