diff --git a/.github/workflows/cmake-workflow.yml b/.github/workflows/cmake-workflow.yml index e7aac772..d5d7e770 100644 --- a/.github/workflows/cmake-workflow.yml +++ b/.github/workflows/cmake-workflow.yml @@ -11,10 +11,9 @@ env: INTERFACE_TYPE_ARCHON: Archon INTERFACE_TYPE_ASTROCAM: AstroCam DETECTOR_TYPE_HXRG: Hxrg - INSTR: generic jobs: - build-archon: + Archon: runs-on: ubuntu-latest steps: @@ -31,15 +30,47 @@ jobs: cd ${{github.workspace}}/build rm -rf * g++ --version - cmake -DINTERFACE_TYPE=${{env.INTERFACE_TYPE_ARCHON}} -DDETECTOR_TYPE=${{env.DETECTOR_TYPE_HXRG}} -DINSTR=${{env.INSTR}} .. + cmake -DINTERFACE_TYPE=${{env.INTERFACE_TYPE_ARCHON}} -DDETECTOR_TYPE=${{env.DETECTOR_TYPE_HXRG}} .. + - name: Build Archon # Build your program with the given configuration run: | cd ${{github.workspace}}/build make - - + + - name: Start Emulator + run: | + cd ${{github.workspace}} + bin/emulator Config/demo/demo.cfg & + + - name: Start camera-daemon + run: | + cd ${{github.workspace}} + bin/camerad Config/demo/demo.cfg --foreground & + + - name: Run test commands + run: | + cd ${{github.workspace}} + shopt -s expand_aliases + alias cam="bin/socksend -h localhost -p 3031" + function check { if [ $1 != "DONE" ]; then echo $1; exit 1; else echo $1; fi } + + command_open=$(cam open) + check $command_open + + command_load=$(cam load) + check $command_load + + # command_exptime=$(cam exptime 1500) + # check $command_exptime + + command_expose=$(cam expose) + check $command_expose + + command_printstatus=$(cam printstatus) + check $command_printstatus + # Comment AstroCam out for now # build-astrocam: # runs-on: ubuntu-20.04 @@ -71,7 +102,7 @@ jobs: # run: | # cd ${{github.workspace}}/build # rm -rf * - # cmake -DINTERFACE_TYPE=${{env.INTERFACE_TYPE_ASTROCAM}} -DINSTR=${{env.INSTR}} .. + # cmake -DINTERFACE_TYPE=${{env.INTERFACE_TYPE_ASTROCAM}} -DDETECTOR_TYPE=${{env.DETECTOR_TYPE_HXRG}} .. # - name: Build AstroCam # # Build your program with the given configuration diff --git a/.gitignore b/.gitignore index 485dee64..706fd07f 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ .idea +.vscode diff --git a/CMakeLists.txt b/CMakeLists.txt index f63d2580..b0f196e0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,12 +8,18 @@ # valid types are: "AstroCam" | "Archon" # ---------------------------------------------------------------------------- + # Interface type can be set via command line ( Archon | AstroCam ) IF(NOT DEFINED INTERFACE_TYPE) set(INTERFACE_TYPE "Archon") endif() -# Detectpr type can be set via command line ( Hxrg | Ccd ) +# Instrument can be set via command line generic is the default value +IF(NOT DEFINED INSTR) + set(INSTR "generic") +endif() + +# Detector type can be set via command line ( Hxrg | Ccd ) if(NOT DEFINED DETECTOR_TYPE) set(DETECTOR_TYPE "Ccd") endif() diff --git a/Config/demo/demo.acf b/Config/demo/demo.acf new file mode 100644 index 00000000..d6ef6136 --- /dev/null +++ b/Config/demo/demo.acf @@ -0,0 +1,674 @@ +[CONFIG] +BIGBUF=0 +FRAMEMODE=1 +LINECOUNT=516 +PIXELCOUNT=64 +RAWENABLE=0 +RAWENDLINE=10 +RAWSAMPLES=25600 +RAWSEL=32 +RAWSTARTLINE=1 +RAWSTARTPIXEL=0 +SAMPLEMODE=0 +SHP1=160 +SHP2=440 +SHD1=450 +SHD2=450 +TAPLINE0="AM29L,1,0" +TAPLINE1="AM27L,1,0" +TAPLINE2="AM31L,1,0" +TAPLINE3="AM33L,1,0" +TAPLINE4="AM25L,1,0" +TAPLINE5="AM35L,1,0" +TAPLINE6="AM36L,1,0" +TAPLINE7="AM34L,1,0" +TAPLINE8="AM21L,1,0" +TAPLINE9="AM22L,1,0" +TAPLINE10="AM24L,1,0" +TAPLINE11="AM32L,1,0" +TAPLINE12="AM30L,1,0" +TAPLINE13="AM23L,1,0" +TAPLINE14="AM26L,1,0" +TAPLINE15="AM28L,1,0" +TAPLINE16="AM41L,1,0" +TAPLINE17="AM46L,1,0" +TAPLINE18="AM54L,1,0" +TAPLINE19="AM52L,1,0" +TAPLINE20="AM48L,1,0" +TAPLINE21="AM44L,1,0" +TAPLINE22="AM40L,1,0" +TAPLINE23="AM50L,1,0" +TAPLINE24="AM49L,1,0" +TAPLINE25="AM43L,1,0" +TAPLINE26="AM45L,1,0" +TAPLINE27="AM39L,1,0" +TAPLINE28="AM51L,1,0" +TAPLINE29="AM47L,1,0" +TAPLINE30="AM42L,1,0" +TAPLINE31="AM53L,1,0" +TAPLINES=32 +TRIGOUTFORCE=0 +TRIGOUTINVERT=0 +TRIGOUTLEVEL=0 +TRIGOUTPOWER=1 +PARAMETER0="Start=0" +PARAMETER1="Expose=0" +PARAMETER2="exptime=0" +PARAMETER3="mode_UTR=1" +PARAMETER4="mode_MCDS=0" +PARAMETER5="mode_RXRV=0" +PARAMETER6="mode_RXV=0" +PARAMETER7="MCDS_sample=1" +PARAMETER8="UTR_sample=1" +PARAMETER9="SkippedRowsQuad=0" +PARAMETER10="nRowsQuad=129" +PARAMETER11="SkippedColumnsQuad=0" +PARAMETER12="nPixelsPair=32" +PARAMETER13="longexposure=0" +PARAMETER14="abort=0" +PARAMETER15="prv_reset_flag=0" +PARAMETER16="prv_idle=0" +PARAMETER17="rollingreset=0" +PARAMETERS=18 +LINE0=PowerUp: +LINE1="STATE000; CALL ClocksToZero" +LINE2="STATE000; if Start CALL SetupAladdin" +LINE3="STATE000; GOTO PowerUp" +LINE4=SetupAladdin: +LINE5="STATE000; CALL GlobalReset" +LINE6="STATE000; CALL RollingResetPulse" +LINE7="STATE000; GOTO WaitForExpose" +LINE8=WaitForExpose: +LINE9="STATE000; abort--" +LINE10="STATE000; if Expose CALL AcqSequence" +LINE11="STATE000; CALL Reset_PRV_RESET_FLAG(1000)" +LINE12="STATE000; prv_idle++" +LINE13="STATE000; CALL GlobalReset" +LINE14="STATE000; CALL MilliSec(500)" +LINE15="STATE000; prv_idle--" +LINE16="STATE000; prv_reset_flag--" +LINE17="STATE000; GOTO WaitForExpose" +LINE18=AcqSequence: +LINE19="STATE000; if mode_UTR GOTO SequenceUTR" +LINE20="STATE000; if mode_MCDS GOTO SequenceMCDS" +LINE21="STATE000; if mode_RXRV GOTO SequenceRXRV" +LINE22="STATE000; if mode_RXV GOTO SequenceRXV" +LINE23="STATE000; GOTO WaitForExpose" +LINE24=SequenceUTR: +LINE25="STATE000; CALL GlobalReset" +LINE26="STATE000; CALL MilliSec(1)" +LINE27="STATE000; CALL Increment_ExposeCounter(UTR_sample)" +LINE28="STATE000; CALL GrabFrameUTR(UTR_sample)" +LINE29="STATE000; Expose--" +LINE30="STATE000; CALL Reset_PRV_RESET_FLAG(1000)" +LINE31="STATE000; CALL GlobalReset" +LINE32="STATE000; GOTO WaitForExpose" +LINE33=GrabFrameUTR: +LINE34="STATE000; CALL GrabFrame" +LINE35="STATE000; Expose--" +LINE36="STATE000; if Expose CALL MilliSec(exptime)" +LINE37="STATE000; Expose++" +LINE38="STATE000; RETURN GrabFrameUTR" +LINE39=SequenceMCDS: +LINE40="STATE000; CALL GlobalReset" +LINE41="STATE000; CALL MilliSec(1)" +LINE42="STATE000; CALL Increment_ExposeCounter(MCDS_sample)" +LINE43="STATE000; CALL GrabFrame(MCDS_sample)" +LINE44="STATE000; CALL ClocksToZero" +LINE45="STATE000; CALL MilliSec(exptime)" +LINE46="STATE000; CALL Increment_ExposeCounter(MCDS_sample)" +LINE47="STATE000; CALL GrabFrame(MCDS_sample)" +LINE48="STATE000; Expose--" +LINE49="STATE000; CALL Reset_PRV_RESET_FLAG(1000)" +LINE50="STATE000; CALL GlobalReset" +LINE51="STATE000; GOTO WaitForExpose" +LINE52=SequenceRXRV: +LINE53="STATE000; CALL Increment_ExposeCounter(1)" +LINE54="STATE000; CALL GrabFrameRXR(1)" +LINE55="STATE000; Expose--" +LINE56="STATE000; GOTO WaitForExpose" +LINE57="STATE000; RETURN SequenceRXRV" +LINE58=SequenceRXV: +LINE59="STATE000; CALL Increment_ExposeCounter(1)" +LINE60="STATE000; CALL GrabFrameRX(1)" +LINE61="STATE000; Expose--" +LINE62="STATE000; GOTO WaitForExpose" +LINE63="STATE000; RETURN SequenceRXV" +LINE64=GrabFrame: +LINE65="STATE000; if !prv_idle CALL Decrement_ExposeCounter" +LINE66="STATE000; if !prv_idle CALL wFrame" +LINE67="STATE000; CALL SetupFrameStart" +LINE68="STATE000; CALL FrameStartPulse" +LINE69="STATE000; CALL SkipRow(SkippedRowsQuad)" +LINE70="STATE000; CALL ReadRowQuad(nRowsQuad)" +LINE71="STATE000; prv_reset_flag++" +LINE72="STATE000; RETURN GrabFrame" +LINE73=GrabFrameRX: +LINE74="STATE000; if !prv_idle CALL Decrement_ExposeCounter" +LINE75="STATE000; if !prv_idle CALL wFrame" +LINE76="STATE000; CALL SetupFrameStart" +LINE77="STATE000; CALL FrameStartPulse" +LINE78="STATE000; CALL SkipRow(SkippedRowsQuad)" +LINE79="STATE000; CALL ReadRowQuadRX(nRowsQuad)" +LINE80="STATE000; Expose--" +LINE81="STATE000; If Expose CALL MilliSec(exptime)" +LINE82="STATE000; Expose++" +LINE83="STATE000; RETURN GrabFrameRX" +LINE84=GrabFrameRXR: +LINE85="STATE000; if !prv_idle CALL Decrement_ExposeCounter" +LINE86="STATE000; if !prv_idle CALL wFrame" +LINE87="STATE000; CALL SetupFrameStart" +LINE88="STATE000; CALL FrameStartPulse" +LINE89="STATE000; CALL SkipRow(SkippedRowsQuad)" +LINE90="STATE000; CALL ReadRowQuadRXR(nRowsQuad)" +LINE91="STATE000; Expose--" +LINE92="STATE000; CALL MilliSec(exptime)" +LINE93="STATE000; Expose++" +LINE94="STATE000; RETURN GrabFrameRXR" +LINE95=ReadRowQuad: +LINE96="STATE000; CALL ConfigureS2" +LINE97="STATE000; CALL ReadRowPair" +LINE98="STATE000; CALL ConfigureS1" +LINE99="STATE000; CALL ReadRowPair" +LINE100="STATE000; RETURN ReadRowQuad" +LINE101=ReadRowQuadRX: +LINE102="STATE000; CALL ConfigureS2" +LINE103="STATE000; CALL ReadRowPair" +LINE104="STATE000; CALL RollingResetPulse" +LINE105="STATE000; CALL ConfigureS1" +LINE106="STATE000; CALL ReadRowPair" +LINE107="STATE000; CALL RollingResetPulse" +LINE108="STATE000; RETURN ReadRowQuadRX" +LINE109=ReadRowQuadRXR: +LINE110="STATE000; CALL ConfigureS2" +LINE111="STATE000; CALL ReadRowPair" +LINE112="STATE000; CALL RollingResetPulse" +LINE113="STATE000; CALL ReadRowPair" +LINE114="STATE000; CALL ConfigureS1" +LINE115="STATE000; CALL ReadRowPair" +LINE116="STATE000; CALL RollingResetPulse" +LINE117="STATE000; CALL ReadRowPair" +LINE118="STATE000; RETURN ReadRowQuadRXR" +LINE119=ReadRowPair: +LINE120="STATE000; if !prv_idle CALL wLine" +LINE121="STATE000; CALL ActivateOddRow" +LINE122="STATE000; CALL InitRowRegister" +LINE123="STATE000; CALL SkipColumn(SkippedColumnsQuad)" +LINE124="STATE000; CALL PresetFirstPixel" +LINE125="STATE000; CALL ReadPixelPair(nPixelsPair)" +LINE126="STATE000; if !prv_idle CALL wLine" +LINE127="STATE000; CALL ActivateEvenRow" +LINE128="STATE000; CALL InitRowRegister" +LINE129="STATE000; CALL SkipColumn(SkippedColumnsQuad)" +LINE130="STATE000; CALL PresetFirstPixel" +LINE131="STATE000; CALL ReadPixelPair(nPixelsPair)" +LINE132="STATE000; RETURN ReadRowPair" +LINE133=ReadPixelPair: +LINE134="STATE000; if !prv_idle CALL wPixel" +LINE135="STATE000; CALL ReadOddPixel" +LINE136="STATE000; if !prv_idle CALL wPixel" +LINE137="STATE000; CALL ReadEvenPixel" +LINE138="STATE000; RETURN ReadPixelPair" +LINE139=ResetArrayRR: +LINE140="STATE000; CALL SetupFrameStart" +LINE141="STATE000; CALL FrameStartPulse" +LINE142="STATE000; CALL ResetRowQuad(129)" +LINE143="STATE000; RETURN ResetArrayRR" +LINE144=ResetRowQuad: +LINE145="STATE000; CALL ConfigureS2" +LINE146="STATE000; CALL RollingResetPulse" +LINE147="STATE000; CALL ConfigureS1" +LINE148="STATE000; CALL RollingResetPulse" +LINE149="STATE000; RETURN ResetRowQuad" +LINE150=FlushLag: +LINE151="STATE000; CALL FlushArrayRR(1)" +LINE152="STATE000; RETURN FlushLag" +LINE153=FlushArrayRR: +LINE154="STATE000; CALL SetupFrameStart" +LINE155="STATE000; CALL FrameStartPulse" +LINE156="STATE000; CALL FlushRowQuad(129)" +LINE157="STATE000; RETURN FlushArrayRR" +LINE158=FlushRowQuad: +LINE159="STATE000; CALL ConfigureS2" +LINE160="STATE000; CALL RollingResetPulse" +LINE161="STATE000; CALL FlushRowPair" +LINE162="STATE000; CALL ConfigureS1" +LINE163="STATE000; CALL RollingResetPulse" +LINE164="STATE000; CALL FlushRowPair" +LINE165="STATE000; RETURN FlushRowQuad" +LINE166=FlushRowPair: +LINE167="STATE000; CALL ActivateOddRow" +LINE168="STATE000; CALL InitRowRegister" +LINE169="STATE000; CALL PresetFirstPixel" +LINE170="STATE000; CALL FlushPixelPair(32)" +LINE171="STATE000; CALL ActivateEvenRow" +LINE172="STATE000; CALL InitRowRegister" +LINE173="STATE000; CALL PresetFirstPixel" +LINE174="STATE000; CALL FlushPixelPair(32)" +LINE175="STATE000; RETURN FlushRowPair" +LINE176=FlushPixelPair: +LINE177="STATE000; CALL FlushOddPixel" +LINE178="STATE000; CALL FlushEvenPixel" +LINE179="STATE000; RETURN FlushPixelPair" +LINE180=MilliSec: +LINE181="STATE000; if abort GOTO AbortSequence" +LINE182="STATE000; CALL wDelay1ms" +LINE183="STATE000; RETURN MilliSec" +LINE184=Sec: +LINE185="STATE000; CALL MilliSec(1000)" +LINE186="STATE000; RETURN Sec" +LINE187=Reset_PRV_RESET_FLAG: +LINE188="STATE000; prv_reset_flag--" +LINE189="STATE000; RETURN Reset_PRV_RESET_FLAG" +LINE190=Increment_ExposeCounter: +LINE191="STATE000; Expose++" +LINE192="STATE000; RETURN Increment_ExposeCounter" +LINE193=Decrement_ExposeCounter: +LINE194="STATE000; Expose--" +LINE195="STATE000; RETURN Decrement_ExposeCounter" +LINE196=AbortSequence: +LINE197="STATE000; CALL Decrement_ExposeCounter(1048000)" +LINE198="STATE000; GOTO WaitForExpose" +LINE199=RawPixel: +LINE200="STATE000; STATE000(998)" +LINE201="STATE000; RETURN RawPixel" +LINE202=wDelay1us: +LINE203="STATE000; STATE000(98)" +LINE204="STATE000; RETURN wDelay1us" +LINE205=wDelay10us: +LINE206="STATE000; STATE000(998)" +LINE207="STATE000; RETURN wDelay10us" +LINE208=wDelay10ns: +LINE209="STATE000; RETURN wDelay10ns" +LINE210=wDelay1ms: +LINE211="STATE000; STATE000(99998)" +LINE212="STATE000; RETURN wDelay1ms" +LINE213=SetupFrameStart: +LINE214="STATE001; STATE000(98)" +LINE215="STATE000; RETURN SetupFrameStart" +LINE216=FrameStartPulse: +LINE217="STATE002; STATE000(49)" +LINE218="STATE003; STATE000(99)" +LINE219="STATE004; STATE000(99)" +LINE220="STATE005; STATE000(49)" +LINE221="STATE006; STATE000(98)" +LINE222="STATE000; RETURN FrameStartPulse" +LINE223=ConfigureS2: +LINE224="STATE007; STATE000(99)" +LINE225="STATE008; STATE000(48)" +LINE226="STATE000; RETURN ConfigureS2" +LINE227=ConfigureS1: +LINE228="STATE009; STATE000(99)" +LINE229="STATE005; STATE000(48)" +LINE230="STATE000; RETURN ConfigureS1" +LINE231=ActivateOddRow: +LINE232="STATE010; STATE000(48)" +LINE233="STATE000; RETURN ActivateOddRow" +LINE234=ActivateEvenRow: +LINE235="STATE011; STATE000(48)" +LINE236="STATE000; RETURN ActivateEvenRow" +LINE237=InitRowRegister: +LINE238="STATE012; STATE000(49)" +LINE239="STATE013; STATE000(49)" +LINE240="STATE014; STATE000(49)" +LINE241="STATE015; STATE000(48)" +LINE242="STATE000; RETURN InitRowRegister" +LINE243=PresetFirstPixel: +LINE244="STATE016; STATE000(48)" +LINE245="STATE000; RETURN PresetFirstPixel" +LINE246=ReadOddPixel: +LINE247="STATE016; STATE000(449)" +LINE248="STATE017; STATE000(48)" +LINE249="STATE000; RETURN ReadOddPixel" +LINE250=ReadEvenPixel: +LINE251="STATE014; STATE000(449)" +LINE252="STATE015; STATE000(48)" +LINE253="STATE000; RETURN ReadEvenPixel" +LINE254=FlushOddPixel: +LINE255="STATE016; STATE000(449)" +LINE256="STATE017; STATE000(48)" +LINE257="STATE000; RETURN FlushOddPixel" +LINE258=FlushEvenPixel: +LINE259="STATE014; STATE000(449)" +LINE260="STATE015; STATE000(48)" +LINE261="STATE000; RETURN FlushEvenPixel" +LINE262=SkipRow: +LINE263="STATE008; STATE000(49)" +LINE264="STATE018; STATE000(99)" +LINE265="STATE005; STATE000(49)" +LINE266="STATE006; STATE000(98)" +LINE267="STATE000; RETURN SkipRow" +LINE268=SkipColumn: +LINE269="STATE016; STATE000(49)" +LINE270="STATE017; STATE000(49)" +LINE271="STATE014; STATE000(49)" +LINE272="STATE015; STATE000(48)" +LINE273="STATE000; RETURN SkipColumn" +LINE274=RollingResetPulse: +LINE275="STATE019; STATE000(99)" +LINE276="STATE020; STATE000(99)" +LINE277="STATE021; STATE000(99)" +LINE278="STATE022; STATE000(1998)" +LINE279="STATE000; RETURN RollingResetPulse" +LINE280=GlobalReset: +LINE281="STATE023; STATE000(4999)" +LINE282="STATE024; STATE000(4998)" +LINE283="STATE000; RETURN GlobalReset" +LINE284=RollingResetPulseBlank: +LINE285="STATE019; STATE000(2499)" +LINE286="STATE022; STATE000(2098)" +LINE287="STATE000; RETURN RollingResetPulseBlank" +LINE288=RowOn: +LINE289="STATE022; RETURN RowOn" +LINE290=RowOff: +LINE291="STATE019; RETURN RowOff" +LINE292=RowDeselect: +LINE293="STATE004; RETURN RowDeselect" +LINE294=RowSelect: +LINE295="STATE025; RETURN RowSelect" +LINE296=wVRstG: +LINE297="STATE023; RETURN wVRstG" +LINE298=wbVRstG: +LINE299="STATE024; RETURN wbVRstG" +LINE300=wPhiF1: +LINE301="STATE014; STATE000(448)" +LINE302="STATE000; RETURN wPhiF1" +LINE303=wPhiF2: +LINE304="STATE016; STATE000(448)" +LINE305="STATE000; RETURN wPhiF2" +LINE306=ClocksToZero: +LINE307="STATE026; RETURN ClocksToZero" +LINE308=ClocksToActive: +LINE309="STATE027; RETURN ClocksToActive" +LINE310=wFrame: +LINE311="STATE028; RETURN wFrame" +LINE312=wLine: +LINE313="STATE029; RETURN wLine" +LINE314=wPixel: +LINE315="STATE030;" +LINE316="STATE031; RETURN wPixel" +LINES=317 +MOD4\ENABLE1=1 +MOD4\FASTSLEWRATE1=500 +MOD4\SLOWSLEWRATE1=100 +MOD4\LABEL1=VRstOn +MOD4\ENABLE2=1 +MOD4\FASTSLEWRATE2=500 +MOD4\SLOWSLEWRATE2=100 +MOD4\LABEL2=PhiDes Q1 +MOD4\ENABLE3=1 +MOD4\FASTSLEWRATE3=500 +MOD4\SLOWSLEWRATE3=100 +MOD4\LABEL3=FSYNC +MOD4\ENABLE4=1 +MOD4\FASTSLEWRATE4=500 +MOD4\SLOWSLEWRATE4=100 +MOD4\LABEL4=Global Reset +MOD4\ENABLE5=1 +MOD4\FASTSLEWRATE5=500 +MOD4\SLOWSLEWRATE5=100 +MOD4\LABEL5=PhiF2 +MOD4\ENABLE6=1 +MOD4\FASTSLEWRATE6=500 +MOD4\SLOWSLEWRATE6=100 +MOD4\LABEL6=Row ON +MOD4\ENABLE7=1 +MOD4\FASTSLEWRATE7=500 +MOD4\SLOWSLEWRATE7=100 +MOD4\LABEL7=PhiF1 +MOD4\ENABLE8=1 +MOD4\FASTSLEWRATE8=500 +MOD4\SLOWSLEWRATE8=100 +MOD4\LABEL8=PhiDes Q4 +MOD4\ENABLE9=1 +MOD4\FASTSLEWRATE9=500 +MOD4\SLOWSLEWRATE9=100 +MOD4\LABEL9=PhiS1 +MOD4\ENABLE10=1 +MOD4\FASTSLEWRATE10=500 +MOD4\SLOWSLEWRATE10=100 +MOD4\LABEL10=PhiEO +MOD4\ENABLE11=1 +MOD4\FASTSLEWRATE11=500 +MOD4\SLOWSLEWRATE11=100 +MOD4\LABEL11=SSYNC +MOD4\ENABLE12=1 +MOD4\FASTSLEWRATE12=500 +MOD4\SLOWSLEWRATE12=100 +MOD4\LABEL12=PhiS2 +MOD9\LVLC_V1=0.0 +MOD9\LVLC_ORDER1=1 +MOD9\LVLC_LABEL1=Test Voltage +MOD9\LVLC_V2=0.0 +MOD9\LVLC_ORDER2=1 +MOD9\LVLC_V3=0.0 +MOD9\LVLC_ORDER3=1 +MOD9\LVLC_V4=-0.5 +MOD9\LVLC_ORDER4=1 +MOD9\LVLC_LABEL4=Pos reg and dec +MOD9\LVLC_V5=-5.8 +MOD9\LVLC_ORDER5=1 +MOD9\LVLC_LABEL5=Neg reg and dec Row +MOD9\LVLC_V6=0.0 +MOD9\LVLC_ORDER6=1 +MOD9\LVLC_V7=-6.1 +MOD9\LVLC_ORDER7=1 +MOD9\LVLC_LABEL7=Neg reg and dec Col +MOD9\LVLC_V8=0.0 +MOD9\LVLC_ORDER8=1 +MOD9\LVLC_V9=-0.5 +MOD9\LVLC_ORDER9=1 +MOD9\LVLC_LABEL9=Video Offset +MOD9\LVLC_V10=5.0 +MOD9\LVLC_ORDER10=1 +MOD9\LVLC_LABEL10=Preamp Enable +MOD9\LVLC_V11=0.0 +MOD9\LVLC_ORDER11=1 +MOD9\LVLC_V12=3.9 +MOD9\LVLC_ORDER12=1 +MOD9\LVLC_LABEL12=Video PullUp +MOD9\LVLC_V13=0.0 +MOD9\LVLC_ORDER13=1 +MOD9\LVLC_LABEL13=Row Not selected +MOD9\LVLC_V14=-1.5 +MOD9\LVLC_ORDER14=1 +MOD9\LVLC_LABEL14=PMOS SF Drain +MOD9\LVLC_V15=-3.3 +MOD9\LVLC_ORDER15=1 +MOD9\LVLC_LABEL15=Clamp gate +MOD9\LVLC_V16=-4.0 +MOD9\LVLC_ORDER16=1 +MOD9\LVLC_LABEL16=Drain Clamp Volt +MOD9\LVLC_V17=0.0 +MOD9\LVLC_ORDER17=1 +MOD9\LVLC_LABEL17=OLD row-enable bias +MOD9\LVLC_V18=-3.8 +MOD9\LVLC_ORDER18=1 +MOD9\LVLC_LABEL18=Det Common Bias +MOD9\LVLC_V19=-4.0 +MOD9\LVLC_ORDER19=1 +MOD9\LVLC_LABEL19=Unit Cell SFD Drain +MOD9\LVLC_V20=-2.8 +MOD9\LVLC_ORDER20=1 +MOD9\LVLC_LABEL20=Current Source Bias +MOD9\LVLC_V21=0.0 +MOD9\LVLC_ORDER21=1 +MOD9\LVLC_LABEL21=OLD - Global Reset +MOD9\LVLC_V22=0.0 +MOD9\LVLC_ORDER22=1 +MOD9\LVLC_LABEL22=OLD - Row Reset Bias +MOD9\LVLC_V23=0.0 +MOD9\LVLC_ORDER23=1 +MOD9\LVLC_V24=0.0 +MOD9\LVLC_ORDER24=1 +MOD9\LVHC_ENABLE1=1 +MOD9\LVHC_V1=0.0 +MOD9\LVHC_IL1=10 +MOD9\LVHC_ORDER1=1 +MOD9\LVHC_ENABLE2=1 +MOD9\LVHC_V2=0.0 +MOD9\LVHC_IL2=50 +MOD9\LVHC_ORDER2=1 +MOD9\LVHC_ENABLE3=1 +MOD9\LVHC_V3=0.0 +MOD9\LVHC_IL3=10 +MOD9\LVHC_ORDER3=1 +MOD9\LVHC_ENABLE4=1 +MOD9\LVHC_V4=0.0 +MOD9\LVHC_IL4=100 +MOD9\LVHC_ORDER4=1 +MOD9\LVHC_ENABLE5=1 +MOD9\LVHC_V5=0.0 +MOD9\LVHC_IL5=100 +MOD9\LVHC_ORDER5=0 +MOD9\LVHC_ENABLE6=1 +MOD9\LVHC_V6=0.0 +MOD9\LVHC_IL6=10 +MOD9\LVHC_ORDER6=1 +STATE0\NAME=STATE000 +STATE0\MOD4=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE0\CONTROL="0,3F" +STATE0\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE1\NAME=STATE001 +STATE1\MOD4=",1,1,-0.6,1,0,-0.6,1,0,,1,1,-0.6,1,0,-5.8,1,0,-0.6,1,0,-0.6,1,0,-0.6,1,0,-0.6,1,0,,1,1,-0.6,1,0" +STATE1\CONTROL="0,3F" +STATE1\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE2\NAME=STATE002 +STATE2\MOD4=",1,1,-5.8,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,-5.8,1,0,-0.6,1,0,,1,1,-5.8,1,0,,1,1" +STATE2\CONTROL="0,3F" +STATE2\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE3\NAME=STATE003 +STATE3\MOD4=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,-0.6,1,0,,1,1" +STATE3\CONTROL="0,3F" +STATE3\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE4\NAME=STATE004 +STATE4\MOD4=",1,1,-0.6,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,-0.6,1,0,,1,1,,1,1,,1,1,,1,1" +STATE4\CONTROL="0,3F" +STATE4\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE5\NAME=STATE005 +STATE5\MOD4=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,-5.8,1,0,,1,1,,1,1,,1,1" +STATE5\CONTROL="0,3F" +STATE5\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE6\NAME=STATE006 +STATE6\MOD4=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,-0.6,1,0,,1,1,,1,1,,1,1" +STATE6\CONTROL="0,3F" +STATE6\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE7\NAME=STATE007 +STATE7\MOD4=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,-0.6,1,0,-0.6,1,0,,1,1,,1,1" +STATE7\CONTROL="0,3F" +STATE7\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE8\NAME=STATE008 +STATE8\MOD4=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,-5.8,1,0" +STATE8\CONTROL="0,3F" +STATE8\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE9\NAME=STATE009 +STATE9\MOD4=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,-0.6,1,0,,1,1,-0.6,1,0" +STATE9\CONTROL="0,3F" +STATE9\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE10\NAME=STATE010 +STATE10\MOD4=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,-0.6,1,0,,1,1,,1,1" +STATE10\CONTROL="0,3F" +STATE10\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE11\NAME=STATE011 +STATE11\MOD4=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,-5.8,1,0,,1,1,,1,1" +STATE11\CONTROL="0,3F" +STATE11\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE12\NAME=STATE012 +STATE12\MOD4=",1,1,,1,1,-6.2,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE12\CONTROL="0,3F" +STATE12\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE13\NAME=STATE013 +STATE13\MOD4=",1,1,,1,1,-0.6,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE13\CONTROL="0,3F" +STATE13\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE14\NAME=STATE014 +STATE14\MOD4=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,-6.2,1,0,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE14\CONTROL="0,3F" +STATE14\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE15\NAME=STATE015 +STATE15\MOD4=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,-0.6,1,0,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE15\CONTROL="0,3F" +STATE15\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE16\NAME=STATE016 +STATE16\MOD4=",1,1,,1,1,,1,1,,1,1,-6.2,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE16\CONTROL="0,3F" +STATE16\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE17\NAME=STATE017 +STATE17\MOD4=",1,1,,1,1,,1,1,,1,1,-0.6,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE17\CONTROL="0,3F" +STATE17\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE18\NAME=STATE018 +STATE18\MOD4=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,-0.6,1,0" +STATE18\CONTROL="0,3F" +STATE18\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE19\NAME=STATE019 +STATE19\MOD4=",1,1,,1,1,,1,1,,1,1,,1,1,-0.6,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE19\CONTROL="0,3F" +STATE19\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE20\NAME=STATE020 +STATE20\MOD4="-5.6,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE20\CONTROL="0,3F" +STATE20\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE21\NAME=STATE021 +STATE21\MOD4="-2.3,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE21\CONTROL="0,3F" +STATE21\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE22\NAME=STATE022 +STATE22\MOD4=",1,1,,1,1,,1,1,,1,1,,1,1,-5.8,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE22\CONTROL="0,3F" +STATE22\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE23\NAME=STATE023 +STATE23\MOD4=",1,1,,1,1,,1,1,-5.6,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE23\CONTROL="0,3F" +STATE23\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE24\NAME=STATE024 +STATE24\MOD4=",1,1,,1,1,,1,1,-3.9,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE24\CONTROL="0,3F" +STATE24\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE25\NAME=STATE025 +STATE25\MOD4=",1,1,-5.8,1,0,,1,1,,1,1,,1,1,,1,1,,1,1,-5.8,1,0,,1,1,,1,1,,1,1,,1,1" +STATE25\CONTROL="0,3F" +STATE25\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE26\NAME=STATE026 +STATE26\MOD4=",1,1,-0.6,1,0,-0.6,1,0,,1,1,-0.6,1,0,-0.6,1,0,-0.6,1,0,-0.6,1,0,-0.6,1,0,-0.6,1,0,-0.6,1,0,-0.6,1,0" +STATE26\CONTROL="0,3F" +STATE26\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE27\NAME=STATE027 +STATE27\MOD4="-2.3,1,0,-5.8,1,0,-6.2,1,0,-3.9,1,0,-6.2,1,0,-5.8,1,0,-6.2,1,0,-5.8,1,0,-5.8,1,0,-5.8,1,0,-5.8,1,0,-5.8,1,0" +STATE27\CONTROL="0,3F" +STATE27\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE28\NAME=STATE028 +STATE28\MOD4=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE28\CONTROL="2,3D" +STATE28\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE29\NAME=STATE029 +STATE29\MOD4=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE29\CONTROL="4,3B" +STATE29\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE30\NAME=STATE030 +STATE30\MOD4=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE30\CONTROL="8,37" +STATE30\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATE31\NAME=STATE031 +STATE31\MOD4=",1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1,,1,1" +STATE31\CONTROL="0,31" +STATE31\MOD9="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0" +STATES=32 +[SYSTEM] +BACKPLANE_ID=0000000000000000 +BACKPLANE_REV=0 +BACKPLANE_TYPE=1 +BACKPLANE_VERSION=0.0.0 +MOD9_ID=0000000000000000 +MOD9_REV=0 +MOD9_VERSION=0.0.0 +MOD9_TYPE=3 +MOD4_ID=0000000000000000 +MOD4_REV=0 +MOD4_VERSION=0.0.0 +MOD4_TYPE=16 +[MODE_DEFAULT] +FITS:REV=2023-12-08T12:29:51/git hash or revision of ACF +ARCH:HORI_AMPS=32 +ARCH:NUM_DETECT=1 +ARCH:VERT_AMPS=1 diff --git a/Config/demo/demo.cfg b/Config/demo/demo.cfg new file mode 100644 index 00000000..b818faca --- /dev/null +++ b/Config/demo/demo.cfg @@ -0,0 +1,36 @@ +# configuration file for camera-server +# + +DAEMON=no +IMDIR=/tmp +LOGPATH=/tmp +BASENAME=eraseme +DIRMODE=0077 +TM_ZONE_LOG=local # time zone for log entries only, can be "UTC" or "local" +TM_ZONE=UTC # time zone for everything else, can be "UTC" or "local" +TZ_ENV=PST8PDT,M3.2.0/2,M11.1.0/2 # TZ ENV variable to use when TM_ZONE_* is "local" (follows POSIX standard) + +# +AUTODIR=no +LONGERROR=true +# +NBPORT=3030 # server non-blocking port +BLKPORT=3031 # 3031 or 3041 blocking port +EMULATOR_PORT=3032 +EMULATOR_SYSTEM=Config/demo/demo.system +# +# If you have a firewall, you must allow +# multicast address 239.192.13.165, ports 1304-1305. +# +ASYNCGROUP=239.1.1.234 # asynchronous broadcast group +ASYNCPORT=1234 # asynchronous message port + +# the following should not be changed +ARCHON_IP=localhost +ARCHON_PORT=3032 +DEFAULT_FIRMWARE=Config/demo/demo.acf +ABORT_PARAM=abort # Archon parameter to trigger an abort +EXPOSE_PARAM=Expose # Archon parameter to trigger exposure +READOUT_TIME=5000 # Timeout waiting for new frame (ms) +WRITE_TAPINFO_TO_FITS=no # Tapinfo (gain, offset) be written to FITS headers {yes|no} + diff --git a/Config/demo/demo.system b/Config/demo/demo.system new file mode 100644 index 00000000..dc2ef06c --- /dev/null +++ b/Config/demo/demo.system @@ -0,0 +1,55 @@ +[SYSTEM] +BACKPLANE_ID=000000001B5DCF29 +BACKPLANE_REV=7 +BACKPLANE_TYPE=1 +BACKPLANE_VERSION=1.0.1183 +MOD10_ID=0000000000000000 +MOD10_REV=0 +MOD10_TYPE=0 +MOD10_VERSION=0.0.0 +MOD11_ID=0000000000000000 +MOD11_REV=0 +MOD11_TYPE=0 +MOD11_VERSION=0.0.0 +MOD12_ID=0000000000000000 +MOD12_REV=0 +MOD12_TYPE=0 +MOD12_VERSION=0.0.0 +MOD1_ID=0000000000000000 +MOD1_REV=0 +MOD1_TYPE=0 +MOD1_VERSION=0.0.0 +MOD2_ID=0000000000000000 +MOD2_REV=0 +MOD2_TYPE=0 +MOD2_VERSION=0.0.0 +MOD3_ID=0000000000000000 +MOD3_REV=0 +MOD3_TYPE=0 +MOD3_VERSION=0.0.0 +MOD4_ID=0133EF6343BAF18F +MOD4_REV=0 +MOD4_TYPE=16 +MOD4_VERSION=1.0.1175 +MOD5_ID=0000000000000000 +MOD5_REV=0 +MOD5_TYPE=0 +MOD5_VERSION=0.0.0 +MOD6_ID=004814881CD0485C +MOD6_REV=1 +MOD6_TYPE=17 +MOD6_VERSION=1.0.1175 +MOD7_ID=006854881CD0485C +MOD7_REV=1 +MOD7_TYPE=17 +MOD7_VERSION=1.0.1175 +MOD8_ID=0000000000000000 +MOD8_REV=0 +MOD8_TYPE=0 +MOD8_VERSION=0.0.0 +MOD9_ID=013184B06C50EE1D +MOD9_REV=0 +MOD9_TYPE=9 +MOD9_VERSION=1.0.1175 +MOD_PRESENT=168 +POWER_ID=000001786582