diff --git a/EPDReader/EPDReader.vcxproj b/EPDReader/EPDReader.vcxproj
index 29a65e9..9490c0a 100644
--- a/EPDReader/EPDReader.vcxproj
+++ b/EPDReader/EPDReader.vcxproj
@@ -29,7 +29,7 @@
StaticLibrary
true
- v143
+ v145
Unicode
diff --git a/EpdBase3/Epd3Base.cpp b/EpdBase3/Epd3Base.cpp
index 7810a88..4e015f6 100644
--- a/EpdBase3/Epd3Base.cpp
+++ b/EpdBase3/Epd3Base.cpp
@@ -227,15 +227,16 @@ int Epd3Base::Epd3U::DisconnectAndConnect()
return rv;
}
-void Epd3Base::Epd3U::Cancel()
+void Epd3Base::Epd3U::CancelAll()
{
SetEvent(current->hCancel);
+ //Cancel(epdComsHandle);
}
void Epd3Base::Epd3U::test()
{
const char* msg = "Processing step test...";
- progressCallback(0, msg); // Triggers the callback
+ progressCallback(StepTest); // Triggers the callback
}
DWORD Epd3Base::Epd3U::StartCom()
{
@@ -244,7 +245,7 @@ DWORD Epd3Base::Epd3U::StartCom()
OpenRetries = 0;
int step = 1;
int mx = 10;
-
+ EPDStep = StepStartCom;
epdComsHandle = nullptr;
if (port == 0) {
CommsInitialized = 1;
@@ -262,14 +263,14 @@ DWORD Epd3Base::Epd3U::StartCom()
}
SetCommitReturnValue(0);
if (epdComsHandle) {
-
SetEndReturnValue(0);
- progressCallback(1, "CreateInterface"); // Triggers the callback
+
}
else {
+ EPDStep = StepStartComFailed;
SetEndReturnValue(-1);
- progressCallback(1, "Fail Interface"); // Triggers the callback
+
}
if (epdComsHandle != nullptr) {
@@ -290,14 +291,16 @@ DWORD Epd3Base::Epd3U::StartCom()
CommsInitialized = 1;
Dll3RV = SetMultipleDiscoveryMode(epdComsHandle, false);
Dll3RV = SetResponseTimeout(epdComsHandle, ResponseTimeout);
+ EPDStep = StepStartComOK;
}
}
else {
Dll3RV = r_FunctionFail;
}
}
+ progressCallback(EPDStep); // Triggers the callback
if (Dll3RV) goto error;
- return Dll3RV;
+ return 0;
error:
ErrorStep = step;
Error = Dll3RV;
@@ -575,8 +578,8 @@ void Epd3Base::Epd3U::DecodeStatus()
OtherAlarmCarrier = checkStatus(epd3status.AlarmStatus, AlarmStatusFlags::TelemetryAlert);
OtherAlarmBatVolt = checkStatus(epd3status.AlarmStatus, AlarmStatusFlags::LowBattery);
- eDosDoseAlarm = (eDosDose10Alarm || eDosDose07Alarm) && checkStatus(epd3status.AlarmStatus, AlarmStatusFlags::DoseAlarm);
- eDosRateAlarm = (eDosRate07Alarm || eDosRate10Alarm) && checkStatus(epd3status.AlarmStatus, AlarmStatusFlags::RateAlarm);
+ eDosDoseAlarm = (eDosDose10Alarm || eDosDose07Alarm) & checkStatus(epd3status.AlarmStatus, AlarmStatusFlags::DoseAlarm);
+ eDosRateAlarm = (eDosRate07Alarm || eDosRate10Alarm) & checkStatus(epd3status.AlarmStatus, AlarmStatusFlags::RateAlarm);
hasAlarm = eDosDoseAlarm || eDosRateAlarm;
hasFault = ((uint32_t)epd3status.FaultStatus & ~(uint32_t)FaultStatusFlags::ErrorLogged) != 0;
@@ -637,10 +640,11 @@ int Epd3Base::Epd3U::ReadStatus(bool onlyStatus)
//int r[maxbatch];
int step = 0;
uint8_t length = 0;
+ EPDStep = StepReadStatus;
countsRead = 0; utc = 0; seconds = 0;
memset(WearerID, 0, WearerIDLength + 1);
memset(WearerName, 0, WearerNameLength + 1);
- rv = SetResponseTimeout(epdComsHandle, ResponseTimeout);
+ //rv = SetResponseTimeout(epdComsHandle, ResponseTimeout);
Error = 0;
if (port == 0) {
EpdID = 4567;
@@ -675,16 +679,17 @@ int Epd3Base::Epd3U::ReadStatus(bool onlyStatus)
step = 2;
SetFunctionReturnValue(eFunctions::ReadStatus,0);
token = BeginReadStatus(epdComsHandle, nullptr);
- rv2 = CommitAndSetRV();
+ rv = CommitAndSetRV();
- //batchstep = 0; //ReadStatus
- //r = Commit3(epdComsHandle); SetCommitReturnValue(r);
if (!rv)
rv = EndReadStatus(epdComsHandle, token, &epd3status);
rv2 = SetEndReturnValue(rv);
current->StatusDecoded = false;
- if (rv != 0)
- goto error;
+ if (rv != 0) {
+ EPDStep = StepFailedStatus ;
+ goto error;
+ }
+ progressCallback(EPDStep);
IssueCount = epd3status.IssueCount;
OperatingStatus = epd3status.OperatingStatus;
@@ -701,8 +706,7 @@ int Epd3Base::Epd3U::ReadStatus(bool onlyStatus)
VersionNumber_t VersionNumber;
step = 3;
- //batchstep = 1; //ReadEpdIdentities
-
+ EPDStep = StepReadIdentities;
EpdID32 = 0;
MarkNumber.Major = 0;
@@ -714,8 +718,11 @@ int Epd3Base::Epd3U::ReadStatus(bool onlyStatus)
rv = CommitAndSetRV();
if (!rv) rv = EndReadEpdIdentities(epdComsHandle, token, &EpdID32, (EpdTypes*)&EpdType, &capabilities, &MarkNumber, &VersionNumber, NULL, 0);
rv = SetEndReturnValue(rv);
- if (rv != 0) goto error;
-
+ if (rv != 0) {
+ EPDStep = StepReadIdentitiesFailed;
+ goto error;
+ }
+ progressCallback(EPDStep);
EpdID = EpdID32;
isBG = (EpdType == EpdTypes::Mk2BetaGamma) || (EpdType == EpdTypes::Mk3BetaGamma);
@@ -727,14 +734,17 @@ int Epd3Base::Epd3U::ReadStatus(bool onlyStatus)
step = 4;
-
+ EPDStep = StepReadCounts;
SetFunctionReturnValue(ReadCounts,0);
token = BeginReadCounts(epdComsHandle, nullptr, 0, nullptr);
rv = CommitAndSetRV();
if (!rv) rv = EndReadCounts(epdComsHandle, token, Counts, MaxCounts, &countsRead, &utc, &seconds);
rv2= SetEndReturnValue(rv);
- if (rv)
- goto error;
+ if (rv) {
+ EPDStep = StepReadCountsFailed;
+ goto error;
+ }
+
decodeCounters(countsRead); //HG,SG ..
//Times
@@ -743,14 +753,18 @@ int Epd3Base::Epd3U::ReadStatus(bool onlyStatus)
step = 6;
//batchstep = 3;
if (utc == 0) {
+ EPDStep = StepReadRTC;
SetFunctionReturnValue(ReadRTC,0);
token = BeginReadRTC(epdComsHandle, nullptr);
rv = CommitAndSetRV();
if (!rv)
rv = EndReadRTC(epdComsHandle, token, &utc); //EpdClock for MK2
rv2= SetEndReturnValue(rv);
- if (rv)
+ if (rv) {
+ EPDStep = StepReadRTCFailed;
goto error;
+ }
+
EpdClock = utc;
utc = TimeFunctions::NowToEpd3Time();
}
@@ -768,6 +782,7 @@ int Epd3Base::Epd3U::ReadStatus(bool onlyStatus)
mk3WearerID.Length = 0;
//Mk2 EPDs only support Name and Primary ID
+ EPDStep = StepReadWearerId;
//batchstep = 0;
SetFunctionReturnValue(ReadWearerId, 0);
token= BeginReadWearerId(epdComsHandle, static_cast(WearerIdType::WearerId_Name), nullptr);
@@ -775,7 +790,10 @@ int Epd3Base::Epd3U::ReadStatus(bool onlyStatus)
if (!rv) rv = EndReadWearerId(epdComsHandle, token, &mk3WearerID);
rv = SetEndReturnValue(rv);
- if (rv != 0) goto error;
+ if (rv != 0) {
+ EPDStep = StepReadWearerIdFailed;
+ goto error;
+ }
if (mk3WearerID.Length > WearerNameLength) mk3WearerID.Length = WearerNameLength;
memcpy(WearerName, mk3WearerID.Utf8String, mk3WearerID.Length); WearerName[mk3WearerID.Length] = 0;
@@ -787,7 +805,10 @@ int Epd3Base::Epd3U::ReadStatus(bool onlyStatus)
rv = CommitAndSetRV();
if (!rv) rv = EndReadWearerId(epdComsHandle, token, &mk3WearerID);
rv = SetEndReturnValue(rv);
- if (rv != 0) goto error;
+ if (rv != 0) {
+ EPDStep = StepReadWearerIdFailed;
+ goto error;
+ }
if (mk3WearerID.Length > WearerIDLength) mk3WearerID.Length = WearerIDLength;
@@ -850,6 +871,7 @@ int Epd3Base::Epd3U::ConnectAndStatus(int tokenSourceTimeout)
else rv = 0; //MK2
}
else rv = 1;
+ progressCallback(EPDStep);
return rv;
}
///
diff --git a/EpdBase3/Epd3Base.h b/EpdBase3/Epd3Base.h
index a738696..b6dbacd 100644
--- a/EpdBase3/Epd3Base.h
+++ b/EpdBase3/Epd3Base.h
@@ -41,6 +41,32 @@ namespace Epd3Base {
};
typedef void(*ProgressCallback)(int percentage, const char* message);
+ enum EpdSteps
+ {
+ StepTest,
+ StepStartCom,
+ StepStartComFailed,
+ StepStartComOK,
+ StepInitialized,
+ StepDiscovering,
+ StepDiscoverFailed,
+ StepDiscovered,
+ StepConnecting,
+ StepConnected,
+ StepConnectFailed,
+ StepReadStatus,
+ StepGotStatus,
+ StepFailedStatus,
+ StepReadIdentities,
+ StepReadIdentitiesFailed,
+ StepReadCounts,
+ StepReadCountsFailed,
+ StepReadRTC,
+ StepReadRTCFailed,
+ StepReadWearerId,
+ StepReadWearerIdFailed
+ };
+
class Epd3U
{
public:
@@ -87,7 +113,7 @@ namespace Epd3Base {
Epd3U(int _comport);
~Epd3U();
DWORD StartCom();
- void Cancel();
+ void CancelAll();
void EndCom(bool doDiscon);
int StartDiscover(int tokentimeout);
@@ -100,18 +126,7 @@ namespace Epd3Base {
DiscoverErrorOther=4,
DiscoverErrorConnecting=5
};
- enum EpdSteps
- {
- StepInitialized = 0,
- StepDiscovering = 1,
- StepDiscoverFailed = 2,
- StepDiscovered,
- StepConnecting = 3,
- StepConnected,
- StepConnectFailed,
- StepGotStatus,
- StepFailedStatus
- };
+
DiscoverErrorCodes DiscoverError;
EpdSteps EPDStep;
@@ -373,7 +388,7 @@ namespace Epd3Base {
public:
char DiagnosticsWrite[DiagnosticsWriteSize];
- typedef void (*ProgressCallback)(int percentage, const char* message);
+ typedef void (*ProgressCallback)(EpdSteps percentage);
ProgressCallback progressCallback;
void test();
};
diff --git a/EpdBaseClr/EpdBaseClr.cpp b/EpdBaseClr/EpdBaseClr.cpp
index ce3ccea..fee3ecc 100644
--- a/EpdBaseClr/EpdBaseClr.cpp
+++ b/EpdBaseClr/EpdBaseClr.cpp
@@ -7,7 +7,7 @@ typedef void (*ProgressCallback)(int percentage, const char* message);
void EpdBaseClr::Epd2::OnCancelRequested()
{
- if (epd3 != nullptr) epd3->Cancel();
+ if (epd3 != nullptr) epd3->CancelAll();
//if (epd != nullptr) epd->Cancel();
}
bool EpdBaseClr::Epd2::HasStepError()
@@ -33,10 +33,11 @@ int EpdBaseClr::Epd2::GetSteps()
return nsteps;
}
-void EpdBaseClr::Epd2::OnProgress(int percentage, String^ message)
+void EpdBaseClr::Epd2::OnProgress(Epd3Base::EpdSteps step)
{
// Handle the progress info here (e.g., print or log it)
- System::Console::WriteLine(percentage.ToString() + "%: " + message);
+ System::Console::WriteLine("Step: " + ((int)step).ToString() );
+ if (_EpdProgress) _EpdProgress(this,step);
}
EpdBaseClr::Epd2::Epd2(int port, bool OnlyMK2)
@@ -57,7 +58,7 @@ EpdBaseClr::Epd2::Epd2(int port, bool OnlyMK2)
Hp07Name = gcnew String(tHp07);
isTitleNG = false;
- progressDelegate = gcnew ProgressCallbackDelegate(&Epd2::OnProgress);
+ progressDelegate = gcnew ProgressCallbackDelegate(this,&Epd2::OnProgress);
IntPtr ip = System::Runtime::InteropServices::Marshal::GetFunctionPointerForDelegate(progressDelegate);
/* epd3->postgre
epd3->ProgressCallback = static_cast(ip.ToPointer());
@@ -1060,7 +1061,7 @@ void EpdBaseClr::Epd2::WaitEnd()
int tries = 5;
while (tries-->0 && waitTask->Status == System::Threading::Tasks::TaskStatus::Running) {
//tokenSource->Cancel();
- if (epd3) epd3->Cancel();
+ if (epd3) epd3->CancelAll();
waitTask->Wait(1000);
}
if (
@@ -1075,3 +1076,4 @@ void EpdBaseClr::Epd2::WaitEnd()
Close();
}
}
+
diff --git a/EpdBaseClr/EpdBaseClr.h b/EpdBaseClr/EpdBaseClr.h
index 7aab927..a0641b8 100644
--- a/EpdBaseClr/EpdBaseClr.h
+++ b/EpdBaseClr/EpdBaseClr.h
@@ -4,15 +4,17 @@
#pragma comment(lib,"dll2/Reader2.lib")
#undef EPDDLL_API
#pragma unmanaged
-#include "..\EpdBase3\Epd3Base.h"
+
+#include "../EpdBase3/Epd3Base.h"
#pragma comment(lib,"dll2/Reader32.lib")
#pragma managed
using namespace System;
using namespace System::Runtime::InteropServices;
namespace EpdBaseClr {
+
[UnmanagedFunctionPointer(CallingConvention::Cdecl)]
- delegate void ProgressCallbackDelegate(int percentage, String^ message);
+ public delegate void ProgressCallbackDelegate(Epd3Base::EpdSteps step);
const char* cEpdError = "Setreader Error";
ref class Epd2;
@@ -139,15 +141,17 @@ namespace EpdBaseClr {
const wchar_t* tHp10G = L"HP10G";
public:
- static void OnProgress(int, String^);
+ void OnProgress(Epd3Base::EpdSteps step);
ProgressCallbackDelegate^ progressDelegate;
delegate void dEpdRead(Epd2^ Sender, EpdEventArgs^ e);
delegate void dEpdTO(Epd2^ Sender, EpdTOEventArgs^ e);
delegate void dEpdError(Epd2^ Sender, EpdErrorEventArgs^ e);
+ delegate void dEpdProgress(Epd2^ Sender, int step);
dEpdRead^ _EpdRead;
dEpdTO^ _EpdTO;
dEpdError^ _EpdError;
+ dEpdProgress ^ _EpdProgress;
event dEpdRead^ EpdRead
@@ -186,6 +190,18 @@ namespace EpdBaseClr {
_EpdTO -= handler;
}
}
+ event dEpdProgress^ EpdProgress
+ {
+ void add(dEpdProgress^ handler)
+ {
+ _EpdProgress += handler;
+ }
+
+ void remove(dEpdProgress^ handler)
+ {
+ _EpdProgress -= handler;
+ }
+ }
//private:
//bool hasAlarm = false;
@@ -401,3 +417,37 @@ namespace EpdBaseClr {
//int PrepareForIssue();
};
}
+
+public ref class EpdHelpers
+{
+public:
+ static System::String^ EpdStepToString(Epd3Base::EpdSteps step)
+ {
+ switch (step)
+ {
+ case Epd3Base::StepTest: return L"Test";
+ case Epd3Base::StepStartCom: return L"StartCom";
+ case Epd3Base::StepStartComFailed: return L"StartCom Failed";
+ case Epd3Base::StepStartComOK: return L"StartCom OK";
+ case Epd3Base::StepInitialized: return L"Initialized";
+ case Epd3Base::StepDiscovering: return L"Discovering";
+ case Epd3Base::StepDiscoverFailed: return L"Discover Failed";
+ case Epd3Base::StepDiscovered: return L"Discovered";
+ case Epd3Base::StepConnecting: return L"Connecting";
+ case Epd3Base::StepConnected: return L"Connected";
+ case Epd3Base::StepConnectFailed: return L"Connect Failed";
+ case Epd3Base::StepReadStatus: return L"ReadStatus";
+ case Epd3Base::StepGotStatus: return L"Got Status";
+ case Epd3Base::StepFailedStatus: return L"Failed Status";
+ case Epd3Base::StepReadIdentities: return L"Read Identities";
+ case Epd3Base::StepReadIdentitiesFailed: return L"Read Identities Failed";
+ case Epd3Base::StepReadCounts: return L"Read Counts";
+ case Epd3Base::StepReadCountsFailed: return L"Read Counts Failed";
+ case Epd3Base::StepReadRTC: return L"Read RTC";
+ case Epd3Base::StepReadRTCFailed: return L"Read RTC Failed";
+ case Epd3Base::StepReadWearerId: return L"Read WearerId";
+ case Epd3Base::StepReadWearerIdFailed: return L"Read WearerId Failed";
+ default: return L"Unknown";
+ }
+ }
+};
\ No newline at end of file
diff --git a/TestDirect/TestDirect.vcxproj b/TestDirect/TestDirect.vcxproj
index ea95d41..521e109 100644
--- a/TestDirect/TestDirect.vcxproj
+++ b/TestDirect/TestDirect.vcxproj
@@ -29,7 +29,7 @@
Application
true
- v143
+ v145
Unicode
diff --git a/TestEdosBase/TestEdosBase.vcxproj b/TestEdosBase/TestEdosBase.vcxproj
index 37553f1..b5366ee 100644
--- a/TestEdosBase/TestEdosBase.vcxproj
+++ b/TestEdosBase/TestEdosBase.vcxproj
@@ -29,7 +29,7 @@
Application
true
- v143
+ v145
Unicode
diff --git a/TestEpdBaseClr/Program.cs b/TestEpdBaseClr/Program.cs
index 4915c80..925882e 100644
--- a/TestEpdBaseClr/Program.cs
+++ b/TestEpdBaseClr/Program.cs
@@ -15,7 +15,15 @@ namespace TestEpdBaseClr
epdDevice = new EpdBaseClr.Epd2(3, false);
//epdDevice.SetFeedbackSound(thisStation.useBeep, thisStation.useBeepMK3());
epdDevice.EpdRead += EpdDevice_EpdRead; epdDevice.EpdError += EpdDevice_EpdError; epdDevice.EpdTO += EpdDevice_EpdTO;
-
+ epdDevice.EpdProgress += EpdDevice_EpdProgress;
+
+
+ }
+
+ private static void EpdDevice_EpdProgress(EpdBaseClr.Epd2 Sender, int e)
+ {
+ //throw new NotImplementedException();
+ System.Diagnostics.Debug.WriteLine("Epd progress: " + e.ToString());
}
private static void EpdDevice_EpdTO(EpdBaseClr.Epd2 Sender, EpdBaseClr.EpdTOEventArgs e)
diff --git a/TestReader/TestReader.vcxproj b/TestReader/TestReader.vcxproj
index e694f1a..8822ed0 100644
--- a/TestReader/TestReader.vcxproj
+++ b/TestReader/TestReader.vcxproj
@@ -29,7 +29,7 @@
Application
true
- v143
+ v145
Unicode
diff --git a/eDosStation/Resources/BuildDate.txt b/eDosStation/Resources/BuildDate.txt
index 3bb0a37..d8604e4 100644
--- a/eDosStation/Resources/BuildDate.txt
+++ b/eDosStation/Resources/BuildDate.txt
@@ -1 +1 @@
-Thu 07/30/2026 17:58:59.17
+Sat 08/01/2026 17:11:30.39
diff --git a/eDosStation/eDosStation.csproj b/eDosStation/eDosStation.csproj
index 4f2b60d..fdb2d64 100644
--- a/eDosStation/eDosStation.csproj
+++ b/eDosStation/eDosStation.csproj
@@ -67,7 +67,7 @@
false
- true
+ false
@@ -420,7 +420,8 @@
- %25signer%25 $(TargetPath)
+
+
diff --git a/testdevcon/testdevcon.vcxproj b/testdevcon/testdevcon.vcxproj
index 9641e79..f8a411c 100644
--- a/testdevcon/testdevcon.vcxproj
+++ b/testdevcon/testdevcon.vcxproj
@@ -29,7 +29,7 @@
Application
true
- v143
+ v145
Unicode