MembersPage/FredrikJagenheim/GenBoardConfig/ConfigFile

The configuration file for MembersPage/FredrikJagenheim/GenBoardConfig is written in a meta text language called [YAML].

It's seperated into sections with help text and description, take the warmup section as example:

Warmup:
  order: 2
  help: No help here
  parts:
    -
      label: Afterstart warmup enrichment
      unit: % added value
      variable: awev
      value: 26
      help: Afterstart warmup enrichment (%added value)
    -
      label: Afterstart warmup scaling @ 170 F
      unit: % of Afterstart warmup enrichment
      variable: awev_temp_scaling
      value: A0
      help: Afterstart warmup scaling at 170 F (0x80 half, 0xFF same as cold)
[...]

It can also handle things that need seperate calculation (the example here is wrong, but you get the idea):

Required fuel:
  order: 3
  help: No help here
  parts:
    -
      label: Required fuel
      unit: ms
      variable: req_fuel
      value: 60
      help: Injector pulse width [ms], required to supply the fuel for a
            single injection event at stoichiometric combustion, 100% 
            volumetric efficiency and standard temperature. Calculated 
            by special program which needs to be written!!!! 
      seperate:
        finish: "@engineDisplacement * @nCylinders * @target_afr *
                @injector_flow * @rated_pressure * @actual_pressure"
        parts:
          -
            label: Engine displacement
            unit: cid
            variable: engineDisplacement
            value: 0
          -
            label: Number of cylinders
            variable: nCylinders
            value: 0
[...]

And bitfields:

EGO:
  order: 1
  help: No help for EGO
  parts:
    -
      label: ego_conf
      unit: "Bitfields shouldn't use units"
      variable: ego_conf
      value: 32 
      help: config bit0:PID bit1:WBO2 bit2:incredible bit4:NBO2-l-target
      meta: bitfield
      bitfield:
        -
          bit: 0
          label: PID
        -
          bit: 1
          label: WBO2
        -
          bit: 2
          label: incredible
        -
          bit: 3
          label: Unused
        -
          bit: 4
          label: NBO2-l-target
        -
          bit: 5..7
          label: Unused
    -

Hopefully in the end it will be pretty flexible system that can easily be adapted for future generations.

There's some things that need to be done, such as proper help text and descriptions and some calculations and guesses needs to be ironed out.

Unit conversion and such is up to the application to handle.