From 866a7d0ed0e02878368f5580abd1d0efe8505f2f Mon Sep 17 00:00:00 2001 From: RYAN RIVERA Date: Tue, 5 Aug 2025 19:28:44 -0500 Subject: [PATCH 1/3] Improvements after testing first tutorial; Example using built-in plotly graphing through FE Macro; better printout management using trace TTEST. --- .../FEOtsUDPTemplateInterfaceImpl.cc | 89 +++++++++++++++---- 1 file changed, 71 insertions(+), 18 deletions(-) diff --git a/otsdaq-components/FEInterfaces/FEOtsUDPTemplateInterfaceImpl.cc b/otsdaq-components/FEInterfaces/FEOtsUDPTemplateInterfaceImpl.cc index c9b88ca..293e91b 100644 --- a/otsdaq-components/FEInterfaces/FEOtsUDPTemplateInterfaceImpl.cc +++ b/otsdaq-components/FEInterfaces/FEOtsUDPTemplateInterfaceImpl.cc @@ -406,10 +406,17 @@ void ots::FEOtsUDPTemplateInterface::universalRead(char* address, char* returnVa { __FE_COUT__ << "address size " << universalAddressSize_ << __E__; - __FE_COUT__ << "Universal Read Address: 0x"; - for(unsigned int i = 0; i < universalAddressSize_; ++i) - printf("%2.2X", (unsigned char)address[universalAddressSize_ - 1 - i]); - std::cout << __E__; + if(TTEST(0)) + { + std::stringstream oss; + oss << "Universal Read Address: 0x"; + for(unsigned int i = 0; i < universalAddressSize_; ++i) + oss << std::uppercase << std::setfill('0') << std::setw(2) + << std::hex << (uint16_t)address[universalAddressSize_ - 1 - i]; + //sprintf(buff,"%2.2X", (unsigned char)address[universalAddressSize_ - 1 - i]); + oss << __E__; + __FE_COUT__ << oss.str(); + } std::string readBuffer, sendBuffer; OtsUDPFirmwareCore::readAdvanced(sendBuffer, address, 1 /*size*/); @@ -419,10 +426,17 @@ void ots::FEOtsUDPTemplateInterface::universalRead(char* address, char* returnVa __FE_COUT__ << "Result SIZE: " << readBuffer.size() << __E__; std::memcpy(returnValue, readBuffer.substr(2).c_str(), universalDataSize_); - __FE_COUT__ << "Universal Read Data: 0x"; - for(unsigned int i = 0; i < universalDataSize_; ++i) - printf("%2.2X", (unsigned char)returnValue[universalDataSize_ - 1 - i]); - std::cout << __E__; + if(TTEST(0)) + { + std::stringstream oss; + oss << "Universal Read Data: 0x"; + for(unsigned int i = 0; i < universalDataSize_; ++i) + oss << std::uppercase << std::setfill('0') << std::setw(2) + << std::hex << (uint16_t)returnValue[universalDataSize_ - 1 - i]; + // printf("%2.2X", (unsigned char)returnValue[universalDataSize_ - 1 - i]); + oss << __E__; + __FE_COUT__ << oss.str(); + } } // end universalRead() @@ -431,16 +445,32 @@ void ots::FEOtsUDPTemplateInterface::universalRead(char* address, char* returnVa /// NOTE: buffer for writeValue must be at least size universalDataSize_ void ots::FEOtsUDPTemplateInterface::universalWrite(char* address, char* writeValue) { - __FE_COUT__ << "address size " << universalAddressSize_ << __E__; - __FE_COUT__ << "data size " << universalDataSize_ << __E__; - __FE_COUT__ << "Universal Write Address: 0x"; - for(unsigned int i = 0; i < universalAddressSize_; ++i) - printf("%2.2X", (unsigned char)address[universalAddressSize_ - 1 - i]); - std::cout << __E__; - __FE_COUT__ << "Universal Write Data: 0x"; - for(unsigned int i = 0; i < universalDataSize_; ++i) - printf("%2.2X", (unsigned char)writeValue[universalDataSize_ - 1 - i]); - std::cout << __E__; + if(TTEST(0)) + { + __FE_COUT__ << "address size " << universalAddressSize_ << __E__; + __FE_COUT__ << "data size " << universalDataSize_ << __E__; + + { + std::stringstream oss; + oss << "Universal Write Address: 0x"; + for(unsigned int i = 0; i < universalAddressSize_; ++i) + oss << std::uppercase << std::setfill('0') << std::setw(2) + << std::hex << (uint16_t)address[universalAddressSize_ - 1 - i]; + // printf("%2.2X", (unsigned char)address[universalAddressSize_ - 1 - i]); + oss << __E__; + __FE_COUT__ << oss.str(); + } + { + std::stringstream oss; + oss << "Universal Write Data: 0x"; + for(unsigned int i = 0; i < universalDataSize_; ++i) + oss << std::uppercase << std::setfill('0') << std::setw(2) + << std::hex << (uint16_t)writeValue[universalDataSize_ - 1 - i]; + // printf("%2.2X", (unsigned char)writeValue[universalDataSize_ - 1 - i]); + oss << __E__; + __FE_COUT__ << oss.str(); + } + } std::string sendBuffer; OtsUDPFirmwareCore::writeAdvanced(sendBuffer, address, writeValue, 1 /*size*/); @@ -509,6 +539,29 @@ void FEOtsUDPTemplateInterface::varTest(__ARGS__) delete[] data; // free the memory } + __SET_ARG_OUT__(PLOTLY_PLOT, //use built-in auto plotting using plotly + R"({ + "data" : [{ + "x": [1, 2, 3], + "y": [4, 5, 6], + "mode": "lines+markers", + "type": "scatter", + "name": "Line 1" + }, + { + "x": [1, 2, 3], + "y": [8, 3, 4], + "mode": "lines+markers", + "type": "scatter", + "name": "Line 2" + }], + "layout" : { + "title" : { "text" : "Awesome plot"}, + "xaxis" : { "title" : {"text" : "time"}, "titlefont": { "size" : 10 }, "showticklabels" : true }, + "yaxis" : { "title" : {"text" : "amplitude"}, "titlefont": { "size" : 10 }, "zeroline" : true } + } + })"); + for(auto& argOut : argsOut) __FE_COUT__ << argOut.first << ": " << argOut.second << __E__; From 4e139cc79bd1788e3932d157ef3722d777781a06 Mon Sep 17 00:00:00 2001 From: RYAN RIVERA Date: Tue, 5 Aug 2025 19:46:11 -0500 Subject: [PATCH 2/3] Clangify --- .../FEOtsUDPTemplateInterfaceImpl.cc | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/otsdaq-components/FEInterfaces/FEOtsUDPTemplateInterfaceImpl.cc b/otsdaq-components/FEInterfaces/FEOtsUDPTemplateInterfaceImpl.cc index 293e91b..8a7c196 100644 --- a/otsdaq-components/FEInterfaces/FEOtsUDPTemplateInterfaceImpl.cc +++ b/otsdaq-components/FEInterfaces/FEOtsUDPTemplateInterfaceImpl.cc @@ -408,12 +408,12 @@ void ots::FEOtsUDPTemplateInterface::universalRead(char* address, char* returnVa if(TTEST(0)) { - std::stringstream oss; + std::stringstream oss; oss << "Universal Read Address: 0x"; for(unsigned int i = 0; i < universalAddressSize_; ++i) - oss << std::uppercase << std::setfill('0') << std::setw(2) - << std::hex << (uint16_t)address[universalAddressSize_ - 1 - i]; - //sprintf(buff,"%2.2X", (unsigned char)address[universalAddressSize_ - 1 - i]); + oss << std::uppercase << std::setfill('0') << std::setw(2) << std::hex + << (uint16_t)address[universalAddressSize_ - 1 - i]; + //sprintf(buff,"%2.2X", (unsigned char)address[universalAddressSize_ - 1 - i]); oss << __E__; __FE_COUT__ << oss.str(); } @@ -428,12 +428,12 @@ void ots::FEOtsUDPTemplateInterface::universalRead(char* address, char* returnVa if(TTEST(0)) { - std::stringstream oss; + std::stringstream oss; oss << "Universal Read Data: 0x"; for(unsigned int i = 0; i < universalDataSize_; ++i) - oss << std::uppercase << std::setfill('0') << std::setw(2) - << std::hex << (uint16_t)returnValue[universalDataSize_ - 1 - i]; - // printf("%2.2X", (unsigned char)returnValue[universalDataSize_ - 1 - i]); + oss << std::uppercase << std::setfill('0') << std::setw(2) << std::hex + << (uint16_t)returnValue[universalDataSize_ - 1 - i]; + // printf("%2.2X", (unsigned char)returnValue[universalDataSize_ - 1 - i]); oss << __E__; __FE_COUT__ << oss.str(); } @@ -449,24 +449,24 @@ void ots::FEOtsUDPTemplateInterface::universalWrite(char* address, char* writeVa { __FE_COUT__ << "address size " << universalAddressSize_ << __E__; __FE_COUT__ << "data size " << universalDataSize_ << __E__; - + { - std::stringstream oss; + std::stringstream oss; oss << "Universal Write Address: 0x"; for(unsigned int i = 0; i < universalAddressSize_; ++i) - oss << std::uppercase << std::setfill('0') << std::setw(2) - << std::hex << (uint16_t)address[universalAddressSize_ - 1 - i]; + oss << std::uppercase << std::setfill('0') << std::setw(2) << std::hex + << (uint16_t)address[universalAddressSize_ - 1 - i]; // printf("%2.2X", (unsigned char)address[universalAddressSize_ - 1 - i]); oss << __E__; __FE_COUT__ << oss.str(); } { - std::stringstream oss; + std::stringstream oss; oss << "Universal Write Data: 0x"; for(unsigned int i = 0; i < universalDataSize_; ++i) - oss << std::uppercase << std::setfill('0') << std::setw(2) - << std::hex << (uint16_t)writeValue[universalDataSize_ - 1 - i]; - // printf("%2.2X", (unsigned char)writeValue[universalDataSize_ - 1 - i]); + oss << std::uppercase << std::setfill('0') << std::setw(2) << std::hex + << (uint16_t)writeValue[universalDataSize_ - 1 - i]; + // printf("%2.2X", (unsigned char)writeValue[universalDataSize_ - 1 - i]); oss << __E__; __FE_COUT__ << oss.str(); } @@ -540,7 +540,7 @@ void FEOtsUDPTemplateInterface::varTest(__ARGS__) } __SET_ARG_OUT__(PLOTLY_PLOT, //use built-in auto plotting using plotly - R"({ + R"({ "data" : [{ "x": [1, 2, 3], "y": [4, 5, 6], From 1641bde722d2c5c913d28f8642022895161f935c Mon Sep 17 00:00:00 2001 From: eflumerf <61473357+eflumerf@users.noreply.github.com> Date: Wed, 6 Aug 2025 09:17:07 -0500 Subject: [PATCH 3/3] Create README.md --- README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..e1bfe4f --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +This repository contains several basic implementations for the otsdaq demonstration UDP protocol.