uint16_tmode:2;// either normal or ATLE(auto length extraction)
uint16_tis_next_valid:1;
uint16_t:1;
uint16_tis_isochronous:1;// is an iso endpoint
uint16_tmax_packet_size:11;
volatileuint16_tbuffer_length;
//------------- Word 2 -------------//
volatileuint8_t*buffer_start_addr;
//------------- Word 3 -------------//
volatileuint16_tis_retired:1;// initialized to zero
volatileuint16_tstatus:4;
volatileuint16_tiso_last_packet_valid:1;
volatileuint16_tatle_is_lsb_extracted:1;// used in ATLE mode
volatileuint16_tatle_is_msb_extracted:1;// used in ATLE mode
volatileuint16_tatle_message_length_position:6;// used in ATLE mode
uint16_t:2;
volatileuint16_tpresent_count;// The number of bytes transferred by the DMA engine. The DMA engine updates this field after completing each packet transfer.
//------------- Word 4 -------------//
// uint32_t iso_packet_size_addr; // iso only, can be omitted for non-iso
}ATTR_ALIGNED(4)dcd_dma_descriptor_t;
#define DCD_DD_NUM 10 // TODO scale with configure