uint8_t my_uart_usb_num_to_read(void){
  uint8_t num=0;

  if(!Is_device_enumerated())
     return 0;

  Usb_select_endpoint(RX_EP);
  if (Is_usb_receive_out()){
    num = Usb_byte_counter();
    if (num == 0)
      Usb_ack_receive_out();
  }
  return num;
}
Beispiel #2
0
/** 
  * @brief This function checks if a character has been received on the USB bus.
  * 
  * @return bit (true if a byte is ready to be read)
  */
bit uart_usb_test_hit(void)
{
  if (!rx_counter)
  {
	// Preserve the currently selected endpoint
	uint8_t uenum = Usb_get_selected_endpoint();
    Usb_select_endpoint(VCP_RX_EP);
    if (Is_usb_receive_out())
    {
      rx_counter = Usb_byte_counter();
      if (!rx_counter)
        Usb_ack_receive_out();
    }
	// Restore previously selected endpoint
	UENUM = uenum;
  }
  return (rx_counter!=0);
}
/** 
  * @brief This function checks if a character has been received on the USB bus.
  * 
  * @return bit (true if a byte is ready to be read)
  */
bit uart_usb_test_hit(void)
{
  if(!Is_device_enumerated())
     return FALSE;

  if (!rx_counter)
  {
    Usb_select_endpoint(RX_EP);
    if (Is_usb_receive_out())
    {
      rx_counter = Usb_byte_counter();
      if (!rx_counter)
      {
        Usb_ack_receive_out();
      }
    }
  }
  return (rx_counter!=0);
}
Beispiel #4
0
int USB::read(char* buf, int len)
{
  if(!isEnumerated())
    return 0;

  Usb_select_endpoint(EP_TEMP_OUT);

  if(!hasData())
    return 0;

  U16 num = Usb_byte_counter();
  if(len < num)
    num = len;

  char* ptr = buf;
  for(U16 i = num; i; i--)
    *ptr++ = Usb_read_byte();
  Usb_ack_receive_out();

  return num;
}