Skip to content

Commit 0e7ccef

Browse files
authored
Merge pull request #63 from sy-c/master
updated patternplayer
2 parents 48c6532 + 643e059 commit 0e7ccef

File tree

3 files changed

+31
-87
lines changed

3 files changed

+31
-87
lines changed

CMakeLists.txt

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,6 @@ if(NOT APPLE)
7373
find_package(Python3 3.6 COMPONENTS Interpreter Development)
7474
if(Python3_FOUND)
7575
set(boost_python_component "python${Python3_VERSION_MAJOR}${Python3_VERSION_MINOR}")
76-
else()
77-
# Backwards compatible. Can be removed once the Python3 recipe is stable
78-
message(WARNING "Python 3 was not found: falling back to Python 2")
79-
find_package(Python2 2.7 COMPONENTS Development REQUIRED)
80-
set(boost_python_component "python27")
8176
endif()
8277
endif()
8378

@@ -99,7 +94,6 @@ target_sources(ALF PRIVATE
9994
src/AlfServer.cxx
10095
src/DimServices/DimServices.cxx
10196
src/DimServices/ServiceNames.cxx
102-
$<$<BOOL:${Python2_FOUND}>:src/PythonInterface.cxx>
10397
$<$<BOOL:${Python3_FOUND}>:src/PythonInterface.cxx>
10498
)
10599

@@ -116,8 +110,6 @@ set(LINK_LIBS
116110
AliceO2::ReadoutCard
117111
AliceO2::Common
118112
Boost::boost
119-
$<$<BOOL:${Python2_FOUND}>:Boost::python27>
120-
$<$<BOOL:${Python2_FOUND}>:Python2::Python>
121113
$<$<BOOL:${Python3_FOUND}>:Boost::python${Python3_VERSION_MAJOR}${Python3_VERSION_MINOR}>
122114
$<$<BOOL:${Python3_FOUND}>:Python3::Python>
123115
)

README.md

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -165,23 +165,29 @@ It extends the `SCA_SEQUENCE` to add the following functionality:
165165
##### PATTERN_PLAYER
166166

