diff options
feat(main): Implement file reading and parsing
2 files changed, 70 insertions, 1 deletions
| -rw-r--r-- | messages.txt | 33 | ||||
| -rw-r--r-- | src/main.cpp | 38 |
diff --git a/messages.txt b/messages.txt new file mode 100644 index 0000000..c264da1 --- /dev/null +++ b/messages.txt @@ -0,0 +1,33 @@ +7400210C00000000000 +7600650C0003201F4AA +7400221830000000000 +760101A618339484D31 +7403000000000000000 +7602141341101000265 +7602295616529201203 +76023000000000080AA +7430210C00000000000 +7630650C0003201F4AA +7430221830000000000 +763101A618339485030 +7433000000000000000 +76321411642517F0092 +7632214190100062003 +76323000000000080AA +7430221800000000000 +763037F2112AAAAAAAA +7E00210C00000000000 +7E80650C0003201F4AA +7E00221810000000000 +7E810156181314E3441 +7E03000000000000000 +7E8214C33415039464E +7E82239303031363300 +7E82300AAAAAAAAAAAA +7100210C00000000000 +7100210C00000000000 +7100210C00000000000 +7E00210C00000000000 +7E80650C0003201F4AA +7E00322F1A000000000 +7E8037F2212AAAAAAAA diff --git a/src/main.cpp b/src/main.cpp index 15d32bd..97f1a5c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,41 @@ #include <iostream> +#include <fstream> +#include <map> +#include "message.h" +#include "frame.h" + +using namespace std; int main() { - std::cout << "Hello" << std::endl; + ifstream msgFile("messages.txt"); + if (!msgFile.is_open()) { + return 1; + } + + map<unsigned int, Message> unfinished_messages; + string line; + unsigned int can_id; + + while (getline(msgFile, line)) { + const char* data = line.c_str(); + sscanf(data, "%3x", &can_id); + Frame frame(data + 3); + + if (unfinished_messages.count(can_id)) { + Message& m = unfinished_messages[can_id]; + + m.receive_frame(frame); + cout << m << endl; + + if (!m.expects_more_frames()) + unfinished_messages.erase(can_id); + } + else { + Message m(can_id, frame); + cout << m << endl; + + if (m.expects_more_frames()) + unfinished_messages.insert({ can_id, m }); + } + } } |
