Developer Application Interface (ARC API) v4.5.8
ARC, Inc. GenIV Application Interface
CArcDevice.h
1// +------------------------------------------------------------------------------------------------------------------+
2// | FILE: CArcDevice.h ( GenIV ) |
3// +------------------------------------------------------------------------------------------------------------------+
4// | PURPOSE: This file defines the standard ARC device class. This is the class all user applications should use. |
5// | |
6// | AUTHOR: Scott Streit DATE: July 16, 2013 |
7// | |
8// | Copyright 2013 Astronomical Research Cameras, Inc. All rights reserved. |
9// +------------------------------------------------------------------------------------------------------------------+
12#pragma once
13
14#ifdef _WINDOWS
15 #pragma warning( disable: 4251 )
16#endif
17
18#include <version>
19#include <initializer_list>
20#include <unordered_map>
21#include <stop_token>
22#include <functional>
23#include <filesystem>
24#include <concepts>
25#include <cstdint>
26#include <utility>
27#include <future>
28#include <vector>
29#include <memory>
30#include <string>
31#include <chrono>
32#include <mutex>
33#include <array>
34#include <any>
35
36#if __cpp_lib_optional
37 #include <optional>
38#endif
39
40#include <CArcDeviceDllMain.h>
41#include <CArcStringList.h>
42#include <CArcAlertPacket.h>
43#include <CArcCommandPacket.h>
44#include <CArcPacketFactory.h>
45#include <CArcPacket.h>
46#include <CArcStatusPacket.h>
47#include <CArcDLoadPacket.h>
48#include <CArcImageAssembler.h>
49#include <CArcImagePacket.h>
50#include <CArcPCIeBase.h>
51#include <CArcSystem.h>
52#include <CArcLog.h>
53#include <ArcDeviceIOControl.h>
54#include <CArcDebugStreamBuffer.h>
55#include <ArcFlashMemoryDefs.h>
56#include <ArcSysState.h>
57#include <ArcConcepts.h>
58#include <CArcBoardMap.h>
59
60
61//#define SHOW_TIMES
62//#define ARC_DEBUG_READOUT
63
64
65namespace arc
66{
67 namespace gen4
68 {
69
70 // +----------------------------------------------------------------------------------------------------------+
71 // | Image Buffer Type |
72 // +----------------------------------------------------------------------------------------------------------+
73
77 struct GEN4_CARCDEVICE_API imageBuffer_t final
78 {
81 imageBuffer_t( const std::uint64_t u64Size );
82
83 std::unique_ptr<std::uint8_t> pVirtualAddress;
84 std::uint64_t uiSize;
89 const std::string toString( void ) const;
90 };
91
92
95 using pImageBuffer_t = std::shared_ptr<arc::gen4::imageBuffer_t>;
96
97
98 // +----------------------------------------------------------------------------------------------------------+
99 // | Common Buffer Type |
100 // +----------------------------------------------------------------------------------------------------------+
101
105 struct GEN4_CARCDEVICE_API commonBuffer_t final
106 {
107 std::uint8_t* pVirtualAddress;
108 std::uint64_t u64PhysicalAddress;
109 std::uint64_t uiSize;
114 const std::string toString( void ) const;
115 };
116
119 constexpr auto iCommonBufferListCount = 2;
120
123 using commonBufferList_t = std::array<std::unique_ptr<arc::gen4::commonBuffer_t>, iCommonBufferListCount>;
124
127 using pCommonBufferList_t = std::unique_ptr<commonBufferList_t>;
128
129
130 // +----------------------------------------------------------------------------------------------------------+
131 // | Expose, readout and alert handler definitions |
132 // +----------------------------------------------------------------------------------------------------------+
133
136 using pStatusPacket_t = std::unique_ptr<arc::gen4::CArcStatusPacket>;
137
141 using exposeListener_t = std::function<void( float )>;
142
143
148 using readListener_t = std::function<void( std::uint32_t, float )>;
149
150
152 // * @param firstParam - Log message
153 // */
154 //using commandLogHandler_t = std::function<void( const std::string& )>;
155
156
160 using alertHandler_t = std::function<void( const std::string& )>;
161
162
165 #if __cpp_lib_optional
166 using optionalAlertFunction_t = std::optional<const std::function<void( const std::string& )>*>;
167 #endif
168
169
174 using fileProgressListener_t = std::function<void( const std::uint32_t, const std::uint32_t )>;
175
176
194 {
195 RealTime,
196 High,
198 Normal,
199 Other
200 };
201
202
203
204 // +-------------------------------------------------------------------------------------------------------+
205 // | CArcDevice Class |
206 // +-------------------------------------------------------------------------------------------------------+
207
214 class GEN4_CARCDEVICE_API CArcDevice : public CArcPCIeBase
215 {
216 public:
217
219 CArcDevice( void );
220
222 CArcDevice( const CArcDevice& ) = delete;
223
225 CArcDevice& operator=( const CArcDevice& ) = delete;
226
228 CArcDevice( CArcDevice&& ) = delete;
229
232
234 #ifdef ARC_DEBUG_READOUT
235 virtual ~CArcDevice( void );
236 #else
237 virtual ~CArcDevice( void ) = default;
238 #endif
239
243 const std::string toString( void ) const noexcept;
244
248 static const std::string version( void ) noexcept;
249
255 static const std::vector<arcDev_t>& findDevices( void );
256
265 void open( const std::uint32_t uiDeviceNumber = 0, const bool bMapBuffer = true );
266
270 bool isOpen( void ) const noexcept;
271
274 void close( void ) noexcept;
275
279 void mapCommonBuffer( void );
280
284 void unMapCommonBuffer( void );
285
292
305 void setup( const std::filesystem::path& tCtlrFile, const std::uint32_t uiHdwTestCnt = 1234, bool* pStop = nullptr );
306
312 void loadFile( const std::filesystem::path& tCtlrFile, bool* pStop = nullptr );
313
318 void bootFlash( void );
319
327
335
344 void registerAlertHandler( alertHandler_t fnAlertHandler, std::chrono::milliseconds freqMS = std::chrono::milliseconds( 1000 ) );
345
346 #if __cpp_lib_optional
351 arc::gen4::optionalAlertFunction_t getAlertHandler( void ) const;
352 #endif
353
358 std::unique_ptr<arc::gen4::CArcBoardMap> getBoardMap( void );
359
368 void setImageDimensions( const std::uint32_t uiCols, const std::uint32_t uiRows );
369
378 void setImageDimensions( const std::uint32_t uiCols, const std::uint32_t uiRows, const std::uint32_t uwChannelCount );
379
385 void verifyColumnChannelCount( const std::uint32_t uiCols, const std::uint32_t uwChannelCount );
386
394
401 {
402 std::array tArgsArray { args ... };
403
404 auto pCommandPacket = CArcPacketFactory::getInstance().cmdPacket();
405
406 for ( std::size_t i = 0; i < ( sizeof...( args ) ); i++ )
407 {
408 pCommandPacket->add( static_cast< std::uint32_t >( tArgsArray[ i ] ) );
409 }
410
411 return command( pCommandPacket.get() );
412 }
413
421 template <uint32Type... Args>
423 {
424 std::array<std::uint32_t, sizeof...( Args )> tArgsArray { std::forward<const Args>( args )... };
425
426 auto pCommandPacket = CArcPacketFactory::getInstance().cmdPacket();
427
428 pCommandPacket->add( static_cast< std::uint32_t >( tCmd ) );
429
430 for ( std::size_t i = 0; i < tArgsArray.size(); i++ )
431 {
432 pCommandPacket->add( static_cast< std::uint32_t >( tArgsArray[ i ] ) );
433 }
434
435 return command( pCommandPacket.get() );
436 }
437
444 arc::gen4::pStatusPacket_t command( const std::vector<std::uint32_t>& vCmdList );
445
453 void command( const std::vector<std::uint32_t>& vCmdList, std::uint32_t uiExpectedReply );
454
462 arc::gen4::pStatusPacket_t command( const std::vector<std::any>& vCmdList );
463
472 void command( const std::vector<std::any>& vCmdList, const std::uint32_t uiExpectedReply );
473
483
487 void commandAbort( void ) const;
488
500 arc::gen4::pImageBuffer_t expose( const std::uint32_t uiExpTime, const exposeListener_t fnExposeListener = nullptr, const readListener_t fnReadListener = nullptr, pSysState_t pSysState = nullptr );
501
504 void stopExpose( void ) noexcept;
505
512 const std::vector<arc::gen4::pImageBuffer_t>& getImageBufferList( void ) const;
513
518 arc::gen4::pImageBuffer_t getImageBuffer( const std::uint16_t uwIndex = 0 ) const noexcept;
519
523 std::size_t getImageBufferCount( void ) const noexcept;
524
533 std::uint64_t setImageBufferSize( const std::uint32_t uiColumns, const std::uint32_t uiRows ) noexcept;
534
542 std::uint64_t setImageBufferSize( const std::uint64_t uiSize ) noexcept;
543
547 std::uint64_t getImageBufferSize( void ) const noexcept;
548
554 bool setImageBufferFill( const std::uint32_t uiValue = arc::gen4::CArcDevice::NO_FILL_VALUE ) const noexcept;
555
559 arc::gen4::pImageAssembler_t getImageAssembler( void ) const noexcept;
560
562 // * The registered logger will receive command and status packet output if command logging is enabled.
563 // */
564 //void registerCommandLogger( commandLogHandler_t fnCommandLogHandler = nullptr ) noexcept;
565
570 void enableCommandLogging( const bool bEnable = true );
571
576 arc::gen4::pLogger_t getCommandLog( void ) const noexcept;
577
587 void flashMemoryReadFirmwareBlock( const std::filesystem::path& tOutFile, bool* pStop = nullptr, const fileProgressListener_t& fnProgressListener = nullptr );
588
596 void flashMemoryWriteFirmwareBlock( const std::filesystem::path& tInFile, bool* pStop = nullptr, const fileProgressListener_t& fnProgressListener = nullptr );
597
604 const std::string flashMemoryReadIdBlock( const std::uint32_t uiBoardNumber );
605
612 const std::string flashMemoryReadUserBlock( const std::uint32_t uiBoardNumber );
613
620 void flashMemoryWriteUserBlock( const std::uint32_t uiBoardNumber, const std::string& sText );
621
628 void flashMemoryErase( const std::uint32_t uiBoardNumber, const arc::gen4::flashMemoryId_e eBlockId );
629
637 std::uint32_t readBAR( const std::uint32_t uiBAR, const std::uint32_t uiAddress ) const;
638
646 void writeBAR( const std::uint32_t uiBAR, const std::uint32_t uiAddress, const std::uint32_t uiValue ) const;
647
653 const std::string dumpBARs( void ) const;
654
662 void setProcessPriority( [[maybe_unused]] const arc::gen4::processPriority_e ePriority = arc::gen4::processPriority_e::Normal );
663
670 arc::gen4::processPriority_e getProcessPriority( void );
671
676 std::function<float( void )> fnReadElapsedTime;
677
682 std::function<std::uint32_t( void )> fnGetPixelCount;
683
687 std::function<void(void)> fnResetPixelCounter;
688
690 std::function<void(void)> fnVerifyDeviceIsOpen;
691
693 static constexpr auto NOPARAM = static_cast< std::uint32_t >( 0xFFFFFFFF );
694
696 static constexpr auto ARC420_BOARD_NUMBER = static_cast< std::uint32_t >( 0x8 );
697
699 static constexpr auto ARC480_BOARD_NUMBER = static_cast< std::uint32_t >( 0x3F );
700
702 static constexpr auto NO_FILL_VALUE = static_cast< std::uint32_t >( 65536 );
703
705 static constexpr auto ARC420_SYNTHETIC_DIMENSION = static_cast< std::uint32_t >( 2048 );
706
708 static constexpr auto ARC420_SYNTHETIC_CHANNEL_COUNT = static_cast< std::uint32_t >( 16 );
709
711 static constexpr auto ARC440_INVALID_CHANNEL_ADDRESS = static_cast< std::uint32_t >( 0x99 );
712
713 protected:
714
723 std::unique_ptr<std::uint8_t[]> readFileBytes( const std::filesystem::path& tFilePath, std::uint32_t& uiFileLength );
724
732 arc::gen4::pStatusPacket_t download( arc::gen4::CArcDLoadPacket* pDLoad );
733
737 void clearCommandAbort( void ) const;
738
743 bool commandAborted( void ) const;
744
749 arc::gen4::pStatusPacket_t readStatus( void ) const;
750
757 void readOut( std::uint32_t& uiBufferIndex, const std::uint32_t uiReadCount, const readListener_t fnReadListener );
758
763 void readAlerts( const std::chrono::milliseconds freqMS ) const;
764
771 void flashMemoryWriteIdBlock( std::uint32_t uiBoardNumber, const std::string& sText );
772
784 std::unique_ptr<std::uint8_t[]> flashMemoryReadFirmwareBlock( std::uint32_t& uiDataLength, bool* pStop, std::function<void( std::uint32_t, std::uint32_t )> fProgressListener );
785
791 std::function<std::uint32_t( const std::size_t )> fnCommonBufferByteCount;
792
798 std::function<bool( const std::size_t )> fnCommonBufferDirty;
799
805 std::function<bool( const std::size_t )> fnCommonBufferOverflow;
806
812 std::function<bool( const std::size_t )> fnCommonBufferComplete;
813
819 std::function<void( std::size_t, std::uint32_t )> fnClearCommonBufferStatus;
820
824 std::function<void( void )> fnClearPacketBuffers;
825
834 std::function<std::tuple<bool,std::uint32_t>(void)> fnImageAddressError;
835
841 virtual bool readConfigSpace8( std::uint64_t uiAddress, std::uint64_t* pRegValue ) const noexcept override;
842
848 virtual bool readConfigSpace16( std::uint64_t uiAddress, std::uint64_t* pRegValue ) const noexcept override;
849
855 virtual bool readConfigSpace32( std::uint64_t uiAddress, std::uint64_t* pRegValue ) const noexcept override;
856
862 virtual bool readConfigSpace64( std::uint64_t uiAddress, std::uint64_t* pRegValue ) const noexcept override;
863
869 virtual bool writeConfigSpace8( const std::uint32_t uiAddress, const std::uint32_t uiValue ) const noexcept override;
870
876 virtual bool writeConfigSpace16( const std::uint32_t uiAddress, const std::uint32_t uiValue ) const noexcept override;
877
883 virtual bool writeConfigSpace32( const std::uint32_t uiAddress, const std::uint32_t uiValue ) const noexcept override;
884
886 static std::unique_ptr<const std::array<std::uint32_t,2>> m_pCommonBufferStatusRegisters;
887
889 static std::unique_ptr<const std::array<std::uint32_t, 2>> m_pCommonBufferStatusByteCountRegisters;
890
892 static const std::string m_sVersion;
893
895 static const std::string m_sToString;
896
898 std::unique_ptr<arc::gen4::commonBuffer_t> m_pCommonBuffer;
899
901 std::unique_ptr<arc::gen4::commonBufferList_t> m_pCommonBufferList;
902
904 std::unique_ptr<std::vector<arc::gen4::pImageBuffer_t>> m_pBufferList;
905
907 std::uint64_t m_uiBufferSize;
908
910 std::unique_ptr<std::queue<arc::gen4::CArcImagePacket*>> m_pImagePacketQueue;
911
913 arc::gen4::arcDevHandle_t m_tDevice;
914
916 static std::unique_ptr<std::vector<arcDev_t>> m_pvDevList;
917
919 std::shared_ptr<arc::gen4::CArcLog> m_pCommandLogger;
920
922 //commandLogHandler_t m_fnCommandLogHandler;
923
925 alertHandler_t m_fnAlertHandler;
926
928 std::thread* m_pAlertThread;
929
931 std::shared_ptr<CArcImageAssembler> m_pImgAssembler;
932
934 mutable std::uint32_t m_uiFillValue;
935
937 mutable std::mutex m_oCmdMutex;
938
940 mutable std::mutex m_oCmdAbortMutex;
941
943 mutable std::atomic_bool m_abCmdAbort;
944
946 std::atomic_bool m_abStopAlertCapture;
947
949 std::unique_ptr<std::stop_source> m_pExposeStopSource;
950
952 bool m_bFlashMemoryBlockAccess;
953
955 static constexpr auto ELAPSED_TIMEOUT_COUNT = static_cast< std::uint32_t >( 20 );
956
958 static constexpr auto READ_TIMEOUT_COUNT = static_cast< std::uint32_t >( 100 );
959
960 #ifdef SHOW_TIMES
961 std::chrono::high_resolution_clock::time_point m_cTimeArr[ 4 ];
962 #endif
963
964 private:
965
973 auto BARtoStream( std::ostream& oss, const std::string& sRegName, const std::uint32_t uiAddress, const std::size_t uiDotLength = 40 ) const-> std::uint32_t;
974
979 std::function<bool(void)> fnAlertReceived;
980
982 static constexpr auto DEFAULT_IMAGE_COLUMN_DIMENSION = static_cast< std::uint32_t >( 4400 );
983
985 static constexpr auto DEFAULT_IMAGE_ROW_DIMENSION = static_cast< std::uint32_t >( 4400 );
986
988 static constexpr auto BFM = static_cast< std::uint32_t >( 0x0042464D );
989
991 static constexpr auto MAX_BAR = static_cast< std::uint32_t >( 5 );
992
994 static constexpr auto FLASH_MEMORY_FIRMWARE_STARTADDR = static_cast< std::uint32_t >( 0 );
995
997 static constexpr auto FLASH_MEMORY_FIRMWARE_BLOCKSIZE = static_cast< std::uint32_t >( 0x2FFFF );
998
1000 static constexpr auto FLASH_MEMORY_NETWORK_MAC_ADDR = static_cast< std::uint32_t >( 0x30000 );
1001
1003 static constexpr auto FLASH_MEMORY_NETWORK_STARTADDR = static_cast< std::uint32_t >( 0x31000 );
1004
1006 static constexpr auto FLASH_MEMORY_NETWORK_MAC_SIZE = static_cast< std::int32_t >( 6 );
1007
1009 static constexpr auto FLASH_MEMORY_NETWORK_IP_SIZE = static_cast< std::int32_t >( 4 );
1010
1012 static constexpr auto FLASH_MEMORY_NETWORK_PORT_SIZE = static_cast< std::int32_t >( 2 );
1013
1015 static constexpr auto FLASH_MEMORY_NETWORK_DATA_SIZE = static_cast< std::int32_t >(
1016 FLASH_MEMORY_NETWORK_IP_SIZE +
1017 FLASH_MEMORY_NETWORK_PORT_SIZE +
1018 FLASH_MEMORY_NETWORK_IP_SIZE +
1019 FLASH_MEMORY_NETWORK_IP_SIZE +
1020 FLASH_MEMORY_NETWORK_IP_SIZE +
1021 FLASH_MEMORY_NETWORK_IP_SIZE +
1022 FLASH_MEMORY_NETWORK_IP_SIZE +
1023 FLASH_MEMORY_NETWORK_PORT_SIZE );
1024
1026 static constexpr auto FLASH_MEMORY_NETWORK_IP_OFFSET = static_cast< std::int32_t >( 0 );
1027
1029 static constexpr auto FLASH_MEMORY_NETWORK_PORT_OFFSET = static_cast< std::int32_t >( FLASH_MEMORY_NETWORK_IP_OFFSET + FLASH_MEMORY_NETWORK_IP_SIZE );
1030
1032 static constexpr auto FLASH_MEMORY_NETWORK_HOST_IP_0_OFFSET = static_cast< std::int32_t >( FLASH_MEMORY_NETWORK_PORT_OFFSET + FLASH_MEMORY_NETWORK_PORT_SIZE );
1033
1035 static constexpr auto FLASH_MEMORY_NETWORK_HOST_IP_1_OFFSET = static_cast< std::int32_t >( FLASH_MEMORY_NETWORK_HOST_IP_0_OFFSET + FLASH_MEMORY_NETWORK_IP_SIZE );
1036
1038 static constexpr auto FLASH_MEMORY_NETWORK_HOST_IP_2_OFFSET = static_cast< std::int32_t >( FLASH_MEMORY_NETWORK_HOST_IP_1_OFFSET + FLASH_MEMORY_NETWORK_IP_SIZE );
1039
1041 static constexpr auto FLASH_MEMORY_NETWORK_HOST_IP_3_OFFSET = static_cast< std::int32_t >( FLASH_MEMORY_NETWORK_HOST_IP_2_OFFSET + FLASH_MEMORY_NETWORK_IP_SIZE );
1042
1044 static constexpr auto FLASH_MEMORY_NETWORK_HOST_IP_4_OFFSET = static_cast< std::int32_t >( FLASH_MEMORY_NETWORK_HOST_IP_3_OFFSET + FLASH_MEMORY_NETWORK_IP_SIZE );
1045
1047 static constexpr auto FLASH_MEMORY_NETWORK_HOST_PORT_OFFSET = static_cast< std::int32_t >( FLASH_MEMORY_NETWORK_HOST_IP_4_OFFSET + FLASH_MEMORY_NETWORK_IP_SIZE );
1048
1050 static constexpr auto FLASH_MEMORY_END_OFFSET = static_cast< std::int32_t >( FLASH_MEMORY_NETWORK_HOST_PORT_OFFSET + FLASH_MEMORY_NETWORK_PORT_SIZE );
1051
1053 static constexpr auto FLASH_MEMORY_ARC420_ID_STARTADDR = static_cast< std::uint32_t >( 0x32000 );
1054
1056 static constexpr auto FLASH_MEMORY_ARC420_MAX_ID_CHARACTERS = static_cast< std::uint32_t >( 4096 );
1057
1059 static constexpr auto FLASH_MEMORY_ID_STARTADDR = static_cast< std::uint32_t >( 0x38000 );
1060
1062 static constexpr auto FLASH_MEMORY_MAX_ID_CHARACTERS = static_cast< std::uint32_t >( 0x7FFF );
1063
1065 static constexpr auto FLASH_MEMORY_ARC420_USER_STARTADDR = static_cast< std::uint32_t >( 0x38000 );
1066
1068 static constexpr auto FLASH_MEMORY_ARC420_MAX_USER_CHARACTERS = static_cast< std::uint32_t >( 4096 );
1069
1071 static constexpr auto FLASH_MEMORY_USER_STARTADDR = static_cast< std::uint32_t >( 0 );
1072
1074 static constexpr auto FLASH_MEMORY_MAX_USER_CHARACTERS = static_cast< std::uint32_t >( 0x37FFF );
1075
1077 static constexpr auto EXPOSE_RET_HANDLE_TIME = static_cast< std::uint32_t >( 310 );
1078
1080 static constexpr auto EXPOSE_RET_BAIL_TIME = static_cast< float >( 0.3f );
1081
1082 #ifdef ARC_DEBUG_READOUT
1084 std::shared_ptr<std::ostream> m_pDbgOS;
1085 #endif
1086 };
1087
1088
1089 } // end gen4 namespace
1090} // end arc namespace
void stopExpose(void) noexcept
void mapCommonBuffer(void)
void commandAbort(void) const
arc::gen4::pStatusPacket_t command(uint32Type auto const ... args)
Definition: CArcDevice.h:400
bool isOpen(void) const noexcept
arc::gen4::pStringList_t getExposeModeList(void)
arc::gen4::pImageBuffer_t getImageBuffer(const std::uint16_t uwIndex=0) const noexcept
arc::gen4::pStatusPacket_t command(const std::vector< std::any > &vCmdList)
const std::string toString(void) const noexcept
arc::gen4::pCommonBufferList_t getCommonBuffers(void) const noexcept
CArcDevice(CArcDevice &&)=delete
arc::gen4::pSysState_t getSystemState(void)
void loadFile(const std::filesystem::path &tCtlrFile, bool *pStop=nullptr)
void setImageDimensions(const std::uint32_t uiCols, const std::uint32_t uiRows, const std::uint32_t uwChannelCount)
virtual ~CArcDevice(void)=default
void registerAlertHandler(alertHandler_t fnAlertHandler, std::chrono::milliseconds freqMS=std::chrono::milliseconds(1000))
CArcDevice & operator=(const CArcDevice &)=delete
CArcDevice(const CArcDevice &)=delete
arc::gen4::pStringList_t getCommandList(void)
arc::gen4::pStatusPacket_t command(const arc::gen4::CArcCommandPacket *pCmd) const
CArcDevice & operator=(CArcDevice &&)=delete
static const std::vector< arcDev_t > & findDevices(void)
std::unique_ptr< arc::gen4::CArcBoardMap > getBoardMap(void)
arc::gen4::pStatusPacket_t command(const std::vector< std::uint32_t > &vCmdList)
void open(const std::uint32_t uiDeviceNumber=0, const bool bMapBuffer=true)
void command(const std::vector< std::uint32_t > &vCmdList, std::uint32_t uiExpectedReply)
void setImageDimensions(const std::uint32_t uiCols, const std::uint32_t uiRows)
void setup(const std::filesystem::path &tCtlrFile, const std::uint32_t uiHdwTestCnt=1234, bool *pStop=nullptr)
void command(const std::vector< std::any > &vCmdList, const std::uint32_t uiExpectedReply)
void verifyColumnChannelCount(const std::uint32_t uiCols, const std::uint32_t uwChannelCount)
arc::gen4::pStatusPacket_t command(arc::gen4::cmds_e tCmd, const Args ... args)
Definition: CArcDevice.h:422
arc::gen4::pImageBuffer_t expose(const std::uint32_t uiExpTime, const exposeListener_t fnExposeListener=nullptr, const readListener_t fnReadListener=nullptr, pSysState_t pSysState=nullptr)
static const std::string version(void) noexcept
void close(void) noexcept
const std::vector< arc::gen4::pImageBuffer_t > & getImageBufferList(void) const
void unMapCommonBuffer(void)
static CArcPacketFactory & getInstance(void) noexcept
std::unique_ptr< CArcCommandPacket > cmdPacket(const std::uint8_t uiId=0) const
std::shared_ptr< arc::gen4::CArcImageAssembler > pImageAssembler_t
std::unique_ptr< arc::gen4::CArcStringList > pStringList_t
constexpr auto ARC440_INVALID_CHANNEL_ADDRESS
std::function< void(std::uint32_t, float)> readListener_t
Definition: CArcDevice.h:148
std::function< void(float)> exposeListener_t
Definition: CArcDevice.h:141
std::function< void(const std::uint32_t, const std::uint32_t)> fileProgressListener_t
Definition: CArcDevice.h:174
std::array< std::unique_ptr< arc::gen4::commonBuffer_t >, iCommonBufferListCount > commonBufferList_t
Definition: CArcDevice.h:123
std::weak_ptr< arc::gen4::CArcLog > pLogger_t
Definition: CArcLog.h:162
HANDLE arcDevHandle_t
Definition: CArcSystem.h:53
std::unique_ptr< arc::gen4::CArcStatusPacket > pStatusPacket_t
Definition: CArcDevice.h:136
std::shared_ptr< sysState_t > pSysState_t
Definition: ArcSysState.h:28
std::function< void(const std::string &)> alertHandler_t
‍** Convenience ( compact ) definition for command log handler
Definition: CArcDevice.h:160
constexpr auto iCommonBufferListCount
Definition: CArcDevice.h:119
std::unique_ptr< commonBufferList_t > pCommonBufferList_t
Definition: CArcDevice.h:127
std::shared_ptr< arc::gen4::imageBuffer_t > pImageBuffer_t
Definition: CArcDevice.h:95
Definition: CArcBase.h:50
std::uint8_t * pVirtualAddress
Definition: CArcDevice.h:107
const std::string toString(void) const
std::uint64_t u64PhysicalAddress
Definition: CArcDevice.h:108
std::uint64_t uiSize
Definition: CArcDevice.h:84
std::unique_ptr< std::uint8_t > pVirtualAddress
Definition: CArcDevice.h:83
const std::string toString(void) const
imageBuffer_t(const std::uint64_t u64Size)