Opto MMP Toolkit
 All Classes Functions Variables
O22SIOMM.h
1 //-----------------------------------------------------------------------------
2 //
3 // O22SIOMM.h
4 // Copyright (c) 1999 - 2004 by Opto 22
5 //
6 // Header for the O22SnapIoMemMap C++ class.
7 //
8 // The O22SnapIoMemMap C++ class is used to communicate from a computer to an
9 // Opto 22 SNAP Ethernet I/O unit.
10 //
11 // The basic procedure for using this class is:
12 //
13 // 1. Create an instance of the O22SnapIoMemMap class
14 // 2. Call OpenEnet() or OpenEnet2() to start connecting to an I/O unit
15 // 3. Call IsOpenDone() to complete the connection process
16 // 4. Call SetCommOptions() to set the desired timeout value
17 // 5. Call any of the memory map functions, such as ConfigurePt(),
18 // GetAnaPtValue(), SetDigBankPointStates(), and ReadBlock(), to
19 // communicate with the I/O unit. Repeat as neccessary.
20 // 6. Call Close() when done.
21 //
22 // While this code was developed on Microsoft Windows 32-bit operating
23 // systems, it is intended to be as generic as possible. For Windows specific
24 // code, search for "_WIN32". For Linux specific code, search for "_LINUX".
25 //-----------------------------------------------------------------------------
26 
27 #ifndef __O22SIOMM_H_
28 #define __O22SIOMM_H_
29 
30 
31 #ifndef __O22SIOUT_H
32 #include "O22SIOUT.h"
33 #endif
34 
35 
36 #ifndef __O22STRCT_H
37 #include "O22STRCT.h"
38 #endif
39 
40 #pragma pack(push)
41 #pragma pack(1)
42 
44 typedef struct SERIAL_HEADER_X_T // x for x-mit
45 {
46  unsigned char m_u8Address;
47  unsigned char m_u8Type;
48  unsigned short m_u16Crc;
49  unsigned short m_u16Length;
50  // data payload bytes follow
52 
54 typedef struct SERIAL_HEADER_R_T // r for receive
55 {
56  unsigned char m_u8Type;
57  unsigned short m_u16Crc;
58  unsigned short m_u16Length;
59  // data payload bytes follow
61 
62 #pragma pack(pop)
63 
64 
66 {
67  uint32_t Enable;
68  uint32_t Bps;
69  uint32_t DataBits;
70  uint32_t Parity;
71  uint32_t StopBits;
72  uint32_t Duplex;
73  uint32_t Timeout;
75 
76 typedef struct SERIAL_PASS_THRU_RW
77 // follow this header with the data bytes.
78 {
79  uint32_t Address;
80  uint32_t Type;
81  uint32_t Length;
83 
84 enum ConnectionMethod
85 {
86  ethernet,
87  serial,
88  passthru
89 };
90 
107 
108  public:
109  O22SnapIoMemMap();
110  ~O22SnapIoMemMap();
111 
112  // Connection functions
113 
131  int OpenEnet (char * pchIpAddressArg, int nPort, int nOpenTimeOutMS,
132  int nAutoPUC);
133 
148  int OpenEnet2(char * pchIpAddressArg, int nPort, int nOpenTimeOutMS,
149  int nAutoPUC, int nConnectionType);
150 
151 
164  int OpenSerial(int nPort, uint8_t nAddress, int nBaudRate, int nOpenTimeOutMS,
165  int nAutoPUC);
166 
180  int OpenSerialPassThru(char * pchIpAddressArg, int nPort,
181  int nSerialPort, uint8_t nSerialAddress, int nSerialBaudRate, bool bTwoWire,
182  int nOpenTimeOutMS, int nAutoPUC, int nConnectionType = SIOMM_TCP);
183 
201  int IsOpenDone();
202 
207  int Close();
208 
215  int SetCommOptions(int nTimeOutMS, int nReserved);
216 
221  int GetCommTimeout() {return m_nTimeOutMS;}
222 
223 
224  // The following functions are for building and unpacking read/write
225  // requests for the 1394-based protocol.
226 
239  int BuildWriteBlockRequest(uint8_t * pbyWriteBlockRequest,
240  uint8_t byTransactionLabel,
241  uint32_t dwDestinationOffset,
242  uint16_t wDataLength,
243  uint8_t * pbyBlockData);
244 
254  int UnpackWriteResponse(uint8_t * pbyWriteQuadletResponse,
255  uint8_t * pbyTransactionLabel,
256  uint8_t * pbyResponseCode);
257 
269  int BuildReadBlockRequest(uint8_t * pbyReadBlockRequest,
270  uint8_t byTransactionLabel,
271  uint32_t dwDestinationOffset,
272  uint16_t wDataLength);
273 
286  int UnpackReadBlockResponse(uint8_t * pbyReadBlockResponse,
287  uint8_t * pbyTransactionLabel,
288  uint8_t * pbyResponseCode,
289  uint16_t * pwDataLength,
290  uint8_t * pbyBlockData);
291 
300  int ReadQuad(uint32_t dwDestOffset, uint32_t * pdwQuadlet);
301 
310  int WriteQuad(uint32_t dwDestOffset, uint32_t dwQuadlet);
311 
320  int ReadFloat(uint32_t dwDestOffset, float * pfValue);
321 
330  int WriteFloat(uint32_t dwDestOffset, float fValue);
331 
341  int ReadBlock (const uint32_t dwDestOffset, const uint16_t wDataLength,
342  uint8_t * pbyData);
343 
353  int WriteBlock(const uint32_t dwDestOffset, const uint16_t wDataLength,
354  uint8_t * pbyData);
355 
368  int ReadBlockAsIntegers(uint32_t dwDestOffset, uint16_t wDataLength,
369  int * pnData);
370 
383  int WriteBlockAsIntegers(uint32_t dwDestOffset, uint16_t wDataLength,
384  int * pnData);
385 
398  int ReadBlockAsFloats (uint32_t dwDestOffset, uint16_t wDataLength,
399  float * pfData);
400 
413  int WriteBlockAsFloats (uint32_t dwDestOffset, uint16_t wDataLength,
414  float * pfData);
415 
432  int GetStatusPUC(int *pnPUCFlag);
433 
443  int GetStatusLastError(int *pnErrorCode);
444 
459  int GetStatusBootpAlways(int *pnBootpAlways);
460 
472  int GetStatusDegrees(int *pnDegrees);
473 
485  int GetStatusWatchdogTime(int *pnTimeMS);
486 
496  int GetStatusVersionEx(SIOMM_StatusVersion *pVersionData);
497 
510  int GetStatusHardwareEx(SIOMM_StatusHardware *pHardwareData);
511 
521  int GetStatusHardwareEx2(SIOMM_StatusHardware2 *pHardwareData);
522 
535  int GetStatusNetworkEx(SIOMM_StatusNetwork *pNetworkData);
536 
546  int GetStatusNetworkEx2(SIOMM_StatusNetwork2 *pNetworkData);
547 
557  int GetStatusWriteEx(SIOMM_StatusWrite * pStatusWriteData);
558 
567  int SetStatusWriteEx(SIOMM_StatusWrite StatusWriteData);
568 
582  int SetStatusOperation(int nOpCode);
583 
596  int SetStatusBootpRequest(int nFlag);
597 
610  int SetStatusDegrees(int nDegFlag);
611 
623  int SetStatusWatchdogTime(int nTimeMS);
624 
634  int GetDateTime(char * pchDateTime);
635 
645  int SetDateTime(char * pchDateTime);
646 
657  int GetSerialModuleConfigurationEx(int nSerialPort,
658  SIOMM_SerialModuleConfigArea * pConfigData);
659 
669  int SetSerialModuleConfigurationEx(int nSerialPort,
670  SIOMM_SerialModuleConfigArea ConfigData);
671 
684  int ConfigurePoint(int nPoint, int nPointType);
685 
696  int GetModuleType(int nPoint, int * pnModuleType);
697 
708  int GetPtConfigurationEx3(int nPoint, SIOMM_PointConfigArea3 * pData);
709 
723  int GetPtConfigurationEx2(int nPoint, SIOMM_PointConfigArea2 * pData);
724 
738  int GetPtConfigurationEx(int nPoint, SIOMM_PointConfigArea * pData);
739 
749  int SetPtConfigurationEx3(int nPoint, SIOMM_PointConfigArea3 Data);
750 
763  int SetPtConfigurationEx2(int nPoint, SIOMM_PointConfigArea2 Data);
764 
777  int SetPtConfigurationEx(int nPoint, SIOMM_PointConfigArea Data);
778 
791  int SetDigPtConfiguration(int nPoint, int nPointType, int nFeature);
792 
808  int SetAnaPtConfiguration(int nPoint, int nPointType, float fOffset,
809  float fGain, float fHiScale, float fLoScale);
810 
827  int SetPtWatchdog(int nPoint, float fValue, int nEnabled);
828 
829  /* Standard density digital point methods. See the Digital Point sections
830  * in Appendix A of the OptoMMP Protocol Guide for details.
831  *
832  * NOTE: These methods work only for standard density digital points.
833  * High-Density digital points must use the HDDigital methods defined
834  * below this section.
835  */
836  // Digital point read
837 
850  int GetDigPtState(int nPoint, int *pnState);
851 
864  int GetDigPtOnLatch(int nPoint, int *pnState);
865 
878  int GetDigPtOffLatch(int nPoint, int *pnState);
879 
892  int GetDigPtCounterState(int nPoint, int *pnState);
893 
906  int GetDigPtCounts(int nPoint, int *pnValue);
907 
918  int GetDigPtReadAreaEx(int nPoint, SIOMM_DigPointReadArea * pData);
919 
930  int SetDigPtState(int nPoint, int nState);
931 
941  int SetDigPtCounterState(int nPoint, int nState);
942 
955  int ReadClearDigPtCounts(int nPoint, int * pnState);
956 
969  int ReadClearDigPtOnLatch(int nPoint, int * pnState);
970 
983  int ReadClearDigPtOffLatch(int nPoint, int * pnState);
984 
996  int GetDigBankPointStates(int *pnPts63to32, int *pnPts31to0);
997 
1009  int GetDigBankOnLatchStates(int *pnPts63to32, int *pnPts31to0);
1010 
1022  int GetDigBankOffLatchStates(int *pnPts63to32, int *pnPts31to0);
1023 
1035  int GetDigBankActCounterStates(int *pnPts63to32, int *pnPts31to0);
1036 
1045 
1058  int SetDigBankPointStates(int nPts63to32, int nPts31to0,
1059  int nMask63to32, int nMask31to0);
1060 
1070  int SetDigBankOnMask(int nPts63to32, int nPts31to0);
1071 
1081  int SetDigBankOffMask(int nPts63to32, int nPts31to0);
1082 
1092  int SetDigBankActCounterMask(int nPts63to32, int nPts31to0);
1093 
1103  int SetDigBankDeactCounterMask(int nPts63to32, int nPts31to0);
1104 
1105  /* High density digital point reads. See Appendix A - SNAP High-Density
1106  * Digital sections in the OptoMMP Protocol Guide for details.
1107  *
1108  * NOTE: These methods work only for High Density digital modules; standard
1109  * digital modules must use the standard density methods defined above.
1110  */
1111 
1125  int GetHDDigitalPointState(int nModule, int nPoint, int * pnState);
1126 
1140  int GetHDDigitalPointOnLatch(int nModule, int nPoint, int * pnState);
1141 
1155  int GetHDDigitalPointOffLatch(int nModule, int nPoint, int * pnState);
1156 
1170  int GetHDDigitalPointCounts(int nModule, int nPoint, int * pnCounts);
1171 
1184  int SetHDDigitalPointState(int nModule, int nPoint, int nState);
1185 
1199  int ReadClearHDDigitalPointCounts(int nModule, int nPoint, int * pnCounts);
1200 
1214  int ReadClearHDDigitalPointOnLatch(int nModule, int nPoint, int * pnState);
1215 
1229  int ReadClearHDDigitalPointOffLatch(int nModule, int nPoint, int * pnState);
1230 
1231  /* Expanded Analog point methods. Supported on I/O units using firmware 8.0 or
1232  * greater, these methods allow access to a greater number of modules and points.
1233  */
1234  // Analog point read
1235 
1248  int GetAnalogPointValueEx(int nModule, int nPoint, float *pfValue);
1249 
1262  int GetAnalogPointCountsEx(int nModule, int nPoint, float *pfValue);
1263 
1276  int GetAnalogPointMinValueEx(int nModule, int nPoint, float *pfValue);
1277 
1290  int GetAnalogPointMaxValueEx(int nModule, int nPoint, float *pfValue);
1291 
1304  int GetAnalogPointTpoPeriodEx(int nModule, int nPoint, float *pfValue);
1305 
1318  int GetAnalogPointReadAreaEx(int nModule, int nPoint, SIOMM_AnaPointReadArea *pData);
1319 
1331  int SetAnalogPointValueEx(int nModule, int nPoint, float fValue);
1332 
1344  int SetAnalogPointCountsEx(int nModule, int nPoint, float fValue);
1345 
1359  int SetAnalogPointTpoPeriodEx(int nModule, int nPoint, float fValue);
1360 
1374  int ReadClearAnalogPointMinValueEx(int nModule, int nPoint, float *pfValue);
1375 
1389  int ReadClearAnalogPointMaxValueEx(int nModule, int nPoint, float *pfValue);
1390 
1391  /* Legacy Analog point methods. If you're using firmware 8.0 or newer on your
1392  * I/O units, it is recommended that you use the newer (Expanded) methods
1393  * defined above. If you're using a firmware older than 8.0, use these methods.
1394  */
1395 
1409  int GetAnaPtValue(int nPoint, float *pfValue);
1410 
1424  int GetAnaPtCounts(int nPoint, float *pfValue);
1425 
1439  int GetAnaPtMinValue(int nPoint, float *pfValue);
1440 
1454  int GetAnaPtMaxValue(int nPoint, float *pfValue);
1455 
1469  int GetAnaPtTpoPeriod(int nPoint, float *pfValue);
1470 
1484  int GetAnaPtReadAreaEx(int nPoint, SIOMM_AnaPointReadArea * pData);
1485 
1499  int SetAnaPtValue(int nPoint, float fValue);
1500 
1514  int SetAnaPtCounts(int nPoint, float fValue);
1515 
1530  int SetAnaPtTpoPeriod(int nPoint, float fValue);
1531 
1545  int ReadClearAnaPtMinValue(int nPoint, float *pfValue);
1546 
1560  int ReadClearAnaPtMaxValue(int nPoint, float *pfValue);
1561 
1569  int GetAnaBankValuesEx(SIOMM_AnaBank * pBankData);
1570 
1578  int GetAnaBankCountsEx(SIOMM_AnaBank * pBankData);
1579 
1587  int GetAnaBankMinValuesEx(SIOMM_AnaBank * pBankData);
1588 
1596  int GetAnaBankMaxValuesEx(SIOMM_AnaBank * pBankData);
1597 
1605  int GetAnaBanksEx(SIOMM_AnaBanks * pBankData);
1606 
1614  int SetAnaBankValuesEx(SIOMM_AnaBank BankData);
1615 
1623  int SetAnaBankCountsEx(SIOMM_AnaBank BankData);
1624 
1640  int CalcSetAnaPtOffset(int nPoint, float *pfValue);
1641 
1657  int CalcSetAnaPtGain(int nPoint, float *pfValue);
1658 
1668 
1669  // TPO (Pulsed Output)
1670  int SetTpoConfigurationEx(int nTpo, SIOMM_TpoConfigArea Data);
1671  int GetTpoConfigurationEx(int nTpo, SIOMM_TpoConfigArea * pTpoData);
1672 
1686 
1704 
1719 
1730 
1743 
1744 
1745  // Stream functions
1762  int GetStreamConfiguration(int * pnOnFlag, int * pnIntervalMS,
1763  int * pnPort,
1764  int * pnIoMirroringEnabled,
1765  int * pnStartAddress,
1766  int * pnDataSize);
1767 
1784  int SetStreamConfiguration(int nOnFlag, int nIntervalMS, int nPort,
1785  int nIoMirroringEnabled, int nStartAddress,
1786  int nDataSize);
1787 
1798  int GetStreamTarget(int nTarget, int * pnIpAddressArg);
1799 
1811  int SetStreamTarget(int nTarget, char * pchIpAddressArg);
1812 
1822  int GetStreamReadAreaEx (SIOMM_StreamStandardBlock *pStreamData);
1823 
1824 
1833  int GetScratchPadBitArea(int *pnBits63to32, int *pnBits31to0);
1834 
1843  int SetScratchPadBitArea(int nBits63to32, int nBits31to0);
1844 
1858  int SetScratchPadBitAreaMask(int nOnMask63to32, int nOnMask31to0,
1859  int nOffMask63to32, int nOffMask31to0);
1860 
1870  int GetScratchPadIntegerArea(int nStartIndex, int nLength,
1871  int * pnData);
1872 
1882  int SetScratchPadIntegerArea(int nStartIndex, int nLength,
1883  int * pnData);
1884 
1894  int GetScratchPadFloatArea (int nStartIndex, int nLength,
1895  float * pfData);
1896 
1906  int SetScratchPadFloatArea (int nStartIndex, int nLength,
1907  float * pfData);
1908 
1918  int GetScratchPadStringArea (int nStartIndex, int nLength,
1919  SIOMM_ScratchPadString * pStringData);
1920 
1930  int SetScratchPadStringArea (int nStartIndex, int nLength,
1931  SIOMM_ScratchPadString * pStringData);
1932 
1942  int GetScratchPadInteger64Area(int nStartIndex, int nLength,
1943  int * pnData);
1944 
1954  int SetScratchPadInteger64Area(int nStartIndex, int nLength,
1955  int * pnData);
1956 
1973  int GetDataLoggingSamplesEx(int nStartIndex, int nLength,
1974  SIOMM_DataLogSample * pDataSamples);
1975 
1992  int ConfigurePoint (int nModule, int nPoint, int nPointType);
1993 
2006  int GetModuleType (int nModule, int nPoint, int *pnModuleType);
2007 
2019  int GetPointConfigurationEx4(int nModule, int nPoint, SIOMM_PointConfigArea4 *pData);
2020 
2032  int GetPointGain (int nModule, int nPoint, float *pfGain);
2033 
2045  int GetPointOffset (int nModule, int nPoint, float *pfOffset);
2046 
2057  int SetPointConfigurationEx4(int nModule, int nPoint, SIOMM_PointConfigArea4 PtConfigData);
2058 
2075  int SetPointFilterWeight (int nModule, int nPoint, float fFilterWeight);
2076 
2085  int SetPointGain (int nModule, int nPoint, float fGain);
2086 
2095  int SetPointOffset (int nModule, int nPoint, float fOffset);
2096 
2112  int SetPointScale (int nModule, int nPoint, float fHiScale, float fLoScale);
2113 
2131  int SetPointWatchdog (int nModule, int nPoint, float fValue, int nEnabled);
2132 
2144  int SetPointName (int nModule, int nPoint, char *pchPointName);
2145 
2155  int GetDigitalPointReadAreaEx(int nModule, int nPoint, SIOMM_DigPointReadArea *pData);
2156 
2173  int CalcSetAnalogPointOffsetEx(int nModule, int nPoint, float *pfValue);
2174 
2191  int CalcSetAnalogPointGainEx(int nModule, int nPoint, float *pfValue);
2192 
2193  // Analog output clamping
2194 
2207  int SetAnalogOutputClamp(int nModule, int nPoint, float fLowClamp, float fHighClamp);
2208 
2222  int GetAnalogOutputClamp(int nModule, int nPoint, float * pfLowClamp, float * pfHighClamp);
2223 
2235  int SetAnalogOutputClamp(int nPoint, float fLowClamp, float fHighClamp);
2236 
2249  int GetAnalogOutputClamp(int nPoint, float * pfLowClamp, float * pfHighClamp);
2250 
2251  protected:
2252  SOCKET m_Socket;
2253  sockaddr_in m_SocketAddress; // for connecting our socket
2254  int m_nConnectionType; // TCP or UDP
2255 
2256 #ifdef _WIN32
2257  HANDLE m_serialHandle; // handle to our open serial port
2258 #else
2259  int m_serialHandle;
2260 #endif
2261 
2262  uint8_t m_serialAddress; // Address on the serial brain
2263  int m_serialBaudRate;
2264  int m_serialPort;
2265  bool m_serialTwoWire; // Two-wire mode or Four-wire mode (half or full duplex)
2266 
2267  ConnectionMethod m_method; // ethernet, serial, or passthru
2268 
2269  timeval m_tvTimeOut; // Timeout structure for sockets
2270  uint32_t m_nTimeOutMS; // For holding the user's timeout
2271  uint32_t m_nOpenTimeOutMS; // For holding the open timeout
2272  uint32_t m_nOpenTime; // For testing the open timeout
2273  int m_nRetries; // For holding the user's retries.
2274 
2275  int m_nAutoPUCFlag; // For holding the AutoPUC flag
2276  // sent in OpenEnet()
2277 
2278  uint8_t m_byTransactionLabel; // The current transaction label
2279 
2280  // Open/Close sockets functions
2281  int OpenSockets(char * pchIpAddressArg, int nPort, int nOpenTimeOutMS);
2282  int CloseSockets();
2283 
2284  // Generic functions for getting/setting 64-bit bitmasks
2285  int GetBitmask64(uint32_t dwDestOffset, int *pnPts63to32, int *pnPts31to0);
2286  int SetBitmask64(uint32_t dwDestOffset, int nPts63to32, int nPts31to0);
2287 
2288  // Generic functions for getting/setting analog banks
2289  int GetAnaBank(uint32_t dwDestOffset, SIOMM_AnaBank * pBankData);
2290  int SetAnaBank(uint32_t dwDestOffset, SIOMM_AnaBank BankData);
2291 
2292  // Gets the next transaction label
2293  inline void UpdateTransactionLabel() { \
2294  m_byTransactionLabel++; \
2295  if (m_byTransactionLabel>=64) \
2296  m_byTransactionLabel=0; \
2297  }
2298 
2299  inline uint32_t GetTickCount(); // Generic way of getting the time as a
2300  // tick count.
2301 
2302  private:
2303  // Private data
2304 
2305  // Private Members
2306  int ReadBlockEthernet (const uint32_t dwDestOffset, const uint16_t wDataLength,
2307  uint8_t * pbyData);
2308  int WriteBlockEthernet(const uint32_t dwDestOffset, const uint16_t wDataLength,
2309  uint8_t * pbyData);
2310  int ReadBlockSerial (const uint32_t dwDestOffset, const uint16_t wDataLength,
2311  uint8_t * pbyData);
2312  int WriteBlockSerial(const uint32_t dwDestOffset, const uint16_t wDataLength,
2313  uint8_t * pbyData);
2314  int ReadBlockPassThru(const uint32_t dwDestOffset, const uint16_t wDataLength,
2315  uint8_t * pbyData);
2316  int WriteBlockPassThru(const uint32_t dwDestOffset, const uint16_t wDataLength,
2317  uint8_t * pbyData);
2318 
2319  int BaudRateToSleepTime(int baudRate);
2320  int SendSerialMessage(uint8_t * pMessage, const uint16_t wMessageLength);
2321 };
2322 
2323 
2324 
2325 #endif // __O22SIOMM_H_
2326 
int GetPointOffset(int nModule, int nPoint, float *pfOffset)
Definition: O22SIOMM.cpp:4597
Definition: O22STRCT.h:82
uint32_t Timeout
Timeout in milliseconds to wait for the response.
Definition: O22SIOMM.h:73
int SetDigPtConfiguration(int nPoint, int nPointType, int nFeature)
Definition: O22SIOMM.cpp:2434
Definition: O22STRCT.h:309
int GetHDDigitalPointCounts(int nModule, int nPoint, int *pnCounts)
Definition: O22SIOMM.cpp:2165
int WriteBlockAsFloats(uint32_t dwDestOffset, uint16_t wDataLength, float *pfData)
Definition: O22SIOMM.cpp:4016
int GetStreamConfiguration(int *pnOnFlag, int *pnIntervalMS, int *pnPort, int *pnIoMirroringEnabled, int *pnStartAddress, int *pnDataSize)
Definition: O22SIOMM.cpp:3315
Definition: O22STRCT.h:396
int SetScratchPadBitArea(int nBits63to32, int nBits31to0)
Definition: O22SIOMM.cpp:3487
Definition: O22STRCT.h:325
int SetAnalogPointCountsEx(int nModule, int nPoint, float fValue)
Definition: O22SIOMM.cpp:4933
Definition: O22STRCT.h:125
int SetStatusWatchdogTime(int nTimeMS)
Definition: O22SIOMM.cpp:3079
int SetScratchPadInteger64Area(int nStartIndex, int nLength, int *pnData)
Definition: O22SIOMM.cpp:3893
int GetAnalogOutputClamp(int nModule, int nPoint, float *pfLowClamp, float *pfHighClamp)
Definition: O22SIOMM.cpp:4808
int GetAnaBanksEx(SIOMM_AnaBanks *pBankData)
Definition: O22SIOMM.cpp:3216
int ReadClearHDDigitalPointOnLatch(int nModule, int nPoint, int *pnState)
Definition: O22SIOMM.cpp:2224
int GetScratchPadFloatArea(int nStartIndex, int nLength, float *pfData)
Definition: O22SIOMM.cpp:3655
int IsOpenDone()
Definition: O22SIOMM.cpp:385
int GetAnaBankCountsEx(SIOMM_AnaBank *pBankData)
Definition: O22SIOMM.cpp:3187
int SetDigPtState(int nPoint, int nState)
Definition: O22SIOMM.cpp:1842
Definition: O22STRCT.h:494
int SetPtWatchdog(int nPoint, float fValue, int nEnabled)
Definition: O22SIOMM.cpp:2737
int SetScratchPadBitAreaMask(int nOnMask63to32, int nOnMask31to0, int nOffMask63to32, int nOffMask31to0)
Definition: O22SIOMM.cpp:3496
int ReadFloat(uint32_t dwDestOffset, float *pfValue)
Definition: O22SIOMM.cpp:667
int GetDigPtOffLatch(int nPoint, int *pnState)
Definition: O22SIOMM.cpp:1773
int GetAnalogPointTpoPeriodEx(int nModule, int nPoint, float *pfValue)
Definition: O22SIOMM.cpp:4908
int SetPtConfigurationEx3(int nPoint, SIOMM_PointConfigArea3 Data)
Definition: O22SIOMM.cpp:2477
int SetStreamTarget(int nTarget, char *pchIpAddressArg)
Definition: O22SIOMM.cpp:3295
int GetScratchPadStringArea(int nStartIndex, int nLength, SIOMM_ScratchPadString *pStringData)
Definition: O22SIOMM.cpp:3792
uint32_t DataBits
Number of data bits.
Definition: O22SIOMM.h:69
int SetAnaBankValuesEx(SIOMM_AnaBank BankData)
Definition: O22SIOMM.cpp:3253
int ReadClearHDDigitalPointCounts(int nModule, int nPoint, int *pnCounts)
Definition: O22SIOMM.cpp:2203
int GetAnalogPointMaxValueEx(int nModule, int nPoint, float *pfValue)
Definition: O22SIOMM.cpp:4873
int GetStatusWatchdogTime(int *pnTimeMS)
Definition: O22SIOMM.cpp:2863
int BuildWriteBlockRequest(uint8_t *pbyWriteBlockRequest, uint8_t byTransactionLabel, uint32_t dwDestinationOffset, uint16_t wDataLength, uint8_t *pbyBlockData)
Definition: O22SIOMM.cpp:545
Definition: O22STRCT.h:422
Definition: O22STRCT.h:213
unsigned short m_u16Crc
CRC16R, initialize to zero before doing the crc.
Definition: O22SIOMM.h:57
int SetStatusOperation(int nOpCode)
Definition: O22SIOMM.cpp:3052
Definition: O22STRCT.h:172
int SetDigPtCounterState(int nPoint, int nState)
Definition: O22SIOMM.cpp:1856
int SetDigBankPointStates(int nPts63to32, int nPts31to0, int nMask63to32, int nMask31to0)
Definition: O22SIOMM.cpp:1963
int GetDigBankActCounterStates(int *pnPts63to32, int *pnPts31to0)
Definition: O22SIOMM.cpp:1951
int WriteFloat(uint32_t dwDestOffset, float fValue)
Definition: O22SIOMM.cpp:690
int SetAnaPtCounts(int nPoint, float fValue)
Definition: O22SIOMM.cpp:2368
int SetDigBankOnMask(int nPts63to32, int nPts31to0)
Definition: O22SIOMM.cpp:1999
int GetStatusBootpAlways(int *pnBootpAlways)
Definition: O22SIOMM.cpp:2843
int ReadBlockAsIntegers(uint32_t dwDestOffset, uint16_t wDataLength, int *pnData)
Definition: O22SIOMM.cpp:3910
int BuildReadBlockRequest(uint8_t *pbyReadBlockRequest, uint8_t byTransactionLabel, uint32_t dwDestinationOffset, uint16_t wDataLength)
Definition: O22SIOMM.cpp:501
int UnpackWriteResponse(uint8_t *pbyWriteQuadletResponse, uint8_t *pbyTransactionLabel, uint8_t *pbyResponseCode)
Definition: O22SIOMM.cpp:637
Definition: O22STRCT.h:350
int GetAnaPtMinValue(int nPoint, float *pfValue)
Definition: O22SIOMM.cpp:2294
int GetAnalogPointReadAreaEx(int nModule, int nPoint, SIOMM_AnaPointReadArea *pData)
Definition: O22SIOMM.cpp:4886
int SetDateTime(char *pchDateTime)
Definition: O22SIOMM.cpp:3110
int SetSerialModuleConfigurationEx(int nSerialPort, SIOMM_SerialModuleConfigArea ConfigData)
Definition: O22SIOMM.cpp:3443
int SetScratchPadIntegerArea(int nStartIndex, int nLength, int *pnData)
Definition: O22SIOMM.cpp:3592
int ReadClearDigPtCounts(int nPoint, int *pnState)
Definition: O22SIOMM.cpp:2063
int GetStatusNetworkEx2(SIOMM_StatusNetwork2 *pNetworkData)
Definition: O22SIOMM.cpp:2994
int GetPointGain(int nModule, int nPoint, float *pfGain)
Definition: O22SIOMM.cpp:4582
int OpenSerial(int nPort, uint8_t nAddress, int nBaudRate, int nOpenTimeOutMS, int nAutoPUC)
Definition: O22SIOMM.cpp:124
int SetPointScale(int nModule, int nPoint, float fHiScale, float fLoScale)
Definition: O22SIOMM.cpp:4737
uint32_t Length
The 16-bit length of the Data field.
Definition: O22SIOMM.h:81
int ReadQuad(uint32_t dwDestOffset, uint32_t *pdwQuadlet)
Definition: O22SIOMM.cpp:1164
int GetDigPtCounterState(int nPoint, int *pnState)
Definition: O22SIOMM.cpp:1786
int GetAnalogPointValueEx(int nModule, int nPoint, float *pfValue)
Definition: O22SIOMM.cpp:4833
int GetAnaPtMaxValue(int nPoint, float *pfValue)
Definition: O22SIOMM.cpp:2306
int GetStreamTarget(int nTarget, int *pnIpAddressArg)
Definition: O22SIOMM.cpp:3351
int GetDigitalPointReadAreaEx(int nModule, int nPoint, SIOMM_DigPointReadArea *pData)
Definition: O22SIOMM.cpp:4508
Definition: O22STRCT.h:358
Definition: O22SIOMM.h:54
int SetCommOptions(int nTimeOutMS, int nReserved)
Definition: O22SIOMM.cpp:485
int GetScratchPadBitArea(int *pnBits63to32, int *pnBits31to0)
Definition: O22SIOMM.cpp:3477
int UnpackReadBlockResponse(uint8_t *pbyReadBlockResponse, uint8_t *pbyTransactionLabel, uint8_t *pbyResponseCode, uint16_t *pwDataLength, uint8_t *pbyBlockData)
Definition: O22SIOMM.cpp:596
uint32_t Bps
Bits per second (Data Rate).
Definition: O22SIOMM.h:68
int SetStatusWriteEx(SIOMM_StatusWrite StatusWriteData)
Definition: O22SIOMM.cpp:3042
int GetStatusLastError(int *pnErrorCode)
Definition: O22SIOMM.cpp:2833
Definition: O22STRCT.h:406
int WriteBlock(const uint32_t dwDestOffset, const uint16_t wDataLength, uint8_t *pbyData)
Definition: O22SIOMM.cpp:1185
Definition: O22STRCT.h:27
int GetStatusWriteEx(SIOMM_StatusWrite *pStatusWriteData)
Definition: O22SIOMM.cpp:3030
unsigned short m_u16Length
Length of the data payload in bytes (not including the length of this header)
Definition: O22SIOMM.h:49
int GetDigBankOffLatchStates(int *pnPts63to32, int *pnPts31to0)
Definition: O22SIOMM.cpp:1939
Definition: O22SIOMM.h:76
int GetAnaBankValuesEx(SIOMM_AnaBank *pBankData)
Definition: O22SIOMM.cpp:3177
int GetDigPtCounts(int nPoint, int *pnValue)
Definition: O22SIOMM.cpp:1799
int GetDigPtState(int nPoint, int *pnState)
Definition: O22SIOMM.cpp:1747
int WriteQuad(uint32_t dwDestOffset, uint32_t dwQuadlet)
Definition: O22SIOMM.cpp:1716
int SetPointGain(int nModule, int nPoint, float fGain)
Definition: O22SIOMM.cpp:4678
int ReadClearAnalogPointMaxValueEx(int nModule, int nPoint, float *pfValue)
Definition: O22SIOMM.cpp:4977
int SetAnaPtTpoPeriod(int nPoint, float fValue)
Definition: O22SIOMM.cpp:2378
int ConfigurePoint(int nPoint, int nPointType)
Definition: O22SIOMM.cpp:2412
int SetScratchPadFloatArea(int nStartIndex, int nLength, float *pfData)
Definition: O22SIOMM.cpp:3729
uint32_t Parity
Parity mode.
Definition: O22SIOMM.h:70
int GetDigBankPointStates(int *pnPts63to32, int *pnPts31to0)
Definition: O22SIOMM.cpp:1915
Definition: O22SIOMM.h:65
int GetStatusHardwareEx2(SIOMM_StatusHardware2 *pHardwareData)
Definition: O22SIOMM.cpp:2925
int SetPointConfigurationEx4(int nModule, int nPoint, SIOMM_PointConfigArea4 PtConfigData)
Definition: O22SIOMM.cpp:4612
int GetPtConfigurationEx(int nPoint, SIOMM_PointConfigArea *pData)
Definition: O22SIOMM.cpp:2701
int GetAnaPtTpoPeriod(int nPoint, float *pfValue)
Definition: O22SIOMM.cpp:2318
int ReadClearDigPtOnLatch(int nPoint, int *pnState)
Definition: O22SIOMM.cpp:2076
unsigned char m_u8Type
Protocol type (2 for kernel mode)
Definition: O22SIOMM.h:56
int GetScratchPadInteger64Area(int nStartIndex, int nLength, int *pnData)
Definition: O22SIOMM.cpp:3859
int GetScratchPadIntegerArea(int nStartIndex, int nLength, int *pnData)
Definition: O22SIOMM.cpp:3518
int SetDigBankActCounterMask(int nPts63to32, int nPts31to0)
Definition: O22SIOMM.cpp:2015
int GetStatusDegrees(int *pnDegrees)
Definition: O22SIOMM.cpp:2853
int GetAnaBankMaxValuesEx(SIOMM_AnaBank *pBankData)
Definition: O22SIOMM.cpp:3206
Definition: O22STRCT.h:368
int GetAnaPtReadAreaEx(int nPoint, SIOMM_AnaPointReadArea *pData)
Definition: O22SIOMM.cpp:2330
unsigned short m_u16Crc
CRC16R, initialize to zero before doing the crc.
Definition: O22SIOMM.h:48
int ReadClearHDDigitalPointOffLatch(int nModule, int nPoint, int *pnState)
Definition: O22SIOMM.cpp:2247
int ReadBlockAsFloats(uint32_t dwDestOffset, uint16_t wDataLength, float *pfData)
Definition: O22SIOMM.cpp:3947
int GetCommTimeout()
Definition: O22SIOMM.h:221
int SetDigitalEventConfigurationEx(int nEvent, SIOMM_DigitalEventConfigArea Data)
Definition: O22SIOMM.cpp:4290
int SetPtConfigurationEx2(int nPoint, SIOMM_PointConfigArea2 Data)
Definition: O22SIOMM.cpp:2534
int GetHDDigitalPointOnLatch(int nModule, int nPoint, int *pnState)
Definition: O22SIOMM.cpp:2123
int GetDigPtReadAreaEx(int nPoint, SIOMM_DigPointReadArea *pData)
Definition: O22SIOMM.cpp:1812
int SetScratchPadStringArea(int nStartIndex, int nLength, SIOMM_ScratchPadString *pStringData)
Definition: O22SIOMM.cpp:3829
int ReadClearAnalogPointMinValueEx(int nModule, int nPoint, float *pfValue)
Definition: O22SIOMM.cpp:4957
int GetAnaPtCounts(int nPoint, float *pfValue)
Definition: O22SIOMM.cpp:2282
int SetPointOffset(int nModule, int nPoint, float fOffset)
Definition: O22SIOMM.cpp:4723
Definition: O22STRCT.h:185
int CalcSetAnaPtOffset(int nPoint, float *pfValue)
Definition: O22SIOMM.cpp:2755
uint32_t Address
The 8-bit multidrop address of the serial brain you want to talk to.
Definition: O22SIOMM.h:79
int ReadClearAnaPtMaxValue(int nPoint, float *pfValue)
Definition: O22SIOMM.cpp:2400
int GetAnalogPointMinValueEx(int nModule, int nPoint, float *pfValue)
Definition: O22SIOMM.cpp:4860
int GetDateTime(char *pchDateTime)
Definition: O22SIOMM.cpp:3088
Definition: O22STRCT.h:74
unsigned char m_u8Type
Protocol type (2 for kernel mode)
Definition: O22SIOMM.h:47
int GetHDDigitalPointState(int nModule, int nPoint, int *pnState)
Definition: O22SIOMM.cpp:2102
int SetHDDigitalPointState(int nModule, int nPoint, int nState)
Definition: O22SIOMM.cpp:2186
uint32_t StopBits
Number of stop bits.
Definition: O22SIOMM.h:71
uint32_t Enable
Enables or Disables the Serial Pass Through feature.
Definition: O22SIOMM.h:67
int SetDigBankDeactCounterMask(int nPts63to32, int nPts31to0)
Definition: O22SIOMM.cpp:2023
int SetTimerEventConfigurationEx(int nEvent, SIOMM_TimerEventConfigArea Data)
Definition: O22SIOMM.cpp:4391
int GetDigPtOnLatch(int nPoint, int *pnState)
Definition: O22SIOMM.cpp:1760
int SetPidLoopConfigurationEx(int nPid, SIOMM_PidLoopConfigArea Data)
Definition: O22SIOMM.cpp:4149
int CalcSetAnalogPointOffsetEx(int nModule, int nPoint, float *pfValue)
Definition: O22SIOMM.cpp:4435
int SetAnaPtConfiguration(int nPoint, int nPointType, float fOffset, float fGain, float fHiScale, float fLoScale)
Definition: O22SIOMM.cpp:2454
int SetStatusDegrees(int nDegFlag)
Definition: O22SIOMM.cpp:3070
int SetAnaPtValue(int nPoint, float fValue)
Definition: O22SIOMM.cpp:2358
int GetPtConfigurationEx2(int nPoint, SIOMM_PointConfigArea2 *pData)
Definition: O22SIOMM.cpp:2663
int GetStatusVersionEx(SIOMM_StatusVersion *pVersionData)
Definition: O22SIOMM.cpp:2872
uint32_t Type
The 8-bit packet type identifier. Tells you what kind of packet it is.
Definition: O22SIOMM.h:80
int ReadBlock(const uint32_t dwDestOffset, const uint16_t wDataLength, uint8_t *pbyData)
Definition: O22SIOMM.cpp:704
Definition: O22STRCT.h:45
int GetAnaPtValue(int nPoint, float *pfValue)
Definition: O22SIOMM.cpp:2270
int OpenSerialPassThru(char *pchIpAddressArg, int nPort, int nSerialPort, uint8_t nSerialAddress, int nSerialBaudRate, bool bTwoWire, int nOpenTimeOutMS, int nAutoPUC, int nConnectionType=SIOMM_TCP)
Definition: O22SIOMM.cpp:185
int OpenEnet(char *pchIpAddressArg, int nPort, int nOpenTimeOutMS, int nAutoPUC)
Definition: O22SIOMM.cpp:100
Definition: O22STRCT.h:61
int SetAnaBankCountsEx(SIOMM_AnaBank BankData)
Definition: O22SIOMM.cpp:3262
int GetStatusHardwareEx(SIOMM_StatusHardware *pHardwareData)
Definition: O22SIOMM.cpp:2898
int GetPtConfigurationEx3(int nPoint, SIOMM_PointConfigArea3 *pData)
Definition: O22SIOMM.cpp:2612
int GetStreamReadAreaEx(SIOMM_StreamStandardBlock *pStreamData)
Definition: O22SIOMM.cpp:3368
int GetHDDigitalPointOffLatch(int nModule, int nPoint, int *pnState)
Definition: O22SIOMM.cpp:2144
int GetAnaBankMinValuesEx(SIOMM_AnaBank *pBankData)
Definition: O22SIOMM.cpp:3197
int CalcSetAnalogPointGainEx(int nModule, int nPoint, float *pfValue)
Definition: O22SIOMM.cpp:4454
Definition: O22STRCT.h:233
int SetPtConfigurationEx(int nPoint, SIOMM_PointConfigArea Data)
Definition: O22SIOMM.cpp:2579
int SetSerialEventConfigurationEx(int nEvent, SIOMM_SerialEventConfigArea Data)
Definition: O22SIOMM.cpp:4361
int GetSerialModuleConfigurationEx(int nSerialPort, SIOMM_SerialModuleConfigArea *pConfigData)
Definition: O22SIOMM.cpp:3400
unsigned char m_u8Address
Brain's address.
Definition: O22SIOMM.h:46
Definition: O22STRCT.h:278
int SetAnalogOutputClamp(int nModule, int nPoint, float fLowClamp, float fHighClamp)
Definition: O22SIOMM.cpp:4787
int SetPointWatchdog(int nModule, int nPoint, float fValue, int nEnabled)
Definition: O22SIOMM.cpp:4762
int CalcSetAnaPtGain(int nPoint, float *pfValue)
Definition: O22SIOMM.cpp:2768
Definition: O22STRCT.h:98
Definition: O22STRCT.h:447
int ReadClearDigPtOffLatch(int nPoint, int *pnState)
Definition: O22SIOMM.cpp:2089
int SetDigBankOffMask(int nPts63to32, int nPts31to0)
Definition: O22SIOMM.cpp:2007
Definition: O22STRCT.h:255
int SetPointFilterWeight(int nModule, int nPoint, float fFilterWeight)
Definition: O22SIOMM.cpp:4664
int GetPointConfigurationEx4(int nModule, int nPoint, SIOMM_PointConfigArea4 *pData)
Definition: O22SIOMM.cpp:4541
Definition: O22STRCT.h:150
int OpenEnet2(char *pchIpAddressArg, int nPort, int nOpenTimeOutMS, int nAutoPUC, int nConnectionType)
Definition: O22SIOMM.cpp:112
Definition: O22SIOMM.h:44
int GetModuleType(int nPoint, int *pnModuleType)
Definition: O22SIOMM.cpp:2422
unsigned short m_u16Length
Length of the data payload in bytes (not including the length of this header)
Definition: O22SIOMM.h:58
Definition: O22STRCT.h:378
int SetStreamConfiguration(int nOnFlag, int nIntervalMS, int nPort, int nIoMirroringEnabled, int nStartAddress, int nDataSize)
Definition: O22SIOMM.cpp:3272
int Close()
Definition: O22SIOMM.cpp:1729
int GetDigBankOnLatchStates(int *pnPts63to32, int *pnPts31to0)
Definition: O22SIOMM.cpp:1927
int SetAnalogPointTpoPeriodEx(int nModule, int nPoint, float fValue)
Definition: O22SIOMM.cpp:4945
int SetAlarmEventConfigurationEx(int nEvent, SIOMM_AlarmEventConfigArea Data)
Definition: O22SIOMM.cpp:4321
Definition: O22SIOMM.h:106
int SetEventMsgConfigurationEx(int nMsg, SIOMM_EventMsgConfigArea Data)
Definition: O22SIOMM.cpp:4249
int GetDataLoggingSamplesEx(int nStartIndex, int nLength, SIOMM_DataLogSample *pDataSamples)
Definition: O22SIOMM.cpp:4049
int ReadClearAnaPtMinValue(int nPoint, float *pfValue)
Definition: O22SIOMM.cpp:2388
uint32_t Duplex
Full-Duplex = ASCII "F", Half-Duplex = ASCII "H".
Definition: O22SIOMM.h:72
int SetPointName(int nModule, int nPoint, char *pchPointName)
Definition: O22SIOMM.cpp:4692
int GetStatusNetworkEx(SIOMM_StatusNetwork *pNetworkData)
Definition: O22SIOMM.cpp:2965
int GetDigBankReadAreaEx(SIOMM_DigBankReadArea *pData)
Definition: O22SIOMM.cpp:2032
int GetAnalogPointCountsEx(int nModule, int nPoint, float *pfValue)
Definition: O22SIOMM.cpp:4847
int GetStatusPUC(int *pnPUCFlag)
Definition: O22SIOMM.cpp:2823
int WriteBlockAsIntegers(uint32_t dwDestOffset, uint16_t wDataLength, int *pnData)
Definition: O22SIOMM.cpp:3983
Definition: O22STRCT.h:532
int SetStatusBootpRequest(int nFlag)
Definition: O22SIOMM.cpp:3061
int SetAnalogPointValueEx(int nModule, int nPoint, float fValue)
Definition: O22SIOMM.cpp:4921