Beispiel #1
0
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;
}
Beispiel #2
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();
    }
Beispiel #3
0
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);
}
Beispiel #4
0
    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();
    }
Beispiel #5
0
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);
}
Beispiel #6
0
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);
}
Beispiel #7
0
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;
}