Paul Paterson
/
CanPipe_Example
Demonstration example for CanPipe Library.
ExampleCanProtocol.h
- Committer:
- ptpaterson
- Date:
- 2016-11-07
- Revision:
- 1:7cf308c1484d
File content as of revision 1:7cf308c1484d:
#ifndef EXAMPLE_CAN_PROTOCOL_H #define EXAMPLE_CAN_PROTOCOL_H #include "CanPipe.h" /** example protocol class */ class ExampleCanProtocol { int adder_; CanPipe* p_can_pipe_; public: ExampleCanProtocol(): adder_(0) {} int adder_cb(CANMessage &msg) { adder_ += msg.data[0]; printf(" ExampleCanProtocol::adder_cb - %d\r\n", adder_); return CanPipe::kOkay; } int echo_cb(CANMessage &msg) { CANMessage response(msg.id + 0x100); response.len = msg.len; response.format = CANStandard; response.type = CANData; memcpy(response.data, msg.data, msg.len); p_can_pipe_->PostMessage(response); printf(" ExampleCanProtocol::echo_cb \r\n"); for (int i = 0; i < msg.len; ++i) { printf(" %d - 0x%02X\r\n", i, msg.data[i]); } return CanPipe::kOkay; } void RegisterProtocols(CanPipe &can_pipe) { p_can_pipe_ = &can_pipe; int handle; handle = p_can_pipe_->RegisterFilter(0x400, 0x7ff, CANAny, 3); p_can_pipe_->RegisterCallback<ExampleCanProtocol>(this, &ExampleCanProtocol::adder_cb, handle); handle = p_can_pipe_->RegisterFilter(0x500, 0x700, CANAny, 2); p_can_pipe_->RegisterCallback<ExampleCanProtocol>(this, &ExampleCanProtocol::echo_cb, handle); } }; #endif /* EXAMPLE_CAN_PROTOCOL_H */