eDosStation/EpdBase/EpdBase.h

276 lines
5.6 KiB
C
Raw Normal View History

2019-02-01 17:35:18 +01:00
#pragma once
2021-05-28 17:06:41 +02:00
#pragma unmanaged
#include <windows.h>
#include "reader2.h"
2026-08-02 16:00:16 +02:00
#include "../EpdBase3/EpdProgress.h"
2021-05-28 17:06:41 +02:00
#pragma unmanaged
2019-02-01 17:35:18 +01:00
namespace EpdBase
{
2026-08-02 16:00:16 +02:00
typedef void(*ProgressCallback)(int percentage, const char* message);
2019-02-01 17:35:18 +01:00
class Epd2U
{
2021-06-02 13:54:22 +02:00
public:
bool isBG ;
bool isNG ;
bool VersionOK;
bool hasAlarm = false;
2022-04-26 08:43:13 +02:00
bool hasFault = false;
2021-06-02 13:54:22 +02:00
2019-02-01 17:35:18 +01:00
public:
2026-08-02 16:00:16 +02:00
2019-02-01 17:35:18 +01:00
WORD port = 3;
const WORD MaxDevices = 10;
WORD DeviceCount = 0;
DWORD DeviceIDs[10];
DWORD CurrentDeviceID;
2021-05-03 09:56:58 +02:00
WORD AlarmCtrl = 0b01111110;
//WORD AlarmCtrl = 0b01111010; // NO sound
WORD EndSessionControl = 0b00010110;
2019-02-01 17:35:18 +01:00
2020-03-11 13:23:29 +01:00
BYTE displayConfig[56] = { 0,0,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };
2019-02-01 17:35:18 +01:00
DWORD EpdClock;
DWORD RealTime;
WORD IssueCount;
DWORD OffTime;
WORD OperatingStatus;
WORD ErrorStatus;
WORD AlarmStatus;
WORD OtherAlarms;
WORD EEPROMBadSectors;
2026-01-07 14:16:45 +01:00
WORD StatusDecoded;
2019-02-01 17:35:18 +01:00
2024-05-16 15:56:07 +02:00
WORD WriteConfig32 = 0;
2019-02-27 07:22:39 +01:00
WORD CommsInitialized = 0;
2019-02-01 17:35:18 +01:00
WORD InitRv = 0;
WORD DiscRV = 0;
WORD ConRV = 0;
WORD OpenRV=0;
WORD ReadStatusRV = 0;
WORD CommitRV = 0;
WORD OffRV = 0;
WORD OnRV = 0;
WORD EndSessionRV = 0;
WORD ReadConfigRV = 0;
WORD ReadDoseTresholdRV = 0;
WORD ReadAlarmRateThresholdsRV = 0;
WORD ReadCalibrationDataRV = 0;
WORD ReadWearerRV = 0;
WORD ReadEpdIDRV = 0;
WORD ReadDosesQualityRV;
WORD ReadPeaksRV = 0;
WORD ClearDoseRV;
WORD ClearTotalDoseRV;
WORD ClearPeakRatesRV;
WORD DeIssueEpdRV = 0;
2019-02-01 17:35:18 +01:00
WORD WriteAlarmDoseThresholdsRV = 0;
WORD WriteAlarmRateThresholdsRV = 0;
WORD WriteWearerNameRV = 0;
WORD IssueEpdRV = 0;
WORD Error=0;
WORD ErrorSource;
WORD ErrorReason;
WORD ErrorData;
//Identification
DWORD EpdID=0;
2024-05-22 13:31:10 +02:00
WORD HardVersion, HardVersionMinor;
2019-02-01 17:35:18 +01:00
WORD SoftVersion;
WORD FunctionFlags;
WORD EpdType = 0xff;
SYSTEMTIME tRealTime;
//Wearer
#define WearerIDLength 12
BYTE WearerID[(WearerIDLength)+1];
#define WearerNameLength 22
BYTE WearerName[WearerNameLength+1];
// Dose
DWORD Hp10Dose;
DWORD Hp07Dose;
DWORD Hp10Total;
DWORD Hp07Total;
WORD Knocks;
WORD Resets;
WORD QualityData;
//Peaks
DWORD Hp10Peak;
DWORD Hp07Peak;
DWORD Hp10Time;
DWORD Hp07Time;
2021-06-01 16:35:24 +02:00
long long Hp10FTime , Hp07FTime;
2019-02-01 17:35:18 +01:00
//AlarmDoseTreshold
DWORD Hp10THDose1;
DWORD Hp10THDose2;
DWORD Hp07THDose;
DWORD Hp10Rate1On;
DWORD Hp10Rate2On;
DWORD Hp07RateOn;
DWORD Hp10Rate1Off;
DWORD Hp10Rate2Off;
DWORD Hp07RateOff;
WORD K1;
WORD K2;
WORD K3;
WORD K4;
WORD K5;
WORD K6;
WORD SG;
WORD BC;
WORD FB;
WORD HG;
2019-02-14 15:56:23 +01:00
DWORD D1;
DWORD D2;
DWORD D3;
DWORD D4;
DWORD CountsClock;
DWORD BaseD1;
DWORD BaseD2;
DWORD BaseD3;
DWORD BaseD4;
DWORD BaseCountsClock;
2019-02-01 17:35:18 +01:00
//Config
WORD CountDownTime;
DWORD ReturnTime;
WORD ChirpRate;
WORD TeleBaudSetting;
WORD SelfTestInterval;
WORD BatteryLoadTestInt;
WORD GeneralControl;
WORD CommsTimeout;
WORD InhibitTimeout;
WORD MinTxInterval;
WORD MaxTxIntervals;
WORD RandomiseWindow;
WORD DoseIncThresh;
//OperatingStatus
BYTE DetectorsOn=0;
BYTE EPDIssued = 0;
BYTE EPDLocked = 0;
BYTE EPDTesting = 0;
BYTE EPDProcSec= 0;
BYTE EPDFaulty = 0;
//ERrrostatus
BYTE EPDNewFault = 0;
BYTE EPDComFault = 0;
BYTE EPDCalFault = 0;
BYTE EPDDetFault = 0;
BYTE EPDEprFault = 0;
BYTE EPDTrhFault = 0;
BYTE EPDOthFault = 0;
//AlarmStatus
BYTE AlarmDoseHP101G = 0;
BYTE AlarmDoseHP102G = 0;
BYTE AlarmDoseHP07N = 0;
BYTE AlarmRateHP101G = 0;
BYTE AlarmRateHP102G = 0;
BYTE AlarmRateHP07N = 0;
//OtherAlarm
BYTE OtherAlarmRateHp101G = 0;
BYTE OtherAlarmRateHp102G = 0;
BYTE OtherAlarmRateHp07N = 0;
BYTE OtherAlarmReturn = 0;
BYTE OtherAlarmBatLow = 0;
BYTE OtherAlarmCarrier= 0;
BYTE OtherAlarmBatVolt = 0;
2022-04-12 14:28:14 +02:00
//New fields
BYTE eDosDose07Warning = 0;
BYTE eDosDose07Alarm = 0;
BYTE eDosDose10Warning = 0;
BYTE eDosDose10Alarm = 0;
BYTE eDosRate07Warning = 0;
BYTE eDosRate07Alarm = 0;
BYTE eDosRate10Warning = 0;
BYTE eDosRate10Alarm = 0;
BYTE eDosBatteryWarning = 0;
BYTE eDosDoseAlarm = 0;
BYTE eDosRateAlarm = 0;
2019-02-01 17:35:18 +01:00
2019-02-12 16:01:47 +01:00
DWORD Password = 9;
BYTE byBatADC;
BYTE bySupplyADC;
BYTE byStatus3;
BYTE byStatus4;
2021-05-03 09:56:58 +02:00
int maxDiscoverTime = 10000;
2021-05-28 17:06:41 +02:00
int ConnectTries = 0;
2021-05-03 09:56:58 +02:00
LARGE_INTEGER WaitDiscovery;
2021-05-27 16:13:53 +02:00
BYTE ConnectTimerFired;
2021-05-12 12:35:50 +02:00
int StartDiscover(int EpdTimeout);
2021-05-28 17:06:41 +02:00
int Open(DWORD DeviceID);
2024-10-14 07:51:22 +02:00
void Close(WORD doEndCom);
int CloseAndSignal(WORD EndSessionControl, WORD duration, WORD doEndCom);
2019-02-01 17:35:18 +01:00
void DecodeFunctionFlags();
void DecodeStatus();
Epd2U(int comport);
2021-04-16 10:38:48 +02:00
WORD WriteConfig();
2019-02-25 09:12:08 +01:00
DWORD StartCom();
2021-05-28 17:06:41 +02:00
void EndCom();
2019-02-01 17:35:18 +01:00
WORD ReadStatus();
2019-02-12 16:01:47 +01:00
WORD EPDReadExtraStatus();
2019-02-01 17:35:18 +01:00
WORD EPDReadConfig();
WORD TurnOff();
WORD TurnOn();
2021-06-02 13:54:22 +02:00
WORD ReadCal();
2019-02-12 16:01:47 +01:00
WORD WriteCal();
2019-02-01 17:35:18 +01:00
WORD ReadTresHolds();
2021-06-02 13:54:22 +02:00
2019-02-01 17:35:18 +01:00
WORD ReadDoses();
2022-03-17 08:57:22 +01:00
WORD ClearAlarms();
WORD PrepareForIssue();
2024-10-14 07:51:22 +02:00
WORD DeIssue(WORD doEndCom);
WORD Issue(WORD doEndCom);
2021-06-01 16:35:24 +02:00
int GetAll(bool Close);
int GetAllDeissue();
2019-02-01 17:35:18 +01:00
~Epd2U();
2021-05-27 16:13:53 +02:00
int ConnectAndStatus(int tokenSourceTimeout);
2021-06-02 13:54:22 +02:00
int IssueAndCheck(float gain);
2026-08-02 16:00:16 +02:00
void CancelAll();
bool isCancelled();
2021-05-27 16:13:53 +02:00
public:
HANDLE hWaitTimer = 0;
2026-08-02 16:00:16 +02:00
HANDLE hCancel = 0;
EpdSteps EPDStep;
EpdStepResults EPDStepResult;
typedef void (*ProgressCallback)(EpdSteps percentage, EpdStepResults result);
ProgressCallback progressCallback;
void test();
2019-02-01 17:35:18 +01:00
};
}