#pragma once

#include "packet.hpp"
#include <cstring>

class LidarMessageRsHelios : public CloudPointPacket {
private:
    unsigned short roll_angle[16] = {1300, 1500, 900, 1100, 500, 700, 100, 300, 36000 - 300, 36000 - 100, 36000 - 700,
                                     36000 - 500, 36000 - 1100, 36000 - 900, 36000 - 1500, 36000 - 1300};
    // unsigned short roll_angle[16] = {36000 - 1500, 36000 - 1300, 36000 - 1100, 36000 - 900, 36000 - 700, 36000 - 500, 36000 - 300, 36000 - 100, 100, 300, 500, 700, 900, 1100, 1300, 1500};
public:
    LidarMessageRsHelios(/* args */) {}

    ~LidarMessageRsHelios() {}

    bool packet(void *data, int size);

private:
    bool checkFrameHeader(unsigned char *data);

    bool packHelios16P(unsigned char *data, int size);

    // 解析双回波数据包
    void parseDualDataBlock(unsigned char *data);

    // 解析单回波数据包
    void parseSingleDataBlock(unsigned char *data);
};
