63 lines
1.8 KiB
C++
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;
|
|
}; |