36namespace conti_radar {
39using micros = std::chrono::microseconds;
47 : conti_radar_writer_(writer) {
48 AddRecvProtocolData<RadarState201, true>();
49 AddRecvProtocolData<ClusterListStatus600, true>();
50 AddRecvProtocolData<ClusterGeneralInfo701, true>();
51 AddRecvProtocolData<ClusterQualityInfo702, true>();
52 AddRecvProtocolData<ObjectExtendedInfo60D, true>();
53 AddRecvProtocolData<ObjectGeneralInfo60B, true>();
54 AddRecvProtocolData<ObjectListStatus60A, true>();
55 AddRecvProtocolData<ObjectQualityInfo60C, true>();
63 std::shared_ptr<CanClient> can_client) {
64 can_client_ = can_client;
68 const uint32_t message_id) {
69 uint32_t converted_message_id = message_id;
72 ADEBUG <<
"Unable to get protocol data because of invalid message_id:"
80 const uint8_t *data, int32_t length) {
83 if (sensor_protocol_data ==
nullptr) {
124 is_configured_ =
true;
126 AINFO <<
"configure radar again";
130 can_client_->SendSingleFrame({sender_message.
CanFrame()});
139 it->second.real_period = time - it->second.last_time;
141 const double period_multiplier = 1.5;
142 if (it->second.real_period >
143 (
static_cast<double>(it->second.period) * period_multiplier)) {
144 it->second.error_count += 1;
146 it->second.error_count = 0;
148 it->second.last_time = time;
Cyber has builtin time type Time.
uint64_t ToMicrosecond() const
convert time to microsecond (us).
static Time Now()
get the current time.
The class which defines the CAN client to send and receive message.
std::unordered_map< uint32_t, ProtocolData< ContiRadar > * > protocol_data_map_
std::set< uint32_t > received_ids_
std::mutex sensor_data_mutex_
std::unordered_map< uint32_t, CheckIdArg > check_ids_
This is the base class of protocol data.
virtual void Parse(const uint8_t *bytes, int32_t length, SensorType *sensor_data) const
This class defines the message to send.
struct CanFrame CanFrame()
Get the CAN frame to send.
void Update()
Update the protocol data.
void set_can_client(std::shared_ptr< apollo::drivers::canbus::CanClient > can_client)
void set_radar_conf(RadarConf radar_conf)
apollo::drivers::canbus::ProtocolData< ContiRadar > * GetMutableProtocolDataById(const uint32_t message_id)
void Parse(const uint32_t message_id, const uint8_t *data, int32_t length)
parse data and store parsed info in receive protocol data
ContiRadarMessageManager(const std::shared_ptr< apollo::cyber::Writer< ContiRadar > > &writer)
RadarConfig200 * set_radar_conf(RadarConf radar_conf)
The class of ContiRadarMessageManager
Some string util functions.
std::chrono::microseconds micros
optional RadarState_201 radar_state
optional ObjectListStatus_60A object_list_status
optional int32 nof_objects
optional uint32 radar_power
optional RcsThreshold rcs_threshold
optional uint32 max_distance
optional OutputType output_type
optional bool send_ext_info
optional bool send_quality
optional bool send_quality
optional RadarState_201::RcsThreshold rcs_threshold
optional uint32 radar_power
optional RadarState_201::OutputType output_type
optional bool send_ext_info
optional uint32 max_distance