#pragma once #include #include using namespace std; #include "DIOS.Dev.MouldDefine.hpp" #pragma warning (disable:4244) // warning C4244: “初始化”: 从“double”转换到“float”,可能丢失数据 namespace DIOS::Dev::Detail { namespace Generator { static const char* GeneratorDriverType = "{18FDF176-DECE-445F-A52C-A14BDD3AC2C1}"; static const char* GeneratorUnitType = "{123492D6-A546-4ACF-8EF1-2CCAA9EA974E}"; namespace AttrKey { //设备 static const char* SupportSyncMode = "SupportSyncMode"; //同步模式对应关系只存在于模型中,理论上不需要发生器存储或修改,可以不定义相应变量及Get、Set接口 static const char* TUBEINFO = "TubeInfo"; //球管信息 static const char* TUBETARGETMATERIAL = "TubeTargetMaterial"; //球管靶材 namespace TUBETARGETMATERIAL_TYPE { static const char* MO = "MO"; static const char* RH = "RH"; } static const char* TUBEANGLE = "TubeAngle"; //球馆角度 static const char* TUBEHEAT = "TUBEHEAT"; //球管热容 static const char* DENHEAT = "GENHEAT"; //发生器温度 static const char* BATTERYCHARGESTATE = "BatteryChargeState"; //电池充电状态 enum CHARGE_SYNC { CHARGE_STATUS_OFF, CHARGE_STATUS_CHARGING, CHARGE_STATUS_FINISH, CHARGE_STATUS_MAX }; static const char* BATTERYPOWERSTATE = "BatteryPowerState"; //电池电量状态 static const char* GENSYNSTATE = "GENERATORSYNCSTATE"; //发生器曝光流程状态 enum GENERATOR_SYNC { GENERATOR_SYNC_ERR = -1, GENERATOR_RAD_OFF, GENERATOR_RAD_PREPARE, GENERATOR_RAD_READY, GENERATOR_RAD_XRAYON, GENERATOR_RAD_XRAYOFF, GENERATOR_FLU_OFF, GENERATOR_FLU_READY, GENERATOR_FLU_XRAYON, GENERATOR_FLU_XRAYOFF, GENERATOR_FLU_CINE_READY, GENERATOR_SYNC_MAX }; static const char* GENSTATE = "GENERATORSTATUS"; //发生器设备状态 enum GENERATOR_STATUS { GENERATOR_STATUS_SHUTDOWN, GENERATOR_STATUS_INIT, GENERATOR_STATUS_SLEEP, GENERATOR_STATUS_CHARGING,//充电 GENERATOR_STATUS_STANDBY, GENERATOR_STATUS_EXP, GENERATOR_STATUS_ERROR, GENERATOR_STATUS_CALIBRATION, GENERATOR_STATUS_SERVICE, GENERATOR_STATUS_MAX }; static const char* GENHANDSWITCH = "HANDSWITCHSTATE"; //手闸状态 enum HANDSWITCH_STATUS { HANDSWITCH_STATUS_Release, HANDSWITCH_STATUS_Hold, HANDSWITCH_STATUS_Press, HANDSWITCH_STATUS_MAX }; static const char* GENFOOTSWITCH = "FOOTSWITCHSTATE"; //脚闸状态 enum FOOTSWITCH_STATUS { FOOTSWITCH_STATUS_Release, FOOTSWITCH_STATUS_Press, FOOTSWITCH_STATUS_MAX }; //点片 static const char* KV = "KV"; //阳极电压 static const char* MA = "MA"; //球管电流 static const char* MS = "MS"; //管电流 static const char* KV2 = "KV2"; //阳极电压 static const char* MA2 = "MA2"; //球管电流 static const char* MS2 = "MS2"; //管电流 static const char* MAS = "MAS"; //电流时间积 static const char* FOCUS = "FOCUS"; //灯丝/焦点 enum FOCUS_TYPE { FOCUS_SMALL, FOCUS_LARGE, FOCUS_AUTOMATIC, FOCUS_MAX }; static const char* FOCUSSIZE = "FOCUSSIZE"; //灯丝尺寸 static const char* WORKSTATION = "WORKSTATION"; //工作位 enum GENWS_TYPE { TABLE = 0, WALL = 1, CONVENTIONAL = 2, MOBILE = 3, FREE_TABLE = 3, TOMO = 4, CONVENTIONAL_TABLE = 5, CONVENTIONAL_WALL = 6, FREE_WALL = 7, GENWS_MAX }; static const char* TECHMODE = "TECHMODE"; //技术模式 enum TECHMODE_TYPE { TECHMODE_NOAEC_3P, TECHMODE_NOAEC_2P, TECHMODE_AEC_3P, TECHMODE_AEC_2P, TECHMODE_AEC_1P, TECHMODE_AEC_ReduceMA, TECHMODE_NOAEC_MAS_MA, TECHMODE_AEC_MAS_MA, TECHMODE_MAX }; enum TECHMODE_V2TYPE { ET_NONE = -1, ET_TIME = 0, ET_MAS = 1, ET_AEC = 2, ET_AEC2P = 3, ET_AEC1P = 4, ET_AECreduceMA = 5, ET_MAX }; static const char* AECDENSITY = "AECDENSITY"; //AEC浓度 static const char* AECFIELD = "AECFIELD"; //AEC区域 enum AEC_FIELD { AEC_100 = 100, AEC_010 = 10, AEC_001 = 1, AEC_110 = 110, AEC_111 = 111, AEC_011 = 11, AEC_101 = 101 }; static const char* AECFILM = "AECFILM"; //AEC底片 static const char* POSTKV = "POSTKV"; //曝光时的实际电压 static const char* POSTMA = "POSTMA"; //曝光时的实际电流 static const char* POSTMS = "POSTMS"; //曝光时的实际时间 static const char* POSTMAS = "POSTMAS"; //曝光时的实际电流时间积 static const char* TOTALEXPSURENUMBER = "TotalExposureNumber"; //总曝光次数 static const char* TOTALACQTIMES = "TotalAcqTimes"; //曝光累计时间 static const char* TUBECOOLWAITTIME = "TubeCoolWaitTime"; //球管冷却时间 static const char* TUBEOVERLOADNUMBER = "TubeOverLoadNumber"; //球管过热次数 static const char* CURRENTEXPOSUREBNUMBER = "CurrentExposureNumber"; //当前曝光次数 static const char* EXPMODE = "EXPMODE"; //曝光模式 namespace EXPMODE_TYPE { static const char* Single = "Single"; static const char* Stitch = "Stitch"; static const char* PulseSerial = "PulseSerial"; static const char* CoutineSerial = "CoutineSerial"; static const char* TOMO = "TOMO"; } static const char* EXAMMODE = "EXAMMODE"; //检查模式 namespace EXAMMODE_TYPE { static const char* MANUAL = "MANUAL"; //0 static const char* SEMIAUTO = "SEMIAUTO"; //1 static const char* AUTOMATIC = "AUTOMATIC"; //2 static const char* AUTOFILTER = "AUTOFILTER"; //3 } static const char* MODALITY = "Modality"; //?模式 static const char* FRAMERATE = "FrameRate"; //帧速率(连续) static const char* REFERENCEAIRKERMA = "ReferenceAirKerma"; //? static const char* KVLIST = "KVList"; //电压取值集合 static const char* MASLIST = "MASList"; //电流取值集合 //透视 static const char* FLUKV = "FLUKV"; //透视电压 static const char* FLUMA = "FLUMA"; //透视电流 static const char* FLUMS = "FLUMS"; //透视曝光时间 static const char* FLUMAS = "FLUMAS"; //透视时间电流积 static const char* FLUAccTime = "FLUAccTime"; //透视累计时间 static const char* FLUAccTimeUnit = "FLUAccTimeUnit"; //透视累计时间单位 static const char* FLUIntTime = "FLUIntTime"; //脉冲周期时间 static const char* FLUPPS = "FLUPPS"; //帧率 static const char* FLUpulseWidth = "FLUpulseWidth"; //脉宽 static const char* FLUMode = "FLUMode"; //透视模式 enum GENERATOR_FLUMode { GENERATOR_FLMODE_NOTFLU,//非透视 GENERATOR_FLMODE_CF,//连续 GENERATOR_FLMODE_PF,//脉冲 GENERATOR_FLMODE_HCF,//高剂量连续 GENERATOR_FLMODE_HPF,//高剂量脉冲 GENERATOR_FLMODE_MAX };//主要是透视模式分类,后续斟酌。 namespace FLFMODE_TYPE { static const char* FLF_DISB = "NotFlu"; static const char* FLF_CONTI = "CF"; static const char* FLF_PULSE = "PF"; static const char* FLF_HL_CONTI = "HLCF"; static const char* FLF_HL_PULSE = "HLF"; static const char* FLF_CBCT = "5"; static const char* FLF_DIRECT = "6"; } static const char* FLUABSStatus = "FLUABSStatus"; //ABS状态 enum GENERATOR_ABSStatus { GENERATOR_ABS_OFF,//关闭 GENERATOR_ABS_ON_KV,//启用(KV only) GENERATOR_ABS_ON_KVMA,//启用(KV/mA) GENERATOR_ABS_MAX }; static const char* FLUMag = "FLUMag"; //fluoro mag static const char* FLUDoseLevel = "FLUDoseLevel"; //剂量模式 enum GENERATOR_DoseLevel { GENERATOR_DOSE_LOW,//关闭 GENERATOR_DOSE_NORMAL,//启用(KV only) GENERATOR_DOSE_HIGH,//启用(KV/mA) GENERATOR_DOSE_CineLOW = 10,//关闭 GENERATOR_DOSE_CineNORMAL,//启用(KV only) GENERATOR_DOSE_CineHIGH,//启用(KV/mA) GENERATOR_DOSE_MAX }; static const char* FLUCurve = "FLUCurve"; //ABS曲线 static const char* FLUCineKV = "FLUCineKV"; //Cine电压 static const char* FLUCineMA = "FLUCineMA"; //Cine电流 static const char* FLUCineMS = "FLUCineMS"; //Cine曝光时间 enum UNIT_REGULATION_LEVEL { //故障等级 REG_ERRO, REG_WARN }; enum UNIT_CHARGE_STATE { //电池状态 POWER_LOW, POWER_NOR }; enum UNIT_CTRL_TYPE { //交互方式 CTRL_PlatformInterface, CTRL_Center, CTRL_CallBackFun }; } namespace ActionKey { //unit static const char* Query_HE = "Query_HE"; static const char* SetGeneratortoSyncStatus = "SetGeneratortoSyncStatus"; static const char* SetExpEnable = "SetExpEnable"; static const char* SetExpDisable = "SetExpDisable"; static const char* Reset = "RESET"; static const char* SetTubeAngle = "SetTubeAngle"; static const char* SetTubeTargetMaterial = "SetTubeTargetMaterial"; static const char* GetSignalFromWorkflows = "GetSignalFromWorkflows";//add by wxx for 品臻3025ZF static const char* ActiveSyncMode = "ActiveSyncMode";//取代WorkStation设置同步模式,由上层调用设置 static const char* SimulateError = "SimulateError";//模拟错误注入 //DR static const char* SetAPR = "SetAPR"; static const char* SetAPRArray = "SetAPRArray"; static const char* IncParam_KV = "IncParam_KV"; static const char* DecParam_KV = "DecParam_KV"; static const char* IncParam_KVL = "IncParam_KVL"; static const char* DecParam_KVL = "DecParam_KVL"; static const char* SetValue_KV = "SetValue_KV"; static const char* IncParam_MA = "IncParam_MA"; static const char* DecParam_MA = "DecParam_MA"; static const char* IncParam_MAL = "IncParam_MAL"; static const char* DecParam_MAL = "DecParam_MAL"; static const char* SetValue_MA = "SetValue_MA"; static const char* IncParam_MS = "IncParam_MS"; static const char* DecParam_MS = "DecParam_MS"; static const char* IncParam_MSL = "IncParam_MSL"; static const char* DecParam_MSL = "DecParam_MSL"; static const char* SetValue_MS = "SetValue_MS"; static const char* IncParam_MAS = "IncParam_MAS"; static const char* DecParam_MAS = "DecParam_MAS"; static const char* IncParam_MASL = "IncParam_MASL"; static const char* DecParam_MASL = "DecParam_MASL"; static const char* SetValue_MAS = "SetValue_MAS"; static const char* SetValue_TECHMODE = "SetValue_TECHMODE"; static const char* SetValue_FOCUS = "SetValue_FOCUS"; static const char* SetValue_AECDENSITY = "SetValue_AECDENSITY"; static const char* IncParam_AECDENSITY = "IncParam_AECDENSITY"; static const char* DecParam_AECDENSITY = "DecParam_AECDENSITY"; static const char* SetValue_AECFIELD = "SetValue_AECFIELD"; static const char* SetValue_AECFILM = "SetValue_AECFILM"; static const char* SetValue_WORKSTATION = "SetValue_WORKSTATION"; static const char* GetValue_POSTKV = "GetValue_POSTKV"; static const char* GetValue_POSTMA = "GetValue_POSTMA"; static const char* GetValue_POSTMS = "GetValue_POSTMS"; static const char* GetValue_POSTMAS = "GetValue_POSTMAS"; static const char* SetExpMode = "SetExpMode"; static const char* SetFrameRate = "SetFrameRate"; static const char* SetModality = "SetModality"; static const char* SetEXAMMode = "SetEXAMMode"; //FLU static const char* IncParam_FluKV = "IncParam_FluKV"; static const char* DecParam_FluKV = "DecParam_FluKV"; static const char* GetValue_FluKV = "GetValue_FluKV"; static const char* SetValue_FluKV = "SetValue_FluKV"; static const char* IncParam_FluMA = "IncParam_FluMA"; static const char* DecParam_FluMA = "DecParam_FluMA"; static const char* GetValue_FluMA = "GetValue_FluMA"; static const char* SetValue_FluMA = "SetValue_FluMA"; static const char* IncParam_FluMS = "IncParam_FluMS"; static const char* DecParam_FluMS = "DecParam_FluMS"; static const char* GetValue_FluMS = "GetValue_FluMS"; static const char* SetValue_FluMS = "SetValue_FluMS"; static const char* IncParam_FluMAS = "IncParam_FluMAS"; static const char* DecParam_FluMAS = "DecParam_FluMAS"; static const char* SetValue_FluMAS = "SetValue_FluMAS"; static const char* SetValue_PPS = "SetValue_PPS"; static const char* GetValue_PPS = "GetValue_PPS"; static const char* IncParam_PPS = "IncParam_PPS"; static const char* DecParam_PPS = "DecParam_PPS"; static const char* SetValue_ABSCurve = "SetValue_ABSCurve"; static const char* IncParam_ABSCurve = "IncParam_ABSCurve"; static const char* DecParam_ABSCurve = "DecParam_ABSCurve"; static const char* SetValue_ABSValue = "SetValue_ABSValue"; static const char* GetValue_FluIntTimer = "GetValue_FluIntTimer"; static const char* GetValue_FluAccTimer = "GetValue_FluAccTimer"; static const char* SetValue_PluseWidth = "SetPluseWidth"; static const char* SetValue_ABSMode = "SetABSMode"; static const char* SetValue_ABSTargetEXI = "SetABSTargetEXI"; static const char* SetValue_APF = "SetAPF"; static const char* ReSetFluTimer = "ReSetFluTimer"; static const char* SetValue_FluPre = "SetFluPre"; static const char* SetValue_FluEXP = "SetFluEXP"; static const char* SetFLFMode = "SetFLFMode"; static const char* SetValue_FluMAG = "SetFluMAG"; static const char* DisableMAG = "DisableMAG"; static const char* SetValue_FluDoseLever = "SetFluDoseLever"; static const char* SetValue_HalfDose = "SetHalfDose"; static const char* SetValue_RadCurve = "TransferRadCurve"; //other static const char* SetCollimatorLight = "SetCollimatorLight"; } //----------------------------------------------------------------------------- // ConfigInfo //----------------------------------------------------------------------------- namespace ConfKey { static const char* DiosGeneratorType = "GeneratorVender"; static const char* DiosGeneratorModel = "GeneratorModel"; static const char* DiosGeneratorConfig = "DeviceConfig"; static const char* DiosGeneratorAttribute = "Attribute"; static const char* DiosGeneratorDescription = "Description"; static const char* AttributeType = "Type"; static const char* AttributeAccess = "Access"; static const char* AttributeRangeMax = "RangeMax"; static const char* AttributeRangeMin = "RangeMin"; static const char* AttributeListNum = "ListNum"; static const char* AttributeList = "List"; static const char* AttributeRequired = "Required"; static const char* AttributeDefaultValue = "DefaultValue"; static const char* DiosSyncType = "SyncType"; static const char* DiosSCFType = "SCFType"; static const char* DiosSCFTCPIP = "TCPIP"; static const char* DiosSCFCOM = "COM"; static const char* DiosSCFIP = "ip"; static const char* DiosSCFPort = "port"; static const char* DiosSCFBaudrate = "baudrate"; static const char* DiosSCFBytesize = "bytesize"; static const char* DiosSCFParity = "parity"; static const char* DiosSCFStopbits = "stopbits"; static const char* DiosWSTable = "WSTable"; static const char* DiosWSWall = "WSWall"; static const char* DiosWSFree = "WSFree"; static const char* DiosWSTomo = "WSTomo"; static const char* DiosWSConventional = "WSConventional"; static const char* DiosSynTable = "SYNTable"; static const char* DiosSynWall = "SYNWall"; static const char* DiosSynFree = "SYNFree"; static const char* DiosSynTomo = "SYNTomo"; static const char* DiosSynConventional = "SYNConventional"; static const char* DiosConsoleRole = "ConsoleRole"; static const char* DiosIsConnect = "IsConnect"; //20220412 新增 以及其内部属性,主要用于webconfig static const char* DiosConfigToolInfo = "ConfigToolInfo"; static const char* DiosAttributeInfo = "AttributeInfo"; static const char* DiosAttributeKey = "AttributeKey"; static const char* DiosAttributeDescripition = "AttributeDescripition"; static const char* DiosAccess = "Access"; static const char* DiosType = "Type"; static const char* DiosRangeMin = "RangeMin"; static const char* DiosRangeMax = "RangeMax"; static const char* DiosListNum = "ListNum"; static const char* DiosListInfo = "ListInfo"; static const char* DiosList = "List"; static const char* DiosRequired = "Required"; static const char* DiosDefaultValue = "DefaultValue"; static const char* DiosInnerKey = "InnerKey"; static const char* DiosPathID = "PathID"; //20230829 新增 满足demand574 static const char* DiosTubeInfo = "TubeInfo"; static const char* DiosFocusSmall = "FocusSmall"; static const char* DiosFocusLarge = "FocusLarge"; } //----------------------------------------------------------------------------- // _tAPRArgs、_tAPFArgs //----------------------------------------------------------------------------- struct _tAPRArgs { int nWS{ 0 }; int nFocus{ 0 }; int nTechmode{ 0 }; float fKV{ 0 }; float fMA{ 0 }; float fMS{ 0 }; float fKV2{ 0 }; float fMA2{ 0 }; float fMS2{ 0 }; float fMAS{ 0 }; int nAECDensity{ 0 }; int nAECFilm{ 0 }; int nAECField{ 0 }; }; struct _tAPFArgs { int nWS{ 0 }; int nFluMode{ 0 }; int nABSMode{ 0 }; int nDoseLever{ 0 }; float nFLKV{ 0 }; float fFLMA{ 0 }; int nPPS{ 0 }; }; //----------------------------------------------------------------------------- // _tSyncModeArgs //----------------------------------------------------------------------------- struct _tSyncModeArgs { string strWS; string strSyncMode; string strSyncValue; }; namespace AttrKey::SYNC_TYPE { static const char* SYNC_HWS = "HWS"; //硬件信号同步出线 static const char* SYNC_CMD = "CMD"; //软件指令同步出线 static const char* SYNC_FRE = "FRE"; //自由出线 static const char* SYNC_DEMO = "DEMO"; //发生器不接入到Dios系统 } //----------------------------------------------------------------------------- // SYNMould //----------------------------------------------------------------------------- enum EnSYNMode { EXPOSURE_SYNMODE_HARDWARE_SYNBOX, //0 EXPOSURE_SYNMODE_DIRCETCONNECT_NOSYNBOX, //1 EXPOSURE_SYNMODE_SOFTWARE_NOSYNBOX, //2 EXPOSURE_SYNMODE_DIRECT //3 }; struct cfgWorkStationKey //SDC工作位结构体 { std::string strWSNAme; int nWSID{ 0 }; cfgWorkStationKey() { strWSNAme = ""; nWSID = 0; }; cfgWorkStationKey(std::string name, int id) { strWSNAme = name; nWSID = id; }; cfgWorkStationKey(int id) { strWSNAme = "null"; if (id == AttrKey::TABLE) strWSNAme = "Table"; else if (id == AttrKey::WALL) strWSNAme = "Wall"; else if (id == AttrKey::MOBILE) strWSNAme = "Free"; else if (id == AttrKey::TOMO) strWSNAme = "Tomo"; else if (id == AttrKey::CONVENTIONAL) strWSNAme = "Direct"; nWSID = id; }; cfgWorkStationKey(const char* name) { strWSNAme = name; if (strcmp(name, "Table") == 0) nWSID = AttrKey::TABLE; else if (strcmp(name, "Wall") == 0) nWSID = AttrKey::WALL; else if (strcmp(name, "Free") == 0) nWSID = AttrKey::MOBILE; else if (strcmp(name, "Tomo") == 0) nWSID = AttrKey::TOMO; else if (strcmp(name, "Direct") == 0) nWSID = AttrKey::CONVENTIONAL; }; bool operator<(const cfgWorkStationKey& value) const { return nWSID < value.nWSID; } }; struct cfgWorkStationData //SDC工作位结构体 { std::string strWSNAme; int nWSNamber{ 0 }; EnSYNMode nWSSYN{ EXPOSURE_SYNMODE_HARDWARE_SYNBOX }; cfgWorkStationData() { strWSNAme = ""; nWSNamber = 0; nWSSYN = EXPOSURE_SYNMODE_HARDWARE_SYNBOX; }; cfgWorkStationData(std::string name, int number, EnSYNMode syn) { strWSNAme = name; nWSNamber = number; nWSSYN = syn; }; }; //################################################################################################## //定义具体设备属性 #define UNIT_DATA_INT(NAME, KEY) \ class NAME :public IntMould\ {\ using super = IntMould;\ public:\ NAME(int initialvalue, int lower, int upper, int accuracy)\ :super(KEY, initialvalue, lower, upper, accuracy)\ {}\ ~NAME() {}\ };\ #define UNIT_DATA_INT_withLimit(NAME, KEY, INIT, MIN, MAX, ACC) \ class NAME :public IntMould\ {\ using super = IntMould;\ public:\ NAME(int initialvalue = INIT, int lower = MIN, int upper = MAX, int accuracy = ACC)\ :super(KEY, initialvalue, lower, upper, accuracy)\ {}\ ~NAME() {}\ };\ #define UNIT_DATA_FLOAT(NAME, KEY) \ class NAME :public FloatMould\ {\ using super = FloatMould;\ public:\ NAME(float initialvalue, float lower, float upper, float accuracy)\ :super(KEY, initialvalue, lower, upper, accuracy)\ {}\ ~NAME() {}\ };\ #define UNIT_DATA_STR(NAME, KEY) \ class NAME :public StringMould\ {\ using super = StringMould;\ public:\ NAME(std::string initialvalue)\ :super(KEY, initialvalue)\ {}\ ~NAME() {}\ };\ UNIT_DATA_FLOAT(KVMould, AttrKey::KV); UNIT_DATA_FLOAT(MAMould, AttrKey::MA); UNIT_DATA_FLOAT(MSMould, AttrKey::MS); UNIT_DATA_FLOAT(MASMould, AttrKey::MAS); UNIT_DATA_INT_withLimit(FOCUSMould, AttrKey::FOCUS, AttrKey::FOCUS_TYPE::FOCUS_AUTOMATIC, AttrKey::FOCUS_TYPE::FOCUS_SMALL, AttrKey::FOCUS_TYPE::FOCUS_AUTOMATIC, 1); UNIT_DATA_INT(WORKSTATIONMould, AttrKey::WORKSTATION); UNIT_DATA_INT(TECHMODEMould, AttrKey::TECHMODE); UNIT_DATA_INT(AECFIELDMould, AttrKey::AECFIELD); UNIT_DATA_INT(AECFILMMould, AttrKey::AECFILM); UNIT_DATA_INT(AECDENSITYMould, AttrKey::AECDENSITY); UNIT_DATA_INT(TUBEHEATMould, AttrKey::TUBEHEAT); UNIT_DATA_INT(GENHEATMould, AttrKey::DENHEAT); UNIT_DATA_FLOAT(POSTKVMould, AttrKey::POSTKV); UNIT_DATA_FLOAT(POSTMAMould, AttrKey::POSTMA); UNIT_DATA_FLOAT(POSTMSMould, AttrKey::POSTMS); UNIT_DATA_FLOAT(POSTMASMould, AttrKey::POSTMAS); UNIT_DATA_INT_withLimit(GENSYNSTATEMould, AttrKey::GENSYNSTATE, AttrKey::GENERATOR_SYNC::GENERATOR_RAD_OFF, AttrKey::GENERATOR_SYNC::GENERATOR_SYNC_ERR, AttrKey::GENERATOR_SYNC::GENERATOR_FLU_XRAYOFF, 1); UNIT_DATA_INT_withLimit(GENSTATEMould, AttrKey::GENSTATE, AttrKey::GENERATOR_STATUS::GENERATOR_STATUS_INIT, AttrKey::GENERATOR_STATUS::GENERATOR_STATUS_SHUTDOWN, AttrKey::GENERATOR_STATUS::GENERATOR_STATUS_MAX, 1); UNIT_DATA_INT(TOTALEXPNUMMould, AttrKey::TOTALEXPSURENUMBER); UNIT_DATA_INT(TOTALACQTIMESMould, AttrKey::TOTALACQTIMES); UNIT_DATA_INT(TUBECOOLTIMEMould, AttrKey::TUBECOOLWAITTIME); UNIT_DATA_INT(TUBEOVERLOADNUMMould, AttrKey::TUBEOVERLOADNUMBER); UNIT_DATA_INT(CUREXPNUMMould, AttrKey::CURRENTEXPOSUREBNUMBER); UNIT_DATA_STR(EXPMODEMould, AttrKey::EXPMODE); UNIT_DATA_STR(EXAMMODEMould, AttrKey::EXAMMODE); UNIT_DATA_STR(MODALITYMould, AttrKey::MODALITY); UNIT_DATA_FLOAT(FRAMERATEMould, AttrKey::FRAMERATE); UNIT_DATA_INT(BATTERYCHARGSTATEMould, AttrKey::BATTERYCHARGESTATE); UNIT_DATA_INT(BATTERYPOWERSTATEMould, AttrKey::BATTERYPOWERSTATE); UNIT_DATA_FLOAT(REFERENCEAIRKERMAMould, AttrKey::REFERENCEAIRKERMA); UNIT_DATA_STR(KVLISTMould, AttrKey::KVLIST); UNIT_DATA_STR(MASLISTMould, AttrKey::MASLIST); UNIT_DATA_INT(GENHANDSWITCHMould, AttrKey::BATTERYCHARGESTATE); UNIT_DATA_STR(TUBEINFOMould, AttrKey::TUBEINFO); UNIT_DATA_STR(TUBETARGETMATERIALMould, AttrKey::TUBETARGETMATERIAL); UNIT_DATA_FLOAT(TUBEANGLEMould, AttrKey::TUBEANGLE); UNIT_DATA_FLOAT(FLUKVMould, AttrKey::FLUKV); UNIT_DATA_FLOAT(FLUMAMould, AttrKey::FLUMA); UNIT_DATA_FLOAT(FLUMSMould, AttrKey::FLUMS); UNIT_DATA_FLOAT(FLUMASMould, AttrKey::FLUMAS); UNIT_DATA_FLOAT(FLAccTimeMould, AttrKey::FLUAccTime); UNIT_DATA_FLOAT(FLUIntTimeMould, AttrKey::FLUIntTime); UNIT_DATA_INT(PPSMould, AttrKey::FLUPPS); UNIT_DATA_INT_withLimit(FLUModeMould, AttrKey::FLUMode, AttrKey::GENERATOR_FLUMode::GENERATOR_FLMODE_NOTFLU, AttrKey::GENERATOR_FLUMode::GENERATOR_FLMODE_NOTFLU, AttrKey::GENERATOR_FLUMode::GENERATOR_FLMODE_HPF, 1); UNIT_DATA_INT_withLimit(FLUABSStatusMould, AttrKey::FLUABSStatus, AttrKey::GENERATOR_ABSStatus::GENERATOR_ABS_OFF, AttrKey::GENERATOR_ABSStatus::GENERATOR_ABS_OFF, AttrKey::GENERATOR_ABSStatus::GENERATOR_ABS_ON_KVMA, 1); UNIT_DATA_INT(FLUMagMould, AttrKey::FLUMag); UNIT_DATA_INT_withLimit(FLUDoseLevelMould, AttrKey::FLUDoseLevel, AttrKey::GENERATOR_DoseLevel::GENERATOR_DOSE_LOW, AttrKey::GENERATOR_DoseLevel::GENERATOR_DOSE_LOW, AttrKey::GENERATOR_DoseLevel::GENERATOR_DOSE_CineHIGH, 1); UNIT_DATA_INT(FLUCurveMould, AttrKey::FLUCurve); UNIT_DATA_FLOAT(FLUCineKVMould, AttrKey::FLUCineKV); UNIT_DATA_FLOAT(FLUCineMAMould, AttrKey::FLUMA); UNIT_DATA_FLOAT(FLUCineMSMould, AttrKey::FLUMS); } }