@@ -61,16 +61,16 @@ std::string AlfServer::registerWrite(const std::string& parameter, std::shared_p
6161std::string AlfServer::scaBlobWrite (const std::string& parameter, AlfLink link)
6262{
6363 std::vector<std::string> stringPairs = Util::split (parameter, argumentSeparator ());
64- std::vector<Sca::CommandData> commands = parseStringToScaCommands (stringPairs);
64+ std::vector<std::pair< Sca::Data, Sca::Operation>> scaPairs = parseStringToScaPairs (stringPairs);
6565 Sca sca = Sca (link);
66- return sca.writeSequence (commands );
66+ return sca.writeSequence (scaPairs );
6767}
6868
6969std::string AlfServer::swtBlobWrite (const std::string& parameter, AlfLink link)
7070{
7171
7272 std::vector<std::string> stringPairs = Util::split (parameter, argumentSeparator ());
73- std::vector<std::pair<Swt::SwtData , Swt::Operation>> swtPairs = parseStringToSwtPairs (stringPairs);
73+ std::vector<std::pair<Swt::Data , Swt::Operation>> swtPairs = parseStringToSwtPairs (stringPairs);
7474 Swt swt = Swt (link);
7575 return swt.writeSequence (swtPairs);
7676}
@@ -177,22 +177,39 @@ roc::PatternPlayer::Info AlfServer::parseStringToPatternPlayerInfo(const std::ve
177177 return ppInfo;
178178}
179179
180- Sca::CommandData AlfServer::stringToScaPair (std::string stringPair)
180+ std::pair< Sca::Data, Sca::Operation> AlfServer::stringToScaPair (const std::string stringPair)
181181{
182182 std::vector<std::string> scaPair = Util::split (stringPair, pairSeparator ());
183183 if (scaPair.size () != 2 ) {
184184 BOOST_THROW_EXCEPTION (
185185 AlfException () << ErrorInfo::Message (" SCA command-data pair not formatted correctly" ));
186186 }
187- Sca::CommandData commandData;
188- commandData.command = Util::stringToHex (scaPair[0 ]);
189- commandData.data = Util::stringToHex (scaPair[1 ]);
190- return commandData;
187+
188+ Sca::Data data;
189+ Sca::Operation operation;
190+
191+ if (scaPair[scaPair.size () - 1 ] == " wait" ) {
192+ operation = Sca::Operation::Wait;
193+ try {
194+ data = std::stoi (scaPair[0 ]);
195+ } catch (const std::exception& e) {
196+ BOOST_THROW_EXCEPTION (SwtException () << ErrorInfo::Message (" SCA Wait Time provided cannot be converted to int" ));
197+ }
198+ } else { // regular sca command
199+ operation = Sca::Operation::Command;
200+ Sca::CommandData commandData;
201+ commandData.command = Util::stringToHex (scaPair[0 ]);
202+ commandData.data = Util::stringToHex (scaPair[1 ]);
203+ data = commandData;
204+ }
205+
206+ return std::make_pair (data, operation);
191207}
192208
193209// / Converts a 76-bit hex number string
194- std::pair<Swt::SwtData , Swt::Operation> AlfServer::stringToSwtPair (const std::string stringPair)
210+ std::pair<Swt::Data , Swt::Operation> AlfServer::stringToSwtPair (const std::string stringPair)
195211{
212+ std::cout << " trigger" << std::endl;
196213 std::vector<std::string> swtPair = Util::split (stringPair, pairSeparator ());
197214 if (swtPair.size () < 1 || swtPair.size () > 2 ) {
198215 BOOST_THROW_EXCEPTION (
@@ -219,7 +236,7 @@ std::pair<Swt::SwtData, Swt::Operation> AlfServer::stringToSwtPair(const std::st
219236 BOOST_THROW_EXCEPTION (std::out_of_range (" Parameter for SWT operation unkown" ));
220237 }
221238
222- Swt::SwtData data;
239+ Swt::Data data;
223240
224241 if (operation == Swt::Operation::Write) {
225242 SwtWord word;
@@ -329,9 +346,9 @@ std::pair<Ic::IcData, Ic::Operation> AlfServer::stringToIcPair(const std::string
329346 return std::make_pair (icData, icOperation);
330347}
331348
332- std::vector<Sca::CommandData> AlfServer::parseStringToScaCommands (std::vector<std::string> stringPairs)
349+ std::vector<std::pair< Sca::Data, Sca::Operation>> AlfServer::parseStringToScaPairs (std::vector<std::string> stringPairs)
333350{
334- std::vector<Sca::CommandData > pairs;
351+ std::vector<std::pair< Sca::Data, Sca::Operation> > pairs;
335352 for (const auto & stringPair : stringPairs) {
336353 if (stringPair.find (' #' ) == std::string::npos) { // =isn't a comment
337354 pairs.push_back (stringToScaPair (stringPair));
@@ -340,10 +357,10 @@ std::vector<Sca::CommandData> AlfServer::parseStringToScaCommands(std::vector<st
340357 return pairs;
341358}
342359
343- std::vector<std::pair<Swt::SwtData , Swt::Operation>> AlfServer::parseStringToSwtPairs (std::vector<std::string> stringPairs)
360+ std::vector<std::pair<Swt::Data , Swt::Operation>> AlfServer::parseStringToSwtPairs (std::vector<std::string> stringPairs)
344361{
345362
346- std::vector<std::pair<Swt::SwtData , Swt::Operation>> pairs;
363+ std::vector<std::pair<Swt::Data , Swt::Operation>> pairs;
347364 for (const auto & stringPair : stringPairs) {
348365 if (stringPair.find (' #' ) == std::string::npos) {
349366 pairs.push_back (stringToSwtPair (stringPair));
0 commit comments