Devan Lai
/
SLCAN
SLCAN/CAN-USB implementation for mbed targets
main.cpp@3:bc163d555ddc, 2017-02-04 (annotated)
- Committer:
- devanlai
- Date:
- Sat Feb 04 09:49:57 2017 +0000
- Revision:
- 3:bc163d555ddc
- Parent:
- 1:3644b10bce2f
Send z/Z response as expected for T/t/R/r commands.; Add minimal support for F/M/m/s commands for compatibility
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
devanlai | 0:f2565808eea5 | 1 | #include <mbed.h> |
devanlai | 0:f2565808eea5 | 2 | #include <USBSerial.h> |
devanlai | 0:f2565808eea5 | 3 | #include "slcan.h" |
devanlai | 0:f2565808eea5 | 4 | |
devanlai | 0:f2565808eea5 | 5 | static const uint16_t VID = 0x1209; |
devanlai | 0:f2565808eea5 | 6 | static const uint16_t PID = 0x0001; |
devanlai | 0:f2565808eea5 | 7 | static const uint16_t VERSION = 0x0001; |
devanlai | 0:f2565808eea5 | 8 | |
devanlai | 0:f2565808eea5 | 9 | |
devanlai | 0:f2565808eea5 | 10 | CAN can1(D9, D10); |
devanlai | 0:f2565808eea5 | 11 | USBSerial virtualUART(VID, PID, VERSION, false); |
devanlai | 0:f2565808eea5 | 12 | USBSLCAN slcan(virtualUART, can1); |
devanlai | 0:f2565808eea5 | 13 | |
devanlai | 3:bc163d555ddc | 14 | //Serial hwUART(USBTX, USBRX); |
devanlai | 3:bc163d555ddc | 15 | //SerialSLCAN slcan(hwUART, can1); |
devanlai | 0:f2565808eea5 | 16 | |
devanlai | 0:f2565808eea5 | 17 | Timer timer; |
devanlai | 0:f2565808eea5 | 18 | DigitalOut led(LED1); |
devanlai | 0:f2565808eea5 | 19 | DigitalOut led2(LED2); |
devanlai | 0:f2565808eea5 | 20 | |
devanlai | 0:f2565808eea5 | 21 | int main() { |
devanlai | 1:3644b10bce2f | 22 | virtualUART.connect(false); |
devanlai | 1:3644b10bce2f | 23 | //hwUART.baud(115200); |
devanlai | 0:f2565808eea5 | 24 | |
devanlai | 0:f2565808eea5 | 25 | led = 0; |
devanlai | 0:f2565808eea5 | 26 | led2 = 1; |
devanlai | 0:f2565808eea5 | 27 | while(1) { |
devanlai | 0:f2565808eea5 | 28 | bool active = false; |
devanlai | 1:3644b10bce2f | 29 | //active = slcan.update(); |
devanlai | 1:3644b10bce2f | 30 | |
devanlai | 0:f2565808eea5 | 31 | if (virtualUART.configured()) { |
devanlai | 0:f2565808eea5 | 32 | led2 = 0; |
devanlai | 0:f2565808eea5 | 33 | active = slcan.update(); |
devanlai | 0:f2565808eea5 | 34 | } else { |
devanlai | 0:f2565808eea5 | 35 | led2 = 1; |
devanlai | 0:f2565808eea5 | 36 | virtualUART.connect(false); |
devanlai | 0:f2565808eea5 | 37 | } |
devanlai | 1:3644b10bce2f | 38 | |
devanlai | 0:f2565808eea5 | 39 | if (active) { |
devanlai | 0:f2565808eea5 | 40 | timer.reset(); |
devanlai | 0:f2565808eea5 | 41 | timer.start(); |
devanlai | 0:f2565808eea5 | 42 | } |
devanlai | 0:f2565808eea5 | 43 | |
devanlai | 0:f2565808eea5 | 44 | if (timer.read_ms() > 100) { |
devanlai | 0:f2565808eea5 | 45 | led = 0; |
devanlai | 0:f2565808eea5 | 46 | timer.stop(); |
devanlai | 0:f2565808eea5 | 47 | } else { |
devanlai | 0:f2565808eea5 | 48 | led = 1; |
devanlai | 0:f2565808eea5 | 49 | } |
devanlai | 0:f2565808eea5 | 50 | } |
devanlai | 0:f2565808eea5 | 51 | } |