Skip to content

Commit 334bece

Browse files
committed
updated pattern player - new parameters
1 parent dc3dffb commit 334bece

File tree

2 files changed

+19
-75
lines changed

2 files changed

+19
-75
lines changed

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: 1 addition & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,6 @@ 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())));
152-
}
153150

154151
roc::PatternPlayer::Info info = parseStringToPatternPlayerInfo(parameters);
155152

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

214211
roc::PatternPlayer::Info AlfServer::parseStringToPatternPlayerInfo(const std::vector<std::string> parameters)
215212
{
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;
213+
return roc::PatternPlayer::getInfoFromString(parameters);
276214
}
277215

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

0 commit comments

Comments
 (0)