diff --git a/EpdBase/EpdBase.cpp b/EpdBase/EpdBase.cpp index c2c0e08..27d2f20 100644 --- a/EpdBase/EpdBase.cpp +++ b/EpdBase/EpdBase.cpp @@ -187,11 +187,11 @@ void EpdBase::Epd2U::DecodeStatus() eDosDose07Warning = eDosDose07Alarm; eDosDose10Warning = AlarmDoseHP101G; eDosDose10Alarm = AlarmRateHP102G; - eDosRate07Alarm = OtherAlarmRateHp07N | AlarmRateHP07N; + eDosRate07Alarm = OtherAlarmRateHp07N || AlarmRateHP07N; eDosRate07Warning = eDosRate07Alarm; - eDosRate10Warning = OtherAlarmRateHp101G | AlarmRateHP101G; - eDosRate10Alarm = OtherAlarmRateHp102G | AlarmRateHP102G; - eDosBatteryWarning = OtherAlarmBatLow | OtherAlarmBatVolt; + eDosRate10Warning = OtherAlarmRateHp101G || AlarmRateHP101G; + eDosRate10Alarm = OtherAlarmRateHp102G || AlarmRateHP102G; + eDosBatteryWarning = OtherAlarmBatLow || OtherAlarmBatVolt; if (!VersionOK) OtherAlarms &= 0x7f; @@ -201,6 +201,7 @@ void EpdBase::Epd2U::DecodeStatus() hasAlarm = (eDosRateAlarm || eDosDoseAlarm); hasFault = ((OtherAlarms & 0xf8) != 0) || ((OperatingStatus & 0x80) != 0) || (ErrorStatus != 0); + StatusDecoded = true; } /// @@ -228,6 +229,7 @@ WORD EpdBase::Epd2U::ReadStatus() RealTime = UnixTimeNow(); CommitRV = ReadEpdStatus(&EpdClock, &RealTime, &IssueCount, &OffTime, &OperatingStatus, &ErrorStatus, &AlarmStatus, &OtherAlarms, &EEPROMBadSectors); + StatusDecoded = false; if (port == 0) { EpdClock = 123; ErrorStatus = 0; }; diff --git a/EpdBase/EpdBase.h b/EpdBase/EpdBase.h index 7dfe9c3..a869a3e 100644 --- a/EpdBase/EpdBase.h +++ b/EpdBase/EpdBase.h @@ -37,6 +37,7 @@ namespace EpdBase WORD AlarmStatus; WORD OtherAlarms; WORD EEPROMBadSectors; + WORD StatusDecoded; WORD WriteConfig32 = 0; diff --git a/EpdBase3/Epd3.h b/EpdBase3/Epd3.h index 9202135..d764a75 100644 --- a/EpdBase3/Epd3.h +++ b/EpdBase3/Epd3.h @@ -82,8 +82,8 @@ extern "C" int32_t EPDDLL_API EndWriteSensitivities_R3(CommsHandle hComms, CompletionToken token); CompletionToken EPDDLL_API BeginReadGains_R3(CommsHandle hComms, uint8_t sensIds[], uint8_t length, CompletionCallback callback); int32_t EPDDLL_API EndReadGains_R3(CommsHandle hComms, CompletionToken token, CalGain_t gains[], uint8_t length, uint8_t * numGains); - CompletionToken EPDDLL_API BeginWriteGains_R3(CommsHandle hComms, CalGain_t gains[], uint8_t length, CompletionCallback callback); - int32_t EPDDLL_API EndWriteGains_R3(CommsHandle hComms, CompletionToken token); + CompletionToken EPDDLL_API BeginWriteGains(CommsHandle hComms, CalGain_t gains[], uint8_t length, CompletionCallback callback); + int32_t EPDDLL_API EndWriteGains(CommsHandle hComms, CompletionToken token); CompletionToken EPDDLL_API BeginWriteNotCalibratedFlag_R3(CommsHandle hComms, uint8_t notCalibrated, CompletionCallback callback); int32_t EPDDLL_API EndWriteNotCalibratedFlag_R3(CommsHandle hComms, CompletionToken token); CompletionToken EPDDLL_API BeginWriteGainableFlag_R3(CommsHandle hComms, uint8_t gainable, CompletionCallback callback); diff --git a/EpdBase3/Epd3Base.cpp b/EpdBase3/Epd3Base.cpp index b1c2799..caad14b 100644 --- a/EpdBase3/Epd3Base.cpp +++ b/EpdBase3/Epd3Base.cpp @@ -471,6 +471,10 @@ BYTE checkStatus(DoseAlarmFlags status, DoseAlarmFlags flag) void Epd3Base::Epd3U::DecodeStatus() { + + if (StatusDecoded) { + return; + } eDosDose07Warning = eDosDose07Alarm = eDosDose10Warning = eDosDose10Alarm = eDosRate07Warning = eDosRate07Alarm = eDosRate10Warning = eDosRate10Alarm = eDosBatteryWarning = eDosDoseAlarm = eDosRateAlarm = 0; AlarmDoseHP07N = AlarmRateHP07N = AlarmDoseHP101G = AlarmDoseHP102G = AlarmRateHP101G = AlarmRateHP102G= 0; hasAlarm = hasFault = false; @@ -531,6 +535,8 @@ void Epd3Base::Epd3U::DecodeStatus() hasAlarm = eDosDoseAlarm || eDosRateAlarm; hasFault = ((uint32_t)epd3status.FaultStatus & ~(uint32_t)FaultStatusFlags::ErrorLogged) != 0; eDosBatteryWarning = OtherAlarmBatLow | OtherAlarmBatVolt; + + StatusDecoded = true; } int Epd3Base::Epd3U::SetTime() //Only R3 @@ -550,6 +556,7 @@ void WINAPI ReadStatusCompletion(CommsHandle hComms, CompletionToken token) { int rv = EndReadStatus(current->epdComsHandle, token, ¤t->epd3status); rv = current->SetEndReturnValue(rv); + current->StatusDecoded = false; current->IssueCount = current->epd3status.IssueCount; current->OperatingStatus = current->epd3status.OperatingStatus; current->AlarmStatus = current->epd3status.AlarmStatus; @@ -565,8 +572,10 @@ int Epd3Base::Epd3U::ReadStatusOnly() int rv = 0; ResetEvent(hCompletion); SetFunctionReturnValue(eFunctions::ReadStatus, 0); + current->StatusDecoded = false; token = BeginReadStatus(epdComsHandle, ReadStatusCompletion); rv = CommitAndSetRV(); + return rv; } /// @@ -610,7 +619,6 @@ int Epd3Base::Epd3U::ReadStatus(bool onlyStatus) HardVersion = HardVersionMinor = SoftVersion = FunctionFlags = 0; memset(&epd3status, 0, sizeof(StatusData_t)); - int rv2; /*step = 1; @@ -628,6 +636,7 @@ int Epd3Base::Epd3U::ReadStatus(bool onlyStatus) if (!rv) rv = EndReadStatus(epdComsHandle, token, &epd3status); rv2 = SetEndReturnValue(rv); + current->StatusDecoded = false; if (rv != 0) goto error; @@ -663,8 +672,8 @@ int Epd3Base::Epd3U::ReadStatus(bool onlyStatus) EpdID = EpdID32; - isBG = (EpdType == EpdTypes::Mk2BetaGamma || EpdType == EpdTypes::Mk3BetaGamma); - isNG = (EpdType == EpdTypes::Mk2Neutron || EpdType == EpdTypes::Mk3Neutron); + isBG = (EpdType == EpdTypes::Mk2BetaGamma) || (EpdType == EpdTypes::Mk3BetaGamma); + isNG = (EpdType == EpdTypes::Mk2Neutron) || (EpdType == EpdTypes::Mk3Neutron); HardVersion = MarkNumber.Major; HardVersionMinor = MarkNumber.Minor; SoftVersion = VersionNumber.Major; @@ -784,20 +793,59 @@ int Epd3Base::Epd3U::ConnectAndStatus(int tokenSourceTimeout) void Epd3Base::Epd3U::decodeSensitivities(int count) { + // Neutron + // An1Sens10N = 14, + // Fn1Sens10N = 15, + // Fn2Sens10N = 16, + //float Kx = 0; K1 = K2 = K3 = K4 = K4 = K6 = 0.0F; + //SensitivityId sid = SensitivityId::Hg1Sens10G; for (int ix = count - 1; ix >= 0; ix--) { switch ((SensitivityId)sensitivities[ix].id) { case SensitivityId::Hg1Sens10G: K1 = sensitivities[ix].value * 100000; break; case SensitivityId::Sg1Sens10G: K2 = sensitivities[ix].value * 100000; break; - case SensitivityId::Hg1Sens07G: K3 = sensitivities[ix].value * 100000; break; //Neutr=FN - case SensitivityId::Sg1Sens07G: K4 = sensitivities[ix].value * 100000; break; //Neutr=AN + case SensitivityId::Hg1Sens07G: + K3 = sensitivities[ix].value * 100000; break; //Neutr=FN + case SensitivityId::Sg1Sens07G: + K4 = sensitivities[ix].value * 100000; break; //Neutr=AN case SensitivityId::Fb1Sens07B: K5 = sensitivities[ix].value * 100000; break; case SensitivityId::Sg2Sens07B: K6 = sensitivities[ix].value * 100000; break; - default: break; + + case SensitivityId::An1Sens10N: + K4 = sensitivities[ix].value * 100000; break; + case SensitivityId::Fn1Sens10N: + K3 = sensitivities[ix].value * 100000; break; + default: + // sid = (SensitivityId)sensitivities[ix].id; + //Kx = sensitivities[ix].value * 100000; + break; } } } + +void Epd3Base::Epd3U::decodeGains(int count) { + + // Neutron + // An1Sens10N = 14, + // Fn1Sens10N = 15, + // Fn2Sens10N = 16, + //float Kx = 0; + GainAn = GainFn = 0.0F; + //SensitivityId sid = SensitivityId::Hg1Sens10G; + for (int ix = count - 1; ix >= 0; ix--) { + switch ((SensitivityId)gains[ix].id) + { + case SensitivityId::An1Sens10N: + GainAn = gains[ix].value ; break; + case SensitivityId::Fn1Sens10N: + GainFn = gains[ix].value ; break; + default: + break; + } + } +} + void Epd3Base::Epd3U::decodetotDoses(int count) { //doses @@ -970,6 +1018,8 @@ void Epd3Base::Epd3U::decodedTresholds(int numdTresholds) case CounterType::Counter_Fb1: FB = dTresholds[ix].value; break; case CounterType::Counter_An1: BC = dTresholds[ix].value; break; //AN-> BC case CounterType::Counter_Fn2: FB = dTresholds[ix].value; break; //FN->FB + default: + break; } } } @@ -980,16 +1030,31 @@ void Epd3Base::Epd3U::decodedTresholds(int numdTresholds) /// WORD Epd3Base::Epd3U::ReadCal() { - int r = 0; + int r = 0, r2=0; + Error = 0; SetFunctionReturnValue(ReadSensitivities,0); token = BeginReadSensitivities(epdComsHandle, nullptr, 0, nullptr); - r = CommitAndSetRV(); + r2 = CommitAndSetRV(); //r = Commit3(epdComsHandle); SetCommitReturnValue(r); r = EndReadSensitivities(epdComsHandle, token, sensitivities, MaxSensitivities, &numSensitivities); r = SetEndReturnValue(r); - if (r != 0) goto error; + if (r != 0) + goto error; decodeSensitivities(numSensitivities); + + SetFunctionReturnValue(ReadGains, 0); + token = BeginReadGains(epdComsHandle, nullptr, 0, nullptr); + r2 = CommitAndSetRV(); + //r = Commit3(epdComsHandle); SetCommitReturnValue(r); + r = EndReadGains(epdComsHandle, token, gains, MaxGains, &numGains); + decodeGains(numGains); //GainAn en GainFn + r = SetEndReturnValue(r); + if (r != 0) + goto error; + + return r; + error: Error = r; return r; @@ -1306,7 +1371,8 @@ WORD Epd3Base::Epd3U::WriteAlarmTresholds() { SetFunctionReturnValue(eFunctions::WriteAlarmThresholds,0); token = BeginWriteAlarmThresholds(epdComsHandle, (uint8_t)hp10tresholds.MeasId, (uint8_t)hp10tresholds.NumberThresholds, hp10tresholds.Thresholds, nullptr); r = CommitAndEnd2RV(EndWriteAlarmThresholds, token); - if (r != 0) goto error; + if (r != 0) + goto error; if (isNeutron) measID = (uint8_t)MeasurementId::Meas_Hp10N; else measID = (uint8_t)MeasurementId::Meas_Hp07; @@ -1316,7 +1382,8 @@ WORD Epd3Base::Epd3U::WriteAlarmTresholds() { SetFunctionReturnValue(eFunctions::WriteAlarmThresholds,0); token = BeginWriteAlarmThresholds(epdComsHandle, (uint8_t)hp07tresholds.MeasId, (uint8_t)hp07tresholds.NumberThresholds, hp07tresholds.Thresholds, nullptr); r = CommitAndEnd2RV(EndWriteAlarmThresholds, token); - if (r != 0) goto error; + if (r != 0) + goto error; SetFunctionReturnValue(eFunctions::WriteRateOffPercentage,0); token = BeginWriteRateOffPercentage(epdComsHandle, RatePct, 2, nullptr); @@ -1426,12 +1493,14 @@ WORD Epd3Base::Epd3U::Issue(bool PrepareDone) //normaal is preparedone=tru r = 0; if (!PrepareDone) { r = PrepareForIssue(); - if (r) goto error; + if (r) + goto error; } step = 1; if (!isConnected) r = ReOpenDev(); - if (r) goto error; + if (r) + goto error; step = 4; //EPDIssued @@ -1528,11 +1597,11 @@ WORD Epd3Base::Epd3U::WriteCal() uint32_t r = 0; if (port == 0) return 0; - if (K6 > 2000) + /*if (K6 > 2000) { r = 0; return 0; - } + }*/ if (EpdType == EpdTypes::Mk2Neutron) { @@ -1551,6 +1620,33 @@ WORD Epd3Base::Epd3U::WriteCal() //r = Commit3(epdComsHandle); SetCommitReturnValue(r); r = EndWriteSensitivities_R2(epdComsHandle, token); SetEndReturnValue(r); if (r != 0) goto error; + } else + if (EpdType == EpdTypes::Mk3Neutron) + { + //Password = 9; + + + //SetFunctionReturnValue(eFunctions::MfrLogin_R2, 0); + //token = BeginMfrLogin_R2(epdComsHandle, Password, nullptr); + //uint32_t r = CommitAndEnd2RV(EndMfrLogin_R2, token); + ////Commit3(epdComsHandle); SetCommitReturnValue(r); if (!r ) r = EndMfrLogin_R2(epdComsHandle, token); SetEndReturnValue(r); + //if (r != 0) + // goto error; + + SetFunctionReturnValue(eFunctions::WriteAccessLevelAdmin, 0); + token = BeginWriteAccessLevel(epdComsHandle, AccessLevel_t::Admin, EC, ECLen, nullptr); + r = CommitAndEnd2RV(EndWriteAccessLevel, token); + + SetFunctionReturnValue(eFunctions::WriteGains_R3, 0); + numGains = 2; + gains[0].id = (uint16_t) SensitivityId::An1Sens10N; //K4 + gains[0].value = GainAn; + gains[1].id = (uint16_t)SensitivityId::Fn1Sens10N; //K3 + gains[1].value = GainFn; + token = BeginWriteGains(epdComsHandle, gains, numGains, nullptr); + r = CommitAndEnd2RV(EndWriteGains, token); + if (r != 0) + goto error; } return r; error: @@ -1610,22 +1706,31 @@ int Epd3Base::Epd3U::IssueAndCheck(float gain, float ChirpRate) DWORD wrv = 0; int rv1 = -1, rv2 = -1; + OutputDebugStringW(L"**** IssueAndCheck start ****\n"); + ResetStepReturnValues(); + if (!isConnected) rv = ReOpenDev(); - if (rv) goto error; + if (rv) + goto error; step = 1; + OutputDebugStringW(L"**** IssueAndCheck step 1 settime ****\n"); rv = SetTime(); //synctime - OutputDebugStringW(L"**** Prepare ****\n"); + OutputDebugStringW(L"**** Prepare IssueAndCheck ****\n"); step = 2; rv = PrepareForIssue(); //Set epd on, clear doses and alarms - if (rv) goto error; + if (rv) + goto error; - rv = ReOpenDev(); + if (!isConnected) + rv = ReOpenDev(); rv = ReadStatusOnly(); + if (rv) + rv2=1; wrv= WaitForSingleObject(hCompletion, 2000); if (wrv == WAIT_OBJECT_0) rv = 0; else if (wrv == WAIT_TIMEOUT) { @@ -1638,15 +1743,21 @@ int Epd3Base::Epd3U::IssueAndCheck(float gain, float ChirpRate) step = 3; if (isNG) { step = 1; - float kx = gain; + float kx = gain/100; rv = ReadCal(); - if (rv != 0 || K6 != 1310) { rv = 1; goto error; } - if (K3 != kx || K4 != kx) + if (rv != 0 ) { //K6 test op 1310 || K6 != 1310 ?? + + rv = 1; + goto error; + } + //K3 = Fn1Sens10N K4 = An1Sens10N + if (GainAn != kx || GainFn!= kx) { step = 2; - K3 = K4 = kx; + GainAn=GainFn = kx; rv = WriteCal(); - if (rv != 0) goto error; + if (rv != 0) + goto error; } } @@ -1658,13 +1769,16 @@ int Epd3Base::Epd3U::IssueAndCheck(float gain, float ChirpRate) rv = ReOpenDev(); rv = SetChirp(ChirpRate); } - if (rv) goto error; + if (rv) + goto error; + OutputDebugStringW(L"**** step 5 issue ****\n"); step = 5; rv = Issue(true); // data already loaded EndCom(isConnected); - if (rv) goto error; + if (rv) + goto error; return rv; @@ -1700,6 +1814,8 @@ int Epd3Base::Epd3U::WriteConfig(void) SetFunctionReturnValue(eFunctions::WriteQuickAccessDisplays_R3,1); token = BeginWriteQuickAccessDisplays_R3(epdComsHandle, displayIds, numDisplays, nullptr); r = CommitAndEnd2RV(EndWriteQuickAccessDisplays_R3, token); + if (r != 0) + Error = r; } if (!r) { //Unmanaged%20HtmlFiles/_display_ids.html @@ -1737,6 +1853,8 @@ int Epd3Base::Epd3U::WriteConfig(void) SetFunctionReturnValue(eFunctions::WriteDisplayEnables_R3,1); token = BeginWriteDisplayEnables_R3(epdComsHandle, enables, numItems, nullptr); r = CommitAndEnd2RV(EndWriteDisplayEnables_R3, token); + if (r != 0) + Error = r; } if (!r) { uint8_t numMenus = 9; @@ -1755,30 +1873,36 @@ int Epd3Base::Epd3U::WriteConfig(void) SetFunctionReturnValue(eFunctions::WriteDisplayEnablePermissions_R3,1); token = BeginWriteDisplayEnablePermissions_R3(epdComsHandle, AccessLevel_t::Admin, permissions, numDisplays, nullptr); r = CommitAndEnd2RV(EndWriteDisplayEnablePermissions_R3, token); + + if (r != 0) + Error = r; } + if (!r) { //AlarmConfiguration - uint8_t alarmConfigLen = 14; - alarmConfigIds = new AlarmConfig_t[14]{ - { (AlarmIds)6,0,0x0000,0x1884,60 }, - { (AlarmIds)8,0,0x0000,0x9884,60 }, - { (AlarmIds)5,0,0x0000,0x9CA4,60 }, - { (AlarmIds)4,0,0x0000,0x9CC7,60 }, - { (AlarmIds)9,0,0x0000,0x9CA5,60 }, - { (AlarmIds)7,0,0x0000,0x1884,60 }, - { (AlarmIds)0,0,0x0000,0x9CC1,60 }, - { (AlarmIds)1,0,0x0000,0x1884,60 }, - { (AlarmIds)2,0,0x0000,0x9CC7,60 }, - { (AlarmIds)3,0,0x0000,0x1885,60 }, - { (AlarmIds)0,1,0x0000,0x9CC1,60 }, - { (AlarmIds)1,1,0x0000,0x1884,60 }, - { (AlarmIds)2,1,0x0000,0x9CC7,60 }, - { (AlarmIds)3,1,0x0000,0x1885,60 } - }; + if (isBG) { + const uint8_t alarmConfigLen = 14; + alarmConfigIds = new AlarmConfig_t[alarmConfigLen]{ + { (AlarmIds)6,0,0x0000,0x1884,60 }, + { (AlarmIds)8,0,0x0000,0x9884,60 }, + { (AlarmIds)5,0,0x0000,0x9CA4,60 }, + { (AlarmIds)4,0,0x0000,0x9CC7,60 }, + { (AlarmIds)9,0,0x0000,0x9CA5,60 }, + { (AlarmIds)7,0,0x0000,0x1884,60 }, + { (AlarmIds)0,0,0x0000,0x9CC1,60 }, + { (AlarmIds)1,0,0x0000,0x1884,60 }, + { (AlarmIds)2,0,0x0000,0x9CC7,60 }, + { (AlarmIds)3,0,0x0000,0x1885,60 }, + { (AlarmIds)0,1,0x0000,0x9CC1,60 }, + { (AlarmIds)1,1,0x0000,0x1884,60 }, + { (AlarmIds)2,1,0x0000,0x9CC7,60 }, + { (AlarmIds)3,1,0x0000,0x1885,60 } + }; - SetFunctionReturnValue(eFunctions::WriteAlarmConfiguration_R3,1); - token = BeginWriteAlarmConfiguration_R3(epdComsHandle, alarmConfigIds, alarmConfigLen, nullptr); - r = CommitAndEnd2RV(EndWriteAlarmConfiguration_R3, token); + SetFunctionReturnValue(eFunctions::WriteAlarmConfiguration_R3, 1); + token = BeginWriteAlarmConfiguration_R3(epdComsHandle, alarmConfigIds, alarmConfigLen, nullptr); + r = CommitAndEnd2RV(EndWriteAlarmConfiguration_R3, token); + } } //constexpr int maxbatch= 2; @@ -1794,20 +1918,32 @@ int Epd3Base::Epd3U::WriteConfig(void) token = BeginWriteOffModeDisplay_R3(epdComsHandle, dutyCycle, offModeDispId, nullptr); r = CommitAndEnd2RV(EndWriteOffModeDisplay_R3, token); + if (r != 0) + Error = r; + uint8_t OnOfenabled = 0; SetFunctionReturnValue(eFunctions::WriteSwitchOnFromButton_R3, 0); token = BeginWriteSwitchOnFromButton_R3(epdComsHandle, OnOfenabled, nullptr); r = CommitAndEnd2RV(EndWriteSwitchOnFromButton_R3, token); + if (r != 0) + Error = r; + SetFunctionReturnValue(eFunctions::WriteAccessLevelOpen, 0); token = BeginWriteAccessLevel(epdComsHandle, AccessLevel_t::Open,nullptr,0, nullptr); r = CommitAndEnd2RV(EndWriteAccessLevel, token); + if (r != 0) + Error = r; Sleep(200); r = DisconnectAndConnect(); - + if (r != 0) + Error = r; + Error = r; } + else + Error = r; return r; } diff --git a/EpdBase3/Epd3Base.h b/EpdBase3/Epd3Base.h index c4ea1cf..c63d7c2 100644 --- a/EpdBase3/Epd3Base.h +++ b/EpdBase3/Epd3Base.h @@ -11,6 +11,8 @@ #pragma unmanaged #define MaxPeakRates 10 #define MaxSensitivities 10 +#define MaxGains 10 + #define MaxDoses 4 #define MaxCounts 6 #define MaxAlarmConfig 10 @@ -22,7 +24,7 @@ namespace Epd3Base { enum eFunctions { - ReadSensitivities, ReadDetectorThresholds, fReadDoses, ReadTotalDoses, ReadQualityData, ReadPeakRates, ClearTotalDose, ClearDose, ClearPeakRates, ClearFaultStatus, ClearLatchedAlarms, EpdOnOff, ReadAlarmConfiguration, ReadAlarmThresholds, WriteAlarmThresholds, WriteRateOffPercentage, DeissueEPD, SetBaselineCounters, WriteWearerId, ReadBaselineCounts, MfrLogin_R2, WriteSensitivities_R2 + ReadSensitivities, ReadGains, ReadDetectorThresholds, fReadDoses, ReadTotalDoses, ReadQualityData, ReadPeakRates, ClearTotalDose, ClearDose, ClearPeakRates, ClearFaultStatus, ClearLatchedAlarms, EpdOnOff, ReadAlarmConfiguration, ReadAlarmThresholds, WriteAlarmThresholds, WriteRateOffPercentage, DeissueEPD, SetBaselineCounters, WriteWearerId, ReadBaselineCounts, MfrLogin_R2, WriteSensitivities_R2, WriteSensitivities_R3, WriteGains_R3 , WriteAccessLevelAdmin, WriteAccessLevelOpen , WriteQuickAccessDisplays_R3, WriteDisplayEnables_R3, WriteDisplayEnablePermissions_R3, WriteAlarmConfiguration_R3, WriteOffModeDisplay_R3, WriteSwitchOnFromButton_R3 , WriteChirpSensitivity, WriteChirpEnable_R3 @@ -158,6 +160,7 @@ namespace Epd3Base { bool isMK3 = false; bool hasAlarm = false; bool hasFault = false; + bool StatusDecoded; SYSTEMTIME tRealTime; @@ -207,6 +210,8 @@ namespace Epd3Base { float K4; float K5; float K6; + float GainAn; + float GainFn; uint32_t SG; uint32_t BC; uint32_t FB; @@ -244,10 +249,12 @@ namespace Epd3Base { PeakRate_t peakRates[MaxPeakRates]; AlarmConfig_t alarmConfig[MaxAlarmConfig]; CalSensitivity_t sensitivities[MaxSensitivities]; + CalGain_t gains[MaxGains]; + Counter_t Counts[MaxCounts]; uint8_t countsRead; uint32_t seconds; - uint8_t numDoses, numtotDoses, numRates, numSensitivities, numTresholds; + uint8_t numDoses, numtotDoses, numRates, numSensitivities, numTresholds, numGains; uint16_t numAlarm; uint32_t utc; Mk3QualityData_t quality; @@ -293,6 +300,7 @@ namespace Epd3Base { void encodeTreshold(Mk3AlarmThresholds_t* th); void decodedTresholds(int numdTresholds); void decodeSensitivities(int count); + void decodeGains(int count); void decodetotDoses(int count); void decodeDoses(int count); void decodePeakRates(int count); diff --git a/EpdBase3/Mk3Types.h b/EpdBase3/Mk3Types.h index 16bf652..64d9997 100644 --- a/EpdBase3/Mk3Types.h +++ b/EpdBase3/Mk3Types.h @@ -1,581 +1,586 @@ -#ifndef Mk3Types_h -#define Mk3Types_h -#include -#include "CommonEpdTypes.h" -#include -#define MAX_COUNTERS 6 -// Mk3 Measurands -#define MK3_MEAS_HP10 0 -#define MK3_MEAS_HP07 1 -#define MK3_MEAS_HP10G 2 -#define MK3_MEAS_HP10N 3 -enum class CounterType : uint16_t -{ - Counter_Hg1 = 0, // MK2 HG - Counter_Hg2 = 1, - Counter_Sg1 = 2, // Mk2 SG - Counter_Sg2 = 3, // Mk2 BC - Counter_Sg3 = 4, - Counter_Fb1 = 5, // Mk2 FB - Counter_Fb2 = 6, - Counter_An1 = 7, - Counter_Fn2 = 8 -}; -#define MAX_DET_THRESHOLDS MAX_COUNTERS -#pragma pack (push) -#pragma pack (1) -typedef struct -{ - uint16_t eventId; - uint16_t info; - uint32_t timestamp; -}EventLog; -typedef struct -{ - uint16_t type; - uint32_t value; -}Counter_t; -typedef struct -{ - uint16_t type; - uint16_t value; -}DetectorThreshold_t; -typedef struct -{ - CounterType id; - uint16_t scaledDeadTime; - uint16_t scaledCoefficient; -}DeadTimeCoefficient_t; -typedef struct -{ - CounterType id; - uint8_t value; -}DetectorTestLimit_t; -typedef struct -{ - uint16_t type; - uint16_t va; - uint16_t vb; -}DetectorThresholdLimit_t; -enum class OffModeDutyCycle :uint8_t -{ - Off = 0, - On = 1, - Pct50 = 2, - Pct33 = 3, - Pct25 = 4, - Pct10 = 5, - NoChange = 255 -}; -enum class SensitivityId -{ - //Hp10 Gamma contributors - Hg1Sens10G = 0, // Mk2 HGSens10 (K1) - Hg2Sens10G = 1, - Sg1Sens10G = 2, // Mk2 SGSens10 (K2) - Sg2Sens10G = 3, - Sg3Sens10G = 4, - //Hp10 Neutron contributors - //Hp07 Gamma contributors - Hg1Sens07G = 5, // Mk2 HGSens07 (K3) - Hg2Sens07G = 6, - Sg1Sens07G = 7, // Mk2 SGSens07 (K4) - Sg2Sens07G = 8, - Sg3Sens07G = 9, - //Hp07 Beta contributors - Fb1Sens07B = 10, // Mk2 FBSens07 (K5) - Fb2Sens07B = 11, - Sg2Sens07B = 12, // Mk2 BCSens07 (K6) - Sg3Sens07B = 13, - MaxSensitivity -}; -#define MAX_SENSITIVITIES ((uint16_t)SensitivityId::MaxSensitivity) -#define LAST_SENSITIVITY (((uint16_t)SensitivityId::MaxSensitivity) - 1) -enum class MeasurementId : uint16_t -{ - Meas_Hp10, - Meas_Hp07, - Meas_Hp10G, - Meas_Hp10N -}; -#define MAX_MEASUREMENTS 4 -enum class ThresholdId -{ - Thres_DoseAlarm = 0, - Thres_DoseWarning = 1, - Thres_RateAlarm = 2, - Thres_RateWarning = 3 -}; -#define MAX_ALM_THRESHOLDS 4 -enum class WearerIdType -{ - WearerId_Name, - WearerId_Primary, - WearerId_Id2, - WearerId_Id3 -}; -#define MAX_WEARER_ID_TYPES 4 -enum class TaskIdType -{ - Task_Name, - Task_Primary -}; -#define MAX_TASK_ID_TYPES 2 -enum class WearerAndTaskIdType_t : uint16_t -{ - WearerId_Name, - WearerId_Primary, - WearerId_Id2, - WearerId_Id3, - TaskName, - TaskID, - WearerDBID, - TaskDBID -}; -#define MAX_WEARER_TASK_ID_TYPES 8 -typedef struct -{ - uint8_t RecordType; - uint8_t Measurand; - int32_t TimeStamp; - uint32_t Value; -}DoseProfileRecord_t; -typedef struct -{ - float DoseIncrement; - uint16_t Interval; - uint16_t NumberOfMeasurands; - MeasurementId Enables[MAX_MEASUREMENTS]; -}DoseProfileConfig_t; -typedef struct -{ - uint16_t id; - float value; -}CalSensitivity_t; -typedef struct -{ - uint16_t id; - float value; -}CalGain_t; -typedef struct -{ - uint16_t id; - float value; -}MeasValue_t; -typedef struct -{ - uint16_t id; - float value; - uint32_t timestamp; -}PeakRate_t; -typedef struct -{ - uint32_t Utc; - uint16_t NumberOfMeasurands; - MeasValue_t Measurements[MAX_MEASUREMENTS]; -}MeasurandDoseOrRate_t; -typedef struct -{ - uint8_t Major; - uint8_t Minor; - uint8_t Patch; - uint16_t Build; -}VersionNumber_t; -typedef struct MarkNumberTag -{ - uint8_t Major; - uint8_t Minor; - uint8_t Revision; - uint8_t Build; -} MarkNumber_t; -#define PART_NUM_LENGTH 10 -typedef uint8_t PartNumber_t[PART_NUM_LENGTH]; -#define PCB_PART_NUM_LENGTH 14 -typedef uint8_t PcbPartNumber_t[PCB_PART_NUM_LENGTH]; -#define FIRMWARE_PART_NUM_LENGTH 16 -typedef uint8_t FirmwarePartNumber_t[FIRMWARE_PART_NUM_LENGTH]; -#define MODEL_NAME_LENGTH 32 -typedef struct ModelNameTag -{ - uint8_t Name[MODEL_NAME_LENGTH]; -} ModelName_t; -#define CAL_PROCESS_LENGTH 12 -typedef struct CalProcessTag -{ - uint8_t Process[CAL_PROCESS_LENGTH]; -} CalProcess_t; -#define CAL_FACILITY_LENGTH 8 -typedef struct CalFacilityTag -{ - uint8_t Name[CAL_FACILITY_LENGTH]; -} CalFacility_t; -#define MAX_ID_STRING_LENGTH 64 -typedef struct IdStringTag -{ - uint16_t IdType; - uint16_t Length; - uint8_t Utf8String[MAX_ID_STRING_LENGTH]; -} IdString_t; -#define DB_ID_LENGTH 16 -typedef struct DbIdTag -{ - uint8_t Id[DB_ID_LENGTH]; -} DatabaseId_t; -#define MAX_GRAPHIC_WIDTH 112 -#define MAX_GRAPHIC_HEIGHT 24 -#define MAX_GRAPHIC_PIXELS (MAX_GRAPHIC_WIDTH * MAX_GRAPHIC_HEIGHT) -#define MAX_GRAPHIC_ID 1 -#define MAX_GRAPHIC_BYTES ((MAX_GRAPHIC_PIXELS)/8) -typedef struct GraphicSizeTag -{ - uint16_t Id; - uint16_t Height; - uint16_t Width; -} GraphicSize_t; -typedef struct -{ - GraphicSize_t Meta; - uint16_t DataLength; - uint8_t Data[MAX_GRAPHIC_BYTES]; -} GraphicBitmap_t; -enum class OpStatusFlags : uint32_t { - EpdOn = 0x0001, - EpdIssued = 0x0002, - DetectorTestRequested = 0x0004, - DetectorTestPassed = 0x0008, - TelemetryOn = 0x0010, - TelemetryConnected = 0x0020, - CalibrationDue = 0x0040, - CalibrationInProgress = 0x0080, - GainAdjustable = 0x0100, - GainAdjusted = 0x0200, - ReducedRateOverrange = 0x0400, - DoseWriteEnabled = 0x0800, - ClearOnOnEnabled = 0x1000, - Golden = 0x2000, - ProtectedSession = 0x4000, - //NotYetDefined = 0x8000, - ResponderEnabled = 0x00010000, - ResponderTriggered = 0x00020000, - AlkalineFitted = 0x00040000, - DeepSleep = 0x00080000, - CovertMode = 0x00100000, - PulsedModeEnabled = 0x00200000, - PulsedModeActive = 0x00400000, - PulsedModeIndustrial=0x00800000, -}; -enum class FaultStatusFlags : uint32_t { - NotInitialized = 0x0001, - BadThreshold = 0x0002, - BadSensitivities = 0x0004, - DetectorTestFail = 0x0008, - NotCalibrated = 0x0010, - EepromFailure = 0x0020, - ErrorLogged = 0x0040, - EpdFaulty = 0x0080, - TimeInvalid = 0x0100, - EarlyCommsTermination = 0x0200, - SounderFailure = 0x0400, - ResetWhileIssued = 0x0800, -}; -enum class AlarmStatusFlags : uint32_t { - DoseWarning = 0x00000001, - DoseAlarm = 0x00000002, - DoseOverrange = 0x00000004, - TotalDoseOverrange = 0x00000008, - RateWarning = 0x00000010, - RateAlarm = 0x00000020, - RateOverrange = 0x00000040, - PulseOverrange = 0x00000080, - LatchedRateWarning = 0x00000100, - LatchedRateAlarm = 0x00000200, - LatchedRateOverrange = 0x00000400, - LatchedPulseOverrange = 0x00000800, - StayTimeExceeded = 0x00010000, - ReturnForRead = 0x00020000, - AbuseAlarm = 0x00040000, - LowBattery = 0x00080000, - TelemetryAlert = 0x00100000 -}; -enum class DoseAlarmFlags : uint32_t { - DoseWarning = 0x0001, - DoseAlarm = 0x0002, - DoseOverrange = 0x0004, - TotalDoseOverrange = 0x0008, - RateWarning = 0x0010, - RateAlarm = 0x0020, - RateOverrange = 0x0040, - LatchedRateWarning = 0x0100, - LatchedRateAlarm = 0x0200, - LatchedRateOverrange = 0x0400 -}; -enum class Mk2StatusFlags : uint32_t { - ADSIssued = 0x0001, - OneSecCountsProcessing = 0x0002, - RadioBatteryLow = 0x0004 -}; -typedef struct -{ - uint16_t Id; - DoseAlarmFlags Status; -}Mk3DoseStatus_t; -typedef struct -{ - OpStatusFlags OperatingStatus; - FaultStatusFlags FaultStatus; - AlarmStatusFlags AlarmStatus; - uint16_t IssueCount; - uint16_t FaultCode; - uint32_t OtherBits; - uint16_t NumberDoseAlarmWords; - Mk3DoseStatus_t DoseAlarms[MAX_MEASUREMENTS]; -}StatusData_t; -enum class QualityFlags -{ - DoseOverrange = 0x0001, - RateOverrange = 0x0002, - AbuseWarning = 0x0004, - CrcFailure = 0x0008, - CounterOverrange = 0x0010, - DetectorFail = 0x0040 -}; -typedef struct -{ - uint16_t PowerCycles; - uint16_t Knocks; - QualityFlags Flags; -}Mk3QualityData_t; -typedef struct -{ - uint16_t Id; - float Value; -}Mk3AlarmThreshold_t; -typedef struct -{ - uint16_t MeasId; - uint16_t NumberThresholds; - Mk3AlarmThreshold_t Thresholds[MAX_ALM_THRESHOLDS]; -}Mk3AlarmThresholds_t; -typedef struct -{ - uint16_t MeasId; - std::vector Thresholds; -}Mk3AlarmThresholdsRequest_t; -typedef struct -{ - uint16_t MeasId; - uint16_t Value; -}Mk3RatePercentage_t; -typedef struct -{ - uint16_t MeasId; - uint16_t AlarmFlags; - float Dose; -}Mk3SnapshotDoseAndFlags_t; -typedef struct -{ - uint16_t SnapshotNumber; - uint16_t IssueCount; - uint32_t StartTime; - uint32_t EndTime; - DatabaseId_t WearerDbId; - DatabaseId_t TaskDbId; - uint32_t OperatingStatus; - uint32_t FaultStatus; - uint32_t AlarmStatus; - uint16_t NumberOfMeasurands; - Mk3SnapshotDoseAndFlags_t DoseAndFlags[MAX_MEASUREMENTS]; -}Mk3SnapshotSummary_t; -typedef struct -{ - uint16_t MeasId; - uint16_t AlarmFlags; - float Dose; - float TriggeredDose; - float TotalDose; - float PeakRate; - uint32_t PeakRateTime; -}Mk3SnapshotMeasurement_t; -typedef struct -{ - uint16_t SnapshotNumber; - uint16_t NumberOfMeasurands; - Mk3SnapshotMeasurement_t DoseAndFlags[MAX_MEASUREMENTS]; -}Mk3SnapshotMeasurements_t; -typedef struct -{ - uint16_t CounterId; - uint32_t StartCount; - uint32_t EndCount; -}Mk3SnapshotCount_t; -typedef struct -{ - uint16_t SnapshotNumber; - uint16_t NumberOfCounters; - uint32_t StartTime; - uint32_t EndTime; - Mk3SnapshotCount_t Counters[MAX_COUNTERS]; -}Mk3SnapshotCounters_t; -typedef struct -{ - float DoseWarning; - float DoseAlarm; - float RateWarning; - float RateAlarm; - uint16_t MeasId; -}Mk3SnapshotAlarmThreshold_t; -typedef struct -{ - uint16_t SnapshotNumber; - uint16_t NumberOfMeasurands; - Mk3SnapshotAlarmThreshold_t Thresholds[MAX_MEASUREMENTS]; -}Mk3SnapshotAlarmThresholds_t; -// **************** -// Access Level -// -#define COMMAND_ID_MAP_SIZE 64 -#define ENCRYPT_IV_SIZE 16 -#define ENCRYPT_KEY_SIZE 32 -#define ENCRYPT_CIPHER_SIZE 16 -typedef uint8_t EncryptionKey[ENCRYPT_KEY_SIZE]; -typedef uint8_t EncryptionText[ENCRYPT_CIPHER_SIZE]; -typedef uint8_t PlainText[ENCRYPT_CIPHER_SIZE]; -enum class AccessLevel_t : uint8_t -{ - Open = 0, - Admin = 1, - Regulator = 2, - Manufacturer = 3 -}; -typedef struct SetAccessLevelRqTag -{ - bool Granted; - EncryptionText Code; - EncryptionKey Key; - AccessLevel_t Level; -} SetAccessLevelRq_t; -typedef struct SetAccessPasswordRqTag -{ - EncryptionKey Key; - AccessLevel_t Level; -} SetAccessPasswordRq_t; -typedef struct CommandIdPermissionsTag -{ - AccessLevel_t Level; - uint8_t CommandIdPermissions[COMMAND_ID_MAP_SIZE]; -}CommandIdPermissions_t; -// **************** -// UI Config -// -#define MAX_QUICK_ACCESS_DISPLAYS 6 /*5 + default display*/ -typedef struct QuickAccessDisplayTag -{ - uint8_t Position; - uint8_t DisplayId; -}QuickAccessDisplay_t; -typedef struct DisplayEnablesTag -{ - uint8_t MenuId; - uint16_t EnableMask; - uint16_t Enables; -}DisplayAttributeMap_t; -#define MAX_MENUS 15 -typedef struct DisplayEnablePrivilegesTag -{ - AccessLevel_t Level; - uint8_t NumMenus; - uint16_t Privileges[MAX_MENUS]; -} DisplayEnablePrivileges_t; -enum class DisplayCapability_t :uint8_t -{ - DefaultDisplay = 1, - QuickDisplay = 2, -}; -enum class OffModeDisplayId_t : uint8_t -{ - Undefined = 0, - OffText = 1, - CalDueDate = 2, - UserBitmap = 3, - Manufacturer_PartnerLogo = 4, - CustomerLogo = 5, - ModelVersion=6 -}; -enum class AlarmIds : uint16_t -{ - DoseAlarm = 0, - DoseWarning = 1, - RateWarning = 2, - RateAlarm = 3, - DoseOrRateOverRange = 4, - FailureAlarm = 5, - AbuseAlarm = 6, - BatteryLow = 7, - ReturnForRead = 8 -}; -#define MAX_OTHER_ALARMS 5 -typedef struct AlarmConfigTag -{ - AlarmIds AlarmId; - uint16_t MeasurandId; - uint16_t AlarmConfigMask; - uint16_t AlarmConfigBits; - uint16_t Duration; -}AlarmConfig_t; -typedef struct AlarmConfigIdTag -{ - AlarmIds AlarmId; - uint16_t MeasurandId; -}AlarmConfigId; -// **************** -// Telemetry -// -typedef struct TeleAdvConfigTag -{ - uint8_t operatingMode; - uint16_t undirectedInterval; - uint16_t directedInterval; - uint16_t directedTimeout; -}TeleAdvConfig_t; -typedef struct TeleCxnConfigTag -{ - uint16_t minInterval; - uint16_t maxInterval; - uint16_t slaveLatency; - uint16_t supervisoryTimeout; -}TeleCxnConfig_t; -// **************** -// Debug Registers -// -typedef struct DebugRegisterValueTag -{ - uint8_t registerId; - uint32_t value; -}DebugRegisterValue_t; -// **************** -// Battery Low Thesholds -// -typedef struct BatteryLowThresholdTag -{ - uint8_t batteryType; - uint16_t mv; -}BatteryLowThreshold_t; -// **************** -// Battery Critical Timing -// -typedef struct BatteryCriticalTimingTag -{ - uint16_t timeToCritical; - uint16_t timeToShutdown; -}BatteryCriticalTiming_t; -// **************** -// Battery Critical Timing -// -typedef struct MeasuredVoltagesTag -{ - uint16_t vbat0; - uint16_t vbat1; - uint16_t vcpu; -}MeasuredVoltages_t; -#pragma pack (pop) +#ifndef Mk3Types_h +#define Mk3Types_h +#include +#include "CommonEpdTypes.h" +#include +#define MAX_COUNTERS 6 +// Mk3 Measurands +#define MK3_MEAS_HP10 0 +#define MK3_MEAS_HP07 1 +#define MK3_MEAS_HP10G 2 +#define MK3_MEAS_HP10N 3 +enum class CounterType : uint16_t +{ + Counter_Hg1 = 0, // MK2 HG + Counter_Hg2 = 1, + Counter_Sg1 = 2, // Mk2 SG + Counter_Sg2 = 3, // Mk2 BC + Counter_Sg3 = 4, + Counter_Fb1 = 5, // Mk2 FB + Counter_Fb2 = 6, + Counter_An1 = 7, + Counter_Fn2 = 8 +}; +#define MAX_DET_THRESHOLDS MAX_COUNTERS +#pragma pack (push) +#pragma pack (1) +typedef struct +{ + uint16_t eventId; + uint16_t info; + uint32_t timestamp; +}EventLog; +typedef struct +{ + uint16_t type; + uint32_t value; +}Counter_t; +typedef struct +{ + uint16_t type; + uint16_t value; +}DetectorThreshold_t; +typedef struct +{ + CounterType id; + uint16_t scaledDeadTime; + uint16_t scaledCoefficient; +}DeadTimeCoefficient_t; +typedef struct +{ + CounterType id; + uint8_t value; +}DetectorTestLimit_t; +typedef struct +{ + uint16_t type; + uint16_t va; + uint16_t vb; +}DetectorThresholdLimit_t; +enum class OffModeDutyCycle :uint8_t +{ + Off = 0, + On = 1, + Pct50 = 2, + Pct33 = 3, + Pct25 = 4, + Pct10 = 5, + NoChange = 255 +}; + enum class SensitivityId + { + //Hp10 Gamma contributors + Hg1Sens10G = 0, // Mk2 HGSens10 (K1) + Hg2Sens10G = 1, + Sg1Sens10G = 2, // Mk2 SGSens10 (K2) + Sg2Sens10G = 3, + Sg3Sens10G = 4, + //Hp10 Neutron contributors + //Hp07 Gamma contributors + Hg1Sens07G = 5, // Mk2 HGSens07 (K3) + Hg2Sens07G = 6, + Sg1Sens07G = 7, // Mk2 SGSens07 (K4) + Sg2Sens07G = 8, + Sg3Sens07G = 9, + //Hp07 Beta contributors + Fb1Sens07B = 10, // Mk2 FBSens07 (K5) + Fb2Sens07B = 11, + Sg2Sens07B = 12, // Mk2 BCSens07 (K6) + Sg3Sens07B = 13, + //Neutron + An1Sens10N = 14, + Fn1Sens10N = 15, + Fn2Sens10N = 16, + + MaxSensitivity + }; +#define MAX_SENSITIVITIES ((uint16_t)SensitivityId::MaxSensitivity) +#define LAST_SENSITIVITY (((uint16_t)SensitivityId::MaxSensitivity) - 1) +enum class MeasurementId : uint16_t +{ + Meas_Hp10, + Meas_Hp07, + Meas_Hp10G, + Meas_Hp10N +}; +#define MAX_MEASUREMENTS 4 +enum class ThresholdId +{ + Thres_DoseAlarm = 0, + Thres_DoseWarning = 1, + Thres_RateAlarm = 2, + Thres_RateWarning = 3 +}; +#define MAX_ALM_THRESHOLDS 4 +enum class WearerIdType +{ + WearerId_Name, + WearerId_Primary, + WearerId_Id2, + WearerId_Id3 +}; +#define MAX_WEARER_ID_TYPES 4 +enum class TaskIdType +{ + Task_Name, + Task_Primary +}; +#define MAX_TASK_ID_TYPES 2 +enum class WearerAndTaskIdType_t : uint16_t +{ + WearerId_Name, + WearerId_Primary, + WearerId_Id2, + WearerId_Id3, + TaskName, + TaskID, + WearerDBID, + TaskDBID +}; +#define MAX_WEARER_TASK_ID_TYPES 8 +typedef struct +{ + uint8_t RecordType; + uint8_t Measurand; + int32_t TimeStamp; + uint32_t Value; +}DoseProfileRecord_t; +typedef struct +{ + float DoseIncrement; + uint16_t Interval; + uint16_t NumberOfMeasurands; + MeasurementId Enables[MAX_MEASUREMENTS]; +}DoseProfileConfig_t; +typedef struct +{ + uint16_t id; + float value; +}CalSensitivity_t; +typedef struct +{ + uint16_t id; + float value; +}CalGain_t; +typedef struct +{ + uint16_t id; + float value; +}MeasValue_t; +typedef struct +{ + uint16_t id; + float value; + uint32_t timestamp; +}PeakRate_t; +typedef struct +{ + uint32_t Utc; + uint16_t NumberOfMeasurands; + MeasValue_t Measurements[MAX_MEASUREMENTS]; +}MeasurandDoseOrRate_t; +typedef struct +{ + uint8_t Major; + uint8_t Minor; + uint8_t Patch; + uint16_t Build; +}VersionNumber_t; +typedef struct MarkNumberTag +{ + uint8_t Major; + uint8_t Minor; + uint8_t Revision; + uint8_t Build; +} MarkNumber_t; +#define PART_NUM_LENGTH 10 +typedef uint8_t PartNumber_t[PART_NUM_LENGTH]; +#define PCB_PART_NUM_LENGTH 14 +typedef uint8_t PcbPartNumber_t[PCB_PART_NUM_LENGTH]; +#define FIRMWARE_PART_NUM_LENGTH 16 +typedef uint8_t FirmwarePartNumber_t[FIRMWARE_PART_NUM_LENGTH]; +#define MODEL_NAME_LENGTH 32 +typedef struct ModelNameTag +{ + uint8_t Name[MODEL_NAME_LENGTH]; +} ModelName_t; +#define CAL_PROCESS_LENGTH 12 +typedef struct CalProcessTag +{ + uint8_t Process[CAL_PROCESS_LENGTH]; +} CalProcess_t; +#define CAL_FACILITY_LENGTH 8 +typedef struct CalFacilityTag +{ + uint8_t Name[CAL_FACILITY_LENGTH]; +} CalFacility_t; +#define MAX_ID_STRING_LENGTH 64 +typedef struct IdStringTag +{ + uint16_t IdType; + uint16_t Length; + uint8_t Utf8String[MAX_ID_STRING_LENGTH]; +} IdString_t; +#define DB_ID_LENGTH 16 +typedef struct DbIdTag +{ + uint8_t Id[DB_ID_LENGTH]; +} DatabaseId_t; +#define MAX_GRAPHIC_WIDTH 112 +#define MAX_GRAPHIC_HEIGHT 24 +#define MAX_GRAPHIC_PIXELS (MAX_GRAPHIC_WIDTH * MAX_GRAPHIC_HEIGHT) +#define MAX_GRAPHIC_ID 1 +#define MAX_GRAPHIC_BYTES ((MAX_GRAPHIC_PIXELS)/8) +typedef struct GraphicSizeTag +{ + uint16_t Id; + uint16_t Height; + uint16_t Width; +} GraphicSize_t; +typedef struct +{ + GraphicSize_t Meta; + uint16_t DataLength; + uint8_t Data[MAX_GRAPHIC_BYTES]; +} GraphicBitmap_t; +enum class OpStatusFlags : uint32_t { + EpdOn = 0x0001, + EpdIssued = 0x0002, + DetectorTestRequested = 0x0004, + DetectorTestPassed = 0x0008, + TelemetryOn = 0x0010, + TelemetryConnected = 0x0020, + CalibrationDue = 0x0040, + CalibrationInProgress = 0x0080, + GainAdjustable = 0x0100, + GainAdjusted = 0x0200, + ReducedRateOverrange = 0x0400, + DoseWriteEnabled = 0x0800, + ClearOnOnEnabled = 0x1000, + Golden = 0x2000, + ProtectedSession = 0x4000, + //NotYetDefined = 0x8000, + ResponderEnabled = 0x00010000, + ResponderTriggered = 0x00020000, + AlkalineFitted = 0x00040000, + DeepSleep = 0x00080000, + CovertMode = 0x00100000, + PulsedModeEnabled = 0x00200000, + PulsedModeActive = 0x00400000, + PulsedModeIndustrial=0x00800000, +}; +enum class FaultStatusFlags : uint32_t { + NotInitialized = 0x0001, + BadThreshold = 0x0002, + BadSensitivities = 0x0004, + DetectorTestFail = 0x0008, + NotCalibrated = 0x0010, + EepromFailure = 0x0020, + ErrorLogged = 0x0040, + EpdFaulty = 0x0080, + TimeInvalid = 0x0100, + EarlyCommsTermination = 0x0200, + SounderFailure = 0x0400, + ResetWhileIssued = 0x0800, +}; +enum class AlarmStatusFlags : uint32_t { + DoseWarning = 0x00000001, + DoseAlarm = 0x00000002, + DoseOverrange = 0x00000004, + TotalDoseOverrange = 0x00000008, + RateWarning = 0x00000010, + RateAlarm = 0x00000020, + RateOverrange = 0x00000040, + PulseOverrange = 0x00000080, + LatchedRateWarning = 0x00000100, + LatchedRateAlarm = 0x00000200, + LatchedRateOverrange = 0x00000400, + LatchedPulseOverrange = 0x00000800, + StayTimeExceeded = 0x00010000, + ReturnForRead = 0x00020000, + AbuseAlarm = 0x00040000, + LowBattery = 0x00080000, + TelemetryAlert = 0x00100000 +}; +enum class DoseAlarmFlags : uint32_t { + DoseWarning = 0x0001, + DoseAlarm = 0x0002, + DoseOverrange = 0x0004, + TotalDoseOverrange = 0x0008, + RateWarning = 0x0010, + RateAlarm = 0x0020, + RateOverrange = 0x0040, + LatchedRateWarning = 0x0100, + LatchedRateAlarm = 0x0200, + LatchedRateOverrange = 0x0400 +}; +enum class Mk2StatusFlags : uint32_t { + ADSIssued = 0x0001, + OneSecCountsProcessing = 0x0002, + RadioBatteryLow = 0x0004 +}; +typedef struct +{ + uint16_t Id; + DoseAlarmFlags Status; +}Mk3DoseStatus_t; +typedef struct +{ + OpStatusFlags OperatingStatus; + FaultStatusFlags FaultStatus; + AlarmStatusFlags AlarmStatus; + uint16_t IssueCount; + uint16_t FaultCode; + uint32_t OtherBits; + uint16_t NumberDoseAlarmWords; + Mk3DoseStatus_t DoseAlarms[MAX_MEASUREMENTS]; +}StatusData_t; +enum class QualityFlags +{ + DoseOverrange = 0x0001, + RateOverrange = 0x0002, + AbuseWarning = 0x0004, + CrcFailure = 0x0008, + CounterOverrange = 0x0010, + DetectorFail = 0x0040 +}; +typedef struct +{ + uint16_t PowerCycles; + uint16_t Knocks; + QualityFlags Flags; +}Mk3QualityData_t; +typedef struct +{ + uint16_t Id; + float Value; +}Mk3AlarmThreshold_t; +typedef struct +{ + uint16_t MeasId; + uint16_t NumberThresholds; + Mk3AlarmThreshold_t Thresholds[MAX_ALM_THRESHOLDS]; +}Mk3AlarmThresholds_t; +typedef struct +{ + uint16_t MeasId; + std::vector Thresholds; +}Mk3AlarmThresholdsRequest_t; +typedef struct +{ + uint16_t MeasId; + uint16_t Value; +}Mk3RatePercentage_t; +typedef struct +{ + uint16_t MeasId; + uint16_t AlarmFlags; + float Dose; +}Mk3SnapshotDoseAndFlags_t; +typedef struct +{ + uint16_t SnapshotNumber; + uint16_t IssueCount; + uint32_t StartTime; + uint32_t EndTime; + DatabaseId_t WearerDbId; + DatabaseId_t TaskDbId; + uint32_t OperatingStatus; + uint32_t FaultStatus; + uint32_t AlarmStatus; + uint16_t NumberOfMeasurands; + Mk3SnapshotDoseAndFlags_t DoseAndFlags[MAX_MEASUREMENTS]; +}Mk3SnapshotSummary_t; +typedef struct +{ + uint16_t MeasId; + uint16_t AlarmFlags; + float Dose; + float TriggeredDose; + float TotalDose; + float PeakRate; + uint32_t PeakRateTime; +}Mk3SnapshotMeasurement_t; +typedef struct +{ + uint16_t SnapshotNumber; + uint16_t NumberOfMeasurands; + Mk3SnapshotMeasurement_t DoseAndFlags[MAX_MEASUREMENTS]; +}Mk3SnapshotMeasurements_t; +typedef struct +{ + uint16_t CounterId; + uint32_t StartCount; + uint32_t EndCount; +}Mk3SnapshotCount_t; +typedef struct +{ + uint16_t SnapshotNumber; + uint16_t NumberOfCounters; + uint32_t StartTime; + uint32_t EndTime; + Mk3SnapshotCount_t Counters[MAX_COUNTERS]; +}Mk3SnapshotCounters_t; +typedef struct +{ + float DoseWarning; + float DoseAlarm; + float RateWarning; + float RateAlarm; + uint16_t MeasId; +}Mk3SnapshotAlarmThreshold_t; +typedef struct +{ + uint16_t SnapshotNumber; + uint16_t NumberOfMeasurands; + Mk3SnapshotAlarmThreshold_t Thresholds[MAX_MEASUREMENTS]; +}Mk3SnapshotAlarmThresholds_t; +// **************** +// Access Level +// +#define COMMAND_ID_MAP_SIZE 64 +#define ENCRYPT_IV_SIZE 16 +#define ENCRYPT_KEY_SIZE 32 +#define ENCRYPT_CIPHER_SIZE 16 +typedef uint8_t EncryptionKey[ENCRYPT_KEY_SIZE]; +typedef uint8_t EncryptionText[ENCRYPT_CIPHER_SIZE]; +typedef uint8_t PlainText[ENCRYPT_CIPHER_SIZE]; +enum class AccessLevel_t : uint8_t +{ + Open = 0, + Admin = 1, + Regulator = 2, + Manufacturer = 3 +}; +typedef struct SetAccessLevelRqTag +{ + bool Granted; + EncryptionText Code; + EncryptionKey Key; + AccessLevel_t Level; +} SetAccessLevelRq_t; +typedef struct SetAccessPasswordRqTag +{ + EncryptionKey Key; + AccessLevel_t Level; +} SetAccessPasswordRq_t; +typedef struct CommandIdPermissionsTag +{ + AccessLevel_t Level; + uint8_t CommandIdPermissions[COMMAND_ID_MAP_SIZE]; +}CommandIdPermissions_t; +// **************** +// UI Config +// +#define MAX_QUICK_ACCESS_DISPLAYS 6 /*5 + default display*/ +typedef struct QuickAccessDisplayTag +{ + uint8_t Position; + uint8_t DisplayId; +}QuickAccessDisplay_t; +typedef struct DisplayEnablesTag +{ + uint8_t MenuId; + uint16_t EnableMask; + uint16_t Enables; +}DisplayAttributeMap_t; +#define MAX_MENUS 15 +typedef struct DisplayEnablePrivilegesTag +{ + AccessLevel_t Level; + uint8_t NumMenus; + uint16_t Privileges[MAX_MENUS]; +} DisplayEnablePrivileges_t; +enum class DisplayCapability_t :uint8_t +{ + DefaultDisplay = 1, + QuickDisplay = 2, +}; +enum class OffModeDisplayId_t : uint8_t +{ + Undefined = 0, + OffText = 1, + CalDueDate = 2, + UserBitmap = 3, + Manufacturer_PartnerLogo = 4, + CustomerLogo = 5, + ModelVersion=6 +}; +enum class AlarmIds : uint16_t +{ + DoseAlarm = 0, + DoseWarning = 1, + RateWarning = 2, + RateAlarm = 3, + DoseOrRateOverRange = 4, + FailureAlarm = 5, + AbuseAlarm = 6, + BatteryLow = 7, + ReturnForRead = 8 +}; +#define MAX_OTHER_ALARMS 5 +typedef struct AlarmConfigTag +{ + AlarmIds AlarmId; + uint16_t MeasurandId; + uint16_t AlarmConfigMask; + uint16_t AlarmConfigBits; + uint16_t Duration; +}AlarmConfig_t; +typedef struct AlarmConfigIdTag +{ + AlarmIds AlarmId; + uint16_t MeasurandId; +}AlarmConfigId; +// **************** +// Telemetry +// +typedef struct TeleAdvConfigTag +{ + uint8_t operatingMode; + uint16_t undirectedInterval; + uint16_t directedInterval; + uint16_t directedTimeout; +}TeleAdvConfig_t; +typedef struct TeleCxnConfigTag +{ + uint16_t minInterval; + uint16_t maxInterval; + uint16_t slaveLatency; + uint16_t supervisoryTimeout; +}TeleCxnConfig_t; +// **************** +// Debug Registers +// +typedef struct DebugRegisterValueTag +{ + uint8_t registerId; + uint32_t value; +}DebugRegisterValue_t; +// **************** +// Battery Low Thesholds +// +typedef struct BatteryLowThresholdTag +{ + uint8_t batteryType; + uint16_t mv; +}BatteryLowThreshold_t; +// **************** +// Battery Critical Timing +// +typedef struct BatteryCriticalTimingTag +{ + uint16_t timeToCritical; + uint16_t timeToShutdown; +}BatteryCriticalTiming_t; +// **************** +// Battery Critical Timing +// +typedef struct MeasuredVoltagesTag +{ + uint16_t vbat0; + uint16_t vbat1; + uint16_t vcpu; +}MeasuredVoltages_t; +#pragma pack (pop) #endif \ No newline at end of file diff --git a/EpdBaseClr/EpdBaseClr.cpp b/EpdBaseClr/EpdBaseClr.cpp index 93aefd2..f54c685 100644 --- a/EpdBaseClr/EpdBaseClr.cpp +++ b/EpdBaseClr/EpdBaseClr.cpp @@ -248,6 +248,7 @@ int EpdBaseClr::Epd2::AfterGetStatus(Epd3Base::Epd3U* epd) SoftVersion = epd->SoftVersion; FunctionFlags = epd->FunctionFlags; CountsClock = epd->EpdClock; + //hier nodig ? DecodeStatus( epd); // zet hasAlarm return 0; } @@ -327,7 +328,8 @@ int EpdBaseClr::Epd2::AfterGetDoses(Epd3Base::Epd3U* epd) BC = epd->SG; FB = epd->FB; HG = epd->HG; - NGgain = K3; + //NGgain = K3; + NGgain = epd->GainAn; eDosDose07Warning = epd->eDosDose07Warning; eDosDose07Alarm= epd->eDosDose07Alarm; @@ -595,7 +597,7 @@ int EpdBaseClr::Epd2::AfterReadTresholds(EpdBase::Epd2U* epd) FB = epd->FB; HG = epd->HG; - NGgain = K3; + NGgain = K3; //EPD2 return rv; @@ -641,7 +643,7 @@ int EpdBaseClr::Epd2::AfterReadTresholds(Epd3Base::Epd3U* epd) FB = epd->FB; HG = epd->HG; - NGgain = K3; + NGgain = epd->GainAn; //K3 vroeger return rv; } /// @@ -943,14 +945,23 @@ error: void EpdBaseClr::Epd2::WaitEpd() { int rv = 0; //start + int retriesLeft = readRetries; System::Threading::CancellationToken^ token = tokenSource->Token; - rv = ConnectAndStatus(); + do { + rv = ConnectAndStatus(); + retriesLeft--; + } while (rv == 1); /*if (token->IsCancellationRequested && rv != 2) { rv = 2; }*/ + // error 1 is connect error ? + if (retriesLeft != readRetries - 1) { + + } + if (rv == 0) { if (_EpdRead != nullptr) - _EpdRead(this, gcnew EpdEventArgs(EpdID, EPDIssued, isBG, isMK3)); + _EpdRead(this, gcnew EpdEventArgs(EpdID, EPDIssued, isBG, isMK3, retriesLeft)); } else if (rv == 2 && _EpdTO != nullptr) { _EpdTO(this, gcnew EpdTOEventArgs(0, 0)); // epd3->ConnectTries, epd3->ConnectTimerFired)); diff --git a/EpdBaseClr/EpdBaseClr.h b/EpdBaseClr/EpdBaseClr.h index 54723c4..83db9ce 100644 --- a/EpdBaseClr/EpdBaseClr.h +++ b/EpdBaseClr/EpdBaseClr.h @@ -41,16 +41,17 @@ namespace EpdBaseClr { { public: int deviceID; - bool isIssued, isBG, isMK3; + bool isIssued, isBG, isMK3, retriesLeft; - EpdEventArgs(int epdID, bool epdIssued, bool isBG, bool isMK3) : EventArgs() + EpdEventArgs(int epdID, bool epdIssued, bool isBG, bool isMK3, int retriesleft) : EventArgs() { this->deviceID = epdID; this->isIssued = epdIssued; this->isBG = isBG; this->isMK3 = isMK3; + this->retriesLeft = retriesleft; } }; diff --git a/TestEpdBaseClr/Program.cs b/TestEpdBaseClr/Program.cs index 1ec6d97..429ee35 100644 --- a/TestEpdBaseClr/Program.cs +++ b/TestEpdBaseClr/Program.cs @@ -19,17 +19,22 @@ namespace TestEpdBaseClr private static void EpdDevice_EpdTO(EpdBaseClr.Epd2 Sender, EpdBaseClr.EpdTOEventArgs e) { - throw new NotImplementedException(); + //throw new NotImplementedException(); + System.Diagnostics.Debug.WriteLine("Epd TimeOut"); } private static void EpdDevice_EpdError(EpdBaseClr.Epd2 Sender, EpdBaseClr.EpdErrorEventArgs e) { - throw new NotImplementedException(); + System.Diagnostics.Debug.WriteLine("Epd Error"); + //throw new NotImplementedException(); } private static void EpdDevice_EpdRead(EpdBaseClr.Epd2 Sender, EpdBaseClr.EpdEventArgs e) { - throw new NotImplementedException(); + //throw new NotImplementedException(); + var i = epdDevice.EpdID; + System.Diagnostics.Debug.WriteLine("EpdID: " + i.ToString()); + } static void Main(string[] args) @@ -37,7 +42,7 @@ namespace TestEpdBaseClr init(); epdDevice.Wait(10000,2); - + Console.ReadKey(); Einde(); } diff --git a/eDosStation.zip b/eDosStation.zip index 0df4acc..35d5466 100644 Binary files a/eDosStation.zip and b/eDosStation.zip differ diff --git a/eDosStation/App.xaml.cs b/eDosStation/App.xaml.cs index 23c4f9b..8be06bb 100644 --- a/eDosStation/App.xaml.cs +++ b/eDosStation/App.xaml.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Runtime.InteropServices; using System.Threading.Tasks; using System.Windows; +using cspl = LSWLib.CLog; namespace eDosStation { @@ -30,7 +31,10 @@ namespace eDosStation System.IO.Directory.CreateDirectory(fn); } } - catch { rv = false; } + catch (System.Exception ex) { + splunkLog.WriteException("App", "TestOrCreateFolder", ex); + rv = false; + } return rv; } @@ -38,6 +42,7 @@ namespace eDosStation public string eDosPort; public string elatecPort, elatecFirmware; public string RFIDReader; + public cspl splunkLog; private void Application_Startup(object sender, StartupEventArgs e) { @@ -46,6 +51,8 @@ namespace eDosStation //moduleHandle = LoadLibraryEx(pth2, IntPtr.Zero, 0); //moduleHandle = LoadLibraryEx(pth1, IntPtr.Zero, 0); + splunkLog = new cspl(Environment.MachineName, hourlyLog: true); + using (var h = new LSWDevices.LSWDevicesHelper()) { eDosPort = h.eDosPort; @@ -60,7 +67,17 @@ namespace eDosStation private void Application_Exit(object sender, ExitEventArgs e) { - Environment.Exit(0); + splunkLog.KvClear(); + splunkLog?.CloseSplunkLog(); + + Application.Current.Shutdown(); + //try + //{ + // Environment.Exit(0); + //} + //catch + //{ + //} } } } diff --git a/eDosStation/DataInterface.cs b/eDosStation/DataInterface.cs index 9c0aa42..bbe9d45 100644 --- a/eDosStation/DataInterface.cs +++ b/eDosStation/DataInterface.cs @@ -2,6 +2,8 @@ using System; using System.Data; using System.Data.SqlClient; +using Telerik.Windows.Controls.GridView; +using cspl = LSWLib.CLog; namespace eDosStation { @@ -14,7 +16,7 @@ namespace eDosStation public System.IO.StreamWriter stationLog; public SqlConnection localConnection, centralConnection; - internal CLog splunkLog; + internal cspl splunkLog; public System.Data.SqlClient.SqlCommand VisitInitCommand, VisitInfoCommand, VisitInitConfirmCommand; public static SqlCommand VisitExitCommand; public static SqlCommand NextIDCommand; @@ -140,8 +142,7 @@ namespace eDosStation bool rv = checkCon(true); MakeCommands(); if (localConnection.State == ConnectionState.Open)localConnection.Close(); - - + splunkLog?.WriteSplunkLog(moduleName, taskName, CLog.iseverity.info); } catch (Exception ex) { @@ -149,10 +150,12 @@ namespace eDosStation System.Windows.MessageBox.Show($"Init error {ex.Message} con={currentConStr}"); stationLog.WriteLine($"Init error {ex.Message} con={currentConStr}"); } - stationLog?.WriteLine($"Datainterface.Init end {tnow()}"); + + //stationLog?.WriteLine($"Datainterface.Init end {tnow()}"); } - public DataInterface() + public DataInterface( cspl spl ) { + splunkLog = spl; init(); } diff --git a/eDosStation/EntryBadge.xaml.cs b/eDosStation/EntryBadge.xaml.cs index 9f56a56..91ab17a 100644 --- a/eDosStation/EntryBadge.xaml.cs +++ b/eDosStation/EntryBadge.xaml.cs @@ -5,7 +5,9 @@ using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; +using System.Windows.Interop; using System.Windows.Media; +using System.Windows.Resources; using System.Windows.Threading; namespace eDosStation @@ -55,14 +57,18 @@ namespace eDosStation } private void Ep_EpdTO(EpdBaseClr.Epd2 Sender, EpdBaseClr.EpdTOEventArgs e) { + string ermsg = "TIME OUT"; + thisStation.splunkLog?.WriteSplunkLog("EntryBadge.Ep_EpdTO", null, LSWLib.CLog.iseverity.warning, lresultMessage: ermsg); EntryState = eEntryState.epdtimeout; - System.Diagnostics.Debug.WriteLine("TIME OUT"); + System.Diagnostics.Debug.WriteLine(ermsg); Dispatcher.InvokeAsync(() => { SetTimedOutAndEnd(); }); } private void Ep_EpdError(EpdBaseClr.Epd2 Sender, EpdBaseClr.EpdErrorEventArgs e) { + string ermsg = $"EPD Error {e.returnValue} {e.ErrorRV} {e.ErrorStep}"; + thisStation.splunkLog?.WriteSplunkLog("EntryBadge.Ep_EpdError", null, LSWLib.CLog.iseverity.err, lresultMessage: ermsg); EntryState = eEntryState.epdError; - System.Diagnostics.Debug.WriteLine("ERROR "); + System.Diagnostics.Debug.WriteLine(ermsg); Dispatcher.InvokeAsync(() => { MessageBox.Show($"EPD Error {e.returnValue} {e.ErrorRV} {e.ErrorStep}"); Dispatcher.InvokeAsync(() => { SetTimedOutAndEnd(); }); @@ -328,7 +334,7 @@ namespace eDosStation float gain = 100.0F; float ChirpRate = 0F; - if (!CurTaskRow.IsFNGain_ANGainValueNull()) gain = (int)CurTaskRow.FNGain_ANGainValue; + if (!CurTaskRow.IsFNGain_ANGainValueNull()) gain = (float)CurTaskRow.FNGain_ANGainValue; if (!CurTaskRow.IsChirpRateNull()) ChirpRate = (int)CurTaskRow.ChirpRate; //doing stuff on EPD diff --git a/eDosStation/MainWindow.xaml.cs b/eDosStation/MainWindow.xaml.cs index aed8e74..947e220 100644 --- a/eDosStation/MainWindow.xaml.cs +++ b/eDosStation/MainWindow.xaml.cs @@ -183,16 +183,17 @@ namespace eDosStation try { - dataInterface = new DataInterface(); - thisStation = new Station(dataInterface, string.Empty, curApp); - dataInterface.splunkLog = thisStation.splunkLog; + dataInterface = new DataInterface(curApp.splunkLog); + thisStation = new Station(dataInterface, string.Empty, curApp, curApp.splunkLog); + //dataInterface.splunkLog = thisStation.splunkLog; } catch (System.Exception ex) { + curApp.splunkLog?.WriteException(className, "Window_Loaded", ex); errMsg = $"Startup error {ex.Message} "; MessageBox.Show(errMsg); ok = false; - dataInterface.stationLog?.WriteLine($"Window_Loaded {ex.Message}"); + //dataInterface.stationLog?.WriteLine($"Window_Loaded {ex.Message}"); } if (ok && thisStation.Error > 0) @@ -266,14 +267,16 @@ namespace eDosStation { bgTimer?.Stop(); dataInterface.stationLog?.Close(); - thisStation.splunkLog.KvClear(); - thisStation.splunkLog?.CloseSplunkLog(); - Application.Current.Shutdown(); - try - { - Environment.Exit(0); - } - catch { } + //thisStation.splunkLog.KvClear(); + //thisStation.splunkLog?.CloseSplunkLog(); + + //Application.Current.Shutdown(); + //try + //{ + // Environment.Exit(0); + //} + //catch { } + Close(); } private void mReverseSync_Click(object sender, RoutedEventArgs e) diff --git a/eDosStation/Properties/AssemblyInfo.cs b/eDosStation/Properties/AssemblyInfo.cs index c7ea260..f53214d 100644 --- a/eDosStation/Properties/AssemblyInfo.cs +++ b/eDosStation/Properties/AssemblyInfo.cs @@ -8,11 +8,11 @@ using System.Windows; // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("eDosStation")] -[assembly: AssemblyDescription("MK2/MK3 epd station 2025 Isabelle Majkowski, Luc Praet, Luc Vandenbroucke, Karel Janssen")] +[assembly: AssemblyDescription("MK2/MK3 epd station 2026 Isabelle Majkowski, Luc Praet, Luc Vandenbroucke, Karel Janssen")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("SCK CEN")] [assembly: AssemblyProduct("eDosStation")] -[assembly: AssemblyCopyright("Copyright © 2019-2025 Luc Vandenbroucke, Karel Janssen")] +[assembly: AssemblyCopyright("Copyright © 2019-2026 Luc Vandenbroucke, Karel Janssen")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -70,5 +70,6 @@ using System.Windows; //2.41 Maximized exit en Dose screen (Karel) //2.42 User Info screen (kiosk) //2.43 User Info screen + button EPD off -[assembly: AssemblyVersion("2.43.0.0")] -[assembly: AssemblyFileVersion("2.43.0.0")] +//2025-01-07 2.50 MK3 neutron +[assembly: AssemblyVersion("2.50.0.0")] +[assembly: AssemblyFileVersion("2.50.0.0")] diff --git a/eDosStation/Resources/BuildDate.txt b/eDosStation/Resources/BuildDate.txt index ee03148..a14fe05 100644 --- a/eDosStation/Resources/BuildDate.txt +++ b/eDosStation/Resources/BuildDate.txt @@ -1 +1 @@ -Wed 08/27/2025 15:14:29.82 +Wed 01/07/2026 14:14:27.32 diff --git a/eDosStation/ShowEPDDose.xaml.cs b/eDosStation/ShowEPDDose.xaml.cs index d892c2a..bef3ad2 100644 --- a/eDosStation/ShowEPDDose.xaml.cs +++ b/eDosStation/ShowEPDDose.xaml.cs @@ -123,7 +123,7 @@ namespace eDosStation if (ep.isNG) { lNGain.Visibility = NGain.Visibility = Visibility.Visible; - NGain.Text = ep.NGgain.ToString(); + NGain.Text = ep.NGgain.ToString("#.##"); } else { lNGain.Visibility = NGain.Visibility = Visibility.Hidden; } diff --git a/eDosStation/Station.cs b/eDosStation/Station.cs index c0ed3be..f50030b 100644 --- a/eDosStation/Station.cs +++ b/eDosStation/Station.cs @@ -80,12 +80,13 @@ namespace eDosStation return beepMk3Map[useBeep]; else return beepMk3Map[0b00011010]; } - public Station(DataInterface mDataInterface, string Station, App curApp) + + public Station(DataInterface mDataInterface, string Station, App curApp, spl1 spl) { const string module = "StationInit"; string step = null; ReceivedPersid = null; - splunkLog = new spl1(Environment.MachineName,hourlyLog:true); + splunkLog = spl; // new spl1(Environment.MachineName,hourlyLog:true); stationLog = null; dataInterface = mDataInterface; Error = 0; diff --git a/eDosStation/eDosStation.csproj b/eDosStation/eDosStation.csproj index b51edbd..a2df902 100644 --- a/eDosStation/eDosStation.csproj +++ b/eDosStation/eDosStation.csproj @@ -91,8 +91,8 @@ app.manifest - - ..\packages\LSWLib2.4.1.2\lib\net48\LSWLib.dll + + ..\packages\LSWLib2.4.2.5\lib\net48\LSWLib.dll diff --git a/eDosStation/packages.config b/eDosStation/packages.config index 7d1acaa..e4f2724 100644 --- a/eDosStation/packages.config +++ b/eDosStation/packages.config @@ -2,7 +2,7 @@ - + diff --git a/sync.cmd b/sync.cmd index c9edc95..4f529bf 100644 --- a/sync.cmd +++ b/sync.cmd @@ -1,12 +1,12 @@ pause "eDosStation to Sqlsrv7 " -set src="D:\l\src\cs2024\eDosStation\eDosStation\bin\Release" +set src="D:\l\src\cs2025\eDosStation\eDosStation\bin\Release" set C="%cd:"=%\eDosStation\bin\release" if /I %src%==%C% (echo "Path OK ") else (echo "Path issue !") Pause was ok ? -set dst="\\sqlsrv7\c$\Soft\eDos2023" +set dst="\\sqlsrv7\c$\Soft\eDos2026" ::set zip="eDosStation.tar" ::tar -cf %zip% -C %src% --exclude *.zip *.* @@ -16,7 +16,7 @@ set zip="eDosStation.zip" xcopy %zip% %dst% /i /h /R /y -set src="D:\l\src\cs2024\eDosStation\eDosLocal" +set src="D:\l\src\cs2025\eDosStation\eDosLocal" xcopy "%src:"=%\UpdateLocal.sql" %dst% /i /h /R /y diff --git a/syncEdosLocal/packages.config b/syncEdosLocal/packages.config index 00ad018..6293bc9 100644 --- a/syncEdosLocal/packages.config +++ b/syncEdosLocal/packages.config @@ -1,5 +1,5 @@  - + \ No newline at end of file diff --git a/syncEdosLocal/syncEdosLocal.csproj b/syncEdosLocal/syncEdosLocal.csproj index f0837d7..67fe8dd 100644 --- a/syncEdosLocal/syncEdosLocal.csproj +++ b/syncEdosLocal/syncEdosLocal.csproj @@ -38,8 +38,8 @@ false - - ..\packages\LSWLib2.4.1.2\lib\net48\LSWLib.dll + + ..\packages\LSWLib2.4.2.5\lib\net48\LSWLib.dll