@@ -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 std ::cout << "DEMO: transport prepareCfamAccess addr 0x" << std ::hex << addr
150150 << " path " << getPhyPath (target ) << "\n" ;
@@ -159,14 +159,16 @@ std::optional<FdHandle*> prepareCfamAccess(TARGETING::ConstTargetPtr target,
159159 }
160160
161161 FdHandle & fd = * fdOpt ;
162+ std ::cout << "DEMO:transport prepareCfamAcccess fd " << fd .get () << " off "
163+ << off << std ::endl ;
162164 if (::lseek (fd .get (), off , SEEK_SET ) < 0 )
163165 {
164166 std ::cerr << "CFAM lseek failed addr=0x" << std ::hex << addr
165167 << " errno=" << errno << " (" << strerror (errno ) << ")\n" ;
166168 return std ::nullopt ;
167169 }
168170
169- return & fd ;
171+ return std :: move ( fd ) ;
170172}
171173
172174std ::optional < FdHandle > prepareScomAccess (TARGETING ::ConstTargetPtr target ,
@@ -230,14 +232,15 @@ int send_all(int fd, std::span<const std::byte> cmd)
230232int getCfam (TARGETING ::ConstTargetPtr target , std ::uint32_t addr ,
231233 std ::uint32_t & value )
232234{
233- auto fdPtrOpt = prepareCfamAccess (target , addr );
234- if (!fdPtrOpt )
235+ auto fdOpt = prepareCfamAccess (target , addr );
236+ if (!fdOpt )
235237 {
236238 return -1 ;
237239 }
238-
239- FdHandle * fd = * fdPtrOpt ;
240- 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 )
241244 {
242245 std ::cerr << "getCfam read failed addr=0x" << std ::hex << addr
243246 << " errno=" << errno << " (" << strerror (errno ) << ")\n" ;
@@ -253,15 +256,15 @@ int getCfam(TARGETING::ConstTargetPtr target, std::uint32_t addr,
253256int putCfam (TARGETING ::ConstTargetPtr target , std ::uint32_t addr ,
254257 std ::uint32_t value )
255258{
256- auto fdPtrOpt = prepareCfamAccess (target , addr );
257- if (!fdPtrOpt )
259+ auto fdOpt = prepareCfamAccess (target , addr );
260+ if (!fdOpt )
258261 {
259262 return -1 ;
260263 }
261264
262- FdHandle * fd = * fdPtrOpt ;
265+ FdHandle & fd = * fdOpt ;
263266 value = htobe32 (value );
264- if (::write (fd -> get (), & value , sizeof (value )) < 0 )
267+ if (::write (fd . get (), & value , sizeof (value )) < 0 )
265268 {
266269 std ::cerr << "putCfam write failed addr=0x" << std ::hex << addr << "\n" ;
267270 return -1 ;
0 commit comments