99 lines
3.0 KiB
C++
99 lines
3.0 KiB
C++
#pragma once
|
|
#include <string>
|
|
#include <fstream>
|
|
#include <memory>
|
|
|
|
#define IOEXPORTPATH "/sys/class/gpio/export"
|
|
#define PWMEXPORTPATH "/sys/class/pwm/pwmchip%d/export"
|
|
|
|
template<typename ... Args>
|
|
std::string string_format(const std::string& format, Args ... args) {
|
|
size_t size = snprintf(nullptr, 0, format.c_str(), args ...) + 1;
|
|
std::unique_ptr<char[]> buf(new char[size]);
|
|
snprintf(buf.get(), size, format.c_str(), args ...);
|
|
return std::string(buf.get(), buf.get() + size - 1);
|
|
}
|
|
|
|
template<typename T>
|
|
void write_dev(std::string path, T value) {
|
|
std::ofstream ofout(path);
|
|
ofout << value;
|
|
}
|
|
|
|
extern int read_dev_i(std::string path);
|
|
|
|
extern std::string read_dev_s(std::string path);
|
|
|
|
enum PORTS
|
|
{
|
|
Start = 171,
|
|
Stop = 49,
|
|
Power = 5,
|
|
Fpga_Load = 8,
|
|
|
|
#ifndef G300
|
|
Power_12v_Off = 12,
|
|
#endif
|
|
|
|
MotorPower = 48,
|
|
CuoZhiMotor_Reset = 56,
|
|
CuoZhiMotor_Sleep = 57,
|
|
CuoZhiMotor_Enable = 58,
|
|
|
|
CuoZhiMotor_Direction = 62,
|
|
CuoZhiMotor_Decay = 63,
|
|
CuoZhiMotor_Home = 184,
|
|
CuoZhiMotor_Fault = 185,
|
|
|
|
CuoZhiMotor_Mode0 = 59,
|
|
CuoZhiMotor_Mode1 = 60,
|
|
CuoZhiMotor_Mode2 = 61,
|
|
Cover = 189,// 'GPIO6A5' opened:0 ; closed:1
|
|
|
|
Paper = 225,// 'GPIO7B1' has paper:0 ; no paper:1
|
|
Scan = 226,// 'GPIO7B2' no paper:0 ; has paper:1
|
|
Scan1 = 102,
|
|
Double_Paper = 219,// 'GPIO7A3' not doubled:0 ; doubled:1
|
|
Double_Enable = 250,// 'GPIO8A2' off: 0 ; on: 1
|
|
|
|
ZouZhiMotor_Reset = 64,
|
|
ZouZhiMotor_Sleep = 65,
|
|
ZouZhiMotor_Enable = 66,
|
|
ZouZhiMotor_Direction = 70,
|
|
|
|
ZouZhiMotor_Decay = 71,
|
|
ZouZhiMotor_Home = 187,
|
|
ZouZhiMotor_Fault = 188,
|
|
ZouZhiMotor_Mode0 = 67,
|
|
|
|
ZouZhiMotor_Mode1 = 68,
|
|
ZouZhiMotor_Mode2 = 69,
|
|
CIS_3v3_Off = 96,
|
|
CIS_5v_En = 98,
|
|
|
|
Fpga_InitDone = 99,
|
|
Image_In_Transfer = 101,
|
|
Fpga_Reset = 232
|
|
};
|
|
|
|
class DeviceExport {
|
|
public:
|
|
DeviceExport();
|
|
private:
|
|
#ifndef G300
|
|
const int ports[37] = { Start , Stop, Power, Fpga_Load, Power_12v_Off, MotorPower, CuoZhiMotor_Reset, CuoZhiMotor_Sleep, CuoZhiMotor_Enable,
|
|
CuoZhiMotor_Direction, CuoZhiMotor_Decay, CuoZhiMotor_Home, CuoZhiMotor_Fault , CuoZhiMotor_Mode0 ,
|
|
CuoZhiMotor_Mode1, CuoZhiMotor_Mode2, Cover, Paper, Scan, Scan1,Double_Paper, Double_Enable,
|
|
ZouZhiMotor_Reset, ZouZhiMotor_Sleep, ZouZhiMotor_Enable, ZouZhiMotor_Direction, ZouZhiMotor_Decay,
|
|
ZouZhiMotor_Home, ZouZhiMotor_Fault, ZouZhiMotor_Mode0, ZouZhiMotor_Mode1, ZouZhiMotor_Mode2,
|
|
CIS_3v3_Off, CIS_5v_En, Fpga_InitDone, Image_In_Transfer, Fpga_Reset };
|
|
#else
|
|
const int ports[36] = { Start , Stop, Power, Fpga_Load, MotorPower, CuoZhiMotor_Reset, CuoZhiMotor_Sleep, CuoZhiMotor_Enable,
|
|
CuoZhiMotor_Direction, CuoZhiMotor_Decay, CuoZhiMotor_Home, CuoZhiMotor_Fault , CuoZhiMotor_Mode0 ,
|
|
CuoZhiMotor_Mode1, CuoZhiMotor_Mode2, Cover, Paper, Scan, Scan1, Double_Paper, Double_Enable,
|
|
ZouZhiMotor_Reset, ZouZhiMotor_Sleep, ZouZhiMotor_Enable, ZouZhiMotor_Direction, ZouZhiMotor_Decay,
|
|
ZouZhiMotor_Home, ZouZhiMotor_Fault, ZouZhiMotor_Mode0, ZouZhiMotor_Mode1, ZouZhiMotor_Mode2,
|
|
CIS_3v3_Off, CIS_5v_En, Fpga_InitDone, Image_In_Transfer, Fpga_Reset };
|
|
#endif
|
|
const int pwms[2] = { 0, 1 };
|
|
}; |