diff --git a/libraries/tests/mbed/can/main.cpp b/libraries/tests/mbed/can/main.cpp new file mode 100644 index 0000000000..d9cfa9595f --- /dev/null +++ b/libraries/tests/mbed/can/main.cpp @@ -0,0 +1,40 @@ +#include "mbed.h" + +Ticker ticker; +DigitalOut led1(LED1); +DigitalOut led2(LED2); +CAN can1(p9, p10); +CAN can2(p30, p29); +char counter = 0; + +void printmsg(char *title, CANMessage *msg) { + printf("%s [%03X]", title, msg->id); + for(char i = 0; i < msg->len; i++) { + printf(" %02X", msg->data[i]); + } + printf("\n"); +} + +void send() { + printf("send()\n"); + CANMessage msg = CANMessage(1337, &counter, 1); + if(can1.write(msg)) { + printmsg("Tx message:", &msg); + counter++; + } + led1 = !led1; +} + +int main() { + printf("main()\n"); + ticker.attach(&send, 1); + CANMessage msg; + while(1) { + printf("loop()\n"); + if(can1.read(msg)) { + printmsg("Rx message:", &msg); + led2 = !led2; + } + wait(0.2); + } +} diff --git a/libraries/tests/mbed/can_interrupt/main.cpp b/libraries/tests/mbed/can_interrupt/main.cpp new file mode 100644 index 0000000000..a73953b348 --- /dev/null +++ b/libraries/tests/mbed/can_interrupt/main.cpp @@ -0,0 +1,45 @@ +#include "mbed.h" + +Ticker ticker; +DigitalOut led1(LED1); +DigitalOut led2(LED2); +CAN can1(p9, p10); +CAN can2(p30, p29); +char counter = 0; + +void printmsg(char *title, CANMessage *msg) { + printf("%s [%03X]", title, msg->id); + for(char i = 0; i < msg->len; i++) { + printf(" %02X", msg->data[i]); + } + printf("\n"); +} + +void send() { + printf("send()\n"); + CANMessage msg = CANMessage(1337, &counter, 1); + if(can1.write(msg)) { + printmsg("Tx message:", &msg); + counter++; + } + led1 = !led1; +} + +void read() { + CANMessage msg; + printf("rx()\n"); + if(can1.read(msg)) { + printmsg("Rx message:", &msg); + led2 = !led2; + } +} + +int main() { + printf("main()\n"); + ticker.attach(&send, 1); + can1.attach(&read); + while(1) { + printf("loop()\n"); + wait(1); + } +} diff --git a/workspace_tools/tests.py b/workspace_tools/tests.py index 825e6e88a9..a144f58cd7 100644 --- a/workspace_tools/tests.py +++ b/workspace_tools/tests.py @@ -369,6 +369,18 @@ TESTS = [ "source_dir": join(TEST_DIR, "mbed", "interrupt_chaining", "ticker"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], }, + { + "id": "MBED_30", "description": "CAN network test", + "source_dir": join(TEST_DIR, "mbed", "can"), + "dependencies": [MBED_LIBRARIES], + "mcu": ["LPC1768"] + }, + { + "id": "MBED_31", "description": "CAN network test using interrupts", + "source_dir": join(TEST_DIR, "mbed", "can_interrupt"), + "dependencies": [MBED_LIBRARIES], + "mcu": ["LPC1768"] + }, # CMSIS RTOS tests {