SLCAN/CAN-USB implementation for mbed targets

Dependencies:   USBDevice mbed

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?

UserRevisionLine numberNew 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 }