bool WPASupplicant::ExpectResponse(const char *expected) { const size_t length = strlen(expected); char buffer[4096]; assert(length <= sizeof(buffer)); return ReadTimeout(buffer, sizeof(buffer)) == ssize_t(length) && memcmp(buffer, expected, length) == 0; }
std::string BasicModem::readLine(Time::Counter<double>& timer) { if (m_lines.waitForItems(timer.getRemaining())) { std::string line = m_lines.pop(); if (line != m_last_cmd) return line; else return readLine(timer); } throw ReadTimeout(); }
bool WPASupplicant::Status(WifiStatus &status) { if (!SendCommand("STATUS")) return false; char buffer[4096]; ssize_t nbytes = ReadTimeout(buffer, sizeof(buffer) - 1); if (nbytes <= 0) return false; buffer[nbytes] = 0; return ParseStatus(status, buffer); }
void BasicModem::readRaw(Time::Counter<double>& timer, uint8_t* data, unsigned data_size) { unsigned bytes_read = 0; while (!timer.overflow()) { if (m_bytes.waitForItems(timer.getRemaining())) data[bytes_read++] = m_bytes.pop(); if (bytes_read == data_size) return; } throw ReadTimeout(); }
int WPASupplicant::ListNetworks(WifiConfiguredNetworkInfo *dest, unsigned max) { assert(dest != nullptr); assert(max > 0); if (!SendCommand("LIST_NETWORKS")) return -1; char buffer[4096]; ssize_t nbytes = ReadTimeout(buffer, sizeof(buffer) - 1); if (nbytes <= 5) return -1; buffer[nbytes] = 0; return ParseListResults(dest, max, buffer); }
int WPASupplicant::ScanResults(WifiVisibleNetwork *dest, unsigned max) { assert(dest != nullptr); assert(max > 0); if (!SendCommand("SCAN_RESULTS")) return -1; char buffer[4096]; ssize_t nbytes = ReadTimeout(buffer, sizeof(buffer) - 1); if (nbytes <= 5) return -1; buffer[nbytes] = 0; return ParseScanResults(dest, max, buffer); }
int WPASupplicant::AddNetwork() { if (!SendCommand("ADD_NETWORK")) return -1; char buffer[4096]; ssize_t nbytes = ReadTimeout(buffer, sizeof(buffer)); if (nbytes < 2 || buffer[nbytes - 1] != '\n') return -1; buffer[nbytes - 1] = 0; char *endptr; unsigned id = ParseUnsigned(buffer, &endptr); if (endptr == buffer || *endptr != 0) return -1; return id; }