From 7fde24bbdc2208dca6c2436f62ee1cb5eb9eb7b0 Mon Sep 17 00:00:00 2001
From: Janis Streib <me@janis-streib.de>
Date: Fri, 19 May 2023 17:25:10 +0200
Subject: [PATCH] ADD: digio support

---
 src/G4Trk.cpp    |    1 +
 src/G4Export.cpp |   10 ++++++++++
 src/G4Hub.h      |    3 +++
 src/G4Hub.cpp    |    8 ++++++++
 4 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/src/G4Export.cpp b/src/G4Export.cpp
index 515caae..40cf212 100644
--- a/src/G4Export.cpp
+++ b/src/G4Export.cpp
@@ -56,6 +56,16 @@
 			if(!use_text) {
 				p << osc::BeginBundleImmediate;
 			}
+			p << osc::BeginMessage( (string("/g4/hub/") + std::to_string(prs->hubList[i].GetId()) + string("/digio")).c_str());
+			std::ostringstream ss;
+			if(use_text) {
+				ss << prs->hubList[i].GetDigIOData();
+				auto res = ss.str();
+				p << res.c_str();
+			} else {
+				p << osc::int64(prs->hubList[i].GetDigIOData());
+			}
+			p << osc::EndMessage;
 			auto dat = prs->hubList[i].GetPnoData();
 			for(int j=0;j<G4_SENSORS_PER_HUB;j++) {
 				if(!prs->hubList[i].IsSenActive(j)){
diff --git a/src/G4Hub.cpp b/src/G4Hub.cpp
index 657eec0..8b8b5bd 100644
--- a/src/G4Hub.cpp
+++ b/src/G4Hub.cpp
@@ -35,6 +35,14 @@
 {
 	return m_id;
 }
+uint32_t CG4Hub::GetDigIOData()
+{
+	return digio;
+}
+void CG4Hub::SetDigIOData(uint32_t data)
+{
+	digio = data;
+}
 
 bool CG4Hub::IsSenActive(int i)
 {
diff --git a/src/G4Hub.h b/src/G4Hub.h
index aef97f6..207b6f9 100644
--- a/src/G4Hub.h
+++ b/src/G4Hub.h
@@ -20,6 +20,8 @@
 	int GetId();
 	void SetPnoData(float* pno,int sen);
 	float (*GetPnoData())[6];
+	void SetDigIOData(uint32_t pno);
+	uint32_t GetDigIOData();
 	bool IsSenActive(int i);
 	CG4Hub();
 	virtual ~CG4Hub();
@@ -30,6 +32,7 @@
 	float m_col[3][3];
 	int m_id;
 	float m_pno[G4_SENSORS_PER_HUB][6];
+	uint32_t digio;
 };
 
 #endif // !defined(AFX_G4HUB_H__41DD193E_B016_4FF7_93E6_CF8AEC652FF1__INCLUDED_)
diff --git a/src/G4Trk.cpp b/src/G4Trk.cpp
index 958b378..bdea402 100644
--- a/src/G4Trk.cpp
+++ b/src/G4Trk.cpp
@@ -125,6 +125,7 @@
     for (int a=0;a<m_numHubs;a++){
       if ((unsigned int)prs->hubList[a].GetId()==m_pframeData[i].hub){
 	prs->hubreadmap|=(0x01<<a);
+	prs->hubList[a].SetDigIOData(m_pframeData[i].dig_io);	// set digio
 	for (int j=0;j<G4_SENSORS_PER_HUB;j++){
 	  if (m_pframeData[i].stationMap&(0x01<<j))
 	    prs->hubList[a].SetPnoData(m_pframeData[i].sfd[j].pos,j);	// set it

--
Gitblit v1.9.1