12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- // // ******************************************************************
- // // /\ /| @File Usb_decode_event.h
- // // \ V/ @Brief
- // // | "") @Author lijinwen, ghz005@uni-trend.com.cn
- // // / | @Creation 2024-05-17
- // // / \\ @Modified 2024-06-24
- // // *(__\_\
- // // ******************************************************************
- #pragma once
- #include "Usb_packet.h"
- #include "../decode_event.h"
- namespace Protocol
- {
- struct UsbDecodeEvent : DecodeBaseEvent
- {
- UsbEnums::EventInfoTitles packet_title;
- int32_t address;
- int32_t frame_id;
- int16_t port;
- int16_t end_point;
- int16_t crc_sign_num;
- uint16_t crc_data;
- uint64_t data_count;
- const uint8_t* decode_data_ptr;
- uint64_t single_bit_timing_length;
- UsbDecodeEvent(const UsbPacket& packet) : address(0), frame_id(-1), port(-1), end_point(-1), crc_sign_num(0),
- crc_data(0), data_count(0), decode_data_ptr(nullptr), single_bit_timing_length(0)
- {
- packet_title = packet.PacketTitle;
- const std::vector<uint8_t>& addresses = packet.Address();
- end_index = packet.GetEndIndex();
- start_index = packet.GetStartIndex();
- single_bit_timing_length = packet.PacketSYNC().single_bit_timing_length;
- if (!addresses.empty())
- {
- int32_t size = static_cast<int>(addresses.size());
- if (size > 4) size = 4;
- for (int i = 0; i < size; i++)
- {
- address = addresses[i] << (i * 8);
- }
- }
- else
- {
- address = -1;
- }
- end_point = packet.EndPoint();
- if (packet.Datas().empty())
- {
- frame_id = -1;
- decode_data_ptr = nullptr;
- data_count = 0;
- crc_data = packet.CRC16();
- crc_sign_num = packet.CRCSignNum();
- return;
- }
- std::vector<uint8_t> datas = packet.Datas();
- if (packet_title == UsbEnums::EventInfoTitles::SOF && datas.size() == 2)
- {
- frame_id = datas[0] + datas[1] * 8;
- }
- decode_data_ptr = packet.Datas().data();
- data_count = packet.Datas().size();
- crc_data = packet.CRC16();
- crc_sign_num = packet.CRCSignNum();
- }
- };
- }
|