src/main/kotlin/com/flightfeather/obd/socket/bean/ObdPackageData.kt
@@ -1,16 +1,40 @@
package com.flightfeather.obd.socket.bean
import com.flightfeather.obd.socket.eunm.ObdCommandUnit
/**
 * @author riku
 * Date: 2019/9/12
 * 数据包结构
 *
 * 起始字节                     定义                  数据类型                        描述及要求
 * 0                               起始符                STRING                       固定为 ASCII 字符’##’,用“0x23,0x23”表示
 * 2                               命令单元             BYTE                            命令单元定义 @see [ObdCommandUnit]
 * 3                            车辆识别号           STRING                        车辆识别码是识别的唯一标识,由 17 位字码组成,字码应符合 GB16735 中 4.5 的规定
 * 20                         终端软件版本号       BYTE                           终端软件版本号有效值范围 0~255
 * 21                           数据加密方式         BYTE                           0x01:数据不加密;
 *                                                                                                  0x02:数据经过 RSA 算法加密;
 *                                                                                                  0x03:数据经过国密 SM2 算法加密;
 *                                                                                                  “0xFE”标识异常,“0xFF”表示无效,其他预留
 * 22                           数据单元长度          WORD                        数据单元长度是数据单元的总字节数,有效范围:0~65531
 * 24                           数据单元                                                    见数据单元格式和定义 @see [DataUnit]
 * 倒数第 1                   校验码 BYTE                                             采用 BCC(异或校验)法,校验范围聪明星单元的第一个字节开始,同后一个字节异或,直到校验码前一字节为止,校验码占用一个字节
 */
data class ObdPackageData constructor(
        //起始符
        var head: String? = null,
        //命令单元
        var commandUnit: Int? = null,
        var vinCode: String? = null,
        //车辆识别号(指obd数据采集设备的编号)
        var deviceCode: String? = null,
        //终端软件版本号
        var softwareVersion: Int? = null,
        //数据加密方式
        var encryptionWay: Int? = null,
        //数据单元长度
        var dataLength: Int? = null,
        //数据单元
        var dataUnit: List<DataUnit>,
        //校验码
        var checkCode: Int? = null
)