@ -44,21 +44,49 @@ bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
const uint8_t UECFG0XData ,
const uint8_t UECFG0XData ,
const uint8_t UECFG1XData )
const uint8_t UECFG1XData )
{
{
Endpoint_SelectEndpoint ( Number ) ;
uint8_t UECFG0XTemp [ ENDPOINT_TOTAL_ENDPOINTS ] ;
Endpoint_EnableEndpoint ( ) ;
uint8_t UECFG1XTemp [ ENDPOINT_TOTAL_ENDPOINTS ] ;
for ( uint8_t EPNum = 0 ; EPNum < ENDPOINT_TOTAL_ENDPOINTS ; EPNum + + )
{
Endpoint_SelectEndpoint ( EPNum ) ;
UECFG0XTemp [ EPNum ] = UECFG0X ;
UECFG1XTemp [ EPNum ] = UECFG1X ;
}
UECFG0XTemp [ Number ] = UECFG0XData ;
UECFG1XTemp [ Number ] = UECFG1XData ;
for ( uint8_t EPNum = 1 ; EPNum < ENDPOINT_TOTAL_ENDPOINTS ; EPNum + + )
{
Endpoint_SelectEndpoint ( EPNum ) ;
UEIENX = 0 ;
UEINTX = 0 ;
UECFG1X = 0 ;
UECFG1X = 0 ;
Endpoint_DisableEndpoint ( ) ;
}
for ( uint8_t EPNum = 0 ; EPNum < ENDPOINT_TOTAL_ENDPOINTS ; EPNum + + )
{
if ( ! ( UECFG1XTemp [ EPNum ] & ( 1 < < ALLOC ) ) )
continue ;
Endpoint_SelectEndpoint ( EPNum ) ;
Endpoint_EnableEndpoint ( ) ;
UECFG0X = UECFG0XTemp [ EPNum ] ;
UECFG1X = UECFG1XTemp [ EPNum ] ;
UECFG0X = UECFG0XData ;
if ( ! ( Endpoint_IsConfigured ( ) ) )
UECFG1X = UECFG1XData ;
return false ;
}
return Endpoint_IsConfigured ( ) ;
Endpoint_SelectEndpoint ( Number ) ;
return true ;
}
}
void Endpoint_ClearEndpoints ( void )
void Endpoint_ClearEndpoints ( void )
{
{
UEINT = 0 ;
for ( uint8_t EPNum = 0 ; EPNum < ENDPOINT_TOTAL_ENDPOINTS ; EPNum + + )
for ( uint8_t EPNum = 0 ; EPNum < ENDPOINT_TOTAL_ENDPOINTS ; EPNum + + )
{
{
Endpoint_SelectEndpoint ( EPNum ) ;
Endpoint_SelectEndpoint ( EPNum ) ;