749 lines
27 KiB
C
749 lines
27 KiB
C
/******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
|
|
* File Name : usb_regs.c
|
|
* Author : MCD Application Team
|
|
* Version : V2.2.1
|
|
* Date : 09/22/2008
|
|
* Description : Interface functions to USB cell registers
|
|
********************************************************************************
|
|
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
|
|
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
|
|
* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
|
|
* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
|
|
* CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
|
|
* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
|
|
*******************************************************************************/
|
|
|
|
/* Includes ------------------------------------------------------------------*/
|
|
#include "usb_lib.h"
|
|
|
|
/* Private typedef -----------------------------------------------------------*/
|
|
/* Private define ------------------------------------------------------------*/
|
|
/* Private macro -------------------------------------------------------------*/
|
|
/* Private variables ---------------------------------------------------------*/
|
|
/* Extern variables ----------------------------------------------------------*/
|
|
/* Private function prototypes -----------------------------------------------*/
|
|
/* Private functions ---------------------------------------------------------*/
|
|
|
|
/*******************************************************************************
|
|
* Function Name : SetCNTR.
|
|
* Description : Set the CNTR register value.
|
|
* Input : wRegValue: new register value.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetCNTR(u16 wRegValue)
|
|
{
|
|
_SetCNTR(wRegValue);
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* Function Name : GetCNTR.
|
|
* Description : returns the CNTR register value.
|
|
* Input : None.
|
|
* Output : None.
|
|
* Return : CNTR register Value.
|
|
*******************************************************************************/
|
|
u16 GetCNTR(void)
|
|
{
|
|
return(_GetCNTR());
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* Function Name : SetISTR.
|
|
* Description : Set the ISTR register value.
|
|
* Input : wRegValue: new register value.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetISTR(u16 wRegValue)
|
|
{
|
|
_SetISTR(wRegValue);
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* Function Name : GetISTR
|
|
* Description : Returns the ISTR register value.
|
|
* Input : None.
|
|
* Output : None.
|
|
* Return : ISTR register Value
|
|
*******************************************************************************/
|
|
u16 GetISTR(void)
|
|
{
|
|
return(_GetISTR());
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* Function Name : GetFNR
|
|
* Description : Returns the FNR register value.
|
|
* Input : None.
|
|
* Output : None.
|
|
* Return : FNR register Value
|
|
*******************************************************************************/
|
|
u16 GetFNR(void)
|
|
{
|
|
return(_GetFNR());
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* Function Name : SetDADDR
|
|
* Description : Set the DADDR register value.
|
|
* Input : wRegValue: new register value.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetDADDR(u16 wRegValue)
|
|
{
|
|
_SetDADDR(wRegValue);
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* Function Name : GetDADDR
|
|
* Description : Returns the DADDR register value.
|
|
* Input : None.
|
|
* Output : None.
|
|
* Return : DADDR register Value
|
|
*******************************************************************************/
|
|
u16 GetDADDR(void)
|
|
{
|
|
return(_GetDADDR());
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* Function Name : SetBTABLE
|
|
* Description : Set the BTABLE.
|
|
* Input : wRegValue: New register value.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetBTABLE(u16 wRegValue)
|
|
{
|
|
_SetBTABLE(wRegValue);
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* Function Name : GetBTABLE.
|
|
* Description : Returns the BTABLE register value.
|
|
* Input : None.
|
|
* Output : None.
|
|
* Return : BTABLE address.
|
|
*******************************************************************************/
|
|
u16 GetBTABLE(void)
|
|
{
|
|
return(_GetBTABLE());
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* Function Name : SetENDPOINT
|
|
* Description : Setthe Endpoint register value.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* wRegValue.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetENDPOINT(u8 bEpNum, u16 wRegValue)
|
|
{
|
|
_SetENDPOINT(bEpNum, wRegValue);
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* Function Name : GetENDPOINT
|
|
* Description : Return the Endpoint register value.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : Endpoint register value.
|
|
*******************************************************************************/
|
|
u16 GetENDPOINT(u8 bEpNum)
|
|
{
|
|
return(_GetENDPOINT(bEpNum));
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* Function Name : SetEPType
|
|
* Description : sets the type in the endpoint register.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* wType: type definition.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetEPType(u8 bEpNum, u16 wType)
|
|
{
|
|
_SetEPType(bEpNum, wType);
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* Function Name : GetEPType
|
|
* Description : Returns the endpoint type.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : Endpoint Type
|
|
*******************************************************************************/
|
|
u16 GetEPType(u8 bEpNum)
|
|
{
|
|
return(_GetEPType(bEpNum));
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* Function Name : SetEPTxStatus
|
|
* Description : Set the status of Tx endpoint.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* wState: new state.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetEPTxStatus(u8 bEpNum, u16 wState)
|
|
{
|
|
_SetEPTxStatus(bEpNum, wState);
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* Function Name : SetEPRxStatus
|
|
* Description : Set the status of Rx endpoint.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* wState: new state.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetEPRxStatus(u8 bEpNum, u16 wState)
|
|
{
|
|
_SetEPRxStatus(bEpNum, wState);
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* Function Name : SetDouBleBuffEPStall
|
|
* Description : sets the status for Double Buffer Endpoint to STALL
|
|
* Input : bEpNum: Endpoint Number.
|
|
* bDir: Endpoint direction.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetDouBleBuffEPStall(u8 bEpNum, u8 bDir)
|
|
{
|
|
u16 Endpoint_DTOG_Status;
|
|
Endpoint_DTOG_Status = GetENDPOINT(bEpNum);
|
|
if (bDir == EP_DBUF_OUT)
|
|
{ /* OUT double buffered endpoint */
|
|
_SetENDPOINT(bEpNum, Endpoint_DTOG_Status & ~EPRX_DTOG1);
|
|
}
|
|
else if (bDir == EP_DBUF_IN)
|
|
{ /* IN double buffered endpoint */
|
|
_SetENDPOINT(bEpNum, Endpoint_DTOG_Status & ~EPTX_DTOG1);
|
|
}
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* Function Name : GetEPTxStatus
|
|
* Description : Returns the endpoint Tx status.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : Endpoint TX Status
|
|
*******************************************************************************/
|
|
u16 GetEPTxStatus(u8 bEpNum)
|
|
{
|
|
return(_GetEPTxStatus(bEpNum));
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* Function Name : GetEPRxStatus
|
|
* Description : Returns the endpoint Rx status.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : Endpoint RX Status
|
|
*******************************************************************************/
|
|
u16 GetEPRxStatus(u8 bEpNum)
|
|
{
|
|
return(_GetEPRxStatus(bEpNum));
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* Function Name : SetEPTxValid
|
|
* Description : Valid the endpoint Tx Status.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetEPTxValid(u8 bEpNum)
|
|
{
|
|
_SetEPTxStatus(bEpNum, EP_TX_VALID);
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* Function Name : SetEPRxValid
|
|
* Description : Valid the endpoint Rx Status.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetEPRxValid(u8 bEpNum)
|
|
{
|
|
_SetEPRxStatus(bEpNum, EP_RX_VALID);
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* Function Name : SetEP_KIND
|
|
* Description : Clear the EP_KIND bit.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetEP_KIND(u8 bEpNum)
|
|
{
|
|
_SetEP_KIND(bEpNum);
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* Function Name : ClearEP_KIND
|
|
* Description : set the EP_KIND bit.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void ClearEP_KIND(u8 bEpNum)
|
|
{
|
|
_ClearEP_KIND(bEpNum);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : Clear_Status_Out
|
|
* Description : Clear the Status Out of the related Endpoint
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void Clear_Status_Out(u8 bEpNum)
|
|
{
|
|
_ClearEP_KIND(bEpNum);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : Set_Status_Out
|
|
* Description : Set the Status Out of the related Endpoint
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void Set_Status_Out(u8 bEpNum)
|
|
{
|
|
_SetEP_KIND(bEpNum);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : SetEPDoubleBuff
|
|
* Description : Enable the double buffer feature for the endpoint.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetEPDoubleBuff(u8 bEpNum)
|
|
{
|
|
_SetEP_KIND(bEpNum);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : ClearEPDoubleBuff
|
|
* Description : Disable the double buffer feature for the endpoint.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void ClearEPDoubleBuff(u8 bEpNum)
|
|
{
|
|
_ClearEP_KIND(bEpNum);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : GetTxStallStatus
|
|
* Description : Returns the Stall status of the Tx endpoint.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : Tx Stall status.
|
|
*******************************************************************************/
|
|
u16 GetTxStallStatus(u8 bEpNum)
|
|
{
|
|
return(_GetTxStallStatus(bEpNum));
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : GetRxStallStatus
|
|
* Description : Returns the Stall status of the Rx endpoint.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : Rx Stall status.
|
|
*******************************************************************************/
|
|
u16 GetRxStallStatus(u8 bEpNum)
|
|
{
|
|
return(_GetRxStallStatus(bEpNum));
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : ClearEP_CTR_RX
|
|
* Description : Clear the CTR_RX bit.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void ClearEP_CTR_RX(u8 bEpNum)
|
|
{
|
|
_ClearEP_CTR_RX(bEpNum);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : ClearEP_CTR_TX
|
|
* Description : Clear the CTR_TX bit.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void ClearEP_CTR_TX(u8 bEpNum)
|
|
{
|
|
_ClearEP_CTR_TX(bEpNum);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : ToggleDTOG_RX
|
|
* Description : Toggle the DTOG_RX bit.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void ToggleDTOG_RX(u8 bEpNum)
|
|
{
|
|
_ToggleDTOG_RX(bEpNum);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : ToggleDTOG_TX
|
|
* Description : Toggle the DTOG_TX bit.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void ToggleDTOG_TX(u8 bEpNum)
|
|
{
|
|
_ToggleDTOG_TX(bEpNum);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : ClearDTOG_RX.
|
|
* Description : Clear the DTOG_RX bit.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void ClearDTOG_RX(u8 bEpNum)
|
|
{
|
|
_ClearDTOG_RX(bEpNum);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : ClearDTOG_TX.
|
|
* Description : Clear the DTOG_TX bit.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void ClearDTOG_TX(u8 bEpNum)
|
|
{
|
|
_ClearDTOG_TX(bEpNum);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : SetEPAddress
|
|
* Description : Set the endpoint address.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* bAddr: New endpoint address.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetEPAddress(u8 bEpNum, u8 bAddr)
|
|
{
|
|
_SetEPAddress(bEpNum, bAddr);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : GetEPAddress
|
|
* Description : Get the endpoint address.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : Endpoint address.
|
|
*******************************************************************************/
|
|
u8 GetEPAddress(u8 bEpNum)
|
|
{
|
|
return(_GetEPAddress(bEpNum));
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : SetEPTxAddr
|
|
* Description : Set the endpoint Tx buffer address.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* wAddr: new address.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetEPTxAddr(u8 bEpNum, u16 wAddr)
|
|
{
|
|
_SetEPTxAddr(bEpNum, wAddr);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : SetEPRxAddr
|
|
* Description : Set the endpoint Rx buffer address.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* wAddr: new address.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetEPRxAddr(u8 bEpNum, u16 wAddr)
|
|
{
|
|
_SetEPRxAddr(bEpNum, wAddr);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : GetEPTxAddr
|
|
* Description : Returns the endpoint Tx buffer address.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : Rx buffer address.
|
|
*******************************************************************************/
|
|
u16 GetEPTxAddr(u8 bEpNum)
|
|
{
|
|
return(_GetEPTxAddr(bEpNum));
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : GetEPRxAddr.
|
|
* Description : Returns the endpoint Rx buffer address.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : Rx buffer address.
|
|
*******************************************************************************/
|
|
u16 GetEPRxAddr(u8 bEpNum)
|
|
{
|
|
return(_GetEPRxAddr(bEpNum));
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : SetEPTxCount.
|
|
* Description : Set the Tx count.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* wCount: new count value.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetEPTxCount(u8 bEpNum, u16 wCount)
|
|
{
|
|
_SetEPTxCount(bEpNum, wCount);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : SetEPCountRxReg.
|
|
* Description : Set the Count Rx Register value.
|
|
* Input : *pdwReg: point to the register.
|
|
* wCount: the new register value.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetEPCountRxReg(u32 *pdwReg, u16 wCount)
|
|
{
|
|
_SetEPCountRxReg(dwReg, wCount);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : SetEPRxCount
|
|
* Description : Set the Rx count.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* wCount: the new count value.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetEPRxCount(u8 bEpNum, u16 wCount)
|
|
{
|
|
_SetEPRxCount(bEpNum, wCount);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : GetEPTxCount
|
|
* Description : Get the Tx count.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None
|
|
* Return : Tx count value.
|
|
*******************************************************************************/
|
|
u16 GetEPTxCount(u8 bEpNum)
|
|
{
|
|
return(_GetEPTxCount(bEpNum));
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : GetEPRxCount
|
|
* Description : Get the Rx count.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : Rx count value.
|
|
*******************************************************************************/
|
|
u16 GetEPRxCount(u8 bEpNum)
|
|
{
|
|
return(_GetEPRxCount(bEpNum));
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : SetEPDblBuffAddr
|
|
* Description : Set the addresses of the buffer 0 and 1.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* wBuf0Addr: new address of buffer 0.
|
|
* wBuf1Addr: new address of buffer 1.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetEPDblBuffAddr(u8 bEpNum, u16 wBuf0Addr, u16 wBuf1Addr)
|
|
{
|
|
_SetEPDblBuffAddr(bEpNum, wBuf0Addr, wBuf1Addr);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : SetEPDblBuf0Addr
|
|
* Description : Set the Buffer 1 address.
|
|
* Input : bEpNum: Endpoint Number
|
|
* wBuf0Addr: new address.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetEPDblBuf0Addr(u8 bEpNum, u16 wBuf0Addr)
|
|
{
|
|
_SetEPDblBuf0Addr(bEpNum, wBuf0Addr);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : SetEPDblBuf1Addr
|
|
* Description : Set the Buffer 1 address.
|
|
* Input : bEpNum: Endpoint Number
|
|
* wBuf1Addr: new address.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetEPDblBuf1Addr(u8 bEpNum, u16 wBuf1Addr)
|
|
{
|
|
_SetEPDblBuf1Addr(bEpNum, wBuf1Addr);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : GetEPDblBuf0Addr
|
|
* Description : Returns the address of the Buffer 0.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
u16 GetEPDblBuf0Addr(u8 bEpNum)
|
|
{
|
|
return(_GetEPDblBuf0Addr(bEpNum));
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : GetEPDblBuf1Addr
|
|
* Description : Returns the address of the Buffer 1.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : Address of the Buffer 1.
|
|
*******************************************************************************/
|
|
u16 GetEPDblBuf1Addr(u8 bEpNum)
|
|
{
|
|
return(_GetEPDblBuf1Addr(bEpNum));
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : SetEPDblBuffCount
|
|
* Description : Set the number of bytes for a double Buffer
|
|
* endpoint.
|
|
* Input : bEpNum,bDir, wCount
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetEPDblBuffCount(u8 bEpNum, u8 bDir, u16 wCount)
|
|
{
|
|
_SetEPDblBuffCount(bEpNum, bDir, wCount);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : SetEPDblBuf0Count
|
|
* Description : Set the number of bytes in the buffer 0 of a double Buffer
|
|
* endpoint.
|
|
* Input : bEpNum, bDir, wCount
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetEPDblBuf0Count(u8 bEpNum, u8 bDir, u16 wCount)
|
|
{
|
|
_SetEPDblBuf0Count(bEpNum, bDir, wCount);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : SetEPDblBuf1Count
|
|
* Description : Set the number of bytes in the buffer 0 of a double Buffer
|
|
* endpoint.
|
|
* Input : bEpNum, bDir, wCount
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void SetEPDblBuf1Count(u8 bEpNum, u8 bDir, u16 wCount)
|
|
{
|
|
_SetEPDblBuf1Count(bEpNum, bDir, wCount);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : GetEPDblBuf0Count
|
|
* Description : Returns the number of byte received in the buffer 0 of a double
|
|
* Buffer endpoint.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : Endpoint Buffer 0 count
|
|
*******************************************************************************/
|
|
u16 GetEPDblBuf0Count(u8 bEpNum)
|
|
{
|
|
return(_GetEPDblBuf0Count(bEpNum));
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : GetEPDblBuf1Count
|
|
* Description : Returns the number of data received in the buffer 1 of a double
|
|
* Buffer endpoint.
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : Endpoint Buffer 1 count.
|
|
*******************************************************************************/
|
|
u16 GetEPDblBuf1Count(u8 bEpNum)
|
|
{
|
|
return(_GetEPDblBuf1Count(bEpNum));
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : GetEPDblBufDir
|
|
* Description : gets direction of the double buffered endpoint
|
|
* Input : bEpNum: Endpoint Number.
|
|
* Output : None.
|
|
* Return : EP_DBUF_OUT, EP_DBUF_IN,
|
|
* EP_DBUF_ERR if the endpoint counter not yet programmed.
|
|
*******************************************************************************/
|
|
EP_DBUF_DIR GetEPDblBufDir(u8 bEpNum)
|
|
{
|
|
if ((u16)(*_pEPRxCount(bEpNum) & 0xFC00) != 0)
|
|
return(EP_DBUF_OUT);
|
|
else if (((u16)(*_pEPTxCount(bEpNum)) & 0x03FF) != 0)
|
|
return(EP_DBUF_IN);
|
|
else
|
|
return(EP_DBUF_ERR);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : FreeUserBuffer
|
|
* Description : free buffer used from the application realizing it to the line
|
|
toggles bit SW_BUF in the double buffered endpoint register
|
|
* Input : bEpNum, bDir
|
|
* Output : None.
|
|
* Return : None.
|
|
*******************************************************************************/
|
|
void FreeUserBuffer(u8 bEpNum, u8 bDir)
|
|
{
|
|
if (bDir == EP_DBUF_OUT)
|
|
{ /* OUT double buffered endpoint */
|
|
_ToggleDTOG_TX(bEpNum);
|
|
}
|
|
else if (bDir == EP_DBUF_IN)
|
|
{ /* IN double buffered endpoint */
|
|
_ToggleDTOG_RX(bEpNum);
|
|
}
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* Function Name : ToWord
|
|
* Description : merge two byte in a word.
|
|
* Input : bh: byte high, bl: bytes low.
|
|
* Output : None.
|
|
* Return : resulted word.
|
|
*******************************************************************************/
|
|
u16 ToWord(u8 bh, u8 bl)
|
|
{
|
|
u16 wRet;
|
|
wRet = (u16)bl | ((u16)bh << 8);
|
|
return(wRet);
|
|
}
|
|
/*******************************************************************************
|
|
* Function Name : ByteSwap
|
|
* Description : Swap two byte in a word.
|
|
* Input : wSwW: word to Swap.
|
|
* Output : None.
|
|
* Return : resulted word.
|
|
*******************************************************************************/
|
|
u16 ByteSwap(u16 wSwW)
|
|
{
|
|
u8 bTemp;
|
|
u16 wRet;
|
|
bTemp = (u8)(wSwW & 0xff);
|
|
wRet = (wSwW >> 8) | ((u16)bTemp << 8);
|
|
return(wRet);
|
|
}
|
|
|
|
/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/
|