diff --git a/.cache/clangd/index/main.cpp.6C7D4E708A9CF215.idx b/.cache/clangd/index/main.cpp.6C7D4E708A9CF215.idx index a421d40..b2a2d0b 100644 Binary files a/.cache/clangd/index/main.cpp.6C7D4E708A9CF215.idx and b/.cache/clangd/index/main.cpp.6C7D4E708A9CF215.idx differ diff --git a/.cache/clangd/index/p_serial_packet.cpp.45B1DE7F1E66FFCC.idx b/.cache/clangd/index/p_serial_packet.cpp.45B1DE7F1E66FFCC.idx index 30a65d5..97f1cdf 100644 Binary files a/.cache/clangd/index/p_serial_packet.cpp.45B1DE7F1E66FFCC.idx and b/.cache/clangd/index/p_serial_packet.cpp.45B1DE7F1E66FFCC.idx differ diff --git a/.cache/clangd/index/p_serial_packet.h.38E83F6A61EFB6BA.idx b/.cache/clangd/index/p_serial_packet.h.38E83F6A61EFB6BA.idx index cf0747f..56e0319 100644 Binary files a/.cache/clangd/index/p_serial_packet.h.38E83F6A61EFB6BA.idx and b/.cache/clangd/index/p_serial_packet.h.38E83F6A61EFB6BA.idx differ diff --git a/bin/sbm b/bin/sbm new file mode 100644 index 0000000..dd731f6 Binary files /dev/null and b/bin/sbm differ diff --git a/build/main.o b/build/main.o index cf9d595..856576e 100644 Binary files a/build/main.o and b/build/main.o differ diff --git a/build/p_serial_packet.o b/build/p_serial_packet.o new file mode 100644 index 0000000..006df43 Binary files /dev/null and b/build/p_serial_packet.o differ diff --git a/src/main.cpp b/src/main.cpp index 9990841..eb61b24 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,8 +1,10 @@ #include "p_serial_bus.h" +#include "p_serial_packet.h" #include #include #include #include +#include #include #define SERIAL_DEV ("/dev/ttyAMA1") @@ -29,9 +31,20 @@ int main() for (;;) { zmq::message_t msg; + int32_t x = 0; + int32_t y = 0; if (sub.recv(&msg, 0)) { - std::cout << msg << std::endl; + uint8_t xy[64]; + memset(xy, 0, 64); + memcpy(xy, msg.data(), msg.size()); + sscanf((const char*)xy, "X:%" PRId32 " Y:%" PRId32 "\n", &x, &y); + ps_packet xy_packet = ps_packet::from_xy(x, y); + for (int ind = 0; ind < xy_packet.msg_len; ind++) + { + printf("[%d]: %02x ", ind, xy_packet.data[ind]); + } + printf("\n"); } } diff --git a/src/p_serial_packet.cpp b/src/p_serial_packet.cpp index c179154..754871a 100644 --- a/src/p_serial_packet.cpp +++ b/src/p_serial_packet.cpp @@ -14,8 +14,16 @@ ps_packet::ps_packet(uint8_t _src_addr, uint8_t _dest_addr, src_addr = &data[1]; dest_addr = &data[2]; frame_data_len = &data[3]; + frame_data = &data[4]; + msg_len = 5 + _frame_data_len; checksum = nullptr; - memcpy(frame_data, _frame_data, MAX_FRAME_DATA_LEN); + + *src_addr = _src_addr; + *dest_addr = _dest_addr; + *frame_data_len = _frame_data_len; + + memset(frame_data, 0, MAX_FRAME_DATA_LEN); + memcpy(frame_data, _frame_data, _frame_data_len); } ps_packet::~ps_packet() {} @@ -53,19 +61,6 @@ bool ps_packet::validate() void ps_packet::calc_checksum() {} -ps_packet ps_packet::from_xy(int32_t x, int32_t y) -{ - uint8_t frame_data[MAX_FRAME_DATA_LEN]; - memset(frame_data, 0, MAX_FRAME_DATA_LEN); - // op command - // 0x01 = set xy - frame_data[0] = 0x01; // + 1 - memcpy(&frame_data[1], &x, 4; // + sizeof(x) - memcpy(&frame_data[5], &y, 4); // + sizeof(y) - - return ps_packet(MASTER_ADDR, 0x02, frame_data, 1 + sizeof(x) + sizeof(y)); -} - bool ps_packet::stuff_bytes() { int old_ind = 0; @@ -97,3 +92,16 @@ bool ps_packet::destuff_bytes() { return false; } + +ps_packet ps_packet::from_xy(int32_t x, int32_t y) +{ + uint8_t frame_data[MAX_FRAME_DATA_LEN]; + memset(frame_data, 0, MAX_FRAME_DATA_LEN); + // op command + // 0x01 = set xy + frame_data[0] = 0x01; // + 1 + memcpy(&frame_data[1], &x, 4); // + sizeof(x) + memcpy(&frame_data[5], &y, 4); // + sizeof(y) + + return ps_packet(MASTER_ADDR, 0x02, frame_data, 1 + sizeof(x) + sizeof(y)); +}