@@ -23,32 +23,24 @@ namespace isobus
2323 myControlFunction (internalControlFunction)
2424 {
2525 assert (nullptr != myControlFunction && " ParameterGroupNumberRequestProtocol::ParameterGroupNumberRequestProtocol() called with nullptr internalControlFunction" );
26- CANNetworkManager::CANNetwork.add_protocol_parameter_group_number_callback (static_cast <std::uint32_t >(CANLibParameterGroupNumber::ParameterGroupNumberRequest), process_message, this );
27- CANNetworkManager::CANNetwork.add_protocol_parameter_group_number_callback (static_cast <std::uint32_t >(CANLibParameterGroupNumber::RequestForRepetitionRate), process_message, this );
2826 }
2927
30- ParameterGroupNumberRequestProtocol::~ParameterGroupNumberRequestProtocol ()
31- {
32- CANNetworkManager::CANNetwork.remove_protocol_parameter_group_number_callback (static_cast <std::uint32_t >(CANLibParameterGroupNumber::ParameterGroupNumberRequest), process_message, this );
33- CANNetworkManager::CANNetwork.remove_protocol_parameter_group_number_callback (static_cast <std::uint32_t >(CANLibParameterGroupNumber::RequestForRepetitionRate), process_message, this );
34- }
35-
36- bool ParameterGroupNumberRequestProtocol::request_parameter_group_number (std::uint32_t pgn, std::shared_ptr<InternalControlFunction> source, std::shared_ptr<ControlFunction> destination)
28+ bool ParameterGroupNumberRequestProtocol::request_parameter_group_number (std::uint32_t pgn, std::shared_ptr<ControlFunction> destination)
3729 {
3830 std::array<std::uint8_t , PGN_REQUEST_LENGTH> buffer;
3931
4032 buffer[0 ] = static_cast <std::uint8_t >(pgn & 0xFF );
4133 buffer[1 ] = static_cast <std::uint8_t >((pgn >> 8 ) & 0xFF );
4234 buffer[2 ] = static_cast <std::uint8_t >((pgn >> 16 ) & 0xFF );
4335
44- return CANNetworkManager::CANNetwork. send_can_message (static_cast <std::uint32_t >(CANLibParameterGroupNumber::ParameterGroupNumberRequest),
45- buffer.data (),
46- PGN_REQUEST_LENGTH,
47- source ,
48- destination);
36+ return send_can_message (static_cast <std::uint32_t >(CANLibParameterGroupNumber::ParameterGroupNumberRequest),
37+ buffer.data (),
38+ PGN_REQUEST_LENGTH,
39+ myControlFunction ,
40+ destination);
4941 }
5042
51- bool ParameterGroupNumberRequestProtocol::request_repetition_rate (std::uint32_t pgn, std::uint16_t repetitionRate_ms, std::shared_ptr<InternalControlFunction> source, std::shared_ptr< ControlFunction> destination)
43+ bool ParameterGroupNumberRequestProtocol::request_repetition_rate (std::uint32_t pgn, std::uint16_t repetitionRate_ms, std::shared_ptr<ControlFunction> destination)
5244 {
5345 std::array<std::uint8_t , CAN_DATA_LENGTH> buffer;
5446
@@ -61,11 +53,11 @@ namespace isobus
6153 buffer[6 ] = 0xFF ;
6254 buffer[7 ] = 0xFF ;
6355
64- return CANNetworkManager::CANNetwork. send_can_message (static_cast <std::uint32_t >(CANLibParameterGroupNumber::RequestForRepetitionRate),
65- buffer.data (),
66- CAN_DATA_LENGTH,
67- source ,
68- destination);
56+ return send_can_message (static_cast <std::uint32_t >(CANLibParameterGroupNumber::RequestForRepetitionRate),
57+ buffer.data (),
58+ CAN_DATA_LENGTH,
59+ myControlFunction ,
60+ destination);
6961 }
7062
7163 bool ParameterGroupNumberRequestProtocol::register_pgn_request_callback (std::uint32_t pgn, PGNRequestCallback callback, void *parentPointer)
@@ -162,18 +154,16 @@ namespace isobus
162154 return ((obj.callbackFunction == this ->callbackFunction ) && (obj.pgn == this ->pgn ) && (obj.parent == this ->parent ));
163155 }
164156
165- void ParameterGroupNumberRequestProtocol::process_message (const CANMessage &message)
157+ void ParameterGroupNumberRequestProtocol::process_rx_message (const CANMessage &message)
166158 {
167- if (((nullptr == message.get_destination_control_function ()) &&
168- (BROADCAST_CAN_ADDRESS == message.get_identifier ().get_destination_address ())) ||
169- (message.get_destination_control_function () == myControlFunction))
159+ if (message.is_broadcast () || message.is_destination (myControlFunction))
170160 {
171161 switch (message.get_identifier ().get_parameter_group_number ())
172162 {
173163 case static_cast <std::uint32_t >(CANLibParameterGroupNumber::RequestForRepetitionRate):
174164 {
175165 // Can't send this request to global, and must be 8 bytes. Ignore illegal message formats
176- if ((CAN_DATA_LENGTH == message.get_data_length ()) && ( nullptr != message.get_destination_control_function () ))
166+ if ((CAN_DATA_LENGTH == message.get_data_length ()) && message.is_destination (myControlFunction ))
177167 {
178168 std::uint32_t requestedPGN = message.get_uint24_at (0 );
179169 std::uint16_t requestedRate = message.get_uint16_at (3 );
@@ -235,7 +225,7 @@ namespace isobus
235225 }
236226 }
237227
238- if ((!anyCallbackProcessed) && ( nullptr != message.get_destination_control_function () ))
228+ if ((!anyCallbackProcessed) && message.is_destination (myControlFunction ))
239229 {
240230 send_acknowledgement (AcknowledgementType::Negative,
241231 requestedPGN,
@@ -258,14 +248,6 @@ namespace isobus
258248 }
259249 }
260250
261- void ParameterGroupNumberRequestProtocol::process_message (const CANMessage &message, void *parent)
262- {
263- if (nullptr != parent)
264- {
265- reinterpret_cast <ParameterGroupNumberRequestProtocol *>(parent)->process_message (message);
266- }
267- }
268-
269251 bool ParameterGroupNumberRequestProtocol::send_acknowledgement (AcknowledgementType type, std::uint32_t parameterGroupNumber, std::shared_ptr<ControlFunction> destination) const
270252 {
271253 bool retVal = false ;
@@ -283,11 +265,11 @@ namespace isobus
283265 buffer[6 ] = static_cast <std::uint8_t >((parameterGroupNumber >> 8 ) & 0xFF );
284266 buffer[7 ] = static_cast <std::uint8_t >((parameterGroupNumber >> 16 ) & 0xFF );
285267
286- retVal = CANNetworkManager::CANNetwork. send_can_message (static_cast <std::uint32_t >(CANLibParameterGroupNumber::Acknowledge),
287- buffer.data (),
288- CAN_DATA_LENGTH,
289- myControlFunction,
290- nullptr );
268+ retVal = send_can_message (static_cast <std::uint32_t >(CANLibParameterGroupNumber::Acknowledge),
269+ buffer.data (),
270+ CAN_DATA_LENGTH,
271+ myControlFunction,
272+ nullptr );
291273 }
292274 return retVal;
293275 }
0 commit comments