@@ -83,7 +83,7 @@ std::string AlfServer::scaBlobWrite(const std::string& parameter, AlfLink link)
8383{
8484 std::vector<std::string> stringPairs = Util::split (parameter, argumentSeparator ());
8585 std::vector<std::pair<Sca::Operation, Sca::Data>> scaPairs = parseStringToScaPairs (stringPairs);
86- Sca sca = Sca (link);
86+ Sca sca = Sca (link, mSessions [link. serialId ] );
8787
8888 bool lock = false ;
8989 // Check if the operation should be locked
@@ -99,7 +99,7 @@ std::string AlfServer::swtBlobWrite(const std::string& parameter, AlfLink link)
9999
100100 std::vector<std::string> stringPairs = Util::split (parameter, argumentSeparator ());
101101 std::vector<std::pair<Swt::Operation, Swt::Data>> swtPairs = parseStringToSwtPairs (stringPairs);
102- Swt swt = Swt (link);
102+ Swt swt = Swt (link, mSessions [link. serialId ] );
103103
104104 bool lock = false ;
105105 // Check if the operation should be locked
@@ -115,7 +115,7 @@ std::string AlfServer::icBlobWrite(const std::string& parameter, AlfLink link)
115115
116116 std::vector<std::string> stringPairs = Util::split (parameter, argumentSeparator ());
117117 std::vector<std::pair<Ic::Operation, Ic::Data>> icPairs = parseStringToIcPairs (stringPairs);
118- Ic ic = Ic (link);
118+ Ic ic = Ic (link, mSessions [link. serialId ] );
119119
120120 bool lock = false ;
121121 // Check if the operation should be locked
@@ -136,7 +136,7 @@ std::string AlfServer::icGbtI2cWrite(const std::string& parameter, AlfLink link)
136136
137137 uint32_t value = Util::stringToHex (params[0 ]);
138138
139- Ic ic = Ic (link);
139+ Ic ic = Ic (link, mSessions [link. serialId ] );
140140 ic.writeGbtI2c (value);
141141 return " " ;
142142}
@@ -163,10 +163,7 @@ std::string AlfServer::llaSessionStart(const std::string& parameter, roc::Serial
163163 }
164164
165165 if (mSessions .find (serialId) == mSessions .end ()) {
166- lla::SessionParameters params = lla::SessionParameters::makeParameters ()
167- .setSessionName (parameters[0 ])
168- .setCardId (serialId);
169- mSessions [serialId] = std::make_unique<lla::Session>(params);
166+ BOOST_THROW_EXCEPTION (AlfException () << ErrorInfo::Message (" Session not initialized for serial " + serialId.toString ()));
170167 } /* else {
171168 // TODO: Update session name?
172169 }*/
@@ -572,19 +569,24 @@ void AlfServer::makeRpcServers(std::vector<AlfLink> links)
572569 [link, this ](auto parameter) { return llaSessionStop (parameter, link.serialId ); }));
573570 }
574571
572+ lla::SessionParameters params = lla::SessionParameters::makeParameters ()
573+ .setSessionName (" ALF" )
574+ .setCardId (link.serialId );
575+ mSessions [link.serialId ] = std::make_shared<lla::Session>(params);
576+
575577 // SCA Sequence
576578 servers.push_back (makeServer (names.scaSequence (),
577- [link](auto parameter) { return scaBlobWrite (parameter, link); }));
579+ [link, this ](auto parameter) { return scaBlobWrite (parameter, link); }));
578580 // SWT Sequence
579581 servers.push_back (makeServer (names.swtSequence (),
580- [link](auto parameter) { return swtBlobWrite (parameter, link); }));
582+ [link, this ](auto parameter) { return swtBlobWrite (parameter, link); }));
581583 // IC Sequence
582584 servers.push_back (makeServer (names.icSequence (),
583- [link](auto parameter) { return icBlobWrite (parameter, link); }));
585+ [link, this ](auto parameter) { return icBlobWrite (parameter, link); }));
584586
585587 // IC GBT I2C write
586588 servers.push_back (makeServer (names.icGbtI2cWrite (),
587- [link](auto parameter) { return icGbtI2cWrite (parameter, link); }));
589+ [link, this ](auto parameter) { return icGbtI2cWrite (parameter, link); }));
588590
589591 } else if (link.cardType == roc::CardType::Crorc) {
590592 // Register Sequence
0 commit comments