示例#1
0
void usb_configuration_changed(usb_device_t* const device)
{
  if( device->configuration->number )
  {
    /* RECEIVER ON */
    set_receiver_mode(get_receiver_mode());
  } else
  {
    /* RECEIVER OFF */
    /* Configuration number equal 0 means usb bus reset. */
    set_receiver_mode(RECEIVER_MODE_OFF);
  }
}
示例#2
0
文件: NRF24L01P.cpp 项目: erictj/Cosa
int
NRF24L01P::recv(uint8_t& src, uint8_t& port, 
		void* buf, size_t size, 
		uint32_t ms)
{
  // Run in receiver mode
  set_receiver_mode();

  // Check if there is data available on any pipe
  uint32_t start = RTC::millis();
  while (!available()) {
    if ((ms != 0) && (RTC::since(start) > ms)) return (-2);
    Power::sleep(m_mode);
  } 
  m_dest = (m_status.rx_p_no == 1 ? m_addr.device : 0);
  write(STATUS, _BV(RX_DR));
  
  // Check for payload error from device (Tab. 20, pp. 51, R_RX_PL_WID)
  uint8_t count = read(R_RX_PL_WID) - 2;
  if ((count > PAYLOAD_MAX) || (count > size)) {
    write(FLUSH_RX);
    return (-1);
  }

  // Read the source address, port and payload
  spi.begin(this);
  m_status = spi.transfer(R_RX_PAYLOAD);
  src = spi.transfer(0);
  port = spi.transfer(0);
  spi.read(buf, count);
  spi.end();
  return (count);
}