Move platforms around, most of POSIX will be common implementation

This commit is contained in:
Paul Hollinsky
2018-09-20 14:40:24 -04:00
parent 8435efb039
commit ef8d764aa6
17 changed files with 43 additions and 27 deletions
+17
View File
@@ -0,0 +1,17 @@
#ifndef __DEVICES_POSIX_H_
#define __DEVICES_POSIX_H_
#include "device/neoobd2pro/include/neoobd2pro.h"
#include "device/neovifire/include/neovifire.h"
//#include "device/neovifire2/include/neovifire2eth.h" Ethernet not yet supported
#include "device/neovifire2/include/neovifire2usb.h"
#include "device/plasion/include/neoviion.h"
#include "device/plasion/include/neoviplasma.h"
//#include "device/radgalaxy/include/radgalaxy.h" Ethernet not yet supported
#include "device/radstar2/include/radstar2.h"
#include "device/radsupermoon/include/radsupermoon.h"
#include "device/valuecan3/include/valuecan3.h"
#include "device/valuecan4/include/valuecan4.h"
#include "device/vividcan/include/vividcan.h"
#endif
+24
View File
@@ -0,0 +1,24 @@
#ifndef __DYNAMICLIB_POSIX_H_
#define __DYNAMICLIB_POSIX_H_
#include <dlfcn.h>
#ifdef __APPLE__
#include "platform/posix/darwin/include/dynamiclib.h"
#else
#include "platform/posix/linux/include/dynamiclib.h"
#endif
// Nothing special is needed to export
#define DLLExport
// #ifndef ICSNEO_NO_AUTO_DESTRUCT
// #define ICSNEO_DESTRUCTOR __attribute__((destructor));
// #else
#define ICSNEO_DESTRUCTOR
// #endif
#define icsneoDynamicLibraryGetFunction(handle, func) dlsym(handle, func)
#define icsneoDynamicLibraryClose(handle) (dlclose(handle) == 0)
#endif
+51
View File
@@ -0,0 +1,51 @@
#ifndef __FTDI_POSIX_H_
#define __FTDI_POSIX_H_
#include <vector>
#include <memory>
#include <string>
#include <atomic>
#include <ftdi.hpp>
#include "device/include/neodevice.h"
#include "communication/include/icommunication.h"
#include "third-party/concurrentqueue/blockingconcurrentqueue.h"
namespace icsneo {
class FTDI : public ICommunication {
public:
static constexpr neodevice_handle_t INVALID_HANDLE = 0x7fffffff; // int32_t max value
static std::vector<neodevice_t> FindByProduct(int product);
static bool IsHandleValid(neodevice_handle_t handle);
FTDI(neodevice_t& forDevice);
~FTDI() { close(); }
bool open();
bool close();
bool isOpen() { return ftdiDevice.is_open(); }
private:
static Ftdi::Context context;
static neodevice_handle_t handleCounter;
class FTDIDevice : public Ftdi::Context {
public:
FTDIDevice() {}
FTDIDevice(const Ftdi::Context &x) : Ftdi::Context(x) {
handle = handleCounter++;
}
neodevice_handle_t handle = INVALID_HANDLE;
};
static std::vector<FTDIDevice> searchResultDevices;
static bool GetDeviceForHandle(neodevice_handle_t handle, FTDIDevice& device);
void readTask();
void writeTask();
bool openable; // Set to false in the constructor if the object has not been found in searchResultDevices
neodevice_t& device;
FTDIDevice ftdiDevice;
};
};
#endif
+31
View File
@@ -0,0 +1,31 @@
#ifndef __STM32_POSIX_H_
#define __STM32_POSIX_H_
#include "communication/include/icommunication.h"
#include "device/include/neodevice.h"
#include <chrono>
#include <stdint.h>
namespace icsneo {
class STM32 : public ICommunication {
public:
STM32(neodevice_t& forDevice) : device(forDevice) {}
static std::vector<neodevice_t> FindByProduct(int product);
bool open();
bool isOpen();
bool close();
private:
neodevice_t& device;
int fd = -1;
static constexpr neodevice_handle_t HANDLE_OFFSET = 10;
void readTask();
void writeTask();
};
};
#endif