rk3399_arm_lvds/small_lcd/app_spi_lcd/DevUtil.h

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 };
};