diff --git a/src/epics/util/feCodeGen.pl b/src/epics/util/feCodeGen.pl index 11228d1cfdc14ddcf5c09a37c4061b740f27b292..99698a66c85744eba718c271ce7d7e490e882a91 100755 --- a/src/epics/util/feCodeGen.pl +++ b/src/epics/util/feCodeGen.pl @@ -241,6 +241,9 @@ $modelCodeFilepath .= $skeleton; $modelCodeKernDir = $modelCodeFilepath . "/kernel_mod/"; $modelCodeUspDir = $modelCodeFilepath . "/userspace/"; $modelEpicsCodeDir = $modelCodeFilepath . "/epics/"; +$modelConfigCodeDir = $modelCodeFilepath . "/config/"; +$statespaceConfigFile = $modelConfigCodeDir . "statespace.json"; +$newFilterConfigFile = $modelConfigCodeDir . "filters.json"; #This generates /path/to/module(_usp)/modelname_core.c $modelCodeKernFilepath = $modelCodeKernDir. $skeleton . "_core.c"; @@ -279,13 +282,14 @@ open(CONN_ERRORS,">$connectErrFile") || die "cannot open compile warnings output make_path( $modelCodeKernDir, { mode => 0755 }); make_path( $modelCodeUspDir, { mode => 0755 }); make_path( $modelEpicsCodeDir, { mode => 0755 }); +make_path( $modelConfigCodeDir, { mode => 0755 }); open(OUT,">".$modelCodeKernFilepath) || die "cannot open c file for writing $modelCodeKernFilepath"; open(OUT2,">".$modelCodeUspFilepath) || die "cannot open c file for writing $modelCodeUspFilepath"; # Save existing front-end Makefile @months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); - my ($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = localtime(); - my $year = 1900 + $yearOffset; - $theTime = sprintf("%d_%s_%02d_%02d:%02d:%02d", $year, $months[$month], $dayOfMonth, $hour, $minute, $second); +my ($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = localtime(); +my $year = 1900 + $yearOffset; +$theTime = sprintf("%d_%s_%02d_%02d:%02d:%02d", $year, $months[$month], $dayOfMonth, $hour, $minute, $second); my $hfname = "$rcg_src_dir/src/include/$ARGV[1].h"; if (-e $hfname) { system("/bin/mv -f $hfname $hfname~"); @@ -1923,8 +1927,8 @@ END - my $statespace_json = JSON->new; - my $data_to_json = { model_state_space_template=> [] }; + my $statespace_json = JSON->new->utf8->pretty(1); + my $data_to_json = { model_statespace_description=> [] }; #// - Includes for User defined function calls. # Group includes for function calls at beginning @@ -1936,7 +1940,7 @@ END if ($partType[$ii] eq "Statespace" ) { #print "Statespace part: ins: " . $::partInCnt[$::partInNum[$ii][0]] . ", outs: " . $::partOutputs[$::partOutNum[$ii][0]] ."\n"; - push ( @{ $data_to_json->{model_state_space_template} } , + push ( @{ $data_to_json->{model_statespace_description} } , { part_name=>$::xpartName[$ii], part_index=>int($::partnum_to_ss_index_map[$ii]), @@ -1948,7 +1952,9 @@ END } } - print $statespace_json->encode($data_to_json) . "\n"; + open(STATESPACE, ">$statespaceConfigFile") || die "cannot open statespace config file () for writing"; + print STATESPACE $statespace_json->encode($data_to_json) . "\n"; + close STATESPACE; @@ -2171,7 +2177,7 @@ require "lib/createEpicsMakefile.pm"; #// - Write FOTON filter definition file. # Create Foton filter file (with header) -$jj = $filtCnt / 40; +$jj = $filtCnt / 40; #Div by 40 because we are putting 4 on each line $jj ++; #print OUTG "$jj lines to print\n"; my $filtFile = $configFilesDir . "/$ifo" . uc($skeleton) . "\.txt"; @@ -2210,6 +2216,24 @@ EOF } close OUTG; +# +# Write new filter description JSON file +# +my $filters_json = JSON->new->utf8->pretty(1); +my $filters_to_json = { model_filters_description=> [] }; + +open(FILTER_JSON_OUT, ">" . $newFilterConfigFile) || die "cannot open $newFilterConfigFile file for writing"; +for($ii=0; $ii < $filtCnt / 10; $ii++) +{ + push ( @{ $filters_to_json->{model_filters_description} } , + { + filter_name=>$filterName[$ii], + filter_index=>int($ii), + } ); +} +print FILTER_JSON_OUT $filters_json->encode($filters_to_json) . "\n"; +close FILTER_JSON_OUT; + #// - Generate standard set of MEDM screen files. # Take care of generating Epics screens ***************************************************** diff --git a/src/fe/statespace/stateSpacePart.c b/src/fe/statespace/stateSpacePart.c index 3cfd7289ab82bf32ce0d2d3bc4910ad9a5d5469e..d9ad1dc0985c7a2aecd08b7f476870843f731407 100644 --- a/src/fe/statespace/stateSpacePart.c +++ b/src/fe/statespace/stateSpacePart.c @@ -230,7 +230,7 @@ int matrixConfigureStateSpace( g_config_hold.feedthrough_matrix[i * g_config_hold.in_len + j] = feedthrough_matrix[count++]; - asm volatile("":::"memory"); + //asm volatile("":::"memory"); ligo_atomic_set(&g_part_index_to_load, part_index);