From 6eef098fcb076a15d3d8ee1bd975a9d329557422 Mon Sep 17 00:00:00 2001 From: Dave Nardella Date: Sat, 15 Mar 2025 12:19:08 +0100 Subject: [PATCH] Add files via upload --- utils/snap7_src/src/lib/snap7.def | 129 +++ utils/snap7_src/src/lib/snap7_libmain.cpp | 1196 +++++++++++++++++++++ utils/snap7_src/src/lib/snap7_libmain.h | 201 ++++ 3 files changed, 1526 insertions(+) create mode 100644 utils/snap7_src/src/lib/snap7.def create mode 100644 utils/snap7_src/src/lib/snap7_libmain.cpp create mode 100644 utils/snap7_src/src/lib/snap7_libmain.h diff --git a/utils/snap7_src/src/lib/snap7.def b/utils/snap7_src/src/lib/snap7.def new file mode 100644 index 0000000..b8a7fd8 --- /dev/null +++ b/utils/snap7_src/src/lib/snap7.def @@ -0,0 +1,129 @@ +LIBRARY SNAP7.DLL +EXPORTS + Cli_Create + Cli_Destroy + Cli_ConnectTo + Cli_SetConnectionParams + Cli_SetConnectionType + Cli_Connect + Cli_Disconnect + Cli_GetParam + Cli_SetParam + Cli_SetAsCallback + Cli_ReadArea + Cli_WriteArea + Cli_ReadMultiVars + Cli_WriteMultiVars + Cli_DBRead + Cli_DBWrite + Cli_MBRead + Cli_MBWrite + Cli_EBRead + Cli_EBWrite + Cli_ABRead + Cli_ABWrite + Cli_TMRead + Cli_TMWrite + Cli_CTRead + Cli_CTWrite + Cli_ListBlocks + Cli_GetAgBlockInfo + Cli_GetPgBlockInfo + Cli_ListBlocksOfType + Cli_Upload + Cli_FullUpload + Cli_Download + Cli_Delete + Cli_DBGet + Cli_DBFill + Cli_GetPlcDateTime + Cli_SetPlcDateTime + Cli_SetPlcSystemDateTime + Cli_GetOrderCode + Cli_GetCpuInfo + Cli_GetCpInfo + Cli_ReadSZL + Cli_ReadSZLList + Cli_PlcHotStart + Cli_PlcColdStart + Cli_PlcStop + Cli_CopyRamToRom + Cli_Compress + Cli_GetPlcStatus + Cli_GetProtection + Cli_SetSessionPassword + Cli_ClearSessionPassword + Cli_IsoExchangeBuffer + Cli_GetExecTime + Cli_GetLastError + Cli_GetPduLength + Cli_AsReadArea + Cli_AsWriteArea + Cli_AsDBRead + Cli_AsDBWrite + Cli_AsMBRead + Cli_AsMBWrite + Cli_AsEBRead + Cli_AsEBWrite + Cli_AsABRead + Cli_AsABWrite + Cli_AsTMRead + Cli_AsTMWrite + Cli_AsCTRead + Cli_AsCTWrite + Cli_AsListBlocksOfType + Cli_AsReadSZL + Cli_AsReadSZLList + Cli_AsUpload + Cli_AsFullUpload + Cli_AsDownload + Cli_AsCopyRamToRom + Cli_AsCompress + Cli_AsDBGet + Cli_AsDBFill + Cli_CheckAsCompletion + Cli_WaitAsCompletion + Cli_ErrorText + Cli_GetConnected + Srv_Create + Srv_Destroy + Srv_GetParam + Srv_SetParam + Srv_StartTo + Srv_Start + Srv_Stop + Srv_RegisterArea + Srv_UnregisterArea + Srv_LockArea + Srv_UnlockArea + Srv_GetStatus + Srv_SetCpuStatus + Srv_ClearEvents + Srv_PickEvent + Srv_GetMask + Srv_SetMask + Srv_SetEventsCallback + Srv_SetReadEventsCallback + Srv_SetRWAreaCallback + Srv_ErrorText + Srv_EventText + Par_Create + Par_Destroy + Par_GetParam + Par_SetParam + Par_StartTo + Par_Start + Par_Stop + Par_BSend + Par_AsBSend + Par_CheckAsBSendCompletion + Par_WaitAsBSendCompletion + Par_SetSendCallback + Par_BRecv + Par_CheckAsBRecvCompletion + Par_SetRecvCallback + Par_GetTimes + Par_GetStats + Par_GetLastError + Par_GetStatus + Par_ErrorText diff --git a/utils/snap7_src/src/lib/snap7_libmain.cpp b/utils/snap7_src/src/lib/snap7_libmain.cpp new file mode 100644 index 0000000..03947d0 --- /dev/null +++ b/utils/snap7_src/src/lib/snap7_libmain.cpp @@ -0,0 +1,1196 @@ +/*=============================================================================| +| PROJECT SNAP7 1.4.1 | +|==============================================================================| +| 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/ | +|=============================================================================*/ +#include "snap7_libmain.h" + +#ifndef OS_WINDOWS +void libinit(void) __attribute__((constructor)); +void libdone(void) __attribute__((destructor)); +#endif + +static bool libresult = true; + +void libinit(void) +{ + // in future expansions here can be inserted some initialization code + libresult=true; +} + +void libdone(void) +{ + // in future expansions here can be inserted some destruction code +} + +#ifdef OS_WINDOWS +BOOL APIENTRY DllMain (HINSTANCE hInst, + DWORD reason, + LPVOID reserved) +{ + switch (reason) + { + case DLL_PROCESS_ATTACH: + libinit(); + break; + case DLL_PROCESS_DETACH: + libdone(); + break; + case DLL_THREAD_ATTACH: + break; + case DLL_THREAD_DETACH: + break; + } + return libresult; +} +#endif + +//*************************************************************************** +// CLIENT +//*************************************************************************** +S7Object S7API Cli_Create() +{ + return S7Object(new TSnap7Client()); +} +//--------------------------------------------------------------------------- +void S7API Cli_Destroy(S7Object &Client) +{ + if (Client) + { + delete PSnap7Client(Client); + Client=0; + } +} +//--------------------------------------------------------------------------- +int S7API Cli_SetConnectionParams(S7Object Client, const char *Address, word LocalTSAP, word RemoteTSAP) +{ + if (Client) + { + PSnap7Client(Client)->SetConnectionParams(Address, LocalTSAP, RemoteTSAP); + return 0; + } + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_SetConnectionType(S7Object Client, word ConnectionType) +{ + if (Client) + { + PSnap7Client(Client)->SetConnectionType(ConnectionType); + return 0; + } + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_ConnectTo(S7Object Client, const char *Address, int Rack, int Slot) +{ + if (Client) + return PSnap7Client(Client)->ConnectTo(Address, Rack, Slot); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_Connect(S7Object Client) +{ + if (Client) + return PSnap7Client(Client)->Connect(); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_Disconnect(S7Object Client) +{ + if (Client) + return PSnap7Client(Client)->Disconnect(); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_GetParam(S7Object Client, int ParamNumber, void *pValue) +{ + if (Client) + return PSnap7Client(Client)->GetParam(ParamNumber, pValue); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_SetParam(S7Object Client, int ParamNumber, void *pValue) +{ + if (Client) + return PSnap7Client(Client)->SetParam(ParamNumber, pValue); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_SetAsCallback(S7Object Client, pfn_CliCompletion pCompletion, void *usrPtr) +{ + if (Client) + return PSnap7Client(Client)->SetAsCallback(pCompletion, usrPtr); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_ReadArea(S7Object Client, int Area, int DBNumber, int Start, int Amount, int WordLen, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->ReadArea(Area, DBNumber, Start, Amount, WordLen, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_WriteArea(S7Object Client, int Area, int DBNumber, int Start, int Amount, int WordLen, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->WriteArea(Area, DBNumber, Start, Amount, WordLen, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_ReadMultiVars(S7Object Client, PS7DataItem Item, int ItemsCount) +{ + if (Client) + return PSnap7Client(Client)->ReadMultiVars(Item, ItemsCount); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_WriteMultiVars(S7Object Client, PS7DataItem Item, int ItemsCount) +{ + if (Client) + return PSnap7Client(Client)->WriteMultiVars(Item, ItemsCount); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_DBRead(S7Object Client, int DBNumber, int Start, int Size, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->DBRead(DBNumber, Start, Size, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_DBWrite(S7Object Client, int DBNumber, int Start, int Size, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->DBWrite(DBNumber, Start, Size, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_MBRead(S7Object Client, int Start, int Size, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->MBRead(Start, Size, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_MBWrite(S7Object Client, int Start, int Size, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->MBWrite(Start, Size, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_EBRead(S7Object Client, int Start, int Size, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->EBRead(Start, Size, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_EBWrite(S7Object Client, int Start, int Size, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->EBWrite(Start, Size, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_ABRead(S7Object Client, int Start, int Size, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->ABRead(Start, Size, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_ABWrite(S7Object Client, int Start, int Size, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->ABWrite(Start, Size, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_TMRead(S7Object Client, int Start, int Amount, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->TMRead(Start, Amount, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_TMWrite(S7Object Client, int Start, int Amount, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->TMWrite(Start, Amount, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_CTRead(S7Object Client, int Start, int Amount, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->CTRead(Start, Amount, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_CTWrite(S7Object Client, int Start, int Amount, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->CTWrite(Start, Amount, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_ListBlocks(S7Object Client, TS7BlocksList *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->ListBlocks(pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_GetAgBlockInfo(S7Object Client, int BlockType, int BlockNum, TS7BlockInfo *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->GetAgBlockInfo(BlockType, BlockNum, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_GetPgBlockInfo(S7Object Client, void *pBlock, TS7BlockInfo *pUsrData, int Size) +{ + if (Client) + return PSnap7Client(Client)->GetPgBlockInfo(pBlock, pUsrData, Size); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_ListBlocksOfType(S7Object Client, int BlockType, TS7BlocksOfType *pUsrData, int &ItemsCount) +{ + if (Client) + return PSnap7Client(Client)->ListBlocksOfType(BlockType, pUsrData, ItemsCount); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_Upload(S7Object Client, int BlockType, int BlockNum, void *pUsrData, int &Size) +{ + if (Client) + return PSnap7Client(Client)->Upload(BlockType, BlockNum, pUsrData, Size); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_FullUpload(S7Object Client, int BlockType, int BlockNum, void *pUsrData, int &Size) +{ + if (Client) + return PSnap7Client(Client)->FullUpload(BlockType, BlockNum, pUsrData, Size); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_Download(S7Object Client, int BlockNum, void *pUsrData, int Size) +{ + if (Client) + return PSnap7Client(Client)->Download(BlockNum, pUsrData, Size); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_Delete(S7Object Client, int BlockType, int BlockNum) +{ + if (Client) + return PSnap7Client(Client)->Delete(BlockType, BlockNum); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_DBGet(S7Object Client, int DBNumber, void *pUsrData, int &Size) +{ + if (Client) + return PSnap7Client(Client)->DBGet(DBNumber, pUsrData, Size); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_DBFill(S7Object Client, int DBNumber, int FillChar) +{ + if (Client) + return PSnap7Client(Client)->DBFill(DBNumber, FillChar); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_GetPlcDateTime(S7Object Client, tm &DateTime) +{ + if (Client) + return PSnap7Client(Client)->GetPlcDateTime(DateTime); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_SetPlcDateTime(S7Object Client, tm *DateTime) +{ + if (Client) + return PSnap7Client(Client)->SetPlcDateTime(DateTime); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_SetPlcSystemDateTime(S7Object Client) +{ + if (Client) + return PSnap7Client(Client)->SetPlcSystemDateTime(); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_GetOrderCode(S7Object Client, TS7OrderCode *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->GetOrderCode(pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_GetCpuInfo(S7Object Client, TS7CpuInfo *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->GetCpuInfo(pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_GetCpInfo(S7Object Client, TS7CpInfo *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->GetCpInfo(pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_ReadSZL(S7Object Client, int ID, int Index, TS7SZL *pUsrData, int &Size) +{ + if (Client) + return PSnap7Client(Client)->ReadSZL(ID, Index, pUsrData, Size); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_ReadSZLList(S7Object Client, TS7SZLList *pUsrData, int &ItemsCount) +{ + if (Client) + return PSnap7Client(Client)->ReadSZLList(pUsrData, ItemsCount); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_PlcHotStart(S7Object Client) +{ + if (Client) + return PSnap7Client(Client)->PlcHotStart(); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_PlcColdStart(S7Object Client) +{ + if (Client) + return PSnap7Client(Client)->PlcColdStart(); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_PlcStop(S7Object Client) +{ + if (Client) + return PSnap7Client(Client)->PlcStop(); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_CopyRamToRom(S7Object Client, int Timeout) +{ + if (Client) + return PSnap7Client(Client)->CopyRamToRom(Timeout); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_Compress(S7Object Client, int Timeout) +{ + if (Client) + return PSnap7Client(Client)->Compress(Timeout); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_GetPlcStatus(S7Object Client, int &Status) +{ + if (Client) + return PSnap7Client(Client)->GetPlcStatus(Status); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_GetProtection(S7Object Client, TS7Protection *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->GetProtection(pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_SetSessionPassword(S7Object Client, char *Password) +{ + if (Client) + return PSnap7Client(Client)->SetSessionPassword(Password); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_ClearSessionPassword(S7Object Client) +{ + if (Client) + return PSnap7Client(Client)->ClearSessionPassword(); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_IsoExchangeBuffer(S7Object Client, void *pUsrData, int &Size) +{ + if (Client) + return PSnap7Client(Client)->isoExchangeBuffer(pUsrData, Size); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_GetExecTime(S7Object Client, int &Time) +{ + if (Client) + { + Time=PSnap7Client(Client)->Time(); + return 0; + } + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_GetLastError(S7Object Client, int &LastError) +{ + if (Client) + { + LastError=PSnap7Client(Client)->LastError; + return 0; + } + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_GetPduLength(S7Object Client, int &Requested, int &Negotiated) +{ + if (Client) + { + Negotiated=PSnap7Client(Client)->PDULength; + Requested =PSnap7Client(Client)->PDURequest; + return 0; + } + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_ErrorText(int Error, char *Text, int TextLen) +{ + try{ + ErrCliText(Error, Text, TextLen); + Text[TextLen-1] = '\0'; + } + catch (...){ + return errLibInvalidParam; + } + return 0; +} +//--------------------------------------------------------------------------- +int S7API Cli_GetConnected(S7Object Client, int &Connected) +{ + Connected=0; + if (Client) + { + Connected=PSnap7Client(Client)->Connected; + return 0; + } + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsReadArea(S7Object Client, int Area, int DBNumber, int Start, int Amount, int WordLen, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->AsReadArea(Area, DBNumber, Start, Amount, WordLen, pUsrData); + else + return errLibInvalidParam; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsWriteArea(S7Object Client, int Area, int DBNumber, int Start, int Amount, int WordLen, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->AsWriteArea(Area, DBNumber, Start, Amount, WordLen, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsDBRead(S7Object Client, int DBNumber, int Start, int Size, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->AsDBRead(DBNumber, Start, Size, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsDBWrite(S7Object Client, int DBNumber, int Start, int Size, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->AsDBWrite(DBNumber, Start, Size, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsMBRead(S7Object Client, int Start, int Size, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->AsMBRead(Start, Size, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsMBWrite(S7Object Client, int Start, int Size, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->AsMBWrite(Start, Size, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsEBRead(S7Object Client, int Start, int Size, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->AsEBRead(Start, Size, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsEBWrite(S7Object Client, int Start, int Size, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->AsEBWrite(Start, Size, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsABRead(S7Object Client, int Start, int Size, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->AsABRead(Start, Size, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsABWrite(S7Object Client, int Start, int Size, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->AsABWrite(Start, Size, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsTMRead(S7Object Client, int Start, int Amount, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->AsTMRead(Start, Amount, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsTMWrite(S7Object Client, int Start, int Amount, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->AsTMWrite(Start, Amount, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsCTRead(S7Object Client, int Start, int Amount, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->AsCTRead(Start, Amount, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsCTWrite(S7Object Client, int Start, int Amount, void *pUsrData) +{ + if (Client) + return PSnap7Client(Client)->AsCTWrite(Start, Amount, pUsrData); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsListBlocksOfType(S7Object Client, int BlockType, TS7BlocksOfType *pUsrData, int &ItemsCount) +{ + if (Client) + return PSnap7Client(Client)->AsListBlocksOfType(BlockType, pUsrData, ItemsCount); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsReadSZL(S7Object Client, int ID, int Index, TS7SZL *pUsrData, int &Size) +{ + if (Client) + return PSnap7Client(Client)->AsReadSZL(ID, Index, pUsrData, Size); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsReadSZLList(S7Object Client, TS7SZLList *pUsrData, int &ItemsCount) +{ + if (Client) + return PSnap7Client(Client)->AsReadSZLList(pUsrData, ItemsCount); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsUpload(S7Object Client, int BlockType, int BlockNum, void *pUsrData, int &Size) +{ + if (Client) + return PSnap7Client(Client)->AsUpload(BlockType, BlockNum, pUsrData, Size); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsFullUpload(S7Object Client, int BlockType, int BlockNum, void *pUsrData, int &Size) +{ + if (Client) + return PSnap7Client(Client)->AsFullUpload(BlockType, BlockNum, pUsrData, Size); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsDownload(S7Object Client, int BlockNum, void *pUsrData, int Size) +{ + if (Client) + return PSnap7Client(Client)->AsDownload(BlockNum, pUsrData, Size); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsCopyRamToRom(S7Object Client, int Timeout) +{ + if (Client) + return PSnap7Client(Client)->AsCopyRamToRom(Timeout); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsCompress(S7Object Client, int Timeout) +{ + if (Client) + return PSnap7Client(Client)->Compress(Timeout); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsDBGet(S7Object Client, int DBNumber, void *pUsrData, int &Size) +{ + if (Client) + return PSnap7Client(Client)->AsDBGet(DBNumber, pUsrData, Size); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_AsDBFill(S7Object Client, int DBNumber, int FillChar) +{ + if (Client) + return PSnap7Client(Client)->AsDBFill(DBNumber, FillChar); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_CheckAsCompletion(S7Object Client, int &opResult) +{ + if (Client) + { + if (PSnap7Client(Client)->CheckAsCompletion(opResult)) + return JobComplete; + else + return JobPending; + } + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Cli_WaitAsCompletion(S7Object Client, int Timeout) +{ + if (Client) + return PSnap7Client(Client)->WaitAsCompletion(Timeout); + else + return errLibInvalidObject; +} +//*************************************************************************** +// SERVER +//*************************************************************************** +S7Object S7API Srv_Create() +{ + return S7Object(new TSnap7Server()); +} +//--------------------------------------------------------------------------- +void S7API Srv_Destroy(S7Object &Server) +{ + if (Server) + { + delete PSnap7Server(Server); + Server=0; + } +} +//--------------------------------------------------------------------------- +int S7API Srv_GetParam(S7Object Server, int ParamNumber, void *pValue) +{ + if (Server) + return PSnap7Server(Server)->GetParam(ParamNumber, pValue); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Srv_SetParam(S7Object Server, int ParamNumber, void *pValue) +{ + if (Server) + return PSnap7Server(Server)->SetParam(ParamNumber, pValue); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Srv_StartTo(S7Object Server, const char *Address) +{ + if (Server) + return PSnap7Server(Server)->StartTo(Address); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Srv_Start(S7Object Server) +{ + if (Server) + return PSnap7Server(Server)->Start(); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Srv_Stop(S7Object Server) +{ + if (Server) + { + PSnap7Server(Server)->Stop(); + return 0; + } + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Srv_RegisterArea(S7Object Server, int AreaCode, word Index, void *pUsrData, int Size) +{ + if (Server) + return PSnap7Server(Server)->RegisterArea(AreaCode, Index, pUsrData, Size); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Srv_UnregisterArea(S7Object Server, int AreaCode, word Index) +{ + if (Server) + return PSnap7Server(Server)->UnregisterArea(AreaCode, Index); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Srv_LockArea(S7Object Server, int AreaCode, word Index) +{ + if (Server) + return PSnap7Server(Server)->LockArea(AreaCode, Index); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Srv_UnlockArea(S7Object Server, int AreaCode, word Index) +{ + if (Server) + return PSnap7Server(Server)->UnlockArea(AreaCode, Index); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Srv_GetStatus(S7Object Server, int &ServerStatus, int &CpuStatus, int &ClientsCount) +{ + if (Server) + { + ServerStatus=PSnap7Server(Server)->Status; + CpuStatus=PSnap7Server(Server)->CpuStatus; + ClientsCount=PSnap7Server(Server)->ClientsCount; + return 0; + } + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Srv_SetCpuStatus(S7Object Server, int CpuStatus) +{ + if (Server) + { + PSnap7Server(Server)->CpuStatus=CpuStatus; + return 0; + } + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Srv_ErrorText(int Error, char *Text, int TextLen) +{ + try{ + ErrSrvText(Error, Text, TextLen); + Text[TextLen-1] = '\0'; + } + catch (...){ + return errLibInvalidParam; + } + return 0; +} +//--------------------------------------------------------------------------- +int S7API Srv_EventText(TSrvEvent &Event, char *Text, int TextLen) +{ + try{ + EvtSrvText(Event, Text, TextLen); + //Text[TextLen] = '\0'; + } + catch (...){ + return errLibInvalidParam; + } + return 0; +} +//--------------------------------------------------------------------------- +int S7API Srv_PickEvent(S7Object Server, TSrvEvent *pEvent, int &EvtReady) +{ + EvtReady=0; + if (Server) + { + EvtReady=int(PSnap7Server(Server)->PickEvent(pEvent)); + return 0; + } + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Srv_ClearEvents(S7Object Server) +{ + if (Server) + { + PSnap7Server(Server)->EventsFlush(); + return 0; + } + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Srv_GetMask(S7Object Server, int MaskKind, longword &Mask) +{ + if (Server) + { + Mask=0; + if ((MaskKind==mkEvent) || (MaskKind==mkLog)) + { + if (MaskKind==mkEvent) + Mask=PSnap7Server(Server)->EventMask; + else + Mask=PSnap7Server(Server)->LogMask; + return 0; + } + else + return errLibInvalidParam; + } + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Srv_SetMask(S7Object Server, int MaskKind, longword Mask) +{ + if (Server) + { + if ((MaskKind==mkEvent) || (MaskKind==mkLog)) + { + if (MaskKind==mkEvent) + PSnap7Server(Server)->EventMask=Mask; + else + PSnap7Server(Server)->LogMask=Mask; + return 0; + } + else + return errLibInvalidParam; + } + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Srv_SetEventsCallback(S7Object Server, pfn_SrvCallBack pCallback, void *usrPtr) +{ + if (Server) + return PSnap7Server(Server)->SetEventsCallBack(pCallback, usrPtr); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Srv_SetReadEventsCallback(S7Object Server, pfn_SrvCallBack pCallback, void *usrPtr) +{ + if (Server) + return PSnap7Server(Server)->SetReadEventsCallBack(pCallback, usrPtr); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Srv_SetRWAreaCallback(S7Object Server, pfn_RWAreaCallBack pCallback, void *usrPtr) +{ + if (Server) + return PSnap7Server(Server)->SetRWAreaCallBack(pCallback, usrPtr); + else + return errLibInvalidObject; +} +//*************************************************************************** +// PARTNER +//*************************************************************************** +S7Object S7API Par_Create(int Active) +{ + return S7Object(new TSnap7Partner(Active!=0)); +} +//--------------------------------------------------------------------------- +void S7API Par_Destroy(S7Object &Partner) +{ + if (Partner) + { + delete PSnap7Partner(Partner); + Partner=0; + } +} +//--------------------------------------------------------------------------- +int S7API Par_GetParam(S7Object Partner, int ParamNumber, void *pValue) +{ + if (Partner) + return PSnap7Partner(Partner)->GetParam(ParamNumber, pValue); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Par_SetParam(S7Object Partner, int ParamNumber, void *pValue) +{ + if (Partner) + return PSnap7Partner(Partner)->SetParam(ParamNumber, pValue); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Par_StartTo(S7Object Partner, const char *LocalAddress, const char *RemoteAddress, + word LocTsap, word RemTsap) +{ + if (Partner) + return PSnap7Partner(Partner)->StartTo(LocalAddress, RemoteAddress, LocTsap, RemTsap); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Par_Start(S7Object Partner) +{ + if (Partner) + return PSnap7Partner(Partner)->Start(); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Par_Stop(S7Object Partner) +{ + if (Partner) + return PSnap7Partner(Partner)->Stop(); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Par_BSend(S7Object Partner, longword R_ID, void *pUsrData, int Size) +{ + if (Partner) + return PSnap7Partner(Partner)->BSend(R_ID, pUsrData, Size); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Par_AsBSend(S7Object Partner, longword R_ID, void *pUsrData, int Size) +{ + if (Partner) + return PSnap7Partner(Partner)->AsBSend(R_ID, pUsrData, Size); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Par_CheckAsBSendCompletion(S7Object Partner, int &opResult) +{ + if (Partner) + { + if (PSnap7Partner(Partner)->CheckAsBSendCompletion(opResult)) + return JobComplete; + else + return JobPending; + } + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Par_WaitAsBSendCompletion(S7Object Partner, longword Timeout) +{ + if (Partner) + return PSnap7Partner(Partner)->WaitAsBSendCompletion(Timeout); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Par_SetSendCallback(S7Object Partner, pfn_ParBSendCompletion pCompletion, void *usrPtr) +{ + if (Partner) + return PSnap7Partner(Partner)->SetSendCallback(pCompletion, usrPtr); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Par_BRecv(S7Object Partner, longword &R_ID, void *pData, int &Size, longword Timeout) +{ + if (Partner) + return PSnap7Partner(Partner)->BRecv(R_ID, pData, Size, Timeout); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Par_CheckAsBRecvCompletion(S7Object Partner, int &opResult, longword &R_ID, + void *pData, int &Size) +{ + if (Partner) + { + if (PSnap7Partner(Partner)->CheckAsBRecvCompletion(opResult, R_ID, pData, Size)) + return JobComplete; + else + return JobPending; + } + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Par_SetRecvCallback(S7Object Partner, pfn_ParBRecvCallBack pCompletion, void *usrPtr) +{ + if (Partner) + return PSnap7Partner(Partner)->SetRecvCallback(pCompletion, usrPtr); + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Par_GetTimes(S7Object Partner, longword &SendTime, longword &RecvTime) +{ + if (Partner) + { + SendTime=PSnap7Partner(Partner)->SendTime; + RecvTime=PSnap7Partner(Partner)->RecvTime; + return 0; + } + else + return errLibInvalidObject; + +} +//--------------------------------------------------------------------------- +int S7API Par_GetStats(S7Object Partner, longword &BytesSent, longword &BytesRecv, + longword &SendErrors, longword &RecvErrors) +{ + if (Partner) + { + BytesSent=PSnap7Partner(Partner)->BytesSent; + BytesRecv=PSnap7Partner(Partner)->BytesRecv; + SendErrors=PSnap7Partner(Partner)->SendErrors; + RecvErrors=PSnap7Partner(Partner)->RecvErrors; + return 0; + } + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Par_GetLastError(S7Object Partner, int &LastError) +{ + if (Partner) + { + LastError=PSnap7Partner(Partner)->LastError; + return 0; + } + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Par_GetStatus(S7Object Partner, int &Status) +{ + if (Partner) + { + Status=PSnap7Partner(Partner)->Status(); + return 0; + } + else + return errLibInvalidObject; +} +//--------------------------------------------------------------------------- +int S7API Par_ErrorText(int Error, char *Text, int TextLen) +{ + try{ + ErrParText(Error, Text, TextLen); + Text[TextLen - 1] = '\0'; + } + catch (...){ + return errLibInvalidParam; + } + return 0; +} + diff --git a/utils/snap7_src/src/lib/snap7_libmain.h b/utils/snap7_src/src/lib/snap7_libmain.h new file mode 100644 index 0000000..2b96e4a --- /dev/null +++ b/utils/snap7_src/src/lib/snap7_libmain.h @@ -0,0 +1,201 @@ +/*=============================================================================| +| 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 snap7_libmain_h +#define snap7_libmain_h +//--------------------------------------------------------------------------- +#include "s7_client.h" +#include "s7_server.h" +#include "s7_partner.h" +#include "s7_text.h" +//--------------------------------------------------------------------------- + +const int mkEvent = 0; +const int mkLog = 1; + +typedef uintptr_t S7Object; // multi platform/processor object reference + +//============================================================================== +// CLIENT EXPORT LIST - Sync functions +//============================================================================== +EXPORTSPEC S7Object S7API Cli_Create(); +EXPORTSPEC void S7API Cli_Destroy(S7Object &Client); +EXPORTSPEC int S7API Cli_Connect(S7Object Client); +EXPORTSPEC int S7API Cli_SetConnectionParams(S7Object Client, const char *Address, word LocalTSAP, word RemoteTSAP); +EXPORTSPEC int S7API Cli_SetConnectionType(S7Object Client, word ConnectionType); +EXPORTSPEC int S7API Cli_ConnectTo(S7Object Client, const char *Address, int Rack, int Slot); +EXPORTSPEC int S7API Cli_Disconnect(S7Object Client); +EXPORTSPEC int S7API Cli_GetParam(S7Object Client, int ParamNumber, void *pValue); +EXPORTSPEC int S7API Cli_SetParam(S7Object Client, int ParamNumber, void *pValue); +EXPORTSPEC int S7API Cli_SetAsCallback(S7Object Client, pfn_CliCompletion pCompletion, void *usrPtr); +// Data I/O functions +EXPORTSPEC int S7API Cli_ReadArea(S7Object Client, int Area, int DBNumber, int Start, int Amount, int WordLen, void *pUsrData); +EXPORTSPEC int S7API Cli_WriteArea(S7Object Client, int Area, int DBNumber, int Start, int Amount, int WordLen, void *pUsrData); +EXPORTSPEC int S7API Cli_ReadMultiVars(S7Object Client, PS7DataItem Item, int ItemsCount); +EXPORTSPEC int S7API Cli_WriteMultiVars(S7Object Client, PS7DataItem Item, int ItemsCount); +// Data I/O Lean functions +EXPORTSPEC int S7API Cli_DBRead(S7Object Client, int DBNumber, int Start, int Size, void *pUsrData); +EXPORTSPEC int S7API Cli_DBWrite(S7Object Client, int DBNumber, int Start, int Size, void *pUsrData); +EXPORTSPEC int S7API Cli_MBRead(S7Object Client, int Start, int Size, void *pUsrData); +EXPORTSPEC int S7API Cli_MBWrite(S7Object Client, int Start, int Size, void *pUsrData); +EXPORTSPEC int S7API Cli_EBRead(S7Object Client, int Start, int Size, void *pUsrData); +EXPORTSPEC int S7API Cli_EBWrite(S7Object Client, int Start, int Size, void *pUsrData); +EXPORTSPEC int S7API Cli_ABRead(S7Object Client, int Start, int Size, void *pUsrData); +EXPORTSPEC int S7API Cli_ABWrite(S7Object Client, int Start, int Size, void *pUsrData); +EXPORTSPEC int S7API Cli_TMRead(S7Object Client, int Start, int Amount, void *pUsrData); +EXPORTSPEC int S7API Cli_TMWrite(S7Object Client, int Start, int Amount, void *pUsrData); +EXPORTSPEC int S7API Cli_CTRead(S7Object Client, int Start, int Amount, void *pUsrData); +EXPORTSPEC int S7API Cli_CTWrite(S7Object Client, int Start, int Amount, void *pUsrData); +// Directory functions +EXPORTSPEC int S7API Cli_ListBlocks(S7Object Client, TS7BlocksList *pUsrData); +EXPORTSPEC int S7API Cli_GetAgBlockInfo(S7Object Client, int BlockType, int BlockNum, TS7BlockInfo *pUsrData); +EXPORTSPEC int S7API Cli_GetPgBlockInfo(S7Object Client, void *pBlock, TS7BlockInfo *pUsrData, int Size); +EXPORTSPEC int S7API Cli_ListBlocksOfType(S7Object Client, int BlockType, TS7BlocksOfType *pUsrData, int &ItemsCount); +// Blocks functions +EXPORTSPEC int S7API Cli_Upload(S7Object Client, int BlockType, int BlockNum, void *pUsrData, int &Size); +EXPORTSPEC int S7API Cli_FullUpload(S7Object Client, int BlockType, int BlockNum, void *pUsrData, int &Size); +EXPORTSPEC int S7API Cli_Download(S7Object Client, int BlockNum, void *pUsrData, int Size); +EXPORTSPEC int S7API Cli_Delete(S7Object Client, int BlockType, int BlockNum); +EXPORTSPEC int S7API Cli_DBGet(S7Object Client, int DBNumber, void *pUsrData, int &Size); +EXPORTSPEC int S7API Cli_DBFill(S7Object Client, int DBNumber, int FillChar); +// Date/Time functions +EXPORTSPEC int S7API Cli_GetPlcDateTime(S7Object Client, tm &DateTime); +EXPORTSPEC int S7API Cli_SetPlcDateTime(S7Object Client, tm *DateTime); +EXPORTSPEC int S7API Cli_SetPlcSystemDateTime(S7Object Client); +// System Info functions +EXPORTSPEC int S7API Cli_GetOrderCode(S7Object Client, TS7OrderCode *pUsrData); +EXPORTSPEC int S7API Cli_GetCpuInfo(S7Object Client, TS7CpuInfo *pUsrData); +EXPORTSPEC int S7API Cli_GetCpInfo(S7Object Client, TS7CpInfo *pUsrData); +EXPORTSPEC int S7API Cli_ReadSZL(S7Object Client, int ID, int Index, TS7SZL *pUsrData, int &Size); +EXPORTSPEC int S7API Cli_ReadSZLList(S7Object Client, TS7SZLList *pUsrData, int &ItemsCount); +// Control functions +EXPORTSPEC int S7API Cli_PlcHotStart(S7Object Client); +EXPORTSPEC int S7API Cli_PlcColdStart(S7Object Client); +EXPORTSPEC int S7API Cli_PlcStop(S7Object Client); +EXPORTSPEC int S7API Cli_CopyRamToRom(S7Object Client, int Timeout); +EXPORTSPEC int S7API Cli_Compress(S7Object Client, int Timeout); +EXPORTSPEC int S7API Cli_GetPlcStatus(S7Object Client, int &Status); +// Security functions +EXPORTSPEC int S7API Cli_GetProtection(S7Object Client, TS7Protection *pUsrData); +EXPORTSPEC int S7API Cli_SetSessionPassword(S7Object Client, char *Password); +EXPORTSPEC int S7API Cli_ClearSessionPassword(S7Object Client); +// Low level +EXPORTSPEC int S7API Cli_IsoExchangeBuffer(S7Object Client, void *pUsrData, int &Size); +// Misc +EXPORTSPEC int S7API Cli_GetExecTime(S7Object Client, int &Time); +EXPORTSPEC int S7API Cli_GetLastError(S7Object Client, int &LastError); +EXPORTSPEC int S7API Cli_GetPduLength(S7Object Client, int &Requested, int &Negotiated); +EXPORTSPEC int S7API Cli_ErrorText(int Error, char *Text, int TextLen); +EXPORTSPEC int S7API Cli_GetConnected(S7Object Client, int &Connected); +//============================================================================== +// CLIENT EXPORT LIST - Async functions +//============================================================================== +EXPORTSPEC int S7API Cli_AsReadArea(S7Object Client, int Area, int DBNumber, int Start, int Amount, int WordLen, void *pUsrData); +EXPORTSPEC int S7API Cli_AsWriteArea(S7Object Client, int Area, int DBNumber, int Start, int Amount, int WordLen, void *pUsrData); +EXPORTSPEC int S7API Cli_AsDBRead(S7Object Client, int DBNumber, int Start, int Size, void *pUsrData); +EXPORTSPEC int S7API Cli_AsDBWrite(S7Object Client, int DBNumber, int Start, int Size, void *pUsrData); +EXPORTSPEC int S7API Cli_AsMBRead(S7Object Client, int Start, int Size, void *pUsrData); +EXPORTSPEC int S7API Cli_AsMBWrite(S7Object Client, int Start, int Size, void *pUsrData); +EXPORTSPEC int S7API Cli_AsEBRead(S7Object Client, int Start, int Size, void *pUsrData); +EXPORTSPEC int S7API Cli_AsEBWrite(S7Object Client, int Start, int Size, void *pUsrData); +EXPORTSPEC int S7API Cli_AsABRead(S7Object Client, int Start, int Size, void *pUsrData); +EXPORTSPEC int S7API Cli_AsABWrite(S7Object Client, int Start, int Size, void *pUsrData); +EXPORTSPEC int S7API Cli_AsTMRead(S7Object Client, int Start, int Amount, void *pUsrData); +EXPORTSPEC int S7API Cli_AsTMWrite(S7Object Client, int Start, int Amount, void *pUsrData); +EXPORTSPEC int S7API Cli_AsCTRead(S7Object Client, int Start, int Amount, void *pUsrData); +EXPORTSPEC int S7API Cli_AsCTWrite(S7Object Client, int Start, int Amount, void *pUsrData); +EXPORTSPEC int S7API Cli_AsListBlocksOfType(S7Object Client, int BlockType, TS7BlocksOfType *pUsrData, int &ItemsCount); +EXPORTSPEC int S7API Cli_AsReadSZL(S7Object Client, int ID, int Index, TS7SZL *pUsrData, int &Size); +EXPORTSPEC int S7API Cli_AsReadSZLList(S7Object Client, TS7SZLList *pUsrData, int &ItemsCount); +EXPORTSPEC int S7API Cli_AsUpload(S7Object Client, int BlockType, int BlockNum, void *pUsrData, int &Size); +EXPORTSPEC int S7API Cli_AsFullUpload(S7Object Client, int BlockType, int BlockNum, void *pUsrData, int &Size); +EXPORTSPEC int S7API Cli_AsDownload(S7Object Client, int BlockNum, void *pUsrData, int Size); +EXPORTSPEC int S7API Cli_AsCopyRamToRom(S7Object Client, int Timeout); +EXPORTSPEC int S7API Cli_AsCompress(S7Object Client, int Timeout); +EXPORTSPEC int S7API Cli_AsDBGet(S7Object Client, int DBNumber, void *pUsrData, int &Size); +EXPORTSPEC int S7API Cli_AsDBFill(S7Object Client, int DBNumber, int FillChar); +EXPORTSPEC int S7API Cli_CheckAsCompletion(S7Object Client, int &opResult); +EXPORTSPEC int S7API Cli_WaitAsCompletion(S7Object Client, int Timeout); +//============================================================================== +// SERVER EXPORT LIST +//============================================================================== +EXPORTSPEC S7Object S7API Srv_Create(); +EXPORTSPEC void S7API Srv_Destroy(S7Object &Server); +EXPORTSPEC int S7API Srv_GetParam(S7Object Server, int ParamNumber, void *pValue); +EXPORTSPEC int S7API Srv_SetParam(S7Object Server, int ParamNumber, void *pValue); +EXPORTSPEC int S7API Srv_Start(S7Object Server); +EXPORTSPEC int S7API Srv_StartTo(S7Object Server, const char *Address); +EXPORTSPEC int S7API Srv_Stop(S7Object Server); +// Data +EXPORTSPEC int S7API Srv_RegisterArea(S7Object Server, int AreaCode, word Index, void *pUsrData, int Size); +EXPORTSPEC int S7API Srv_UnregisterArea(S7Object Server, int AreaCode, word Index); +EXPORTSPEC int S7API Srv_LockArea(S7Object Server, int AreaCode, word Index); +EXPORTSPEC int S7API Srv_UnlockArea(S7Object Server, int AreaCode, word Index); +// Events +EXPORTSPEC int S7API Srv_ClearEvents(S7Object Server); +EXPORTSPEC int S7API Srv_PickEvent(S7Object Server, TSrvEvent *pEvent, int &EvtReady); +EXPORTSPEC int S7API Srv_GetMask(S7Object Server, int MaskKind, longword &Mask); +EXPORTSPEC int S7API Srv_SetMask(S7Object Server, int MaskKind, longword Mask); +EXPORTSPEC int S7API Srv_SetEventsCallback(S7Object Server, pfn_SrvCallBack pCallback, void *usrPtr); +EXPORTSPEC int S7API Srv_SetReadEventsCallback(S7Object Server, pfn_SrvCallBack pCallback, void *usrPtr); +EXPORTSPEC int S7API Srv_EventText(TSrvEvent &Event, char *Text, int TextLen); +EXPORTSPEC int S7API Srv_SetRWAreaCallback(S7Object Server, pfn_RWAreaCallBack pCallback, void *usrPtr); +// Misc +EXPORTSPEC int S7API Srv_GetStatus(S7Object Server, int &ServerStatus, int &CpuStatus, int &ClientsCount); +EXPORTSPEC int S7API Srv_SetCpuStatus(S7Object Server, int CpuStatus); +EXPORTSPEC int S7API Srv_ErrorText(int Error, char *Text, int TextLen); +//============================================================================== +// PARTNER EXPORT LIST +//============================================================================== +EXPORTSPEC S7Object S7API Par_Create(int Active); +EXPORTSPEC void S7API Par_Destroy(S7Object &Partner); +EXPORTSPEC int S7API Par_GetParam(S7Object Partner, int ParamNumber, void *pValue); +EXPORTSPEC int S7API Par_SetParam(S7Object Partner, int ParamNumber, void *pValue); +EXPORTSPEC int S7API Par_Start(S7Object Partner); +EXPORTSPEC int S7API Par_StartTo(S7Object Partner, const char *LocalAddress, const char *RemoteAddress, + word LocTsap, word RemTsap); +EXPORTSPEC int S7API Par_Stop(S7Object Partner); +// BSend +EXPORTSPEC int S7API Par_BSend(S7Object Partner, longword R_ID, void *pUsrData, int Size); +EXPORTSPEC int S7API Par_AsBSend(S7Object Partner, longword R_ID, void *pUsrData, int Size); +EXPORTSPEC int S7API Par_CheckAsBSendCompletion(S7Object Partner, int &opResult); +EXPORTSPEC int S7API Par_WaitAsBSendCompletion(S7Object Partner, longword Timeout); +EXPORTSPEC int S7API Par_SetSendCallback(S7Object Partner, pfn_ParBSendCompletion pCompletion, void *usrPtr); +// BRecv +EXPORTSPEC int S7API Par_BRecv(S7Object Partner, longword &R_ID, void *pData, int &Size, longword Timeout); +EXPORTSPEC int S7API Par_CheckAsBRecvCompletion(S7Object Partner, int &opResult, longword &R_ID, + void *pData, int &Size); +EXPORTSPEC int S7API Par_SetRecvCallback(S7Object Partner, pfn_ParBRecvCallBack pCompletion, void *usrPtr); +// Stat +EXPORTSPEC int S7API Par_GetTimes(S7Object Partner, longword &SendTime, longword &RecvTime); +EXPORTSPEC int S7API Par_GetStats(S7Object Partner, longword &BytesSent, longword &BytesRecv, + longword &SendErrors, longword &RecvErrors); +EXPORTSPEC int S7API Par_GetLastError(S7Object Partner, int &LastError); +EXPORTSPEC int S7API Par_GetStatus(S7Object Partner, int &Status); +EXPORTSPEC int S7API Par_ErrorText(int Error, char *Text, int TextLen); + + + +#endif // snap7_libmain_h