|
@@ -74,101 +74,101 @@ namespace UsbTest
|
|
|
}
|
|
|
};
|
|
|
|
|
|
- class SimulateTrigger
|
|
|
- {
|
|
|
- public:
|
|
|
- static SimulateTrigger &getInstance()
|
|
|
- {
|
|
|
- static SimulateTrigger instance;
|
|
|
- return instance;
|
|
|
- }
|
|
|
-
|
|
|
- void startTrigger()
|
|
|
- {
|
|
|
- if (!triggering)
|
|
|
- {
|
|
|
- triggering = true;
|
|
|
- triggerStatus.resize(3);
|
|
|
- triggerStatus[0] = false;
|
|
|
- triggerStatus[1] = false;
|
|
|
- triggerStatus[2] = false;
|
|
|
- triggerThread = std::thread(&SimulateTrigger::triggerLoop, this);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- void stopTrigger()
|
|
|
- {
|
|
|
- if (triggering)
|
|
|
- {
|
|
|
- triggering = false;
|
|
|
- if (triggerThread.joinable())
|
|
|
- {
|
|
|
- triggerThread.join();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- bool isTriggering(int index)
|
|
|
- {
|
|
|
- bool status = triggerStatus[index];
|
|
|
- std::lock_guard<std::mutex> lock(triggerMutex);
|
|
|
- triggerStatus[index] = false;
|
|
|
- return status;
|
|
|
- }
|
|
|
-
|
|
|
- private:
|
|
|
- SimulateTrigger() : triggering(false) {}
|
|
|
- ~SimulateTrigger()
|
|
|
- {
|
|
|
- stopTrigger();
|
|
|
- }
|
|
|
-
|
|
|
- // Delete copy constructor and assignment operator to prevent copying
|
|
|
- SimulateTrigger(const SimulateTrigger &) = delete;
|
|
|
- SimulateTrigger &operator=(const SimulateTrigger &) = delete;
|
|
|
-
|
|
|
- void triggerLoop()
|
|
|
- {
|
|
|
- while (triggering)
|
|
|
- {
|
|
|
- std::this_thread::sleep_for(std::chrono::milliseconds(188));
|
|
|
- if (triggering)
|
|
|
- {
|
|
|
- // Simulate the trigger signal
|
|
|
- std::lock_guard<std::mutex> lock(triggerMutex);
|
|
|
- triggerStatus[0] = true;
|
|
|
- triggerStatus[1] = true;
|
|
|
- triggerStatus[2] = true;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- std::atomic<bool> triggering;
|
|
|
- std::thread triggerThread;
|
|
|
- std::mutex triggerMutex;
|
|
|
- std::vector<bool> triggerStatus;
|
|
|
- };
|
|
|
-
|
|
|
- class GlobalResolutionTimer : public HighResolutionTimer
|
|
|
- {
|
|
|
- public:
|
|
|
- static GlobalResolutionTimer &getInstance()
|
|
|
- {
|
|
|
- static GlobalResolutionTimer instance;
|
|
|
- return instance;
|
|
|
- }
|
|
|
-
|
|
|
- void start()
|
|
|
- {
|
|
|
- start_time = std::chrono::high_resolution_clock::now();
|
|
|
- }
|
|
|
-
|
|
|
- std::string pressStopWatchString()
|
|
|
- {
|
|
|
- end_time = std::chrono::high_resolution_clock::now();
|
|
|
- return "Elapsed Time: " + std::to_string(elapsed_milliseconds()) + " ms";
|
|
|
- }
|
|
|
- };
|
|
|
+ // class SimulateTrigger
|
|
|
+ // {
|
|
|
+ // public:
|
|
|
+ // static SimulateTrigger &getInstance()
|
|
|
+ // {
|
|
|
+ // static SimulateTrigger instance;
|
|
|
+ // return instance;
|
|
|
+ // }
|
|
|
+
|
|
|
+ // void startTrigger()
|
|
|
+ // {
|
|
|
+ // if (!triggering)
|
|
|
+ // {
|
|
|
+ // triggering = true;
|
|
|
+ // triggerStatus.resize(3);
|
|
|
+ // triggerStatus[0] = false;
|
|
|
+ // triggerStatus[1] = false;
|
|
|
+ // triggerStatus[2] = false;
|
|
|
+ // triggerThread = std::thread(&SimulateTrigger::triggerLoop, this);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+
|
|
|
+ // void stopTrigger()
|
|
|
+ // {
|
|
|
+ // if (triggering)
|
|
|
+ // {
|
|
|
+ // triggering = false;
|
|
|
+ // if (triggerThread.joinable())
|
|
|
+ // {
|
|
|
+ // triggerThread.join();
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+
|
|
|
+ // bool isTriggering(int index)
|
|
|
+ // {
|
|
|
+ // bool status = triggerStatus[index];
|
|
|
+ // std::lock_guard<std::mutex> lock(triggerMutex);
|
|
|
+ // triggerStatus[index] = false;
|
|
|
+ // return status;
|
|
|
+ // }
|
|
|
+
|
|
|
+ // private:
|
|
|
+ // SimulateTrigger() : triggering(false) {}
|
|
|
+ // ~SimulateTrigger()
|
|
|
+ // {
|
|
|
+ // stopTrigger();
|
|
|
+ // }
|
|
|
+
|
|
|
+ // // Delete copy constructor and assignment operator to prevent copying
|
|
|
+ // SimulateTrigger(const SimulateTrigger &) = delete;
|
|
|
+ // SimulateTrigger &operator=(const SimulateTrigger &) = delete;
|
|
|
+
|
|
|
+ // void triggerLoop()
|
|
|
+ // {
|
|
|
+ // while (triggering)
|
|
|
+ // {
|
|
|
+ // std::this_thread::sleep_for(std::chrono::milliseconds(188));
|
|
|
+ // if (triggering)
|
|
|
+ // {
|
|
|
+ // // Simulate the trigger signal
|
|
|
+ // std::lock_guard<std::mutex> lock(triggerMutex);
|
|
|
+ // triggerStatus[0] = true;
|
|
|
+ // triggerStatus[1] = true;
|
|
|
+ // triggerStatus[2] = true;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+
|
|
|
+ // std::atomic<bool> triggering;
|
|
|
+ // std::thread triggerThread;
|
|
|
+ // std::mutex triggerMutex;
|
|
|
+ // std::vector<bool> triggerStatus;
|
|
|
+ // };
|
|
|
+
|
|
|
+ // class GlobalResolutionTimer : public HighResolutionTimer
|
|
|
+ // {
|
|
|
+ // public:
|
|
|
+ // static GlobalResolutionTimer &getInstance()
|
|
|
+ // {
|
|
|
+ // static GlobalResolutionTimer instance;
|
|
|
+ // return instance;
|
|
|
+ // }
|
|
|
+
|
|
|
+ // void start()
|
|
|
+ // {
|
|
|
+ // start_time = std::chrono::high_resolution_clock::now();
|
|
|
+ // }
|
|
|
+
|
|
|
+ // std::string pressStopWatchString()
|
|
|
+ // {
|
|
|
+ // end_time = std::chrono::high_resolution_clock::now();
|
|
|
+ // return "Elapsed Time: " + std::to_string(elapsed_milliseconds()) + " ms";
|
|
|
+ // }
|
|
|
+ // };
|
|
|
|
|
|
class SimulateTrigger
|
|
|
{
|
|
@@ -227,7 +227,7 @@ namespace UsbTest
|
|
|
{
|
|
|
while (triggering)
|
|
|
{
|
|
|
- std::this_thread::sleep_for(std::chrono::milliseconds(188));
|
|
|
+ std::this_thread::sleep_for(std::chrono::milliseconds(1000));
|
|
|
if (triggering)
|
|
|
{
|
|
|
// Simulate the trigger signal
|