Files
ch32v20x-examples/EVT/EXAM/BLE/BLE_USB/APP/include/RingMem.h
T
2023-09-06 10:08:11 +08:00

80 lines
2.5 KiB
C

/********************************** (C) COPYRIGHT *******************************
* File Name : RingMem.h
* Author : WCH
* Version : V1.4
* Date : 2019/12/20
* Description :
*********************************************************************************
* 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.
*******************************************************************************/
/*********************************************************************
* INCLUDES
*/
/*********************************************************************
* CONSTANTS
*/
#ifndef RINGMEM_H
#define RINGMEM_H
#ifndef SUCCESS
#define SUCCESS 0
#endif
#ifndef ENABLE
#define ENABLE 1
#endif
#ifndef DISABLE
#define DISABLE 0
#endif
/*********************************************************************
* TYPEDEFS
*/
typedef unsigned char uint8_t;
typedef unsigned short uint16;
typedef unsigned long uint32_t;
typedef int (*RingMemProtection_t)(uint8_t enable);
//Buffer structure
typedef struct
{
uint8_t volatile *pData; //Buffer first address
uint8_t volatile *pWrite; //Pointer
uint8_t volatile *pRead; //Pointer
uint8_t volatile *pEnd; //The last address of the buffer area
uint32_t volatile RemanentLen; //Remaining space size
uint32_t volatile CurrentLen; //Already used space
uint32_t volatile MaxLen; //Total space size
} RingMemParm_t;
/*********************************************************************
* Global Variables
*/
/*********************************************************************
* FUNCTIONS
*/
extern void RingMemInit(RingMemParm_t *Parm, uint8_t *StartAddr, uint32_t MaxLen, RingMemProtection_t Protection);
extern uint8_t RingMemWrite(RingMemParm_t *Parm, uint8_t *pData, uint32_t len);
extern uint8_t RingMemRead(RingMemParm_t *Parm, uint8_t *pData, uint32_t len);
extern uint8_t RingMemCopy(RingMemParm_t *Parm, uint8_t *pData, uint32_t len);
extern uint8_t RingMemDelete(RingMemParm_t *Parm, uint32_t len);
extern uint8_t RingAddInStart(RingMemParm_t *Parm, uint8_t *pData, uint32_t len);
extern uint8_t RingReturnSingleData(RingMemParm_t *Parm, uint32_t Num);
/*********************************************************************
*********************************************************************/
#endif