Devan Lai
/
SLCAN
SLCAN/CAN-USB implementation for mbed targets
main.cpp@1:3644b10bce2f, 2016-06-09 (annotated)
- Committer:
- devanlai
- Date:
- Thu Jun 09 05:30:21 2016 +0000
- Revision:
- 1:3644b10bce2f
- Parent:
- 0:f2565808eea5
- Child:
- 3:bc163d555ddc
Fixed bug in USB serial output buffer
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 | 1:3644b10bce2f | 14 | /* |
devanlai | 0:f2565808eea5 | 15 | Serial hwUART(USBTX, USBRX); |
devanlai | 0:f2565808eea5 | 16 | SerialSLCAN slcan(hwUART, can1); |
devanlai | 1:3644b10bce2f | 17 | */ |
devanlai | 0:f2565808eea5 | 18 | |
devanlai | 0:f2565808eea5 | 19 | Timer timer; |
devanlai | 0:f2565808eea5 | 20 | DigitalOut led(LED1); |
devanlai | 0:f2565808eea5 | 21 | DigitalOut led2(LED2); |
devanlai | 0:f2565808eea5 | 22 | |
devanlai | 0:f2565808eea5 | 23 | int main() { |
devanlai | 0:f2565808eea5 | 24 | can1.mode(CAN::Reset); |
devanlai | 0:f2565808eea5 | 25 | //can1.frequency(500000); |
devanlai | 0:f2565808eea5 | 26 | //can1.mode(CAN::Silent); |
devanlai | 0:f2565808eea5 | 27 | |
devanlai | 1:3644b10bce2f | 28 | virtualUART.connect(false); |
devanlai | 1:3644b10bce2f | 29 | //hwUART.baud(115200); |
devanlai | 0:f2565808eea5 | 30 | |
devanlai | 0:f2565808eea5 | 31 | led = 0; |
devanlai | 0:f2565808eea5 | 32 | led2 = 1; |
devanlai | 0:f2565808eea5 | 33 | while(1) { |
devanlai | 0:f2565808eea5 | 34 | bool active = false; |
devanlai | 1:3644b10bce2f | 35 | //active = slcan.update(); |
devanlai | 1:3644b10bce2f | 36 | |
devanlai | 0:f2565808eea5 | 37 | if (virtualUART.configured()) { |
devanlai | 0:f2565808eea5 | 38 | led2 = 0; |
devanlai | 0:f2565808eea5 | 39 | active = slcan.update(); |
devanlai | 0:f2565808eea5 | 40 | } else { |
devanlai | 0:f2565808eea5 | 41 | led2 = 1; |
devanlai | 0:f2565808eea5 | 42 | virtualUART.connect(false); |
devanlai | 0:f2565808eea5 | 43 | } |
devanlai | 1:3644b10bce2f | 44 | |
devanlai | 0:f2565808eea5 | 45 | |
devanlai | 0:f2565808eea5 | 46 | if (active) { |
devanlai | 0:f2565808eea5 | 47 | timer.reset(); |
devanlai | 0:f2565808eea5 | 48 | timer.start(); |
devanlai | 0:f2565808eea5 | 49 | } |
devanlai | 0:f2565808eea5 | 50 | |
devanlai | 0:f2565808eea5 | 51 | if (timer.read_ms() > 100) { |
devanlai | 0:f2565808eea5 | 52 | led = 0; |
devanlai | 0:f2565808eea5 | 53 | timer.stop(); |
devanlai | 0:f2565808eea5 | 54 | } else { |
devanlai | 0:f2565808eea5 | 55 | led = 1; |
devanlai | 0:f2565808eea5 | 56 | } |
devanlai | 0:f2565808eea5 | 57 | } |
devanlai | 0:f2565808eea5 | 58 | } |