[
  {
    "descriptor": "general_speed-1",
    "Entries": [
      {
        "type_idn": 60,
        "descriptor": "Motor Direction",
        "info": "Set the motor's spinning direction (clockwise vs. counter clockwise) and flight mode (2D non-reversible vs. 3D reversible)",
        "sub_idn": 3,
        "format": "B",
        "unit": "enum",
        "frame_type": 1,
        "list_name": [
          "uncofigured",
          "3D counter clockwise",
          "3D clockwise",
          "2D counter clockwise",
          "2D clockwise"
        ],
        "list_value": [
          0,
          1,
          2,
          3,
          4
        ]
      },
      {
        "type_idn": 60,
        "descriptor": "Mode",
        "info": "PWM Mode: Commands a fraction of battery voltage. This changes as the battery voltage changes. Standard ESCs use PWM. This is the least safe mode because the upper throttle limit is determined by the battery voltage. An improper pairing of the motor, propeller, and battery could result in overheating your motor.\n\nVoltage Mode: Commands a voltage. The motor will behave the same way throughout the life of a battery, assuming the commanded voltage is less than the battery voltage. You must set the Max Voltage setting in the Tuning tab.\n\nVelocity Mode: Closed-loop, commands a velocity. The controller will adjust the applied voltage so that the motor spins at the commanded velocity. This mode has faster reaction times. Only use this if you know the properties of your propeller. You must set the Max Velocity setting in the Tuning tab.",
        "sub_idn": 0,
        "format": "B",
        "unit": "enum",
        "frame_type": 1,
        "list_name": [
          "PWM",
          "Voltage",
          "Velocity"
        ],
        "list_value": [
          0,
          1,
          2
        ]
      },
      {
        "type_idn": 76,
        "descriptor": "Communication",
        "info": "These are standard hobby communication methods. Match your module's communication method with your flight controller's communication method.",
        "sub_idn": 0,
        "format": "B",
        "unit": "enum",
        "frame_type": 1,
        "list_name": [
          "Autodetect",
          "Hobby Disabled",
          "Standard PWM",
          "OneShot125",
          "OneShot42",
          "MultiShot",
          "DShot150",
          "DShot300",
          "DShot600",
          "DShot1200"
        ],
        "list_value": [
          255,
          254,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8
        ]
      },
      {
        "type_idn": 60,
        "descriptor": "Safe Factor",
        "info": "Scales down the values coming from the FC.  Set this to 0.1 to make everything 1/10th the command.  Set this to 1 for normal use.",
        "sub_idn": 7,
        "format": "f",
        "unit": "PU",
        "frame_type": 2,
        "maximum": 1,
        "minimum": 0,
        "decimal": 2,
        "single_step": 0.01
      },
      {
        "type_idn": 60,
        "descriptor": "FC 2D/3D Mode",
        "info": "The FC and the ESC must agree upon the meaning of the signal coming out of the ESC.  When FCs are in 3D mode they remap negative signals.  This parameter keeps the FC and ESC in agreement.",
        "sub_idn": 8,
        "format": "B",
        "unit": "enum",
        "frame_type": 1,
        "list_name": [
          "2D",
          "3D"
        ],
        "list_value": [
          0,
          1
        ]
      },
	  {
        "type_idn": 86,
        "descriptor": "Arm Throttle Upper Limit",
        "info": "The upper limit of the arming region, in terms of the incoming throttle percentage over 100. 0 corresponds to 0% throttle, 1 corresponds to 100% throttle.",
        "sub_idn": 3,
        "format": "f",
        "unit": "",
        "frame_type": 2,
        "maximum": 1.0,
        "minimum": -1.0,
        "default_value": 0.10,
        "decimal": 4,
        "single_step": 0.01
      },
	  {
        "type_idn": 86,
        "descriptor": "Arm Throttle Lower Limit",
        "info": "The lower limit of the arming region, in terms of the incoming throttle percentage over 100. 0 corresponds to 0% throttle, 1 corresponds to 100% throttle.",
        "sub_idn": 4,
        "format": "f",
        "unit": "",
        "frame_type": 2,
        "maximum": 1.0,
        "minimum": -1.0,
        "default_value": 0.05,
        "decimal": 4,
        "single_step": 0.01
      },
	  {
        "type_idn": 86,
        "descriptor": "Disarm Throttle Upper Limit",
        "info": "The upper limit of the disarming region, in terms of the incoming throttle percentage over 100. 0 corresponds to 0% throttle, 1 corresponds to 100% throttle.",
        "sub_idn": 6,
        "format": "f",
        "unit": "",
        "frame_type": 2,
        "maximum": 1.0,
        "minimum": -1.0,
        "default_value": 0.05,
        "decimal": 4,
        "single_step": 0.01
      },
	  {
        "type_idn": 86,
        "descriptor": "Disarm Throttle Lower Limit",
        "info": "The lower limit of the disarming region, in terms of the incoming throttle percentage over 100. 0 corresponds to 0% throttle, 1 corresponds to 100% throttle.",
        "sub_idn": 7,
        "format": "f",
        "unit": "",
        "frame_type": 2,
        "maximum": 1.0,
        "minimum": -1.0,
        "default_value": 0.00,
        "decimal": 4,
        "single_step": 0.01
      },
	  {
        "type_idn": 86,
        "descriptor": "Arm On Throttle",
        "info": "Determines if the throttle input will be used to transition to the armed state. When this is set to Do Not Arm On Throttle, throttle messages will not cause the module to arm.",
        "sub_idn": 2,
        "format": "B",
        "unit": "enum",
        "frame_type": 1,
        "list_name": [
          "Do Not Arm On Throttle",
          "Arm On Throttle"
        ],
        "list_value": [
          0,
          1
        ]
      },
	  {
        "type_idn": 86,
        "descriptor": "Disarm On Throttle",
        "info": "Determines if the throttle input will be used to transition to the disarmed state. When this is set to Do Not Disrm On Throttle, throttle messages will not cause the module to disarm.",
        "sub_idn": 5,
        "format": "B",
        "unit": "enum",
        "frame_type": 1,
        "list_name": [
          "Do Not Disarm On Throttle",
          "Disarm On Throttle"
        ],
        "list_value": [
          0,
          1
        ]
      },
	  {
        "type_idn": 86,
        "descriptor": "Consecutive Arming Throttles to Arm",
        "info": "The number of consecutive throttles in the arming region required to arm the module. Any throttles that come in outside of the arming region will reset the count.",
        "sub_idn": 8,
        "format": "I",
        "unit": "Throttles",
        "frame_type": 2,
        "maximum": 100000,
        "minimum": 1,
        "single_step": 1
      },
	  {
        "type_idn": 86,
        "descriptor": "Disarm Behavior",
        "info": "Determines what behavior to perform when disarming. The module will perform the first part of the requested behavior, wait for the module to come to a stop, play the song as appropriate, and then perform the last part of its behavior.",
        "sub_idn": 9,
        "format": "B",
        "unit": "enum",
        "frame_type": 1,
        "list_name": [
          "Coast",
          "0V to Coast",
		  "0V to Brake"
        ],
        "list_value": [
          0,
          1,
		  2
        ]
      },
	  {
        "type_idn": 86,
        "descriptor": "Disarm Song Playback Option",
        "info": "Determines how many times the disarming song will play on a disarm.",
        "sub_idn": 10,
        "format": "B",
        "unit": "enum",
        "frame_type": 1,
        "list_name": [
          "Never Play",
          "Play Once",
		  "Play Continuosly"
        ],
        "list_value": [
          0,
          1,
		  2
        ]
      },
	  {
        "type_idn": 52,
        "descriptor": "Timeout Behavior",
        "info": "Determines what behavior to perform when a timeout error occurs. The module will perform the first part of the requested behavior, wait for the module to come to a stop, play the song as appropriate, and then perform the last part of its behavior.",
        "sub_idn": 18,
        "format": "B",
        "unit": "enum",
        "frame_type": 1,
        "list_name": [
          "Coast",
          "0V to Coast",
		  "0V to Brake"
        ],
        "list_value": [
          0,
          1,
		  2
        ]
      },
	  {
        "type_idn": 52,
        "descriptor": "Timeout Song Playback Option",
        "info": "Determines how many times the timeout song will play on a timeout error.",
        "sub_idn": 19,
        "format": "B",
        "unit": "enum",
        "frame_type": 1,
        "list_name": [
          "Never Play",
          "Play Once",
		  "Play Continuosly"
        ],
        "list_value": [
          0,
          1,
		  2
        ]
    },
    {
      "type_idn": 88,
      "descriptor": "Throttle Control Value Index",
      "info": "The IFCI throttle control value index",
      "sub_idn": 2,
      "format": "B",
      "unit": "enum",
      "frame_type": 1,
      "list_name": [
          "0",
          "1",
          "2",
          "3",
          "4",
          "5",
          "6",
          "7",
          "8",
          "9",
          "10",
          "11",
          "12",
          "13",
          "14",
          "15",
          "Unconfigured"
      ],
      "list_value": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          13,
          14,
          15,
          255
      ]
    }
    ]
  }
]
