@ -43,6 +43,7 @@ bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
const uint8_t UECFG0XData ,
const uint8_t UECFG0XData ,
const uint8_t UECFG1XData )
const uint8_t UECFG1XData )
{
{
# if defined(CONTROL_ONLY_DEVICE) || defined(ORDERED_EP_CONFIG)
Endpoint_SelectEndpoint ( Number ) ;
Endpoint_SelectEndpoint ( Number ) ;
Endpoint_EnableEndpoint ( ) ;
Endpoint_EnableEndpoint ( ) ;
@ -51,6 +52,51 @@ bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
UECFG1X = UECFG1XData ;
UECFG1X = UECFG1XData ;
return Endpoint_IsConfigured ( ) ;
return Endpoint_IsConfigured ( ) ;
# else
uint8_t UECFG0XTemp [ ENDPOINT_TOTAL_ENDPOINTS ] ;
uint8_t UECFG1XTemp [ ENDPOINT_TOTAL_ENDPOINTS ] ;
uint8_t UEIENXTemp [ ENDPOINT_TOTAL_ENDPOINTS ] ;
for ( uint8_t EPNum = 0 ; EPNum < ENDPOINT_TOTAL_ENDPOINTS ; EPNum + + )
{
Endpoint_SelectEndpoint ( EPNum ) ;
UECFG0XTemp [ EPNum ] = UECFG0X ;
UECFG1XTemp [ EPNum ] = UECFG1X ;
UEIENXTemp [ EPNum ] = UEIENX ;
}
UECFG0XTemp [ Number ] = UECFG0XData ;
UECFG1XTemp [ Number ] = UECFG1XData ;
UEIENXTemp [ Number ] = 0 ;
for ( uint8_t EPNum = 1 ; EPNum < ENDPOINT_TOTAL_ENDPOINTS ; EPNum + + )
{
Endpoint_SelectEndpoint ( EPNum ) ;
UEIENX = 0 ;
UEINTX = 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 ] ;
UEIENX = UEIENXTemp [ EPNum ] ;
if ( ! ( Endpoint_IsConfigured ( ) ) )
return false ;
}
Endpoint_SelectEndpoint ( Number ) ;
return true ;
# endif
}
}
void Endpoint_ClearEndpoints ( void )
void Endpoint_ClearEndpoints ( void )