【NextPilot日志移植】params.c解析
params.c
参数说明
params.c
文件的主要作用是定义与 SD卡日志记录 相关的参数。这些参数用于配置日志记录的行为,包括日志记录的时间、内容、存储管理以及加密设置等。
1. UTC 偏移量 (SDLOG_UTC_OFFSET
)
PARAM_DEFINE_INT32(SDLOG_UTC_OFFSET, 0);
- 用途:设置本地时间与协调世界时(UTC)的偏移量,单位为分钟。例如,韩国(UTC+09:00)的偏移量为 540 分钟(9 * 60)。
- 取值范围:-1000 到 1000 分钟。
2. 日志记录模式 (SDLOG_MODE
)
PARAM_DEFINE_INT32(SDLOG_MODE, 1);
- 用途:决定日志记录的开始和停止时间。
- 取值及含义:
- -1: 禁用日志记录。
- 0: 系统武装(armed)时开始记录,解除武装(disarmed)时停止记录(默认值)。
- 1: 从系统启动开始记录,直到解除武装。
- 2: 从系统启动开始记录,直到系统关机。
- 3: 根据 AUX1 RC 通道的状态决定是否记录。
- 4: 从第一次武装开始记录,直到系统关机。
- 注意事项:更改此参数需要重启系统。
3. 仅电池供电时记录 (SDLOG_BOOT_BAT
)
PARAM_DEFINE_INT32(SDLOG_BOOT_BAT, 0);
- 用途:启用此参数后,如果系统在启动时未检测到电池供电(例如通过 USB 供电进行测试),则不会从启动开始记录日志。这可以避免在测试台上产生不必要的飞行日志。
- 注意事项:此参数仅适用于从启动开始记录的模式,对基于武装状态的记录模式无效。
4. 任务日志 (SDLOG_MISSION
)
PARAM_DEFINE_INT32(SDLOG_MISSION, 0);
- 用途:如果启用,会在 SD 卡上额外创建一个小的“任务”日志文件。该日志仅包含对生成飞行统计数据和地理标记等任务有用的消息。
- 取值及含义:
- 0: 禁用任务日志。
- 1: 记录所有任务消息。
- 2: 仅记录地理标记所需的消息。
- 注意事项:更改此参数需要重启系统。
5. 日志记录主题配置文件 (SDLOG_PROFILE
)
PARAM_DEFINE_INT32(SDLOG_PROFILE, 1);
- 用途:使用整数位掩码控制记录的主题集合和速率。默认设置允许进行一般的日志分析,同时保持日志文件大小合理。
- 取值范围:0 到 2047。
- 位掩码含义:每个位对应一组特定的主题,设置为 1 表示启用该组主题。
- 注意事项:启用多个组会导致更高的带宽需求和更大的日志文件大小。更改此参数需要重启系统。
6. 最大日志目录数量 (SDLOG_DIRS_MAX
)
PARAM_DEFINE_INT32(SDLOG_DIRS_MAX, 0);
- 用途:设置系统保留的最大日志目录数量。如果日志目录数量超过此值,系统将在启动时删除最旧的目录。此外,如果可用空间不足 300 MB,系统也会删除旧的日志。
- 取值范围:0 到 1000。
- 注意事项:如果设置为 0,则仅在可用空间低于最小值时才会删除旧目录。此参数不适用于任务日志文件。更改此参数需要重启系统。
7. 日志 UUID (SDLOG_UUID
)
PARAM_DEFINE_INT32(SDLOG_UUID, 1);
- 用途:如果设置为 1,会在日志中添加一个唯一标识符,用于唯一标识车辆。
8. 日志文件加密算法 (SDLOG_ALGORITHM
)
PARAM_DEFINE_INT32(SDLOG_ALGORITHM, 2);
- 用途:选择用于日志文件加密的算法。
- 取值及含义:
- 0: 禁用加密。
- 2: 使用 XChaCha20 算法。
- 3: 使用 AES 算法。
9. 日志文件加密密钥索引 (SDLOG_KEY
)
PARAM_DEFINE_INT32(SDLOG_KEY, 2);
- 用途:选择密钥库中用于加密日志的密钥索引。对于对称加密算法,密钥在日志记录开始时生成,并存储在该索引中。密钥是临时的,仅在日志记录期间有效。密钥使用 RSA2048 密钥(由
SDLOG_EXCH_KEY
定义)加密后存储在 SD 卡上。 - 取值范围:0 到 255。
10. 日志文件加密密钥交换密钥 (SDLOG_EXCH_KEY
)
PARAM_DEFINE_INT32(SDLOG_EXCH_KEY, 1);
- 用途:如果使用对称密钥算法加密日志文件,生成的加密密钥将使用此索引指定的 RSA2048 密钥进行加密,并存储在 SD 卡上。
- 取值范围:0 到 255。
综上所述,logger/params.c
文件通过定义这些参数,为日志记录系统提供了灵活的配置选项,以满足不同的应用场景和需求。