@@ -143,8 +143,8 @@ std::optional<FdHandle> fsiProbe(TARGETING::ConstTargetPtr target)
143143 return std ::nullopt ;
144144}
145145
146- std ::optional < FdHandle * > prepareCfamAccess (TARGETING ::ConstTargetPtr target ,
147- std ::uint32_t addr )
146+ std ::optional < FdHandle > prepareCfamAccess (TARGETING ::ConstTargetPtr target ,
147+ std ::uint32_t addr )
148148{
149149 const auto off = encodeFsiAddr (addr );
150150 auto fdOpt = fsiProbe (target );
@@ -156,14 +156,16 @@ std::optional<FdHandle*> prepareCfamAccess(TARGETING::ConstTargetPtr target,
156156 }
157157
158158 FdHandle & fd = * fdOpt ;
159+ std ::cout << "DEMO:transport prepareCfamAcccess fd " << fd .get () << " off "
160+ << off << std ::endl ;
159161 if (::lseek (fd .get (), off , SEEK_SET ) < 0 )
160162 {
161163 std ::cerr << "CFAM lseek failed addr=0x" << std ::hex << addr
162164 << " errno=" << errno << " (" << strerror (errno ) << ")\n" ;
163165 return std ::nullopt ;
164166 }
165167
166- return & fd ;
168+ return std :: move ( fd ) ;
167169}
168170
169171std ::optional < FdHandle > prepareScomAccess (TARGETING ::ConstTargetPtr target ,
@@ -228,15 +230,17 @@ int send_all(int fd, std::span<const std::byte> cmd)
228230int getCfam (TARGETING ::ConstTargetPtr target , std ::uint32_t addr ,
229231 std ::uint32_t & value )
230232{
233+ <<<<<<< HEAD
231234
232- auto fdPtrOpt = prepareCfamAccess (target , addr );
233- if (!fdPtrOpt )
235+ auto fdOpt = prepareCfamAccess (target , addr );
236+ if (!fdOpt )
234237 {
235238 return -1 ;
236239 }
237-
238- FdHandle * fd = * fdPtrOpt ;
239- if (::read (fd -> get (), & value , sizeof (value )) < 0 )
240+ FdHandle & fd = * fdOpt ;
241+ std ::cout << "DEMO transport: getCfam addr 0x" << std ::hex << addr << " fd "
242+ << fd .get () << std ::endl ;
243+ if (::read (fd .get (), & value , sizeof (value )) < 0 )
240244 {
241245 std ::cerr << "getCfam read failed addr=0x" << std ::hex << addr
242246 << " errno=" << errno << " (" << strerror (errno ) << ")\n" ;
@@ -252,15 +256,15 @@ int getCfam(TARGETING::ConstTargetPtr target, std::uint32_t addr,
252256int putCfam (TARGETING ::ConstTargetPtr target , std ::uint32_t addr ,
253257 std ::uint32_t value )
254258{
255- auto fdPtrOpt = prepareCfamAccess (target , addr );
256- if (!fdPtrOpt )
259+ auto fdOpt = prepareCfamAccess (target , addr );
260+ if (!fdOpt )
257261 {
258262 return -1 ;
259263 }
260264
261- FdHandle * fd = * fdPtrOpt ;
265+ FdHandle & fd = * fdOpt ;
262266 value = htobe32 (value );
263- if (::write (fd -> get (), & value , sizeof (value )) < 0 )
267+ if (::write (fd . get (), & value , sizeof (value )) < 0 )
264268 {
265269 std ::cerr << "putCfam write failed addr=0x" << std ::hex << addr << "\n" ;
266270 return -1 ;
0 commit comments