clean up
This commit is contained in:
		@@ -102,7 +102,7 @@ typedef struct
 | 
			
		||||
 | 
			
		||||
} dcd_data_t;
 | 
			
		||||
 | 
			
		||||
CFG_TUSB_MEM_SECTION ATTR_ALIGNED(128) static dcd_data_t dcd_data;
 | 
			
		||||
CFG_TUSB_MEM_SECTION ATTR_ALIGNED(128) static dcd_data_t _dcd;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------+
 | 
			
		||||
@@ -176,7 +176,7 @@ static void bus_reset(void)
 | 
			
		||||
	LPC_USB->USBNDDRIntClr   = 0xFFFFFFFF;
 | 
			
		||||
	LPC_USB->USBSysErrIntClr = 0xFFFFFFFF;
 | 
			
		||||
 | 
			
		||||
	tu_memclr(&dcd_data, sizeof(dcd_data_t));
 | 
			
		||||
	tu_memclr(&_dcd, sizeof(dcd_data_t));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool dcd_init(uint8_t rhport)
 | 
			
		||||
@@ -191,7 +191,7 @@ bool dcd_init(uint8_t rhport)
 | 
			
		||||
  bus_reset();
 | 
			
		||||
 | 
			
		||||
  LPC_USB->USBDevIntEn = (DEV_INT_DEVICE_STATUS_MASK | DEV_INT_ENDPOINT_SLOW_MASK | DEV_INT_ERROR_MASK);
 | 
			
		||||
	LPC_USB->USBUDCAH    = (uint32_t) dcd_data.udca;
 | 
			
		||||
	LPC_USB->USBUDCAH    = (uint32_t) _dcd.udca;
 | 
			
		||||
	LPC_USB->USBDMAIntEn = (DMA_INT_END_OF_XFER_MASK | DMA_INT_ERROR_MASK );
 | 
			
		||||
 | 
			
		||||
	sie_write(SIE_CMDCODE_DEVICE_STATUS, 1, 1); // connect
 | 
			
		||||
@@ -289,14 +289,14 @@ bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const * p_endpoint_desc)
 | 
			
		||||
  edpt_set_max_packet_size(ep_id, p_endpoint_desc->wMaxPacketSize.size);
 | 
			
		||||
 | 
			
		||||
	//------------- first DD prepare -------------//
 | 
			
		||||
	dcd_dma_descriptor_t* const p_dd = &dcd_data.dd[ep_id][0];
 | 
			
		||||
	dcd_dma_descriptor_t* const p_dd = &_dcd.dd[ep_id][0];
 | 
			
		||||
	tu_memclr(p_dd, sizeof(dcd_dma_descriptor_t));
 | 
			
		||||
 | 
			
		||||
	p_dd->isochronous  = (p_endpoint_desc->bmAttributes.xfer == TUSB_XFER_ISOCHRONOUS) ? 1 : 0;
 | 
			
		||||
	p_dd->max_packet_size = p_endpoint_desc->wMaxPacketSize.size;
 | 
			
		||||
	p_dd->retired      = 1; // inactive at first
 | 
			
		||||
 | 
			
		||||
	dcd_data.udca[ ep_id ] = p_dd; // hook to UDCA
 | 
			
		||||
	_dcd.udca[ ep_id ] = p_dd; // hook to UDCA
 | 
			
		||||
 | 
			
		||||
	sie_write(SIE_CMDCODE_ENDPOINT_SET_STATUS+ep_id, 1, 0); // clear all endpoint status
 | 
			
		||||
 | 
			
		||||
@@ -308,7 +308,7 @@ bool dcd_edpt_busy(uint8_t rhport, uint8_t ep_addr)
 | 
			
		||||
  (void) rhport;
 | 
			
		||||
 | 
			
		||||
  uint8_t ep_id = edpt_addr2phy( ep_addr );
 | 
			
		||||
  return (dcd_data.udca[ep_id] != NULL && !dcd_data.udca[ep_id]->retired);
 | 
			
		||||
  return (_dcd.udca[ep_id] != NULL && !_dcd.udca[ep_id]->retired);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void dcd_edpt_stall(uint8_t rhport, uint8_t ep_addr)
 | 
			
		||||
