Program Listing for File parser.hpp

Return to documentation for file (include/whill_driver/model_cr2/parser.hpp)

// Copyright (c) 2024 WHILL, Inc.
// Released under the MIT license
// https://opensource.org/licenses/mit-license.php

#ifndef WHILL_DRIVER_MODEL_CR2_PARSER_H_
#define WHILL_DRIVER_MODEL_CR2_PARSER_H_

#include <cstdint>

namespace whill_driver
{
namespace model_cr2
{

enum class ParseState
{
  kWaitProtocolSign = 0,
  kWaitDataLength,
  kWaitPayload,
  kWaitChecksum,
};

constexpr uint8_t kDatasetMaxSize = 64;

constexpr uint8_t kProtocolSign = 0xAF;

class Parser
{
public:
  Parser();
  ~Parser();

  int Parse(uint8_t target_buf[], int target_len, uint8_t payload[]);

  uint8_t Checksum(uint8_t buf[], int len);

private:
  uint8_t buf_[kDatasetMaxSize];
  ParseState state_;
  int index_;
  int data_length_;

  void Clear();
};

}  // namespace model_cr2
}  // namespace whill_driver

#endif  // WHILL_DRIVER_MODEL_CR2_PARSER_H_