1. 修改环转数组变量
This commit is contained in:
parent
95abe54968
commit
7a7a7e0ae9
@ -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)
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user