openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models.
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.
 
 
 
 
 
 

50 lines
1.5 KiB

#pragma once
#include <string>
#include "panda_shared/panda.h"
#include <queue>
// The following ifdef block is the standard way of creating macros which make exporting
// from a DLL simpler. All files within this DLL are compiled with the ECUSIMDLL_EXPORTS
// symbol defined on the command line. This symbol should not be defined on any project
// that uses this DLL. This way any other project whose source files include this file see
// ECUSIMDLL_API functions as being imported from a DLL, whereas this DLL sees symbols
// defined with this macro as being exported.
#ifdef ECUSIMDLL_EXPORTS
#define ECUSIMDLL_API __declspec(dllexport)
#else
#define ECUSIMDLL_API __declspec(dllimport)
#endif
// This class is exported from the ECUsim DLL.dll
class ECUSIMDLL_API ECUsim {
public:
ECUsim(std::string sn, unsigned long can_baud, bool ext_addr = FALSE);
ECUsim(panda::Panda && p, unsigned long can_baud, bool ext_addr = FALSE);
~ECUsim();
void stop();
void join();
// Flag determines if verbose output is enabled
volatile bool verbose;
BOOL ext_addr;
private:
std::unique_ptr<panda::Panda> panda;
static DWORD WINAPI _canthreadBootstrap(LPVOID This);
DWORD can_recv_thread_function();
BOOL _can_addr_matches(panda::PANDA_CAN_MSG & msg);
void _CAN_process_msg(panda::PANDA_CAN_MSG & msg);
std::string process_obd_msg(UCHAR mode, UCHAR pid, bool& return_data);
HANDLE thread_can;
volatile bool doloop;
std::queue<uint8_t> can_multipart_data;
BOOL can11b_enabled;
BOOL can29b_enabled;
};