diff --git a/experiments/can/can_receive_counter.cpp b/experiments/can/can_receive_counter.cpp new file mode 100644 index 0000000..6144709 --- /dev/null +++ b/experiments/can/can_receive_counter.cpp @@ -0,0 +1,41 @@ +// +// Created by zuma on 12.10.2020. +// + +#include +#include +#include + +int main() { + AsyncDevice device; + auto canDevice = new PICANDevice("can1"); + + int counter = 1; + std::promise is_success_promise; + auto is_success = is_success_promise.get_future(); + auto closure = [&is_success_promise, &counter, canDevice](CAN_Raw msg){ + if (msg.Id != 0x20) return; + if (msg.Size != sizeof(int)) { + is_success_promise.set_value(false); + throw can::error(canDevice, can::error::closed, ""); + } + int recv_counter = reinterpret_cast(msg.Data); + if (counter != recv_counter) { + piCout << recv_counter << "<- miss ordering"; +// is_success_promise.set_value(false); +// throw can::error(canDevice, can::error::closed, ""); + } else { + piCout << recv_counter; + } + counter = recv_counter + 1; + if (counter - 1 == 1000) { + is_success_promise.set_value(true); + throw can::error(canDevice, can::error::closed, ""); + } + }; + CONNECTL(&device, readEvent, closure); + + device.replace(canDevice); + bool result = is_success.get(); + piCout << (result ? "success" : "failure"); +} \ No newline at end of file diff --git a/experiments/can/can_send_counter.cpp b/experiments/can/can_send_counter.cpp new file mode 100644 index 0000000..a0104cd --- /dev/null +++ b/experiments/can/can_send_counter.cpp @@ -0,0 +1,22 @@ +// +// Created by zuma on 12.10.2020. +// + +#include +#include + +int main() { + AsyncDevice device; + device.replace(new PICANDevice("can0")); + + CAN_Raw msg = { .Id = 0x20, .Size = sizeof(int) }; + int& counter = reinterpret_cast(msg.Data); + + counter = 0; + while (counter++ < 1000) { + device.send(msg); + piMSleep(1); + } + + piSleep(5); +} \ No newline at end of file