void LibUsbThreadTest::testNonHotplug() {
  if (!m_context) {
    return;
  }

  ola::usb::LibUsbSimpleThread thread(m_context);
  OLA_ASSERT_TRUE(thread.Init());
  AttemptDeviceOpen(&thread);
}
void LibUsbThreadTest::testHotplug() {
  if (!m_context) {
    return;
  }

  ola::usb::LibUsbHotplugThread thread(m_context, hotplug_callback,
                                                  NULL);
  OLA_ASSERT_TRUE(thread.Init());
  AttemptDeviceOpen(&thread);
  thread.Shutdown();
}
/**
 * Send an unsolicited Robe messages
 */
void MockEndpoint::SendUnsolicitedRobeData(
    uint8_t response_label,
    const uint8_t *response_payload_data,
    unsigned int response_payload_size) {
  unsigned int response_size;
  uint8_t *response = BuildRobeMessage(response_label,
                                       response_payload_data,
                                       response_payload_size,
                                       &response_size);
  OLA_ASSERT_TRUE(m_descriptor->Send(response, response_size));
  delete[] response;
}
Exemple #4
0
bool MockUDPSocket::RecvFrom(uint8_t *buffer,
                             ssize_t *data_read,
                             ola::network::IPV4Address &source,  // NOLINT
                             uint16_t &port) const {  // NOLINT
    OLA_ASSERT_FALSE(m_received_data.empty());
    const received_data &new_data = m_received_data.front();

    OLA_ASSERT_TRUE(static_cast<unsigned int>(*data_read) >= new_data.size);
    unsigned int size = std::min(new_data.size,
                                 static_cast<unsigned int>(*data_read));
    memcpy(buffer, new_data.data, size);
    *data_read = new_data.size;
    source = new_data.address;
    port = new_data.port;

    if (new_data.free_data)
        delete[] new_data.data;
    m_received_data.pop();
    return true;
}
/**
 * Called when there is new data available. Make sure it matches what we
 * expected and if there is return data send it.
 */
void MockEndpoint::DescriptorReady() {
  OLA_ASSERT_FALSE(m_expected_data.empty());

  while (m_descriptor->DataRemaining()) {
    expected_data call = m_expected_data.front();
    m_expected_data.pop();

    uint8_t data[call.expected_data_frame.length];
    unsigned int data_received = 0;

    while (data_received != call.expected_data_frame.length) {
      unsigned int offset = data_received;
      m_descriptor->Receive(data + offset,
                            call.expected_data_frame.length - offset,
                            data_received);
      data_received += offset;
    }

    OLA_ASSERT_DATA_EQUALS(call.expected_data_frame.data,
                           call.expected_data_frame.length,
                           data,
                           data_received);

    if (call.free_request)
      delete[] call.expected_data_frame.data;

    if (call.send_response)
      OLA_ASSERT_TRUE(m_descriptor->Send(call.return_data_frame.data,
                                         call.return_data_frame.length));

    if (call.callback)
      call.callback->Run();

    if (call.free_response)
      delete[] call.return_data_frame.data;
  }
}
/**
 * Send some data from this endpoint without having first received anything
 */
void MockEndpoint::SendUnsolicited(const uint8_t *data,
                                   unsigned int length) {
  OLA_ASSERT_TRUE(m_descriptor->Send(data, length));
}