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 uint8_t HRingBufferType; // 环转缓冲区类型
typedef uint32_t HRingBufferDataType; // 环转缓冲区统一数据类型 typedef uint32_t HRingBufferDataType; // 环转缓冲区统一数据类型
// 使用2字节长度
#ifndef _HRING_BUFFER_LEN_USE16
#define _HRING_BUFFER_LEN_USE16
#endif
#ifdef _HRING_BUFFER_LEN_USE32 #ifdef _HRING_BUFFER_LEN_USE32
#define HRING_BUFFER_ERROR (0xffffffff) #define HRING_BUFFER_ERROR (0xffffffff)

View File

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