Paul Paterson
/
CanPipe_Example
Demonstration example for CanPipe Library.
main.cpp@1:7cf308c1484d, 2016-11-07 (annotated)
- Committer:
- ptpaterson
- Date:
- Mon Nov 07 02:16:45 2016 +0000
- Revision:
- 1:7cf308c1484d
- Parent:
- 0:5abca479f387
Cleaned up example for updates to CanPipe.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ptpaterson | 0:5abca479f387 | 1 | #include "mbed.h" |
ptpaterson | 0:5abca479f387 | 2 | #include "CanPipe.h" |
ptpaterson | 1:7cf308c1484d | 3 | #include "ExampleCanProtocol.h" |
ptpaterson | 0:5abca479f387 | 4 | |
ptpaterson | 0:5abca479f387 | 5 | Ticker ticker; |
ptpaterson | 0:5abca479f387 | 6 | DigitalOut led1(LED1); |
ptpaterson | 0:5abca479f387 | 7 | |
ptpaterson | 0:5abca479f387 | 8 | CAN m_can(P0_11, P0_31); |
ptpaterson | 0:5abca479f387 | 9 | CanPipe m_can_pipe(&m_can); |
ptpaterson | 0:5abca479f387 | 10 | |
ptpaterson | 0:5abca479f387 | 11 | char counter = 0; |
ptpaterson | 0:5abca479f387 | 12 | void send() { |
ptpaterson | 0:5abca479f387 | 13 | led1 = !led1; |
ptpaterson | 0:5abca479f387 | 14 | m_can_pipe.PostMessage(CANMessage(1337, &counter, 1)); |
ptpaterson | 1:7cf308c1484d | 15 | //m_can.write(CANMessage(1337, &counter, 1)); |
ptpaterson | 1:7cf308c1484d | 16 | ++counter; |
ptpaterson | 0:5abca479f387 | 17 | } |
ptpaterson | 0:5abca479f387 | 18 | |
ptpaterson | 1:7cf308c1484d | 19 | /* Define user static callbacks */ |
ptpaterson | 1:7cf308c1484d | 20 | int user_cb1(CANMessage &msg) { printf("user_cb1\r\n"); return CanPipe::kOkay; } |
ptpaterson | 1:7cf308c1484d | 21 | int user_cb2(CANMessage &msg) { printf("user_cb2\r\n"); return CanPipe::kOkay; } |
ptpaterson | 1:7cf308c1484d | 22 | int user_cb3(CANMessage &msg) { printf("user_cb3\r\n"); return CanPipe::kOkay; } |
ptpaterson | 0:5abca479f387 | 23 | |
ptpaterson | 1:7cf308c1484d | 24 | /* main program */ |
ptpaterson | 0:5abca479f387 | 25 | int main() { |
ptpaterson | 1:7cf308c1484d | 26 | m_can.frequency(500000); |
ptpaterson | 1:7cf308c1484d | 27 | |
ptpaterson | 0:5abca479f387 | 28 | int handle; |
ptpaterson | 0:5abca479f387 | 29 | |
ptpaterson | 1:7cf308c1484d | 30 | /* 1 is default hardware filter handle for ALL messages. override it. |
ptpaterson | 1:7cf308c1484d | 31 | * Otherwise, other filters will be skipped |
ptpaterson | 1:7cf308c1484d | 32 | */ |
ptpaterson | 1:7cf308c1484d | 33 | handle = m_can.filter(0x000, 0x7ff, CANAny, 1); |
ptpaterson | 1:7cf308c1484d | 34 | |
ptpaterson | 1:7cf308c1484d | 35 | /* react to message 0x400 */ |
ptpaterson | 1:7cf308c1484d | 36 | handle = m_can_pipe.RegisterFilter(0x400, 0x7ff, CANAny, 3); |
ptpaterson | 1:7cf308c1484d | 37 | m_can_pipe.RegisterCallback(CanMessageCallback(user_cb1), handle); |
ptpaterson | 0:5abca479f387 | 38 | |
ptpaterson | 1:7cf308c1484d | 39 | /* react to messages 0x500 to 0x5FF */ |
ptpaterson | 1:7cf308c1484d | 40 | handle = m_can_pipe.RegisterFilter(0x500, 0x700, CANAny, 2); |
ptpaterson | 1:7cf308c1484d | 41 | m_can_pipe.RegisterCallback(CanMessageCallback(user_cb2), handle); |
ptpaterson | 1:7cf308c1484d | 42 | m_can_pipe.RegisterCallback(CanMessageCallback(user_cb3), handle); |
ptpaterson | 0:5abca479f387 | 43 | |
ptpaterson | 1:7cf308c1484d | 44 | /* CanProtocol callbacks will be called after the user callbacks */ |
ptpaterson | 1:7cf308c1484d | 45 | ExampleCanProtocol protocol; |
ptpaterson | 1:7cf308c1484d | 46 | protocol.RegisterProtocols(m_can_pipe); |
ptpaterson | 1:7cf308c1484d | 47 | |
ptpaterson | 1:7cf308c1484d | 48 | /* Schedule a message to be sent once a second */ |
ptpaterson | 0:5abca479f387 | 49 | ticker.attach(send, 1); |
ptpaterson | 0:5abca479f387 | 50 | |
ptpaterson | 0:5abca479f387 | 51 | while (1) { |
ptpaterson | 1:7cf308c1484d | 52 | /* We know there will be nothing to handle until there is an interrupt */ |
ptpaterson | 0:5abca479f387 | 53 | __WFI(); //sleep(); |
ptpaterson | 1:7cf308c1484d | 54 | /* Handle the messages as soon as we can */ |
ptpaterson | 0:5abca479f387 | 55 | m_can_pipe.HandleMessages(); |
ptpaterson | 0:5abca479f387 | 56 | } |
ptpaterson | 0:5abca479f387 | 57 | } |