diff --git a/lib/obp60task/gen_set.pl b/lib/obp60task/gen_set.pl new file mode 100755 index 0000000..35fb2db --- /dev/null +++ b/lib/obp60task/gen_set.pl @@ -0,0 +1,89 @@ +#!/bin/perl -w +#A tool to generate that part of config.json that deals with pages and Fields. + +use List::Util qw( min max ); + + +#List of all Pages and the number of parameters they expect. +%NoOfFieldsPerPage=qw( + ApparentWind 0 + Autobahn 0 + Battery2 0 + Battery 0 + BME280 0 + Clock 0 + DST810 0 + FourValues2 4 + FourValues 4 + Generator 0 + KeelPosition 0 + OneValue 1 + RollPitch 0 + RudderPosition 0 + Solar 0 + ThreeValues 3 + TwoValues 2 + Voltage 0 + White 0 + WindRose 0 + WindRoseFlex 6 + ); +# No changes neede beyond this pint +$NoOfPages=10; +@Defaults=qw(Voltage WindRose OneValue TwoValues ThreeValues FourValues FourValues2 Clock RollPitch Battery2); +@Numbers=qw(one two three four five six seven eight nine ten); +@Pages=sort(keys(%NoOfFieldsPerPage)); +$MaxNoOfFieldsPerPage=max(values(%NoOfFieldsPerPage)); + + +for ($PageNo=1;$PageNo<=$NoOfPages;$PageNo++){ + print "{\n"; + print "\t","\"name\": \"page", $PageNo,"type\",\n"; + print "\t","\"label\": \"Type\",\n"; + print "\t",'"type": "list",',"\n"; + print "\t",'"default": "'; + print "$Defaults[$PageNo-1]"; + print'"',"\n"; + print "\t",'"description": "Type of page for page ',$PageNo,'",',"\n"; + print "\t",'"list": ['; + for ($p=0;$p<=$#Pages;$p++) { + print '"', $Pages[$p], '"' ; + if ($p < $#Pages){print ","} + } + print "]\n"; + print "\t",'"category": "OBP60 Page ',$PageNo,'",',"\n"; + print "\t",'"capabilities": {',"\n"; + print "\t\t",'"obp60":"true"',"\n"; + print "\t",'}',"\n"; + print "\t",'"condition":['; + for ($vp=$PageNo;$vp<=$NoOfPages;$vp++){ + print '"{visiblePages":"',$vp,'"},'; + } + #"visiblePages":"2"},{"visiblePages":"3"},{"visiblePages":"4"},{"visiblePages":"5"},{"visiblePages":"6"},{"visiblePages":"7"},{"visiblePages":"8"},{"visiblePages":"9"},{"visiblePages":"10"} + print "\b",']',"\n"; + print '},',"\n"; + for ($FieldNo=1; $FieldNo<=$MaxNoOfFieldsPerPage;$FieldNo++){ + print "{\n"; + print "\t",'"name": "page',$PageNo,'value',$FieldNo,'",',"\n"; + print "\t",'"label": "Field ',$FieldNo,'",',"\n"; + print "\t",'"type": "boatData",',"\n"; + print "\t",'"default": "",',"\n"; + print "\t",'"description": "The display for field ',$Numbers[$FieldNo-1],'",',"\n"; + print "\t",'"category": "OBP60 Page ',$PageNo,'",',"\n"; + print "\t",'"capabilities": {',"\n"; + print "\t",' "obp60":"true"',"\n"; + print "\t",'},',"\n"; + print "\t",'"condition":['; + foreach $page (@Pages) { + if($NoOfFieldsPerPage{$page}>=$FieldNo){ + print '{"page1type":"',$page,'"},'; + } + + #{"page1type":"OneValue"},{"page1type":"TwoValues"},{"page1type":"ThreeValues"},{"page1type":"FourValues"},{"page1type":"FourValues2"},{"page1type":"WindRoseFlex"} + } + print "\b],\n"; + print '},',"\n"; + } +} + +