diff --git a/vimfiles.stefan/plugin/toptica.vim b/vimfiles.stefan/plugin/toptica.vim index fc1b306..09d6ed8 100644 --- a/vimfiles.stefan/plugin/toptica.vim +++ b/vimfiles.stefan/plugin/toptica.vim @@ -12,6 +12,7 @@ command -nargs=1 -complete=dir DigiFalc call s:ProjectSet('digifalc', '') command -nargs=1 -complete=dir ServoBoard call s:ProjectSet('servoboard', '') command -nargs=1 -complete=dir DlMotor call s:ProjectSet('dl-motor', '') command -nargs=1 -complete=dir Pfd call s:ProjectSet('pfd', '') +command -nargs=1 -complete=dir Tiny call s:ProjectSet('tiny', '') command -nargs=1 -complete=dir OperationPanelF1 call s:ProjectSet('operation-panel-f1', '') command -nargs=1 -complete=dir OperationPanelF4 call s:ProjectSet('operation-panel-f4', '') command -nargs=1 -complete=dir DeCoF call s:ProjectSet('decof', '') @@ -22,6 +23,7 @@ let s:path_orig = $PATH set titlestring= function! s:ProjectSet(project_type, project_base_dir) + execute "DirenvExport" let g:project_type = a:project_type let g:jenkins_url = 'http://jenkins.toptica.com' @@ -72,6 +74,9 @@ function! s:ProjectSet(project_type, project_base_dir) let g:ProjectSrcDirRel = 'src' let s:ProjectSrcDir = s:ProjectBaseDir.'/'.g:ProjectSrcDirRel + " Direnv + let $DIRENV_DIR = s:ProjectBaseDir + function! g:Compiler_version() if exists('g:ProjectBuildDir') let cmakefile = g:ProjectBuildDir . '/CMakeCache.txt' @@ -92,11 +97,15 @@ function! s:ProjectSet(project_type, project_base_dir) execute 'cd '.s:ProjectSrcDir execute 'set path-=./**' execute 'set path+=' . s:ProjectSrcDir.'/**' - " execute 'set path+=' . g:ProjectBuildDir.'/**' let s:invoke_options = '' " used for --project=... - if (g:project_type == 'dlcpro-new') || (g:project_type == 'dlcpro') + if (count(['pfd', 'tiny'], g:project_type) > 0) + let g:ProjectBuildDir = s:ProjectSrcDir.'/.build/target/firmware/Debug' + let g:DebugRemote = v:true + let g:termdebugger = 'arm-none-eabi-gdb' + let s:gdb_connect_script = g:ProjectBuildDir.'/gdbinit' + elseif (count(['dlcpro', 'dlcpro-new'], g:project_type) > 0) let s:invoke_options = ' --project='.g:project_type set wildignore-=**/firmware/src/device-control/** set wildignore+=**/shg-firmware/** @@ -104,12 +113,18 @@ function! s:ProjectSet(project_type, project_base_dir) let g:DeviceIP = 'dlc_pro__040083' let g:DebugRemote = v:true let g:ProjectBuildDir = s:ProjectSrcDir.'/.build/'.g:project_type + if (g:project_type == 'dlcpro-new') + let s:firware_file_name = 'DLCpro-archive-SSW7.fw' + else + let s:firware_file_name = 'DLCpro-archive.fw' + endif " if (g:project_type == 'dlcpro-new') let g:termdebugger = 'arm-v7a-linux-gnueabihf-gdb' " FIXME: get from ??? " else " let g:termdebugger = 'arm-cortexa8-linux-gnueabi-gdb' " FIXME: get from ??? " endif - let s:gdb_connect_script = g:ProjectBuildDir.'/gdb-connect.txt' + let s:gdb_connect_script = g:ProjectBuildDir.'/gdbinit' + command! DlcProGuiStart execute("!~/dlcpro/pc-gui/start-gui&") elseif ((g:project_type == 'dlcpro-tui') || (g:project_type == 'dlcpro-tui-simulator')) let s:Program = '/user-interface/src/user-interface' let s:Elffile = s:Program @@ -151,11 +166,18 @@ function! s:ProjectSet(project_type, project_base_dir) let s:Elffile = s:Program let g:termdebugger = 'gdb' let g:DebugRemote = v:false + command! DlcProGuiStart execute("!~/dlcpro/pc-gui/start-gui&") elseif (g:project_type == 'topmode') + let g:ProjectBuildDir = s:ProjectSrcDir.'/.build/' let g:DeviceIP = 'topmode_stefan' let g:DebugRemote = v:true + let g:termdebugger = 'arm-v7a-linux-gnueabihf-gdb' " FIXME: get from ??? + let s:gdb_connect_script = g:ProjectBuildDir.'/gdbinit' + let s:firware_file_name = 'TopMode-CHARM-Control-1.5.4-dev.fw' + command! TopmodeGuiStart execute("!~/topmode/pc-gui/start-gui&") elseif (g:project_type == 'topmode-gui') let g:DebugRemote = v:false + command! TopmodeGuiStart execute("!~/topmode/pc-gui/start-gui&") elseif (g:project_type == 'digifalc') let s:Program = '/digifalc-image.bin' let s:Elffile = '/application/digifalc.elf' @@ -171,13 +193,6 @@ function! s:ProjectSet(project_type, project_base_dir) let s:Elffile = '/application/dl-motor.elf' let g:DebugRemote = v:true let g:termdebugger = 'arm-none-eabi-gdb' - elseif (g:project_type == 'pfd') - let g:ProjectBuildDir = s:ProjectSrcDir.'/.build/target/firmware/Debug' - let s:Program = '/pfd-firmware.bin' - let s:Elffile = '/pfd-firmware.elf' - let g:DebugRemote = v:true - let g:termdebugger = 'arm-none-eabi-gdb' - let s:gdb_connect_script = g:ProjectBuildDir.'/gdb-connect.txt' elseif (g:project_type == 'operation-panel-f1') let g:stm32_target = 'STM32F10X' let s:Program = '/firmware/operation_panel_'.g:stm32_target.'.bin' @@ -297,23 +312,26 @@ function! s:Make(args, async_mode) let l:makeprg = s:invoke.' -e' let l:args = a:args if l:args == '' - let l:args = 'build' " default + let l:args = 'build' " needed for --project endif let task = split(l:args)[0] let options = system(s:invoke.' --complete -- '.task.' -') " Add --project if necessary + " if '--project' =~ options && '--project' !~ l:args if options =~ '--project' && '--project' !~ l:args let l:args .= ' --project='.g:project_type endif " Add --device-ip if necessary + " if '--device-ip' =~ options && '--device-ip' !~ l:args if options =~ '--device-ip' && '--device-ip' !~ l:args let l:args .= ' --device-ip='.g:DeviceIP endif - " Add --config=Debug - if options =~ '--config' && '--config' !~ l:args - let l:args .= ' --config=Debug' + " Add --build-type=Debug + " if '--build-type' =~ options && '--build-type' !~ l:args + if options =~ '--build-type' && '--build-type' !~ l:args + let l:args .= ' --build-type=Debug' endif let &makeprg = l:makeprg @@ -390,47 +408,78 @@ endfunction " ================ " Regression Tests " ================ -" function! g:DlcproRegtestCmd(arguments) -" return s:DlcproRegtestCmd('', '', '0', '1', '', '--capture=no', a:arguments) -" endfunction -" function! g:DlcproRegtestDlProCmd(arguments) -" return s:DlcproRegtestCmd('dlc_pro_proto_050003', 'elab-dlcpro2', '2', '1', 'DLpro', '', a:arguments) -" endfunction -" function! g:DlcproRegtestTaProCmd(arguments) -" return s:DlcproRegtestCmd('dlc_pro_045396', 'elab-dlcpro2', '3', '1', 'TApro', '-m "not usb and not usbstick"', a:arguments) -" endfunction -" function! g:DlcproRegtestCtlCmd(arguments) -" return s:DlcproRegtestCmd('dlc_pro__040120', 'elab-dlcpro2', '1', '1', 'CTL', '-m "not usb and not usbstick"', a:arguments) -" endfunction -" function! g:DlcproRegtestDualDlCmd(arguments) -" return s:DlcproRegtestCmd('dlc_pro_041299', 'elab-dlcpro2', '4', '2', 'DLpro', '-m "not usb and not usbstick"', a:arguments) -" endfunction -" function! g:DlcproRegtestDualDl1Cmd(arguments) -" return s:DlcproRegtestCmd('dlc_pro_041299', 'elab-dlcpro2', '4', '1', 'DLpro', '-m "not usb and not usbstick"', a:arguments) -" endfunction -" function! g:DlcproRegtestShgProCmd(arguments) -" return s:DlcproRegtestCmd('dlc_pro_041355', 'elab-dlcpro2', '7', '1', 'TA-SHGpro', '-m "not usb and not usbstick"', a:arguments) -" endfunction -command -nargs=1 -complete=file DlcproRegtest call s:DlcproRegtest('') +command -nargs=1 -complete=file DlcproRegtest call s:DlcproRegtest(g:DeviceIP, 'DL-CBCpro', g:DlcproRegtest_marks, '') +command -nargs=? -complete=file DlcproRegtestDL call s:DlcproRegtest('dl', 'DLpro', '', '') +command -nargs=? -complete=file DlcproRegtestCTL call s:DlcproRegtest('ctl', 'CTL', '', '') +command -nargs=? -complete=file DlcproRegtestSHG call s:DlcproRegtest('shg', 'TA-SHGpro', '', '') +command -nargs=? -complete=file DlcproRegtestDual call s:DlcproRegtest('dual-dl', '', '', '') +command -nargs=? -complete=file DlcproRegtestQuad call s:DlcproRegtest('quad-dl', 'DLpro', '', '') let g:DlcproRegtest_fast_restart = 1 +let g:DlcproRegtest_smoke = 1 +let g:DlcproRegtest_fw_update = 0 let g:DlcproRegtest_marks = 'usb, usbstick, si, si1, servo_control, eom, cavity, cell_spectroscopy, falc, pfd, smc' -function! s:DlcproRegtest(test_cmd) +function! s:DlcproRegtest(device_ip, laser1_type, marks, tests) execute "wa" - let regtest_cmd = s:invoke + let regtest_cmd = 'time' + \.' '.s:invoke \.' -e' \.' regtest' - \.' --device-ip='.g:DeviceIP - \.' --laser1-type=DL-CBCpro' - let regtest_cmd .= ' --marks="'.g:DlcproRegtest_marks.'"' + \.' --device-ip='.a:device_ip + \.' --laser1-type='.a:laser1_type + + let firmware_file = g:ProjectBuildDir.'/artifacts/'.s:firware_file_name + if filereadable(firmware_file) + let regtest_cmd .= ' --firmware-file='.firmware_file + \.' --version-file='.g:ProjectBuildDir.'/artifacts/VERSION' + endif + + let regtest_cmd .= ' --marks="'.a:marks.'"' if g:DlcproRegtest_fast_restart == 1 let regtest_cmd .= ' --fast-restart' endif - if (a:test_cmd != "") - let regtest_cmd .= ' --tests="'.a:test_cmd.'"' + if g:DlcproRegtest_fw_update == 1 + let regtest_cmd .= ' --do-fw-update' + endif + if g:DlcproRegtest_smoke == 1 + let regtest_cmd .= ' --smoke' + endif + if (a:tests != "") + let regtest_cmd .= ' --tests="'.a:tests.'"' + endif + + echo regtest_cmd + execute "terminal ++shell " . regtest_cmd +endfunction + +command -nargs=? -complete=file TopmodeRegtest call s:TopmodeRegtest('topmode_stefan', '', '') +function! s:TopmodeRegtest(device_ip, marks, tests) + execute "wa" + + let regtest_cmd = 'time' + \.' '.s:invoke + \.' -e' + \.' regtest' + \.' --device-ip='.a:device_ip + " \.' --do-fw-update' + " \.' --smoke' + + let firmware_file = g:ProjectBuildDir.'/artifacts/'.s:firware_file_name + if filereadable(firmware_file) + let regtest_cmd .= ' --firmware-file='.firmware_file + endif + if g:DlcproRegtest_fw_update == 1 + let regtest_cmd .= ' --do-fw-update' + endif + if g:DlcproRegtest_smoke == 1 + let regtest_cmd .= ' --smoke' + endif + let regtest_cmd .= ' --marks="'.a:marks.'"' + if (a:tests != "") + let regtest_cmd .= ' --tests="'.a:tests.'"' endif echo regtest_cmd