@@ -366,23 +366,23 @@ static bool control_xact(uint8_t rhport, uint8_t dir, uint8_t * buffer, uint8_t
 | 
			
		||||
 | 
			
		||||
  if ( dir )
 | 
			
		||||
  {
 | 
			
		||||
    dcd_data.control.in_bytes = len;
 | 
			
		||||
    _dcd.control.in_bytes = len;
 | 
			
		||||
    control_ep_write(buffer, len);
 | 
			
		||||
  }else
 | 
			
		||||
  {
 | 
			
		||||
    if ( dcd_data.control.out_received )
 | 
			
		||||
    if ( _dcd.control.out_received )
 | 
			
		||||
    {
 | 
			
		||||
      // Already received the DATA OUT packet
 | 
			
		||||
      dcd_data.control.out_received = false;
 | 
			
		||||
      dcd_data.control.out_buffer = NULL;
 | 
			
		||||
      dcd_data.control.out_bytes  = 0;
 | 
			
		||||
      _dcd.control.out_received = false;
 | 
			
		||||
      _dcd.control.out_buffer = NULL;
 | 
			
		||||
      _dcd.control.out_bytes  = 0;
 | 
			
		||||
 | 
			
		||||
      uint8_t received = control_ep_read(buffer, len);
 | 
			
		||||
      dcd_event_xfer_complete(0, 0, received, XFER_RESULT_SUCCESS, true);
 | 
			
		||||
    }else
 | 
			
		||||
    {
 | 
			
		||||
      dcd_data.control.out_buffer = buffer;
 | 
			
		||||
      dcd_data.control.out_bytes  = len;
 | 
			
		||||
      _dcd.control.out_buffer = buffer;
 | 
			
		||||
      _dcd.control.out_bytes  = len;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -401,13 +401,13 @@ bool dcd_edpt_xfer(uint8_t rhport, uint8_t ep_addr, uint8_t* buffer, uint16_t to
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  uint8_t ep_id = edpt_addr2phy(ep_addr);
 | 
			
		||||
  dcd_dma_descriptor_t* const p_first_dd = &dcd_data.dd[ep_id][0];
 | 
			
		||||
  dcd_dma_descriptor_t* const p_first_dd = &_dcd.dd[ep_id][0];
 | 
			
		||||
 | 
			
		||||
  //------------- fixed DD is already queued a xfer -------------//
 | 
			
		||||
  if ( p_first_dd->buffer_length )
 | 
			
		||||
  {
 | 
			
		||||
    // setup new dd
 | 
			
		||||
    dcd_dma_descriptor_t* const p_dd = &dcd_data.dd[ ep_id ][1];
 | 
			
		||||
    dcd_dma_descriptor_t* const p_dd = &_dcd.dd[ ep_id ][1];
 | 
			
		||||
    tu_memclr(p_dd, sizeof(dcd_dma_descriptor_t));
 | 
			
		||||
 | 
			
		||||
    dd_xfer_init(p_dd, buffer, total_bytes);
 | 
			
		||||
@@ -428,7 +428,7 @@ bool dcd_edpt_xfer(uint8_t rhport, uint8_t ep_addr, uint8_t* buffer, uint16_t to
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  p_first_dd->retired = 0; // activate xfer
 | 
			
		||||
  dcd_data.udca[ep_id] = p_first_dd;
 | 
			
		||||
  _dcd.udca[ep_id] = p_first_dd;
 | 
			
		||||
  LPC_USB->USBEpDMAEn = BIT_(ep_id);
 | 
			
		||||
 | 
			
		||||
  if ( ep_id % 2 )
 | 
			
		||||
@@ -449,13 +449,13 @@ static void endpoint_non_control_isr(uint32_t eot_int)
 | 
			
		||||
  {
 | 
			
		||||
    if ( BIT_TEST_(eot_int, ep_id) )
 | 
			
		||||
    {
 | 
			
		||||
      dcd_dma_descriptor_t* const p_first_dd = &dcd_data.dd[ep_id][0];
 | 
			
		||||
      dcd_dma_descriptor_t* const p_last_dd  = dcd_data.dd[ep_id] + (p_first_dd->next_valid ? 1 : 0); // Maximum is 2 QTD are queued in an endpoint
 | 
			
		||||
      dcd_dma_descriptor_t* const p_first_dd = &_dcd.dd[ep_id][0];
 | 
			
		||||
      dcd_dma_descriptor_t* const p_last_dd  = _dcd.dd[ep_id] + (p_first_dd->next_valid ? 1 : 0); // Maximum is 2 QTD are queued in an endpoint
 | 
			
		||||
 | 
			
		||||
      // only handle when Controller already finished the last DD
 | 
			
		||||
      if ( dcd_data.udca[ep_id] == p_last_dd )
 | 
			
		||||
      if ( _dcd.udca[ep_id] == p_last_dd )
 | 
			
		||||
      {
 | 
			
		||||
        dcd_data.udca[ep_id] = p_first_dd; // UDCA currently points to the last DD, change to the fixed DD
 | 
			
		||||
        _dcd.udca[ep_id] = p_first_dd; // UDCA currently points to the last DD, change to the fixed DD
 | 
			
		||||
        p_first_dd->buffer_length = 0; // buffer length is used to determined if first dd is queued in pipe xfer function
 | 
			
		||||
 | 
			
		||||
        if ( p_last_dd->int_on_complete )
 | 
			
		||||
@@ -495,26 +495,26 @@ static void endpoint_control_isr(void)
 | 
			
		||||
    // Control out complete
 | 
			
		||||
    if ( endpoint_int_status & BIT_(0) )
 | 
			
		||||
    {
 | 
			
		||||
      if ( dcd_data.control.out_buffer )
 | 
			
		||||
      if ( _dcd.control.out_buffer )
 | 
			
		||||
      {
 | 
			
		||||
        // software queued transfer previously
 | 
			
		||||
        uint8_t received = control_ep_read(dcd_data.control.out_buffer, dcd_data.control.out_bytes);
 | 
			
		||||
        uint8_t received = control_ep_read(_dcd.control.out_buffer, _dcd.control.out_bytes);
 | 
			
		||||
 | 
			
		||||
        dcd_data.control.out_buffer = NULL;
 | 
			
		||||
        dcd_data.control.out_bytes = 0;
 | 
			
		||||
        _dcd.control.out_buffer = NULL;
 | 
			
		||||
        _dcd.control.out_bytes = 0;
 | 
			
		||||
 | 
			
		||||
        dcd_event_xfer_complete(0, 0, received, XFER_RESULT_SUCCESS, true);
 | 
			
		||||
      }else
 | 
			
		||||
      {
 | 
			
		||||
        // mark as received
 | 
			
		||||
        dcd_data.control.out_received = true;
 | 
			
		||||
        _dcd.control.out_received = true;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Control In complete
 | 
			
		||||
    if ( endpoint_int_status & BIT_(1) )
 | 
			
		||||
    {
 | 
			
		||||
      dcd_event_xfer_complete(0, TUSB_DIR_IN_MASK, dcd_data.control.in_bytes, XFER_RESULT_SUCCESS, true);
 | 
			
		||||
      dcd_event_xfer_complete(0, TUSB_DIR_IN_MASK, _dcd.control.in_bytes, XFER_RESULT_SUCCESS, true);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user