853 lines
20 KiB
C
853 lines
20 KiB
C
|
/********************************** (C) COPYRIGHT *******************************
|
||
|
* File Name : usb_regs.c
|
||
|
* Author : WCH
|
||
|
* Version : V1.0.0
|
||
|
* Date : 2021/08/08
|
||
|
* Description : Interface functions to USB cell registers
|
||
|
*********************************************************************************
|
||
|
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
|
||
|
* Attention: This software (modified or not) and binary are used for
|
||
|
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
|
||
|
*******************************************************************************/
|
||
|
#include "../../driver/inc/usb_lib.h"
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* @fn SetCNTR.
|
||
|
*
|
||
|
* @brief Set the CNTR register value.
|
||
|
*
|
||
|
* @param wRegValue: new register value.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetCNTR(uint16_t wRegValue)
|
||
|
{
|
||
|
_SetCNTR(wRegValue);
|
||
|
}
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* @fn GetCNTR.
|
||
|
*
|
||
|
* @brief returns the CNTR register value.
|
||
|
*
|
||
|
* @param None.
|
||
|
*
|
||
|
* @return CNTR register Value.
|
||
|
*/
|
||
|
uint16_t GetCNTR(void)
|
||
|
{
|
||
|
return(_GetCNTR());
|
||
|
}
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* @fn SetISTR.
|
||
|
*
|
||
|
* @brief Set the ISTR register value.
|
||
|
*
|
||
|
* @param wRegValue: new register value.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetISTR(uint16_t wRegValue)
|
||
|
{
|
||
|
_SetISTR(wRegValue);
|
||
|
}
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* @fn GetISTR
|
||
|
*
|
||
|
* @brief Returns the ISTR register value.
|
||
|
*
|
||
|
* @param None.
|
||
|
*
|
||
|
* @return ISTR register Value
|
||
|
*/
|
||
|
uint16_t GetISTR(void)
|
||
|
{
|
||
|
return(_GetISTR());
|
||
|
}
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* @fn GetFNR
|
||
|
*
|
||
|
* @brief Returns the FNR register value.
|
||
|
*
|
||
|
* @param None.
|
||
|
*
|
||
|
* @return FNR register Value
|
||
|
*/
|
||
|
uint16_t GetFNR(void)
|
||
|
{
|
||
|
return(_GetFNR());
|
||
|
}
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* @fn SetDADDR
|
||
|
*
|
||
|
* @brief Set the DADDR register value.
|
||
|
*
|
||
|
* @param wRegValue: new register value.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetDADDR(uint16_t wRegValue)
|
||
|
{
|
||
|
_SetDADDR(wRegValue);
|
||
|
}
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* @fn GetDADDR
|
||
|
*
|
||
|
* @brief Returns the DADDR register value.
|
||
|
*
|
||
|
* @return DADDR register Value
|
||
|
*
|
||
|
*/
|
||
|
uint16_t GetDADDR(void)
|
||
|
{
|
||
|
return(_GetDADDR());
|
||
|
}
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* @fn SetBTABLE
|
||
|
*
|
||
|
* @brief Set the BTABLE.
|
||
|
*
|
||
|
* @param wRegValue: New register value.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetBTABLE(uint16_t wRegValue)
|
||
|
{
|
||
|
_SetBTABLE(wRegValue);
|
||
|
}
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* @fn GetBTABLE.
|
||
|
*
|
||
|
* @param Returns the BTABLE register value.
|
||
|
*
|
||
|
* @return BTABLE address.
|
||
|
*/
|
||
|
uint16_t GetBTABLE(void)
|
||
|
{
|
||
|
return(_GetBTABLE());
|
||
|
}
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* @fn SetENDPOINT
|
||
|
*
|
||
|
* @brief Set the Endpoint register value.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
* wRegValue.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetENDPOINT(uint8_t bEpNum, uint16_t wRegValue)
|
||
|
{
|
||
|
_SetENDPOINT(bEpNum, wRegValue);
|
||
|
}
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* @fn GetENDPOINT
|
||
|
*
|
||
|
* @brief Return the Endpoint register value.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return Endpoint register value.
|
||
|
*/
|
||
|
uint16_t GetENDPOINT(uint8_t bEpNum)
|
||
|
{
|
||
|
return(_GetENDPOINT(bEpNum));
|
||
|
}
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* @fn SetEPType
|
||
|
*
|
||
|
* @brief sets the type in the endpoint register.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
* wType: type definition.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetEPType(uint8_t bEpNum, uint16_t wType)
|
||
|
{
|
||
|
_SetEPType(bEpNum, wType);
|
||
|
}
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* @fn GetEPType
|
||
|
*
|
||
|
* @brief Returns the endpoint type.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return Endpoint Type
|
||
|
*/
|
||
|
uint16_t GetEPType(uint8_t bEpNum)
|
||
|
{
|
||
|
return(_GetEPType(bEpNum));
|
||
|
}
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* @fn SetEPTxStatus
|
||
|
*
|
||
|
* @brief Set the status of Tx endpoint.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
* wState: new state.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetEPTxStatus(uint8_t bEpNum, uint16_t wState)
|
||
|
{
|
||
|
_SetEPTxStatus(bEpNum, wState);
|
||
|
}
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* @fn SetEPRxStatus
|
||
|
*
|
||
|
* @brief Set the status of Rx endpoint.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
* wState: new state.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetEPRxStatus(uint8_t bEpNum, uint16_t wState)
|
||
|
{
|
||
|
_SetEPRxStatus(bEpNum, wState);
|
||
|
}
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* @fn SetDouBleBuffEPStall
|
||
|
*
|
||
|
* @brief sets the status for Double Buffer Endpoint to STALL
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
* bDir: Endpoint direction.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetDouBleBuffEPStall(uint8_t bEpNum, uint8_t bDir)
|
||
|
{
|
||
|
uint16_t Endpoint_DTOG_Status;
|
||
|
|
||
|
Endpoint_DTOG_Status = GetENDPOINT(bEpNum);
|
||
|
|
||
|
if (bDir == EP_DBUF_OUT)
|
||
|
{
|
||
|
_SetENDPOINT(bEpNum, Endpoint_DTOG_Status & ~EPRX_DTOG1);
|
||
|
}
|
||
|
else if (bDir == EP_DBUF_IN)
|
||
|
{
|
||
|
_SetENDPOINT(bEpNum, Endpoint_DTOG_Status & ~EPTX_DTOG1);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* @fn GetEPTxStatus
|
||
|
*
|
||
|
* @brief Returns the endpoint Tx status.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return Endpoint TX Status
|
||
|
*/
|
||
|
uint16_t GetEPTxStatus(uint8_t bEpNum)
|
||
|
{
|
||
|
return(_GetEPTxStatus(bEpNum));
|
||
|
}
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* @fn GetEPRxStatus
|
||
|
*
|
||
|
* @brief Returns the endpoint Rx status.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return Endpoint RX Status
|
||
|
*/
|
||
|
uint16_t GetEPRxStatus(uint8_t bEpNum)
|
||
|
{
|
||
|
return(_GetEPRxStatus(bEpNum));
|
||
|
}
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* @fn SetEPTxValid
|
||
|
*
|
||
|
* @brief Valid the endpoint Tx Status.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetEPTxValid(uint8_t bEpNum)
|
||
|
{
|
||
|
_SetEPTxStatus(bEpNum, EP_TX_VALID);
|
||
|
}
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* @fn SetEPRxValid
|
||
|
*
|
||
|
* @brief Valid the endpoint Rx Status.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetEPRxValid(uint8_t bEpNum)
|
||
|
{
|
||
|
_SetEPRxStatus(bEpNum, EP_RX_VALID);
|
||
|
}
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* @fn SetEP_KIND
|
||
|
*
|
||
|
* @brief Clear the EP_KIND bit.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetEP_KIND(uint8_t bEpNum)
|
||
|
{
|
||
|
_SetEP_KIND(bEpNum);
|
||
|
}
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* @fn ClearEP_KIND
|
||
|
*
|
||
|
* @brief set the EP_KIND bit.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void ClearEP_KIND(uint8_t bEpNum)
|
||
|
{
|
||
|
_ClearEP_KIND(bEpNum);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn Clear_Status_Out
|
||
|
*
|
||
|
* @brief Clear the Status Out of the related Endpoint
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void Clear_Status_Out(uint8_t bEpNum)
|
||
|
{
|
||
|
_ClearEP_KIND(bEpNum);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn Set_Status_Out
|
||
|
*
|
||
|
* @brief Set the Status Out of the related Endpoint
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void Set_Status_Out(uint8_t bEpNum)
|
||
|
{
|
||
|
_SetEP_KIND(bEpNum);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn SetEPDoubleBuff
|
||
|
*
|
||
|
* @brief Enable the double buffer feature for the endpoint.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetEPDoubleBuff(uint8_t bEpNum)
|
||
|
{
|
||
|
_SetEP_KIND(bEpNum);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn ClearEPDoubleBuff
|
||
|
*
|
||
|
* @brief Disable the double buffer feature for the endpoint.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void ClearEPDoubleBuff(uint8_t bEpNum)
|
||
|
{
|
||
|
_ClearEP_KIND(bEpNum);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn GetTxStallStatus
|
||
|
*
|
||
|
* @brief Returns the Stall status of the Tx endpoint.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return Tx Stall status.
|
||
|
*/
|
||
|
uint16_t GetTxStallStatus(uint8_t bEpNum)
|
||
|
{
|
||
|
return(_GetTxStallStatus(bEpNum));
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn GetRxStallStatus
|
||
|
*
|
||
|
* @brief Returns the Stall status of the Rx endpoint.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return Rx Stall status.
|
||
|
*/
|
||
|
uint16_t GetRxStallStatus(uint8_t bEpNum)
|
||
|
{
|
||
|
return(_GetRxStallStatus(bEpNum));
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn ClearEP_CTR_RX
|
||
|
*
|
||
|
* @brief Clear the CTR_RX bit.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void ClearEP_CTR_RX(uint8_t bEpNum)
|
||
|
{
|
||
|
_ClearEP_CTR_RX(bEpNum);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn ClearEP_CTR_TX
|
||
|
*
|
||
|
* @brief Clear the CTR_TX bit.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void ClearEP_CTR_TX(uint8_t bEpNum)
|
||
|
{
|
||
|
_ClearEP_CTR_TX(bEpNum);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn ToggleDTOG_RX
|
||
|
*
|
||
|
* @brief Toggle the DTOG_RX bit.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void ToggleDTOG_RX(uint8_t bEpNum)
|
||
|
{
|
||
|
_ToggleDTOG_RX(bEpNum);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn ToggleDTOG_TX
|
||
|
*
|
||
|
* @brief Toggle the DTOG_TX bit.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void ToggleDTOG_TX(uint8_t bEpNum)
|
||
|
{
|
||
|
_ToggleDTOG_TX(bEpNum);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn ClearDTOG_RX.
|
||
|
*
|
||
|
* @brief Clear the DTOG_RX bit.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void ClearDTOG_RX(uint8_t bEpNum)
|
||
|
{
|
||
|
_ClearDTOG_RX(bEpNum);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn ClearDTOG_TX.
|
||
|
*
|
||
|
* @brief Clear the DTOG_TX bit.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void ClearDTOG_TX(uint8_t bEpNum)
|
||
|
{
|
||
|
_ClearDTOG_TX(bEpNum);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn SetEPAddress
|
||
|
*
|
||
|
* @brief Set the endpoint address.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
* bAddr: New endpoint address.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetEPAddress(uint8_t bEpNum, uint8_t bAddr)
|
||
|
{
|
||
|
_SetEPAddress(bEpNum, bAddr);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn GetEPAddress
|
||
|
*
|
||
|
* @brief Get the endpoint address.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return Endpoint address.
|
||
|
*/
|
||
|
uint8_t GetEPAddress(uint8_t bEpNum)
|
||
|
{
|
||
|
return(_GetEPAddress(bEpNum));
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn SetEPTxAddr
|
||
|
*
|
||
|
* @brief Set the endpoint Tx buffer address.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
* wAddr: new address.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetEPTxAddr(uint8_t bEpNum, uint16_t wAddr)
|
||
|
{
|
||
|
_SetEPTxAddr(bEpNum, wAddr);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn SetEPRxAddr
|
||
|
*
|
||
|
* @brief Set the endpoint Rx buffer address.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
* wAddr: new address.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetEPRxAddr(uint8_t bEpNum, uint16_t wAddr)
|
||
|
{
|
||
|
_SetEPRxAddr(bEpNum, wAddr);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn GetEPTxAddr
|
||
|
*
|
||
|
* @brief Returns the endpoint Tx buffer address.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return Rx buffer address.
|
||
|
*/
|
||
|
uint16_t GetEPTxAddr(uint8_t bEpNum)
|
||
|
{
|
||
|
return(_GetEPTxAddr(bEpNum));
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn GetEPRxAddr.
|
||
|
*
|
||
|
* @brief Returns the endpoint Rx buffer address.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @returnRx buffer address.
|
||
|
*/
|
||
|
uint16_t GetEPRxAddr(uint8_t bEpNum)
|
||
|
{
|
||
|
return(_GetEPRxAddr(bEpNum));
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn SetEPTxCount.
|
||
|
*
|
||
|
* @brief Set the Tx count.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
* wCount: new count value.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetEPTxCount(uint8_t bEpNum, uint16_t wCount)
|
||
|
{
|
||
|
_SetEPTxCount(bEpNum, wCount);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn SetEPCountRxReg.
|
||
|
*
|
||
|
* @brief Set the Count Rx Register value.
|
||
|
*
|
||
|
* @param *pdwReg: point to the register.
|
||
|
* wCount: the new register value.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetEPCountRxReg(uint32_t *pdwReg, uint16_t wCount)
|
||
|
{
|
||
|
_SetEPCountRxReg(dwReg, wCount);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn SetEPRxCount
|
||
|
*
|
||
|
* @brief Set the Rx count.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
* wCount: the new count value.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetEPRxCount(uint8_t bEpNum, uint16_t wCount)
|
||
|
{
|
||
|
_SetEPRxCount(bEpNum, wCount);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn GetEPTxCount
|
||
|
*
|
||
|
* @brief Get the Tx count.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return Tx count value.
|
||
|
*/
|
||
|
uint16_t GetEPTxCount(uint8_t bEpNum)
|
||
|
{
|
||
|
return(_GetEPTxCount(bEpNum));
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn GetEPRxCount
|
||
|
*
|
||
|
* @brief Get the Rx count.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return Rx count value.
|
||
|
*/
|
||
|
uint16_t GetEPRxCount(uint8_t bEpNum)
|
||
|
{
|
||
|
return(_GetEPRxCount(bEpNum));
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn SetEPDblBuffAddr
|
||
|
*
|
||
|
* @brief Set the addresses of the buffer 0 and 1.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
* wBuf0Addr: new address of buffer 0.
|
||
|
* wBuf1Addr: new address of buffer 1.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetEPDblBuffAddr(uint8_t bEpNum, uint16_t wBuf0Addr, uint16_t wBuf1Addr)
|
||
|
{
|
||
|
_SetEPDblBuffAddr(bEpNum, wBuf0Addr, wBuf1Addr);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn SetEPDblBuf0Addr
|
||
|
*
|
||
|
* @brief Set the Buffer 1 address.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number
|
||
|
* wBuf0Addr: new address.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetEPDblBuf0Addr(uint8_t bEpNum, uint16_t wBuf0Addr)
|
||
|
{
|
||
|
_SetEPDblBuf0Addr(bEpNum, wBuf0Addr);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn SetEPDblBuf1Addr
|
||
|
*
|
||
|
* @brief Set the Buffer 1 address.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number
|
||
|
* wBuf1Addr: new address.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetEPDblBuf1Addr(uint8_t bEpNum, uint16_t wBuf1Addr)
|
||
|
{
|
||
|
_SetEPDblBuf1Addr(bEpNum, wBuf1Addr);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn GetEPDblBuf0Addr
|
||
|
*
|
||
|
* @brief Returns the address of the Buffer 0.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
uint16_t GetEPDblBuf0Addr(uint8_t bEpNum)
|
||
|
{
|
||
|
return(_GetEPDblBuf0Addr(bEpNum));
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn GetEPDblBuf1Addr
|
||
|
*
|
||
|
* @brief Returns the address of the Buffer 1.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return Address of the Buffer 1.
|
||
|
*/
|
||
|
uint16_t GetEPDblBuf1Addr(uint8_t bEpNum)
|
||
|
{
|
||
|
return(_GetEPDblBuf1Addr(bEpNum));
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn SetEPDblBuffCount
|
||
|
*
|
||
|
* @brief Set the number of bytes for a double Buffer
|
||
|
* endpoint.
|
||
|
*
|
||
|
* @param bEpNum,bDir, wCount
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetEPDblBuffCount(uint8_t bEpNum, uint8_t bDir, uint16_t wCount)
|
||
|
{
|
||
|
_SetEPDblBuffCount(bEpNum, bDir, wCount);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn SetEPDblBuf0Count
|
||
|
*
|
||
|
* @brief Set the number of bytes in the buffer 0 of a double Buffer
|
||
|
* endpoint.
|
||
|
*
|
||
|
* @param bEpNum, bDir, wCount
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetEPDblBuf0Count(uint8_t bEpNum, uint8_t bDir, uint16_t wCount)
|
||
|
{
|
||
|
_SetEPDblBuf0Count(bEpNum, bDir, wCount);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn SetEPDblBuf1Count
|
||
|
*
|
||
|
* @brief Set the number of bytes in the buffer 0 of a double Buffer
|
||
|
* endpoint.
|
||
|
*
|
||
|
* @param bEpNum, bDir, wCount
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void SetEPDblBuf1Count(uint8_t bEpNum, uint8_t bDir, uint16_t wCount)
|
||
|
{
|
||
|
_SetEPDblBuf1Count(bEpNum, bDir, wCount);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn GetEPDblBuf0Count
|
||
|
*
|
||
|
* @brief Returns the number of byte received in the buffer 0 of a double
|
||
|
* Buffer endpoint.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return Endpoint Buffer 0 count
|
||
|
*/
|
||
|
uint16_t GetEPDblBuf0Count(uint8_t bEpNum)
|
||
|
{
|
||
|
return(_GetEPDblBuf0Count(bEpNum));
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn GetEPDblBuf1Count
|
||
|
*
|
||
|
* @brief Returns the number of data received in the buffer 1 of a double
|
||
|
* Buffer endpoint.
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return Endpoint Buffer 1 count.
|
||
|
*/
|
||
|
uint16_t GetEPDblBuf1Count(uint8_t bEpNum)
|
||
|
{
|
||
|
return(_GetEPDblBuf1Count(bEpNum));
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn GetEPDblBufDir
|
||
|
*
|
||
|
* @brief gets direction of the double buffered endpoint
|
||
|
*
|
||
|
* @param bEpNum: Endpoint Number.
|
||
|
*
|
||
|
* @return EP_DBUF_OUT, EP_DBUF_IN,
|
||
|
* EP_DBUF_ERR if the endpoint counter not yet programmed.
|
||
|
*/
|
||
|
EP_DBUF_DIR GetEPDblBufDir(uint8_t bEpNum)
|
||
|
{
|
||
|
if ((uint16_t)(*_pEPRxCount(bEpNum) & 0xFC00) != 0)
|
||
|
return(EP_DBUF_OUT);
|
||
|
else if (((uint16_t)(*_pEPTxCount(bEpNum)) & 0x03FF) != 0)
|
||
|
return(EP_DBUF_IN);
|
||
|
else
|
||
|
return(EP_DBUF_ERR);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn FreeUserBuffer
|
||
|
*
|
||
|
* @brief free buffer used from the application realizing it to the line
|
||
|
toggles bit SW_BUF in the double buffered endpoint register
|
||
|
*
|
||
|
* @param bEpNum, bDir
|
||
|
*
|
||
|
* @return None.
|
||
|
*/
|
||
|
void FreeUserBuffer(uint8_t bEpNum, uint8_t bDir)
|
||
|
{
|
||
|
if (bDir == EP_DBUF_OUT)
|
||
|
{
|
||
|
_ToggleDTOG_TX(bEpNum);
|
||
|
}
|
||
|
else if (bDir == EP_DBUF_IN)
|
||
|
{
|
||
|
_ToggleDTOG_RX(bEpNum);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* @fn ToWord
|
||
|
*
|
||
|
* @brief merge two byte in a word.
|
||
|
*
|
||
|
* @param bh: byte high, bl: bytes low.
|
||
|
*
|
||
|
* @return resulted word.
|
||
|
*/
|
||
|
uint16_t ToWord(uint8_t bh, uint8_t bl)
|
||
|
{
|
||
|
uint16_t wRet;
|
||
|
wRet = (uint16_t)bl | ((uint16_t)bh << 8);
|
||
|
|
||
|
return(wRet);
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
* @fn ByteSwap
|
||
|
*
|
||
|
* @brief Swap two byte in a word.
|
||
|
*
|
||
|
* @param wSwW: word to Swap.
|
||
|
*
|
||
|
* @return resulted word.
|
||
|
*/
|
||
|
uint16_t ByteSwap(uint16_t wSwW)
|
||
|
{
|
||
|
uint8_t bTemp;
|
||
|
uint16_t wRet;
|
||
|
bTemp = (uint8_t)(wSwW & 0xff);
|
||
|
wRet = (wSwW >> 8) | ((uint16_t)bTemp << 8);
|
||
|
|
||
|
return(wRet);
|
||
|
}
|