#pragma once using namespace DIOS::Dev::Communication::Detail; namespace DIOS::Dev::Detail::MachineryECOM { enum PacketClass { PC_NAN = -1, PC_NOTIFY, }; enum PacketNotifyType { PNT_NAN = -1, PNT_HANDSWITCH_FIRST_PRESSED, PNT_HANDSWITCH_FIRST_RELEASE, PNT_HANDSWITCH_SECOND_PRESSED, PNT_HANDSWITCH_SECOND_RELEASE, PNT_PWM_OFFSET, PNT_XRAY_ON, PNT_XRAY_OFF, PNT_TUBE_HEIGHT_AD, PNT_TUBE_ANGLE_LOW_LIMIT, PNT_TUBE_ANGLE_LEAVE_LOW_LIMIT, PNT_TUBE_ANGLE_HIGH_LIMIT, PNT_TUBE_ANGLE_LEAVE_HIGH_LIMIT, PNT_TUBE_ANGLE_ENCODER, PNT_TUBE_ANGLE_ENCODER_Z_CLEAR, PNT_TUBE_HEIGHT_ENCODER, PNT_TUBE_HEIGHT_ENCODER_Z_CLEAR, PNT_TUBE_HEIGHT_LOW_LIMIT, PNT_TUBE_HEIGHT_HIGH_LIMIT, PNT_TUBE_HEIGHT_LEAVE_LOW_LIMIT, PNT_TUBE_HEIGHT_LEAVE_HIGH_LIMIT, PNT_TUBE_HORIZONTAL_ENCODER, PNT_TUBE_HORIZONTAL_ENCODER_Z_CLEAR, PNT_TUBE_HORIZONTAL_LEFT_LIMIT, PNT_TUBE_HORIZONTAL_RIGHT_LIMIT, PNT_TUBE_HORIZONTAL_LEAVE_LEFT_LIMIT, PNT_TUBE_HORIZONTAL_LEAVE_RIGHT_LIMIT, PNT_SYSTEM_RESET_START, PNT_SYSTEM_RESET_STOP, PNT_CAN, PNT_SYSTEM_RESET_SWING_START, PNT_SYSTEM_RESET_SWING_STOP, PNT_SYSTEM_RESET_CIRCULAR_START, PNT_SYSTEM_RESET_CIRCULAR_STOP, PNT_TUBE_HEIGHT_CONTROLLER_DIRECTION_1_START, PNT_TUBE_HEIGHT_CONTROLLER_DIRECTION_1_STOP, PNT_TUBE_HEIGHT_CONTROLLER_DIRECTION_2_START, PNT_TUBE_HEIGHT_CONTROLLER_DIRECTION_2_STOP, PNT_TUBE_ANGLE_CONTROLLER_DIRECTION_1_START, PNT_TUBE_ANGLE_CONTROLLER_DIRECTION_1_STOP, PNT_TUBE_ANGLE_CONTROLLER_DIRECTION_2_START, PNT_TUBE_ANGLE_CONTROLLER_DIRECTION_2_STOP, PNT_CARM_SCANNING_SWITCH_CIRCULAR, PNT_CARM_SCANNING_SWITCH_SWING, PNT_TUBE_HORIZONTAL_CONTROLLER_DIRECTION_1_START, PNT_TUBE_HORIZONTAL_CONTROLLER_DIRECTION_1_STOP, PNT_TUBE_HORIZONTAL_CONTROLLER_DIRECTION_2_START, PNT_TUBE_HORIZONTAL_CONTROLLER_DIRECTION_2_STOP, }; struct PWMOffsetPacket; struct TubeLineADPacket; struct EncoderPacket; struct CanDeviceData; class DIOSBoardProtocolParser { public: static PacketClass IdentifyPacketClass(SCFPacket *packet); static PacketNotifyType IdentifyPacketNotifyType(SCFPacket *packet); static bool ParsePWMOffsetPacket(SCFPacket *packet, PWMOffsetPacket *outpacket); static bool ParseTubeHeightADPacket(SCFPacket *packet, TubeLineADPacket *outpacket); static bool ParseEncoderPacket(SCFPacket *packet, EncoderPacket *outpacket); static bool ParseCanPacket(SCFPacket *packet, CanDeviceData *outpacket); }; }