diff options
feat(main): Implement file reading and parsing
1 files changed, 37 insertions, 1 deletions
| -rw-r--r-- | src/main.cpp | 38 |
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 }); + } + } } |
