snap7_libmain.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. /*=============================================================================|
  2. | PROJECT SNAP7 1.3.0 |
  3. |==============================================================================|
  4. | Copyright (C) 2013, 2015 Davide Nardella |
  5. | All rights reserved. |
  6. |==============================================================================|
  7. | SNAP7 is free software: you can redistribute it and/or modify |
  8. | it under the terms of the Lesser GNU General Public License as published by |
  9. | the Free Software Foundation, either version 3 of the License, or |
  10. | (at your option) any later version. |
  11. | |
  12. | It means that you can distribute your commercial software linked with |
  13. | SNAP7 without the requirement to distribute the source code of your |
  14. | application and without the requirement that your application be itself |
  15. | distributed under LGPL. |
  16. | |
  17. | SNAP7 is distributed in the hope that it will be useful, |
  18. | but WITHOUT ANY WARRANTY; without even the implied warranty of |
  19. | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
  20. | Lesser GNU General Public License for more details. |
  21. | |
  22. | You should have received a copy of the GNU General Public License and a |
  23. | copy of Lesser GNU General Public License along with Snap7. |
  24. | If not, see http://www.gnu.org/licenses/ |
  25. |=============================================================================*/
  26. #ifndef snap7_libmain_h
  27. #define snap7_libmain_h
  28. //---------------------------------------------------------------------------
  29. #include "s7_client.h"
  30. #include "s7_server.h"
  31. #include "s7_partner.h"
  32. #include "s7_text.h"
  33. //---------------------------------------------------------------------------
  34. const int mkEvent = 0;
  35. const int mkLog = 1;
  36. typedef uintptr_t S7Object; // multi platform/processor object reference
  37. //==============================================================================
  38. // CLIENT EXPORT LIST - Sync functions
  39. //==============================================================================
  40. EXPORTSPEC S7Object S7API Cli_Create();
  41. EXPORTSPEC void S7API Cli_Destroy(S7Object &Client);
  42. EXPORTSPEC int S7API Cli_Connect(S7Object Client);
  43. EXPORTSPEC int S7API Cli_SetConnectionParams(S7Object Client, const char *Address, word LocalTSAP, word RemoteTSAP);
  44. EXPORTSPEC int S7API Cli_SetConnectionType(S7Object Client, word ConnectionType);
  45. EXPORTSPEC int S7API Cli_ConnectTo(S7Object Client, const char *Address, int Rack, int Slot);
  46. EXPORTSPEC int S7API Cli_Disconnect(S7Object Client);
  47. EXPORTSPEC int S7API Cli_GetParam(S7Object Client, int ParamNumber, void *pValue);
  48. EXPORTSPEC int S7API Cli_SetParam(S7Object Client, int ParamNumber, void *pValue);
  49. EXPORTSPEC int S7API Cli_SetAsCallback(S7Object Client, pfn_CliCompletion pCompletion, void *usrPtr);
  50. // Data I/O functions
  51. EXPORTSPEC int S7API Cli_ReadArea(S7Object Client, int Area, int DBNumber, int Start, int Amount, int WordLen, void *pUsrData);
  52. EXPORTSPEC int S7API Cli_WriteArea(S7Object Client, int Area, int DBNumber, int Start, int Amount, int WordLen, void *pUsrData);
  53. EXPORTSPEC int S7API Cli_ReadMultiVars(S7Object Client, PS7DataItem Item, int ItemsCount);
  54. EXPORTSPEC int S7API Cli_WriteMultiVars(S7Object Client, PS7DataItem Item, int ItemsCount);
  55. // Data I/O Lean functions
  56. EXPORTSPEC int S7API Cli_DBRead(S7Object Client, int DBNumber, int Start, int Size, void *pUsrData);
  57. EXPORTSPEC int S7API Cli_DBWrite(S7Object Client, int DBNumber, int Start, int Size, void *pUsrData);
  58. EXPORTSPEC int S7API Cli_MBRead(S7Object Client, int Start, int Size, void *pUsrData);
  59. EXPORTSPEC int S7API Cli_MBWrite(S7Object Client, int Start, int Size, void *pUsrData);
  60. EXPORTSPEC int S7API Cli_EBRead(S7Object Client, int Start, int Size, void *pUsrData);
  61. EXPORTSPEC int S7API Cli_EBWrite(S7Object Client, int Start, int Size, void *pUsrData);
  62. EXPORTSPEC int S7API Cli_ABRead(S7Object Client, int Start, int Size, void *pUsrData);
  63. EXPORTSPEC int S7API Cli_ABWrite(S7Object Client, int Start, int Size, void *pUsrData);
  64. EXPORTSPEC int S7API Cli_TMRead(S7Object Client, int Start, int Amount, void *pUsrData);
  65. EXPORTSPEC int S7API Cli_TMWrite(S7Object Client, int Start, int Amount, void *pUsrData);
  66. EXPORTSPEC int S7API Cli_CTRead(S7Object Client, int Start, int Amount, void *pUsrData);
  67. EXPORTSPEC int S7API Cli_CTWrite(S7Object Client, int Start, int Amount, void *pUsrData);
  68. // Directory functions
  69. EXPORTSPEC int S7API Cli_ListBlocks(S7Object Client, TS7BlocksList *pUsrData);
  70. EXPORTSPEC int S7API Cli_GetAgBlockInfo(S7Object Client, int BlockType, int BlockNum, TS7BlockInfo *pUsrData);
  71. EXPORTSPEC int S7API Cli_GetPgBlockInfo(S7Object Client, void *pBlock, TS7BlockInfo *pUsrData, int Size);
  72. EXPORTSPEC int S7API Cli_ListBlocksOfType(S7Object Client, int BlockType, TS7BlocksOfType *pUsrData, int &ItemsCount);
  73. // Blocks functions
  74. EXPORTSPEC int S7API Cli_Upload(S7Object Client, int BlockType, int BlockNum, void *pUsrData, int &Size);
  75. EXPORTSPEC int S7API Cli_FullUpload(S7Object Client, int BlockType, int BlockNum, void *pUsrData, int &Size);
  76. EXPORTSPEC int S7API Cli_Download(S7Object Client, int BlockNum, void *pUsrData, int Size);
  77. EXPORTSPEC int S7API Cli_Delete(S7Object Client, int BlockType, int BlockNum);
  78. EXPORTSPEC int S7API Cli_DBGet(S7Object Client, int DBNumber, void *pUsrData, int &Size);
  79. EXPORTSPEC int S7API Cli_DBFill(S7Object Client, int DBNumber, int FillChar);
  80. // Date/Time functions
  81. EXPORTSPEC int S7API Cli_GetPlcDateTime(S7Object Client, tm &DateTime);
  82. EXPORTSPEC int S7API Cli_SetPlcDateTime(S7Object Client, tm *DateTime);
  83. EXPORTSPEC int S7API Cli_SetPlcSystemDateTime(S7Object Client);
  84. // System Info functions
  85. EXPORTSPEC int S7API Cli_GetOrderCode(S7Object Client, TS7OrderCode *pUsrData);
  86. EXPORTSPEC int S7API Cli_GetCpuInfo(S7Object Client, TS7CpuInfo *pUsrData);
  87. EXPORTSPEC int S7API Cli_GetCpInfo(S7Object Client, TS7CpInfo *pUsrData);
  88. EXPORTSPEC int S7API Cli_ReadSZL(S7Object Client, int ID, int Index, TS7SZL *pUsrData, int &Size);
  89. EXPORTSPEC int S7API Cli_ReadSZLList(S7Object Client, TS7SZLList *pUsrData, int &ItemsCount);
  90. // Control functions
  91. EXPORTSPEC int S7API Cli_PlcHotStart(S7Object Client);
  92. EXPORTSPEC int S7API Cli_PlcColdStart(S7Object Client);
  93. EXPORTSPEC int S7API Cli_PlcStop(S7Object Client);
  94. EXPORTSPEC int S7API Cli_CopyRamToRom(S7Object Client, int Timeout);
  95. EXPORTSPEC int S7API Cli_Compress(S7Object Client, int Timeout);
  96. EXPORTSPEC int S7API Cli_GetPlcStatus(S7Object Client, int &Status);
  97. // Security functions
  98. EXPORTSPEC int S7API Cli_GetProtection(S7Object Client, TS7Protection *pUsrData);
  99. EXPORTSPEC int S7API Cli_SetSessionPassword(S7Object Client, char *Password);
  100. EXPORTSPEC int S7API Cli_ClearSessionPassword(S7Object Client);
  101. // Low level
  102. EXPORTSPEC int S7API Cli_IsoExchangeBuffer(S7Object Client, void *pUsrData, int &Size);
  103. // Misc
  104. EXPORTSPEC int S7API Cli_GetExecTime(S7Object Client, int &Time);
  105. EXPORTSPEC int S7API Cli_GetLastError(S7Object Client, int &LastError);
  106. EXPORTSPEC int S7API Cli_GetPduLength(S7Object Client, int &Requested, int &Negotiated);
  107. EXPORTSPEC int S7API Cli_ErrorText(int Error, char *Text, int TextLen);
  108. EXPORTSPEC int S7API Cli_GetConnected(S7Object Client, int &Connected);
  109. //==============================================================================
  110. // CLIENT EXPORT LIST - Async functions
  111. //==============================================================================
  112. EXPORTSPEC int S7API Cli_AsReadArea(S7Object Client, int Area, int DBNumber, int Start, int Amount, int WordLen, void *pUsrData);
  113. EXPORTSPEC int S7API Cli_AsWriteArea(S7Object Client, int Area, int DBNumber, int Start, int Amount, int WordLen, void *pUsrData);
  114. EXPORTSPEC int S7API Cli_AsDBRead(S7Object Client, int DBNumber, int Start, int Size, void *pUsrData);
  115. EXPORTSPEC int S7API Cli_AsDBWrite(S7Object Client, int DBNumber, int Start, int Size, void *pUsrData);
  116. EXPORTSPEC int S7API Cli_AsMBRead(S7Object Client, int Start, int Size, void *pUsrData);
  117. EXPORTSPEC int S7API Cli_AsMBWrite(S7Object Client, int Start, int Size, void *pUsrData);
  118. EXPORTSPEC int S7API Cli_AsEBRead(S7Object Client, int Start, int Size, void *pUsrData);
  119. EXPORTSPEC int S7API Cli_AsEBWrite(S7Object Client, int Start, int Size, void *pUsrData);
  120. EXPORTSPEC int S7API Cli_AsABRead(S7Object Client, int Start, int Size, void *pUsrData);
  121. EXPORTSPEC int S7API Cli_AsABWrite(S7Object Client, int Start, int Size, void *pUsrData);
  122. EXPORTSPEC int S7API Cli_AsTMRead(S7Object Client, int Start, int Amount, void *pUsrData);
  123. EXPORTSPEC int S7API Cli_AsTMWrite(S7Object Client, int Start, int Amount, void *pUsrData);
  124. EXPORTSPEC int S7API Cli_AsCTRead(S7Object Client, int Start, int Amount, void *pUsrData);
  125. EXPORTSPEC int S7API Cli_AsCTWrite(S7Object Client, int Start, int Amount, void *pUsrData);
  126. EXPORTSPEC int S7API Cli_AsListBlocksOfType(S7Object Client, int BlockType, TS7BlocksOfType *pUsrData, int &ItemsCount);
  127. EXPORTSPEC int S7API Cli_AsReadSZL(S7Object Client, int ID, int Index, TS7SZL *pUsrData, int &Size);
  128. EXPORTSPEC int S7API Cli_AsReadSZLList(S7Object Client, TS7SZLList *pUsrData, int &ItemsCount);
  129. EXPORTSPEC int S7API Cli_AsUpload(S7Object Client, int BlockType, int BlockNum, void *pUsrData, int &Size);
  130. EXPORTSPEC int S7API Cli_AsFullUpload(S7Object Client, int BlockType, int BlockNum, void *pUsrData, int &Size);
  131. EXPORTSPEC int S7API Cli_AsDownload(S7Object Client, int BlockNum, void *pUsrData, int Size);
  132. EXPORTSPEC int S7API Cli_AsCopyRamToRom(S7Object Client, int Timeout);
  133. EXPORTSPEC int S7API Cli_AsCompress(S7Object Client, int Timeout);
  134. EXPORTSPEC int S7API Cli_AsDBGet(S7Object Client, int DBNumber, void *pUsrData, int &Size);
  135. EXPORTSPEC int S7API Cli_AsDBFill(S7Object Client, int DBNumber, int FillChar);
  136. EXPORTSPEC int S7API Cli_CheckAsCompletion(S7Object Client, int &opResult);
  137. EXPORTSPEC int S7API Cli_WaitAsCompletion(S7Object Client, int Timeout);
  138. //==============================================================================
  139. // SERVER EXPORT LIST
  140. //==============================================================================
  141. EXPORTSPEC S7Object S7API Srv_Create();
  142. EXPORTSPEC void S7API Srv_Destroy(S7Object &Server);
  143. EXPORTSPEC int S7API Srv_GetParam(S7Object Server, int ParamNumber, void *pValue);
  144. EXPORTSPEC int S7API Srv_SetParam(S7Object Server, int ParamNumber, void *pValue);
  145. EXPORTSPEC int S7API Srv_Start(S7Object Server);
  146. EXPORTSPEC int S7API Srv_StartTo(S7Object Server, const char *Address);
  147. EXPORTSPEC int S7API Srv_Stop(S7Object Server);
  148. // Data
  149. EXPORTSPEC int S7API Srv_RegisterArea(S7Object Server, int AreaCode, word Index, void *pUsrData, int Size);
  150. EXPORTSPEC int S7API Srv_UnregisterArea(S7Object Server, int AreaCode, word Index);
  151. EXPORTSPEC int S7API Srv_LockArea(S7Object Server, int AreaCode, word Index);
  152. EXPORTSPEC int S7API Srv_UnlockArea(S7Object Server, int AreaCode, word Index);
  153. // Events
  154. EXPORTSPEC int S7API Srv_ClearEvents(S7Object Server);
  155. EXPORTSPEC int S7API Srv_PickEvent(S7Object Server, TSrvEvent *pEvent, int &EvtReady);
  156. EXPORTSPEC int S7API Srv_GetMask(S7Object Server, int MaskKind, longword &Mask);
  157. EXPORTSPEC int S7API Srv_SetMask(S7Object Server, int MaskKind, longword Mask);
  158. EXPORTSPEC int S7API Srv_SetEventsCallback(S7Object Server, pfn_SrvCallBack pCallback, void *usrPtr);
  159. EXPORTSPEC int S7API Srv_SetReadEventsCallback(S7Object Server, pfn_SrvCallBack pCallback, void *usrPtr);
  160. EXPORTSPEC int S7API Srv_EventText(TSrvEvent &Event, char *Text, int TextLen);
  161. EXPORTSPEC int S7API Srv_SetRWAreaCallback(S7Object Server, pfn_RWAreaCallBack pCallback, void *usrPtr);
  162. // Misc
  163. EXPORTSPEC int S7API Srv_GetStatus(S7Object Server, int &ServerStatus, int &CpuStatus, int &ClientsCount);
  164. EXPORTSPEC int S7API Srv_SetCpuStatus(S7Object Server, int CpuStatus);
  165. EXPORTSPEC int S7API Srv_ErrorText(int Error, char *Text, int TextLen);
  166. //==============================================================================
  167. // PARTNER EXPORT LIST
  168. //==============================================================================
  169. EXPORTSPEC S7Object S7API Par_Create(int Active);
  170. EXPORTSPEC void S7API Par_Destroy(S7Object &Partner);
  171. EXPORTSPEC int S7API Par_GetParam(S7Object Partner, int ParamNumber, void *pValue);
  172. EXPORTSPEC int S7API Par_SetParam(S7Object Partner, int ParamNumber, void *pValue);
  173. EXPORTSPEC int S7API Par_Start(S7Object Partner);
  174. EXPORTSPEC int S7API Par_StartTo(S7Object Partner, const char *LocalAddress, const char *RemoteAddress,
  175. word LocTsap, word RemTsap);
  176. EXPORTSPEC int S7API Par_Stop(S7Object Partner);
  177. // BSend
  178. EXPORTSPEC int S7API Par_BSend(S7Object Partner, longword R_ID, void *pUsrData, int Size);
  179. EXPORTSPEC int S7API Par_AsBSend(S7Object Partner, longword R_ID, void *pUsrData, int Size);
  180. EXPORTSPEC int S7API Par_CheckAsBSendCompletion(S7Object Partner, int &opResult);
  181. EXPORTSPEC int S7API Par_WaitAsBSendCompletion(S7Object Partner, longword Timeout);
  182. EXPORTSPEC int S7API Par_SetSendCallback(S7Object Partner, pfn_ParBSendCompletion pCompletion, void *usrPtr);
  183. // BRecv
  184. EXPORTSPEC int S7API Par_BRecv(S7Object Partner, longword &R_ID, void *pData, int &Size, longword Timeout);
  185. EXPORTSPEC int S7API Par_CheckAsBRecvCompletion(S7Object Partner, int &opResult, longword &R_ID,
  186. void *pData, int &Size);
  187. EXPORTSPEC int S7API Par_SetRecvCallback(S7Object Partner, pfn_ParBRecvCallBack pCompletion, void *usrPtr);
  188. // Stat
  189. EXPORTSPEC int S7API Par_GetTimes(S7Object Partner, longword &SendTime, longword &RecvTime);
  190. EXPORTSPEC int S7API Par_GetStats(S7Object Partner, longword &BytesSent, longword &BytesRecv,
  191. longword &SendErrors, longword &RecvErrors);
  192. EXPORTSPEC int S7API Par_GetLastError(S7Object Partner, int &LastError);
  193. EXPORTSPEC int S7API Par_GetStatus(S7Object Partner, int &Status);
  194. EXPORTSPEC int S7API Par_ErrorText(int Error, char *Text, int TextLen);
  195. #endif // snap7_libmain_h