22// Created by Aleksey Timin on 11/16/19.
33//
44
5+ #if defined(_WIN32) || defined(WIN32) || defined(_WIN64)
6+ #include < winsock2.h>
7+ #define OS_Windows (1 )
8+ #endif
9+
510#include < cstdlib>
611#include < sstream>
712#include < cip/connectionManager/NetworkConnectionParams.h>
@@ -22,50 +27,63 @@ using eipScanner::utils::Logger;
2227using eipScanner::utils::LogLevel;
2328
2429int main () {
25- Logger::setLogLevel (LogLevel::DEBUG);
26- auto si = std::make_shared<SessionInfo>(" 127.0.0.1" , 0xAF12 , std::chrono::seconds (10 ));
27- auto messageRouter = std::make_shared<MessageRouter>();
30+ Logger::setLogLevel (LogLevel::DEBUG);
31+
32+ #if OS_Windows
33+ WSADATA wsaData;
34+ int winsockStart = WSAStartup (MAKEWORD (2 , 2 ), &wsaData);
35+ if (winsockStart != 0 ) {
36+ Logger (LogLevel::ERROR) << " Failed to start WinSock - error code: " << winsockStart;
37+ return EXIT_FAILURE;
38+ }
39+ #endif
40+
41+ auto si = std::make_shared<SessionInfo>(" 127.0.0.1" , 0xAF12 , std::chrono::seconds (10 ));
42+ auto messageRouter = std::make_shared<MessageRouter>();
2843
29- // Read attribute
30- auto response = messageRouter->sendRequest (si, ServiceCodes::GET_ATTRIBUTE_SINGLE,
31- EPath (0x01 , 1 , 1 ),
32- {});
44+ // Read attribute
45+ auto response = messageRouter->sendRequest (si, ServiceCodes::GET_ATTRIBUTE_SINGLE,
46+ EPath (0x01 , 1 , 1 ),
47+ {});
3348
34- if (response.getGeneralStatusCode () == GeneralStatusCodes::SUCCESS) {
35- Buffer buffer (response.getData ());
36- CipUint vendorId;
37- buffer >> vendorId;
49+ if (response.getGeneralStatusCode () == GeneralStatusCodes::SUCCESS) {
50+ Buffer buffer (response.getData ());
51+ CipUint vendorId;
52+ buffer >> vendorId;
3853
39- Logger (LogLevel::INFO) << " Vendor ID is " << vendorId;
40- } else {
41- Logger (LogLevel::ERROR) << " We got error=0x" << std::hex << response.getGeneralStatusCode ();
42- }
54+ Logger (LogLevel::INFO) << " Vendor ID is " << vendorId;
55+ } else {
56+ Logger (LogLevel::ERROR) << " We got error=0x" << std::hex << response.getGeneralStatusCode ();
57+ }
4358
44- // Write attribute
45- // See OpenEr EDS 160 line
46- Buffer assembly151;
47- assembly151 << CipUsint (1 )
48- << CipUsint (2 )
49- << CipUsint (3 )
50- << CipUsint (4 )
51- << CipUsint (5 )
52- << CipUsint (6 )
53- << CipUsint (7 )
54- << CipUsint (8 )
55- << CipUsint (9 )
56- << CipUsint (10 );
59+ // Write attribute
60+ // See OpenEr EDS 160 line
61+ Buffer assembly151;
62+ assembly151 << CipUsint (1 )
63+ << CipUsint (2 )
64+ << CipUsint (3 )
65+ << CipUsint (4 )
66+ << CipUsint (5 )
67+ << CipUsint (6 )
68+ << CipUsint (7 )
69+ << CipUsint (8 )
70+ << CipUsint (9 )
71+ << CipUsint (10 );
5772
5873
59- response = messageRouter->sendRequest (si, ServiceCodes::SET_ATTRIBUTE_SINGLE,
60- EPath (0x04 , 151 , 3 ),
61- assembly151.data ());
74+ response = messageRouter->sendRequest (si, ServiceCodes::SET_ATTRIBUTE_SINGLE,
75+ EPath (0x04 , 151 , 3 ),
76+ assembly151.data ());
6277
63- if (response.getGeneralStatusCode () == GeneralStatusCodes::SUCCESS) {
64- Logger (LogLevel::INFO) << " Writing is successful" ;
65- } else {
66- Logger (LogLevel::ERROR) << " We got error=0x" << std::hex << response.getGeneralStatusCode ();
67- }
78+ if (response.getGeneralStatusCode () == GeneralStatusCodes::SUCCESS) {
79+ Logger (LogLevel::INFO) << " Writing is successful" ;
80+ } else {
81+ Logger (LogLevel::ERROR) << " We got error=0x" << std::hex << response.getGeneralStatusCode ();
82+ }
6883
84+ #if OS_Windows
85+ WSACleanup ();
86+ #endif
6987
70- return 0 ;
71- }
88+ return EXIT_SUCCESS ;
89+ }
0 commit comments