void doSwitchMode(Mode mode){ arduino.connect(ip, port); if (mode != currentMode){ currentMode = mode; char data; switch (mode){ case Mode::SolidWhite: data = (char) 0; break; case Mode::Marquee: data = (char) 1; break; case Mode::ColorCycle: data = (char) 2; break; case Mode::Pew: data = (char) 3; break; default: break; } char* dataPointer = &data; arduino.send(dataPointer, sizeof(data)); } arduino.disconnect(); }
inline bool connect(sf::IpAddress mIp, unsigned short mPort) { if(busy) { ssvu::lo("ManagedSocket") << "Error: already connected" << std::endl; return false; } for(int i{0}; i < 5; ++i) { if(!busy && socket.connect(mIp, mPort) == sf::Socket::Done) goto succeed; std::this_thread::sleep_for(std::chrono::milliseconds(50)); } return false; succeed: if(!busy) { ssvu::lo("ManagedSocket") << "Connecting..." << std::endl; busy = true; handlerFuture = std::async(std::launch::async, [this]{ while(busy) update(); }); } ssvu::lo("ManagedSocket") << "Connected to " << mIp.toString() << ":" << mPort << std::endl; return true; }