69 lines
2.1 KiB
C++
69 lines
2.1 KiB
C++
|
|
#pragma once
|
|||
|
|
|
|||
|
|
#include <string>
|
|||
|
|
#include <vector>
|
|||
|
|
#include <cstdint>
|
|||
|
|
#include <optional>
|
|||
|
|
#include <cstring>
|
|||
|
|
#include <iostream>
|
|||
|
|
#include <sstream>
|
|||
|
|
#include <iomanip>
|
|||
|
|
#include <map>
|
|||
|
|
#include <unordered_map>
|
|||
|
|
|
|||
|
|
// ==========================
|
|||
|
|
// 🕒 32960 时间结构(用于数据单元)
|
|||
|
|
// ==========================
|
|||
|
|
struct TimeStamp
|
|||
|
|
{
|
|||
|
|
uint8_t year; // 年(0~99)
|
|||
|
|
uint8_t month; // 月(1~12)
|
|||
|
|
uint8_t day; // 日(1~31)
|
|||
|
|
uint8_t hour; // 小时(0~23)
|
|||
|
|
uint8_t minute; // 分钟(0~59)
|
|||
|
|
uint8_t second; // 秒(0~59)
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// ==========================
|
|||
|
|
// 📦 通用数据包结构(协议层)
|
|||
|
|
// ==========================
|
|||
|
|
struct FullPacket
|
|||
|
|
{
|
|||
|
|
uint8_t start_flag1 = 0x23; // 起始符 '#'
|
|||
|
|
uint8_t start_flag2 = 0x23; // 起始符 '#'
|
|||
|
|
uint8_t command_id; // 命令标识(如 0x81、0xD3 等)
|
|||
|
|
uint8_t response_flag; // 应答标志(0xFE 表示命令包)
|
|||
|
|
std::string vin; // 17 字节 VIN 编码(ASCII)
|
|||
|
|
uint8_t encryption_method; // 加密方式(0x01 无加密)
|
|||
|
|
uint16_t data_length; // 数据单元长度
|
|||
|
|
std::vector<uint8_t> data_unit; // 数据单元(二进制)
|
|||
|
|
uint8_t checksum; // BCC 校验值
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// ==========================
|
|||
|
|
// ⚙️ MQTT 参数项结构(0x81 子项)
|
|||
|
|
// ==========================
|
|||
|
|
struct MqttParameterItem
|
|||
|
|
{
|
|||
|
|
uint8_t param_id; // 参数 ID(如 0x86~0x8B)
|
|||
|
|
std::vector<uint8_t> value; // 参数值(动态长度)
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// ==========================
|
|||
|
|
// 📡 设置 MQTT 参数(命令 0x81)
|
|||
|
|
// ==========================
|
|||
|
|
struct MqttParamSetting
|
|||
|
|
{
|
|||
|
|
TimeStamp timestamp; // 设置时间(6 字节)
|
|||
|
|
uint16_t sequence; // 流水号(2 字节)
|
|||
|
|
uint8_t param_count; // 参数个数(0~252,0xFE 异常,0xFF 无效)
|
|||
|
|
std::vector<MqttParameterItem> items; // 参数项列表
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// ==========================
|
|||
|
|
// 🚗 车辆上报/通知/广播结构(命令 0xD3 / 0xD4 / 0xD5)
|
|||
|
|
// ==========================
|
|||
|
|
struct VehicleMessage
|
|||
|
|
{
|
|||
|
|
std::string json_payload; // JSON 字符串消息内容
|
|||
|
|
};
|