bool C1WireForWindows::IsAvailable() { #ifdef _DEBUG return false; #endif static boost::optional<bool> IsAvailable; if (IsAvailable.is_initialized()) return IsAvailable.get(); // Make a connection only to know if 1-wire is avalaible SOCKET theSocket = ConnectToService(); if (theSocket == INVALID_SOCKET) { IsAvailable=false; return false; } // Request Json::Value reqRoot; reqRoot["IsAvailable"]=""; Json::FastWriter writer; // Send request and wait for answer std::string answer = ::SendAndReceive(theSocket,writer.write(reqRoot)); // Answer processing if (answer.empty()) { IsAvailable=false; DisconnectFromService(theSocket); return false; } Json::Value ansRoot; Json::Reader reader; if (!reader.parse(answer,ansRoot)) { IsAvailable=false; DisconnectFromService(theSocket); return false; } DisconnectFromService(theSocket); IsAvailable=ansRoot.get("Available",false).asBool(); return IsAvailable.get(); }
C1WireForWindows::C1WireForWindows() { // Connect to service m_Socket = ConnectToService(); }
C1WireForWindows::C1WireForWindows() { // Connect to service m_Socket = ConnectToService(); _log.Log(LOG_STATUS,"Using 1-Wire support (Windows)..."); }