T-Box Basic dev
Loading...
Searching...
No Matches
icc_config.h File Reference

ICC 协议栈配置定义 More...

#include <pthread.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <time.h>

Go to the source code of this file.

Macros

帧格式常量

由协议定义,通常不需要修改。

#define ICC_SOF0   0xA5
 帧同步头第 1 字节
#define ICC_SOF1   0x5A
 帧同步头第 2 字节
#define ICC_DATA_FRAME_HEAD_SIZE   10
 数据帧头长度,不含 DATA
#define ICC_ACK_FRAME_SIZE   6
 ACK 帧总长度,固定 6 字节
#define ICC_RX_FRAME_DATA_MAX   (1024)
 接收单帧 DATA 段最大长度
#define ICC_TX_FRAME_DATA_MAX   (1024 * 5)
 发送单帧 DATA 段最大长度
#define ICC_RX_FRAME_MAX   (ICC_DATA_FRAME_HEAD_SIZE + ICC_RX_FRAME_DATA_MAX)
 接收数据帧最大总长
#define ICC_TX_FRAME_MAX   (ICC_DATA_FRAME_HEAD_SIZE + ICC_TX_FRAME_DATA_MAX)
 发送数据帧最大总长
校验配置

DATA 长度小于等于 256 字节时使用 CRC-8,否则使用 CRC-16。

#define ICC_CRC8_DATA_THRESHOLD   256
 CRC-8 与 CRC-16 分界值
ACK 等待与重传配置

ACK 等待表深度决定同时允许的未确认请求数。 流控策略:待确认数达到 ICC_ACK_TABLE_DEPTH 时,新 need_ack 帧返回 ICC_PROTO_FULL。 超时时间和重试次数共同决定一次请求从发送到放弃的时间上限。

#define ICC_ACK_TABLE_DEPTH   5
 ACK 等待表深度,同时等待 ACK 的最大帧数
#define ICC_ACK_TIMEOUT_MS   1000
 ACK 超时时间,单位 ms.
#define ICC_RETRY_MAX   3
 单帧最大重传次数
#define ICC_ACK_DATA_MAX   512
 需要重传的帧 DATA 最大长度,超过则无法重传
心跳

引擎内部自动发送,任何成功的数据接收自动顺延心跳计时器。 未握手(HANDSHAKE)时按快发周期发送以加速建链,握手成功(RUNNING)后按正常周期发送。 连续 ICC_HEARTBEAT_TIMEOUT_CNT 次心跳无响应时触发 EVENT 并自动回退到 HANDSHAKE 状态重新建立连接。

#define ICC_HEARTBEAT_INTERVAL_MS   3000
 心跳间隔(ms,RUNNING 状态)
#define ICC_HEARTBEAT_INTERVAL_FAST_MS   500
 心跳快发间隔(ms,HANDSHAKE 状态)
#define ICC_HEARTBEAT_TIMEOUT_MS   60000
 心跳超时(ms),超过触发 EVENT
#define ICC_HANDSHAKE_TIMEOUT_MS   600000
 握手超时(ms),超时触发 HANDSHAKE_FAIL 事件
Tick 获取宏

默认使用 CLOCK_MONOTONIC 获取毫秒级系统时间。 移植到其他 RTOS 或裸机环境时,可在包含本文件前定义 ICC_GET_TICK 覆盖默认实现。

#define ICC_GET_TICK()
锁宏映射

默认使用 pthread_mutex_t。 移植到其他 RTOS 或裸机环境时,可在包含本文件前定义这些宏覆盖默认实现。

#define ICC_PROTO_LOCK_T   pthread_mutex_t
#define ICC_PROTO_LOCK_INIT(mutex)
#define ICC_PROTO_LOCK_DESTROY(mutex)
#define ICC_PROTO_LOCK_ENTER(mutex)
#define ICC_PROTO_LOCK_EXIT(mutex)

Detailed Description

ICC 协议栈配置定义

Version
1.0.0
Date
2026-07-02

Macro Definition Documentation

◆ ICC_GET_TICK

#define ICC_GET_TICK ( )
Value:
({ \
struct timespec ts; \
clock_gettime(CLOCK_MONOTONIC, &ts); \
((uint64_t)ts.tv_sec * 1000ULL) + ((uint64_t)ts.tv_nsec / 1000000ULL); \
})

◆ ICC_PROTO_LOCK_DESTROY

#define ICC_PROTO_LOCK_DESTROY ( mutex)
Value:
do \
{ \
if ((mutex) != NULL) \
{ \
pthread_mutex_destroy((mutex)); \
} \
} while (0)

◆ ICC_PROTO_LOCK_ENTER

#define ICC_PROTO_LOCK_ENTER ( mutex)
Value:
do \
{ \
if ((mutex) != NULL) \
{ \
pthread_mutex_lock((mutex)); \
} \
} while (0)

◆ ICC_PROTO_LOCK_EXIT

#define ICC_PROTO_LOCK_EXIT ( mutex)
Value:
do \
{ \
if ((mutex) != NULL) \
{ \
pthread_mutex_unlock((mutex)); \
} \
} while (0)

◆ ICC_PROTO_LOCK_INIT

#define ICC_PROTO_LOCK_INIT ( mutex)
Value:
do \
{ \
if ((mutex) != NULL) \
{ \
pthread_mutex_init((mutex), NULL); \
} \
} while (0)