1. 修改环转数组变量

This commit is contained in:
coffee 2025-07-14 09:37:54 +08:00
parent 95abe54968
commit 7a7a7e0ae9
2 changed files with 23 additions and 18 deletions

View File

@ -26,6 +26,11 @@ enum eRingBufferFlag {
typedef uint8_t HRingBufferType; // 环转缓冲区类型
typedef uint32_t HRingBufferDataType; // 环转缓冲区统一数据类型
// 使用2字节长度
#ifndef _HRING_BUFFER_LEN_USE16
#define _HRING_BUFFER_LEN_USE16
#endif
#ifdef _HRING_BUFFER_LEN_USE32
#define HRING_BUFFER_ERROR (0xffffffff)

View File

@ -44,8 +44,8 @@ static uint8_t GetRingBufferType(const HRingBufferType *ringBuffer) {
return base->flag & kHRingBufferFlagAllMask;
}
static HRingBufferLenType GetRingBufferTypeSize(const HRingBufferType *vector) {
switch(GetRingBufferType(vector)) {
static HRingBufferLenType GetRingBufferTypeSize(const HRingBufferType *ringBuffer) {
switch(GetRingBufferType(ringBuffer)) {
case kHRingBufferFlag8: return sizeof(uint8_t); break;
case kHRingBufferFlag16: return sizeof(uint16_t); break;
case kHRingBufferFlag32: return sizeof(uint32_t); break;
@ -54,33 +54,33 @@ static HRingBufferLenType GetRingBufferTypeSize(const HRingBufferType *vector) {
return 0;
}
static HRingBufferDataType GetRingBufferData(const HRingBufferType *vector, HRingBufferLenType pos) {
switch(GetRingBufferType(vector)) {
case kHRingBufferFlag8: return ((const _HRingBuffer8 *)vector)->data[pos]; break;
case kHRingBufferFlag16: return ((const _HRingBuffer16 *)vector)->data[pos]; break;
case kHRingBufferFlag32: return ((const _HRingBuffer32 *)vector)->data[pos]; break;
static HRingBufferDataType GetRingBufferData(const HRingBufferType *ringBuffer, HRingBufferLenType pos) {
switch(GetRingBufferType(ringBuffer)) {
case kHRingBufferFlag8: return ((const _HRingBuffer8 *)ringBuffer)->data[pos]; break;
case kHRingBufferFlag16: return ((const _HRingBuffer16 *)ringBuffer)->data[pos]; break;
case kHRingBufferFlag32: return ((const _HRingBuffer32 *)ringBuffer)->data[pos]; break;
}
return HRING_BUFFER_ERROR;
}
static void SetRingBufferData(HRingBufferType *vector, HRingBufferLenType pos, HRingBufferDataType data) {
switch(GetRingBufferType(vector)) {
case kHRingBufferFlag8: ((_HRingBuffer8 *)vector)->data[pos] = (uint8_t)data; break;
case kHRingBufferFlag16: ((_HRingBuffer16 *)vector)->data[pos] = (uint16_t)data; break;
case kHRingBufferFlag32: ((_HRingBuffer32 *)vector)->data[pos] = (uint32_t)data; break;
static void SetRingBufferData(HRingBufferType *ringBuffer, HRingBufferLenType pos, HRingBufferDataType data) {
switch(GetRingBufferType(ringBuffer)) {
case kHRingBufferFlag8: ((_HRingBuffer8 *)ringBuffer)->data[pos] = (uint8_t)data; break;
case kHRingBufferFlag16: ((_HRingBuffer16 *)ringBuffer)->data[pos] = (uint16_t)data; break;
case kHRingBufferFlag32: ((_HRingBuffer32 *)ringBuffer)->data[pos] = (uint32_t)data; break;
}
}
static uint8_t IsRingBufferFull(const HRingBufferType *vector) {
InitRingBuffer((HRingBufferType *)vector);
const _HRingBufferBase *base = (const _HRingBufferBase *)vector;
static uint8_t IsRingBufferFull(const HRingBufferType *ringBuffer) {
InitRingBuffer((HRingBufferType *)ringBuffer);
const _HRingBufferBase *base = (const _HRingBufferBase *)ringBuffer;
return (base->flag & kHRingBufferFull) == kHRingBufferFull;
}
static void SetRingBufferFull(HRingBufferType *vector, uint8_t full) {
InitRingBuffer((HRingBufferType *)vector);
_HRingBufferBase *base = (_HRingBufferBase *)vector;
static void SetRingBufferFull(HRingBufferType *ringBuffer, uint8_t full) {
InitRingBuffer((HRingBufferType *)ringBuffer);
_HRingBufferBase *base = (_HRingBufferBase *)ringBuffer;
if (full) {
base->flag |= kHRingBufferFull;
} else {