Files
vision-anti-pinch/include/can_types.hpp
T
zmv f87e5aad40 Fix live CAN feedback with CH0-only asynchronous risk transmission
Send 0x1F6 risk updates through a bounded latest-result worker on CH0 and disable CH1 initialization, reception, transmission and live display. Preserve the four actual-position bytes from 0x391 and recorded-session compatibility.

Include regression coverage, Orin camera/TensorRT/CAN validation, and the verified standalone binary with refreshed checksums.
2026-09-28 13:59:26 +08:00

37 lines
1.1 KiB
C++

#pragma once
#include <array>
#include <cstdint>
#include <string>
#include <vector>
namespace cms {
inline constexpr unsigned liveCanChannelCount=1; // CH0 only; CH1 is not used.
struct CanConfig {
bool enabled{true};
int device_index{0};
int timeout_ms{1000};
bool termination{true};
};
struct CanDoorSignals {
// Raw unsigned bytes: left front, right front, left rear, right rear.
// No scale/unit is specified in the reference protocol.
std::array<int,4> positions{{-1,-1,-1,-1}};
bool valid{},fd{},extended{};
std::uint64_t received{},received_monotonic_ns{};
std::uint32_t device_timestamp_us{};
double age_ms{-1};
};
struct CanSnapshot {
std::string source{"live"},status{"DISABLED"};
// Keep two slots for existing recorded sessions; live CH1 stays unset.
std::array<CanDoorSignals,2> channels;
std::uint64_t received{},transmitted{},transmit_errors{},receive_errors{};
};
struct CanFrame {
int channel{};
std::uint32_t id{};
bool fd{},extended{},bitrate_switch{};
std::vector<std::uint8_t> data;
};
}