Apollo  6.0
Open source self driving car software
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
apollo::drivers::canbus::MessageManager< SensorType > Class Template Reference

message manager manages protocols. It supports parse and can get protocol data by message id. More...

#include <message_manager.h>

Collaboration diagram for apollo::drivers::canbus::MessageManager< SensorType >:
Collaboration graph

Public Member Functions

 MessageManager ()
 
virtual ~MessageManager ()=default
 
virtual void Parse (const uint32_t message_id, const uint8_t *data, int32_t length)
 parse data and store parsed info in protocol data More...
 
void ClearSensorData ()
 
std::condition_variable * GetMutableCVar ()
 
ProtocolData< SensorType > * GetMutableProtocolDataById (const uint32_t message_id)
 get mutable protocol data by message id More...
 
common::ErrorCode GetSensorData (SensorType *const sensor_data)
 get chassis detail. used lock_guard in this function to avoid concurrent read/write issue. More...
 
void ResetSendMessages ()
 

Protected Member Functions

template<class T , bool need_check>
void AddRecvProtocolData ()
 
template<class T , bool need_check>
void AddSendProtocolData ()
 

Protected Attributes

std::vector< std::unique_ptr< ProtocolData< SensorType > > > send_protocol_data_
 
std::vector< std::unique_ptr< ProtocolData< SensorType > > > recv_protocol_data_
 
std::unordered_map< uint32_t, ProtocolData< SensorType > * > protocol_data_map_
 
std::unordered_map< uint32_t, CheckIdArgcheck_ids_
 
std::set< uint32_t > received_ids_
 
std::mutex sensor_data_mutex_
 
SensorType sensor_data_
 
bool is_received_on_time_ = false
 
std::condition_variable cvar_
 

Detailed Description

template<typename SensorType>
class apollo::drivers::canbus::MessageManager< SensorType >

message manager manages protocols. It supports parse and can get protocol data by message id.

Constructor & Destructor Documentation

◆ MessageManager()

template<typename SensorType>
apollo::drivers::canbus::MessageManager< SensorType >::MessageManager ( )
inline

◆ ~MessageManager()

template<typename SensorType>
virtual apollo::drivers::canbus::MessageManager< SensorType >::~MessageManager ( )
virtualdefault

Member Function Documentation

◆ AddRecvProtocolData()

template<typename SensorType >
template<class T , bool need_check>
void MessageManager::AddRecvProtocolData ( )
protected

◆ AddSendProtocolData()

template<typename SensorType >
template<class T , bool need_check>
void MessageManager::AddSendProtocolData ( )
protected

◆ ClearSensorData()

template<typename SensorType >
void MessageManager::ClearSensorData ( )

◆ GetMutableCVar()

template<typename SensorType >
std::condition_variable * MessageManager::GetMutableCVar ( )

◆ GetMutableProtocolDataById()

template<typename SensorType >
ProtocolData< SensorType > * MessageManager::GetMutableProtocolDataById ( const uint32_t  message_id)

get mutable protocol data by message id

Parameters
message_idthe id of the message
Returns
a pointer to the protocol data

◆ GetSensorData()

template<typename SensorType>
ErrorCode MessageManager::GetSensorData ( SensorType *const  sensor_data)

get chassis detail. used lock_guard in this function to avoid concurrent read/write issue.

Parameters
chassis_detailchassis_detail to be filled.

◆ Parse()

template<typename SensorType >
void MessageManager::Parse ( const uint32_t  message_id,
const uint8_t *  data,
int32_t  length 
)
virtual

parse data and store parsed info in protocol data

Parameters
message_idthe id of the message
dataa pointer to the data array to be parsed
lengththe length of data array

Reimplemented in apollo::drivers::racobit_radar::RacobitRadarMessageManager, apollo::drivers::ultrasonic_radar::UltrasonicRadarMessageManager, and apollo::drivers::conti_radar::ContiRadarMessageManager.

◆ ResetSendMessages()

template<typename SensorType >
void MessageManager::ResetSendMessages ( )

Member Data Documentation

◆ check_ids_

template<typename SensorType>
std::unordered_map<uint32_t, CheckIdArg> apollo::drivers::canbus::MessageManager< SensorType >::check_ids_
protected

◆ cvar_

template<typename SensorType>
std::condition_variable apollo::drivers::canbus::MessageManager< SensorType >::cvar_
protected

◆ is_received_on_time_

template<typename SensorType>
bool apollo::drivers::canbus::MessageManager< SensorType >::is_received_on_time_ = false
protected

◆ protocol_data_map_

template<typename SensorType>
std::unordered_map<uint32_t, ProtocolData<SensorType> *> apollo::drivers::canbus::MessageManager< SensorType >::protocol_data_map_
protected

◆ received_ids_

template<typename SensorType>
std::set<uint32_t> apollo::drivers::canbus::MessageManager< SensorType >::received_ids_
protected

◆ recv_protocol_data_

template<typename SensorType>
std::vector<std::unique_ptr<ProtocolData<SensorType> > > apollo::drivers::canbus::MessageManager< SensorType >::recv_protocol_data_
protected

◆ send_protocol_data_

template<typename SensorType>
std::vector<std::unique_ptr<ProtocolData<SensorType> > > apollo::drivers::canbus::MessageManager< SensorType >::send_protocol_data_
protected

◆ sensor_data_

template<typename SensorType>
SensorType apollo::drivers::canbus::MessageManager< SensorType >::sensor_data_
protected

◆ sensor_data_mutex_

template<typename SensorType>
std::mutex apollo::drivers::canbus::MessageManager< SensorType >::sensor_data_mutex_
protected

The documentation for this class was generated from the following file: