rk3399_arm_lvds/motorcontroller/StateControl.h

63 lines
1.8 KiB
C++

#pragma once
#include <memory>
#include <functional>
class MenuComponent;
class DisplayCenter;
class KeyMonitor;
class IRegsAccess;
class WakeUp;
enum class DisType;
enum class ClearScreen;
class StateControl{
typedef union reg6
{
struct{
unsigned int work_mode : 3;
unsigned int func_clean_passthro : 1;
unsigned int func_feed_low : 1;
unsigned int func_feed_mid : 1;
unsigned int func_feed_high : 1;
unsigned int key_sound : 1;
unsigned int key_endouble_feed : 1;
unsigned int func_encount : 1;
unsigned int func_clear_count : 1;
unsigned int motor_choose : 2;
unsigned int wr_en : 1;
unsigned int motor_addr : 8;
unsigned int key_stop_enable : 1;
unsigned int lift_init_set: 2;
unsigned int unused: 3;
unsigned int motor_disable : 1;
}param;
unsigned int value;
} REG6;
public:
StateControl(std::shared_ptr<IRegsAccess> m_regsAccess,std::shared_ptr<WakeUp> wake);
~StateControl();
void PutMsg(DisType type,int value,ClearScreen clearscreen);
void setrunstate(bool value);
bool getrunstate();
void setcoverstate(bool value);
bool getcoverstate();
void setmenuindex(int menu);
void lcdcontrol(int led);
void setautopaperflag(bool enable,bool enkey);
void setautopaperstopcallback(std::function<void()> func);
private:
void menu_func(DisType type);
uint getpapercount();
void clearcount();
std::shared_ptr<MenuComponent> m_menu;
std::shared_ptr<DisplayCenter> m_discenter;
std::shared_ptr<KeyMonitor> m_keymonitor;
std::shared_ptr<IRegsAccess> m_regs;
std::shared_ptr<WakeUp> m_wake;
std::function<void()> autopaperstop;
volatile bool is_runing;
volatile bool is_cover_open;
volatile bool is_autopaper;
volatile bool en_autopaper_key;
};