167167
* Parameters
168-
* Sync Pattern
169-
* Reset Pattern
170-
* Idle Pattern
171-
* Sync Length
172-
* Sync Delay
173-
* Reset Length
174-
* Reset Trigger Select
175-
* Sync Trigger Select
176-
* Sync At Start
177-
* Trigger Sync
178-
* Trigger Reset
168+
* pat0 Pattern
169+
* pat1 Pattern
170+
* pat2 Pattern
171+
* pat3 Pattern
172+
* pat1 Length
173+
* pat1 Delay
174+
* pat2 Length
175+
* pat3 Length
176+
* pat1 Trigger Select
177+
* pat2 Trigger Select
178+
* pat3 Trigger Select
179+
* pat2 TF[31:20] ORBIT[19:12] BC[11:0]
180+
* execute pat1 at start
181+
* execute pat1 now
182+
* execute pat2 now
183+
184+
see [registers definition](https://gitlab.cern.ch/alice-cru/cru-fw/-/tree/pplayer/TTC#address-table)
179185

180186
* Returns
181187
* empty
182188

183189
* Example:
184-
* DIM input `0x23456789abcdef123456\n0x5678\n0x9abc\n42\n0\n53\n30\n29\n#a comment\nfalse\ntrue\nfalse`
190+
* DIM input `0x123\n123\n1024\n0xFFFFFFFFFFFFFFFFFFFF\n10\n11\n20\n30\n0xFF\n0xEE\n0xDDDe\n0xAAABBCCC\n#comment\nfalse\ntrue\ntrue`
185191
* DIM output ` `
186192

187193
##### LLA_SESSION_START

src/AlfServer.cxx

Lines changed: 13 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -147,14 +147,19 @@ std::string AlfServer::icGbtI2cWrite(const std::string& parameter, AlfLink link)
147147
std::string AlfServer::patternPlayer(const std::string& parameter, std::shared_ptr<roc::BarInterface> bar2)
148148
{
149149
std::vector<std::string> parameters = Util::split(parameter, argumentSeparator());
150-
if (parameters.size() < 11) { // Test that we have enough parameters
151-
BOOST_THROW_EXCEPTION(AlfException() << ErrorInfo::Message("Wrong number of parameters for the Pattern Player RPC call: " + std::to_string(parameters.size())));
150+
try {
151+
roc::PatternPlayer::Info info = parseStringToPatternPlayerInfo(parameters);
152+
roc::PatternPlayer pp = roc::PatternPlayer(bar2);
153+
pp.play(info);
154+
}
155+
catch(boost::exception const& e) {
156+
auto info = boost::get_error_info<ErrorInfo::Message>(e);
157+
if (info) {
158+
BOOST_THROW_EXCEPTION(AlfException() << ErrorInfo::Message(info->data()));
159+
} else {
160+
throw;
161+
}
152162
}
153-
154-
roc::PatternPlayer::Info info = parseStringToPatternPlayerInfo(parameters);
155-
156-
roc::PatternPlayer pp = roc::PatternPlayer(bar2);
157-
pp.play(info);
158163
return "";
159164
}
160165

@@ -213,66 +218,7 @@ std::string AlfServer::resetCard(const std::string& /*parameter*/, AlfLink link)
213218

214219
roc::PatternPlayer::Info AlfServer::parseStringToPatternPlayerInfo(const std::vector<std::string> parameters)
215220
{
216-
roc::PatternPlayer::Info ppInfo;
217-
218-
int infoField = 0;
219-
for (const auto& parameter : parameters) {
220-
if (parameter.find('#') == std::string::npos) {
221-
infoField++;
222-
}
223-
}
224-
225-
if (infoField != 11) { // Test that we have enough non-comment parameters
226-
BOOST_THROW_EXCEPTION(AlfException() << ErrorInfo::Message("Wrong number of non-comment parameters for the Pattern Player RPC call: " + std::to_string(infoField)));
227-
}
228-
229-
infoField = 0;
230-
for (const auto& parameter : parameters) {
231-
if (parameter.find('#') == std::string::npos) {
232-
switch (infoField) {
233-
bool boolValue;
234-
case 0:
235-
ppInfo.syncPattern = uint128_t(parameter);
236-
break;
237-
case 1:
238-
ppInfo.resetPattern = uint128_t(parameter);
239-
break;
240-
case 2:
241-
ppInfo.idlePattern = uint128_t(parameter);
242-
break;
243-
case 3:
244-
ppInfo.syncLength = std::stoi(parameter);
245-
break;
246-
case 4:
247-
ppInfo.syncDelay = std::stoi(parameter);
248-
break;
249-
case 5:
250-
ppInfo.resetLength = std::stoi(parameter);
251-
break;
252-
case 6:
253-
ppInfo.resetTriggerSelect = std::stoi(parameter);
254-
break;
255-
case 7:
256-
ppInfo.syncTriggerSelect = std::stoi(parameter);
257-
break;
258-
case 8:
259-
std::istringstream(parameter) >> std::boolalpha >> boolValue;
260-
ppInfo.syncAtStart = boolValue;
261-
break;
262-
case 9:
263-
std::istringstream(parameter) >> std::boolalpha >> boolValue;
264-
ppInfo.triggerSync = boolValue;
265-
break;
266-
case 10:
267-
std::istringstream(parameter) >> std::boolalpha >> boolValue;
268-
ppInfo.triggerReset = boolValue;
269-
break;
270-
}
271-
infoField++;
272-
}
273-
}
274-
275-
return ppInfo;
221+
return roc::PatternPlayer::getInfoFromString(parameters);
276222
}
277223

278224
std::vector<uint32_t> AlfServer::stringToRegisterPair(const std::string stringPair)

0 commit comments

Comments
 (0)