Paul Paterson
/
CanPipe_Example
Demonstration example for CanPipe Library.
main.cpp
- Committer:
- ptpaterson
- Date:
- 2016-11-07
- Revision:
- 1:7cf308c1484d
- Parent:
- 0:5abca479f387
File content as of revision 1:7cf308c1484d:
#include "mbed.h" #include "CanPipe.h" #include "ExampleCanProtocol.h" Ticker ticker; DigitalOut led1(LED1); CAN m_can(P0_11, P0_31); CanPipe m_can_pipe(&m_can); char counter = 0; void send() { led1 = !led1; m_can_pipe.PostMessage(CANMessage(1337, &counter, 1)); //m_can.write(CANMessage(1337, &counter, 1)); ++counter; } /* Define user static callbacks */ int user_cb1(CANMessage &msg) { printf("user_cb1\r\n"); return CanPipe::kOkay; } int user_cb2(CANMessage &msg) { printf("user_cb2\r\n"); return CanPipe::kOkay; } int user_cb3(CANMessage &msg) { printf("user_cb3\r\n"); return CanPipe::kOkay; } /* main program */ int main() { m_can.frequency(500000); int handle; /* 1 is default hardware filter handle for ALL messages. override it. * Otherwise, other filters will be skipped */ handle = m_can.filter(0x000, 0x7ff, CANAny, 1); /* react to message 0x400 */ handle = m_can_pipe.RegisterFilter(0x400, 0x7ff, CANAny, 3); m_can_pipe.RegisterCallback(CanMessageCallback(user_cb1), handle); /* react to messages 0x500 to 0x5FF */ handle = m_can_pipe.RegisterFilter(0x500, 0x700, CANAny, 2); m_can_pipe.RegisterCallback(CanMessageCallback(user_cb2), handle); m_can_pipe.RegisterCallback(CanMessageCallback(user_cb3), handle); /* CanProtocol callbacks will be called after the user callbacks */ ExampleCanProtocol protocol; protocol.RegisterProtocols(m_can_pipe); /* Schedule a message to be sent once a second */ ticker.attach(send, 1); while (1) { /* We know there will be nothing to handle until there is an interrupt */ __WFI(); //sleep(); /* Handle the messages as soon as we can */ m_can_pipe.HandleMessages(); } }