Руслан Урядинский / libuavcan

Dependents:   UAVCAN UAVCAN_Subscriber

Committer:
RuslanUrya
Date:
Sat Apr 14 10:25:32 2018 +0000
Revision:
0:dfe6edabb8ec
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RuslanUrya 0:dfe6edabb8ec 1 /*
RuslanUrya 0:dfe6edabb8ec 2 * Copyright (C) 2015 Pavel Kirienko <pavel.kirienko@gmail.com>
RuslanUrya 0:dfe6edabb8ec 3 */
RuslanUrya 0:dfe6edabb8ec 4
RuslanUrya 0:dfe6edabb8ec 5 #include <uavcan_posix/dynamic_node_id_server/file_event_tracer.hpp>
RuslanUrya 0:dfe6edabb8ec 6 #include <uavcan_posix/dynamic_node_id_server/file_storage_backend.hpp>
RuslanUrya 0:dfe6edabb8ec 7 #include <uavcan_linux/uavcan_linux.hpp>
RuslanUrya 0:dfe6edabb8ec 8 #include <iostream>
RuslanUrya 0:dfe6edabb8ec 9 #include <iomanip>
RuslanUrya 0:dfe6edabb8ec 10 #include "debug.hpp"
RuslanUrya 0:dfe6edabb8ec 11
RuslanUrya 0:dfe6edabb8ec 12 int main(int argc, const char** argv)
RuslanUrya 0:dfe6edabb8ec 13 {
RuslanUrya 0:dfe6edabb8ec 14 (void)argc;
RuslanUrya 0:dfe6edabb8ec 15 (void)argv;
RuslanUrya 0:dfe6edabb8ec 16 try
RuslanUrya 0:dfe6edabb8ec 17 {
RuslanUrya 0:dfe6edabb8ec 18 ENFORCE(0 == std::system("mkdir -p /tmp/uavcan_posix/dynamic_node_id_server"));
RuslanUrya 0:dfe6edabb8ec 19
RuslanUrya 0:dfe6edabb8ec 20 /*
RuslanUrya 0:dfe6edabb8ec 21 * Event tracer test
RuslanUrya 0:dfe6edabb8ec 22 */
RuslanUrya 0:dfe6edabb8ec 23 {
RuslanUrya 0:dfe6edabb8ec 24 using namespace uavcan::dynamic_node_id_server;
RuslanUrya 0:dfe6edabb8ec 25
RuslanUrya 0:dfe6edabb8ec 26 const std::string event_log_file("/tmp/uavcan_posix/dynamic_node_id_server/event.log");
RuslanUrya 0:dfe6edabb8ec 27
RuslanUrya 0:dfe6edabb8ec 28 uavcan_posix::dynamic_node_id_server::FileEventTracer tracer;
RuslanUrya 0:dfe6edabb8ec 29 ENFORCE(0 <= tracer.init(event_log_file.c_str()));
RuslanUrya 0:dfe6edabb8ec 30
RuslanUrya 0:dfe6edabb8ec 31 // Adding a line
RuslanUrya 0:dfe6edabb8ec 32 static_cast<IEventTracer&>(tracer).onEvent(TraceError, 123456);
RuslanUrya 0:dfe6edabb8ec 33 ENFORCE(0 == std::system(("cat " + event_log_file).c_str()));
RuslanUrya 0:dfe6edabb8ec 34
RuslanUrya 0:dfe6edabb8ec 35 // Removing the log file
RuslanUrya 0:dfe6edabb8ec 36 ENFORCE(0 == std::system(("rm -f " + event_log_file).c_str()));
RuslanUrya 0:dfe6edabb8ec 37
RuslanUrya 0:dfe6edabb8ec 38 // Adding another line
RuslanUrya 0:dfe6edabb8ec 39 static_cast<IEventTracer&>(tracer).onEvent(TraceError, 789123);
RuslanUrya 0:dfe6edabb8ec 40 ENFORCE(0 == std::system(("cat " + event_log_file).c_str()));
RuslanUrya 0:dfe6edabb8ec 41 }
RuslanUrya 0:dfe6edabb8ec 42
RuslanUrya 0:dfe6edabb8ec 43 /*
RuslanUrya 0:dfe6edabb8ec 44 * Storage backend test
RuslanUrya 0:dfe6edabb8ec 45 */
RuslanUrya 0:dfe6edabb8ec 46 {
RuslanUrya 0:dfe6edabb8ec 47 using namespace uavcan::dynamic_node_id_server;
RuslanUrya 0:dfe6edabb8ec 48
RuslanUrya 0:dfe6edabb8ec 49 uavcan_posix::dynamic_node_id_server::FileStorageBackend backend;
RuslanUrya 0:dfe6edabb8ec 50 ENFORCE(0 <= backend.init("/tmp/uavcan_posix/dynamic_node_id_server/storage"));
RuslanUrya 0:dfe6edabb8ec 51
RuslanUrya 0:dfe6edabb8ec 52 auto print_key = [&](const char* key) {
RuslanUrya 0:dfe6edabb8ec 53 std::cout << static_cast<IStorageBackend&>(backend).get(key).c_str() << std::endl;
RuslanUrya 0:dfe6edabb8ec 54 };
RuslanUrya 0:dfe6edabb8ec 55
RuslanUrya 0:dfe6edabb8ec 56 print_key("foobar");
RuslanUrya 0:dfe6edabb8ec 57
RuslanUrya 0:dfe6edabb8ec 58 static_cast<IStorageBackend&>(backend).set("foobar", "0123456789abcdef0123456789abcdef");
RuslanUrya 0:dfe6edabb8ec 59 static_cast<IStorageBackend&>(backend).set("the_answer", "42");
RuslanUrya 0:dfe6edabb8ec 60
RuslanUrya 0:dfe6edabb8ec 61 print_key("foobar");
RuslanUrya 0:dfe6edabb8ec 62 print_key("the_answer");
RuslanUrya 0:dfe6edabb8ec 63 print_key("nonexistent");
RuslanUrya 0:dfe6edabb8ec 64 }
RuslanUrya 0:dfe6edabb8ec 65
RuslanUrya 0:dfe6edabb8ec 66 return 0;
RuslanUrya 0:dfe6edabb8ec 67 }
RuslanUrya 0:dfe6edabb8ec 68 catch (const std::exception& ex)
RuslanUrya 0:dfe6edabb8ec 69 {
RuslanUrya 0:dfe6edabb8ec 70 std::cerr << "Exception: " << ex.what() << std::endl;
RuslanUrya 0:dfe6edabb8ec 71 return 1;
RuslanUrya 0:dfe6edabb8ec 72 }
RuslanUrya 0:dfe6edabb8ec 73 }