예제 #1
0
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();
}
예제 #2
0
C1WireForWindows::C1WireForWindows()
{
   // Connect to service
   m_Socket = ConnectToService();
}
예제 #3
0
C1WireForWindows::C1WireForWindows()
{
   // Connect to service
   m_Socket = ConnectToService();
   _log.Log(LOG_STATUS,"Using 1-Wire support (Windows)...");
}