void BaosIpEnumerator::waitForSearchResponseFrames(MulticastSocket& socket)
{
	std::vector<unsigned char> buffer;
	while (waitForRx(socket, buffer))
	{
		poco_trace(LOGGER(), format("Received search response: %s", LoggerFormatter::toHex(buffer)));
		addDevice(buffer, socket.address().host());
	}
}
void BaosIpEnumerator::sendSearchRequestFrame(MulticastSocket& socket)
{
	const IPAddress& address = socket.address().host();
	StringTokenizer stringTokenizer(address.toString(), ".");
	BOOST_ASSERT(stringTokenizer.count() == 4 && "Invalid IP Address");

	const unsigned short port = socket.address().port();

	// build SEARCH_REQUEST frame
	const std::vector<unsigned char> request =
	{
		0x06, 0x10, 0x02, 0x01, 0x00, 0x0E, 0x08, 0x01,
		static_cast<unsigned char>(NumberParser::parse(stringTokenizer[0])),
		static_cast<unsigned char>(NumberParser::parse(stringTokenizer[1])),
		static_cast<unsigned char>(NumberParser::parse(stringTokenizer[2])),
		static_cast<unsigned char>(NumberParser::parse(stringTokenizer[3])),
		static_cast<unsigned char>((port >> 8) & 0xFF),
		static_cast<unsigned char>(port & 0xFF)
	};

	// send to socket
	const SocketAddress destAddress(MulticastProtocolConstants::Address, MulticastProtocolConstants::Port);
	socket.sendTo(&request.at(0), static_cast<int>(request.size()), destAddress);
}