#ifndef __FLEXRAYCONTROLMESSAGE_H_ #define __FLEXRAYCONTROLMESSAGE_H_ #include "icsneo/communication/message/message.h" #include "icsneo/communication/packet.h" #include "icsneo/device/extensions/flexray/opcode.h" #include "icsneo/device/extensions/flexray/pocstatus.h" #include "icsneo/device/extensions/flexray/channel.h" namespace icsneo { // Internal message which gives us the state of the FlexRay Controllers class FlexRayControlMessage : public Message { public: static std::vector BuildBaseControlArgs(uint8_t controller, FlexRay::Opcode op, std::initializer_list args); static std::vector BuildReadCCRegsArgs(uint8_t controller, uint16_t startAddress, uint8_t numRegisters = 1); static std::vector BuildWriteCCRegArgs(uint8_t controller, uint16_t address, uint32_t value); static std::vector BuildAddConfiguredTxMessageArgs( uint8_t controller, uint16_t descriptionId, uint16_t slotId, uint8_t baseCycle, uint8_t cycleReps, FlexRay::Channel channel); FlexRayControlMessage(const Packet& packet); virtual ~FlexRayControlMessage() = default; bool decoded = false; uint8_t controller = 0xff; // Controller index, either 0 or 1 FlexRay::Opcode opcode = FlexRay::Opcode::Unknown; FlexRay::POCStatus pocStatus = FlexRay::POCStatus::Unknown; uint16_t slotCounterA = 0; uint16_t slotCounterB = 0; uint16_t macroTick = 0; uint16_t cycleCount = 0; uint32_t rateCorrection = 0; uint32_t offsetCorrection = 0; std::vector registers; }; } #endif