You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.6 KiB
65 lines
1.6 KiB
#pragma once
|
|
#include <string>
|
|
#include "J2534Connection.h"
|
|
#include "J2534Connection_CAN.h"
|
|
#include "MessageTx_ISO15765.h"
|
|
#include "MessageRx.h"
|
|
|
|
class MessageTx_ISO15765;
|
|
|
|
typedef struct {
|
|
std::string dispatched_msg;
|
|
std::string remaining_payload;
|
|
} PRESTAGED_WRITE;
|
|
|
|
class J2534Connection_ISO15765 : public J2534Connection {
|
|
public:
|
|
J2534Connection_ISO15765(
|
|
std::shared_ptr<PandaJ2534Device> panda_dev,
|
|
unsigned long ProtocolID,
|
|
unsigned long Flags,
|
|
unsigned long BaudRate
|
|
);
|
|
|
|
virtual long PassThruStartMsgFilter(unsigned long FilterType, PASSTHRU_MSG * pMaskMsg, PASSTHRU_MSG * pPatternMsg, PASSTHRU_MSG * pFlowControlMsg, unsigned long * pFilterID);
|
|
|
|
int get_matching_out_fc_filter_id(const std::string & msgdata, unsigned long flags, unsigned long flagmask);
|
|
|
|
int get_matching_in_fc_filter_id(const J2534Frame& msg, unsigned long flagmask);
|
|
|
|
virtual unsigned long validateTxMsg(PASSTHRU_MSG* msg);
|
|
|
|
virtual std::shared_ptr<MessageTx> parseMessageTx(PASSTHRU_MSG& msg);
|
|
|
|
virtual void processMessage(const J2534Frame& msg);
|
|
|
|
virtual void setBaud(unsigned long baud);
|
|
|
|
virtual void processIOCTLSetConfig(unsigned long Parameter, unsigned long Value);
|
|
|
|
virtual unsigned long processIOCTLGetConfig(unsigned long Parameter);
|
|
|
|
virtual unsigned long getMinMsgLen() {
|
|
return 4;
|
|
}
|
|
|
|
virtual unsigned long getMaxMsgLen() {
|
|
return 4099;
|
|
};
|
|
|
|
virtual unsigned long getMaxMsgSingleFrameLen() {
|
|
return 11;
|
|
}
|
|
|
|
virtual bool _is_29bit() {
|
|
return (this->Flags & CAN_29BIT_ID) == CAN_29BIT_ID;
|
|
}
|
|
|
|
virtual bool isProtoCan() {
|
|
return TRUE;
|
|
}
|
|
|
|
private:
|
|
std::array<std::shared_ptr<MessageRx>, 10> rxConversations;
|
|
unsigned int wftMax;
|
|
};
|
|
|