[
  {
    "descriptor": "advanced_vertiq_81xx_g2_hyperdrive_speed",
    "Entries": [
      {
        "type_idn": 102,
        "descriptor": "Supply Voltage Limit End",
        "info": "A safety feature that does not allow the motor to regenerate the supply above the set voltage. Used in conjunction with Supply Voltage Limit Start",
        "sub_idn": 5,
        "format": "f",
        "unit": "V",
        "frame_type": 2,
        "maximum": 32768,
        "minimum": 0,
        "single_step": 0.1,
        "decimal": 1
      },
      {
        "type_idn": 102,
        "descriptor": "Supply Voltage Limit Start",
        "info": "The supply voltage at which the safeties will start to attempt to limit the regeneration of the motor",
        "sub_idn": 6,
        "format": "f",
        "unit": "V",
        "frame_type": 2,
        "maximum": 32768,
        "minimum": 0,
        "single_step": 0.1,
        "decimal": 1
      },
      {
        "type_idn": 102,
        "descriptor": "Speed Redline Start",
        "info": "A safety feature that attempts to limit the speed of the motor. The motor will start to adjust the applied motor current to oppose overspeeding when the motor exceeds the Speed Redline Start and will adjust more aggressively as the speed increases up to the Speed Redline End",
        "sub_idn": 3,
        "format": "f",
        "unit": "rad/s",
        "frame_type": 2,
        "maximum": 1200,
        "minimum": 0,
        "single_step": 1
      },
      {
        "type_idn": 102,
        "descriptor": "Speed Redline End",
        "info": "A safety feature that attempts to limit the speed of the motor. The motor will start to adjust the applied motor current to oppose overspeeding when the motor exceeds the Speed Redline Start and will adjust more aggressively as the speed increases up to the Speed Redline End",
        "sub_idn": 4,
        "format": "f",
        "unit": "rad/s",
        "frame_type": 2,
        "maximum": 1300,
        "minimum": 0,
        "single_step": 1
      },
      {
        "type_idn": 102,
        "descriptor": "Motor Current Max",
        "info": "The maximum motor current to apply to the motor",
        "sub_idn": 1,
        "format": "f",
        "unit": "A",
        "frame_type": 2,
        "maximum": 120,
        "minimum": 0,
        "single_step": 0.1,
        "decimal": 1
      },
      {
        "type_idn": 69,
        "descriptor": "Power Filter Cutoff",
        "info": "The cutoff frequency of the low pass filter on the voltage and current measurements.",
        "sub_idn": 6,
        "format": "I",
        "unit": "Hz",
        "frame_type": 2,
        "maximum": 25000,
        "minimum": 1,
        "single_step": 1
      },
      {
        "type_idn": 73,
        "descriptor": "Temperature Filter Cutoff",
        "info": "The cutoff frequency of the low pass filter on the PCB temperature measurement.",
        "sub_idn": 2,
        "format": "I",
        "unit": "Hz",
        "frame_type": 2,
        "maximum": 25000,
        "minimum": 1,
        "single_step": 1
      },
      {
        "type_idn": 5,
        "descriptor": "Module ID",
        "info": "Change this to bus multiple motors on a single serial line. Each motor must have a unique ID.",
        "sub_idn": 14,
        "format": "B",
        "unit": "ID",
        "frame_type": 2,
        "maximum": 62,
        "minimum": 0,
        "single_step": 1
      },
      {
        "type_idn": 61,
        "descriptor": "Volume Max",
        "info": "The maximum voltage applied during buzzing. Like a volume knob.",
        "sub_idn": 4,
        "format": "f",
        "unit": "V",
        "frame_type": 2,
        "maximum": 1,
        "minimum": 0,
        "single_step": 0.05,
        "decimal": 2
      },
      {
        "type_idn": 16,
        "descriptor": "UART Baud Rate",
        "info": "Bits per second of the serial/UART protocol.  The baud rate is effective immediately and you will have to reconnect with the proper baud rate.",
        "sub_idn": 0,
        "format": "I",
        "unit": "bps",
        "frame_type": 1,
        "list_name": [
          "921600",
          "115200",
          "38400",
          "19200",
          "9600"
        ],          
        "list_value": [
          921600,
          115200,
          38400,
          19200,
          9600
        ]
      },
      {
        "type_idn": 11,
        "descriptor": "Revert to Factory Default Key 1",
        "info": "Enter 12345678 here.  This will enable the Revert to Factory Defaults feature.",
        "sub_idn": 2,
        "format": "I",
        "unit": "",
        "frame_type": 2,
        "maximum": 4294967295,
        "minimum": 0,
        "single_step": 1
      },
      {
        "type_idn": 11,
        "descriptor": "Revert to Factory Default Key 2",
        "info": "Enter 11223344 here.  This will enable the Revert to Factory Defaults feature.",
        "sub_idn": 3,
        "format": "I",
        "unit": "",
        "frame_type": 2,
        "maximum": 4294967295,
        "minimum": 0,
        "single_step": 1
      },
      {
        "type_idn": 11,
        "descriptor": "Revert to Factory Defaults",
        "info": "Reverts any user saved information to the factory settings. Need to enter the factory default keys first. The motor will reboot and the GUI will disconnect.",
        "sub_idn": 1,
        "format": "n",
        "unit": "",
        "frame_type": 5
      },
      {
        "type_idn": 76,
        "descriptor": "Hobby Calibrated Communication Protocol",
        "info": "Indicates which hobby protocol the module has been calibrated with. A module can only be calibrated with one protocol at a time. The module does not need to be calibrated to listen to a protocol, for example you could control the module with PWM in the No Calibration state. Calibration is just an available option if the flight controller and the motor have different minimum and maximum limits. This setting is NOT USER SETTABLE, it can only be changed by performing a calibration.",
        "sub_idn": 2,
        "format": "B",
        "unit": "enum",
        "frame_type": 1,
        "list_name": [
          "No Calibration",
          "Autodetect",
          "Hobby Disabled",
          "Standard PWM",
          "OneShot125",
          "OneShot42",
          "MultiShot",
          "DShot150",
          "DShot300",
          "DShot600",
          "DShot1200"
        ],
        "list_value": [
          0,
          255,
          254,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8
        ]
      },
      {
        "type_idn": 76,
        "descriptor": "Hobby Calibration High",
        "info": "The high end of the calibration in us",
        "sub_idn": 3,
        "format": "I",
        "unit": "us",
        "frame_type": 2,
        "maximum": 4294967295,
        "minimum": 0,
        "single_step": 1
      },
      {
        "type_idn": 76,
        "descriptor": "Hobby Calibration Low",
        "info": "The low end of the calibration in us",
        "sub_idn": 4,
        "format": "I",
        "unit": "us",
        "frame_type": 2,
        "maximum": 4294967295,
        "minimum": 0,
        "single_step": 1
      },
      {
        "type_idn": 76,
        "descriptor": "Hobby Calibration Reset",
        "info": "Resets all Hobby calibration data to the factory default state. The module will have no user calibration stored on it after this reset.",
        "sub_idn": 5,
        "format": "n",
        "unit": "",
        "frame_type": 5
      },
	  {
        "type_idn": 85,
        "descriptor": "Stow Target Acceleration",
        "info": "Determines the acceleration that will try to be maintained during the stow. A low acceleration will cause a more gradual transition to stow, while a high acceleration will cause a more aggressive stow.",
        "sub_idn": 2,
        "format": "f",
        "unit": "rad/s^2",
        "frame_type": 2,
        "maximum": 1000.0,
        "minimum": 0.0,
        "decimal": 1,
        "single_step": 1.0,
        "nan": true
      },
	  {
        "type_idn": 52,
        "descriptor": "Timeout Meaning",
        "info": "Used to indicate if a timeout is intended to be used as an intentional disarm or as an error. If set to disarm, the timeout will act just like a disarm and trigger the disarm behavior and song. When set to an error, the timeout behavior and song will trigger. A timeout will cause the motor to become disarmed in either case.",
        "sub_idn": 17,
        "format": "B",
        "unit": "enum",
        "frame_type": 1,
        "list_name": [
          "Timeout Error",
          "Disarm"
        ],
        "list_value": [
          0,
          1
        ]
      },
	  {
        "type_idn": 87,
        "descriptor": "Stopped Speed",
        "info": "Determines the speed the module must be below to be considered stopped.",
        "sub_idn": 0,
        "format": "f",
        "unit": "rad/s",
        "frame_type": 2,
        "maximum": 1000,
        "minimum": 2.0,
        "default_value": 5.0,
        "decimal": 1,
        "single_step": 0.1
      },
	  {
        "type_idn": 87,
        "descriptor": "Stopped Time",
        "info": "Determines how long the long the module must be stopped before considering a stop complete.",
        "sub_idn": 1,
        "format": "f",
        "unit": "s",
        "frame_type": 2,
        "maximum": 1000,
        "minimum": 0,
        "default_value": 1.0,
        "decimal": 1,
        "single_step": 0.1
      },
	  {
        "type_idn": 86,
        "descriptor": "Always Armed",
        "info": "Determines if the module will always force itself to arm, regardless of what throttle it receives.",
        "sub_idn": 1,
        "format": "B",
        "unit": "enum",
        "frame_type": 1,
        "list_name": [
          "Normal Arming",
          "Always Armed"
        ],
        "list_value": [
          0,
          1
        ]
    },
	  {
        "type_idn": 80,
        "descriptor": "Arming by DroneCAN ArmingStatus",
        "info": "Determines if the module will arm and disarm using DroneCAN ArmingStatus messages.",
        "sub_idn": 12,
        "format": "B",
        "unit": "enum",
        "frame_type": 1,
        "list_name": [
          "Disabled",
          "Enabled"
        ],
        "list_value": [
          0,
          1
        ]
    },
	  {
        "type_idn": 80,
        "descriptor": "DroneCAN Bypass Arming",
        "info": "Allows to bypass arming with DroneCAN throttle messages. DroneCAN throttle messages will not be impacted by the arming state, will not cause arming state transitions, and will use the zero behavior setting. Useful for continuing to use 'old-style' DroneCAN support.",
        "sub_idn": 11,
        "format": "B",
        "unit": "enum",
        "frame_type": 1,
        "list_name": [
          "Normal Arming",
          "Bypass Arming"
        ],
        "list_value": [
          0,
          1
        ]
      },
      {
        "type_idn": 80,
        "descriptor": "DroneCAN Telemetry Style",
        "info": "'Use New-Style Telemetry' will output ESC Status and ESC Status Extended as your telemetry. 'Use Old-Style Telemetry' will output ESC Status and Device Temperature as your telemetry.",
        "sub_idn": 13,
        "format": "B",
        "unit": "enum",
        "frame_type": 1,
        "list_name": [
          "Use New-Style Telemetry",
          "Use Old-Style Telemetry"
        ],
        "list_value": [
          0,
          1
        ]
      },
	  {
        "type_idn": 60,
        "descriptor": "Zero Spin Throttle Percentage",
        "info": "Determines the throtlte percentage to treat as the zero spin throttle. A throttle of that percentage will cause a 0% spin, and all throttles greater than that will be scaled based on that 0%.",
        "sub_idn": 9,
        "format": "f",
        "unit": "",
        "frame_type": 2,
        "maximum": 1.00,
        "minimum": 0.00,
        "default_value": 0.00,
        "decimal": 2,
        "single_step": 0.01
      },
	  {
        "type_idn": 60,
        "descriptor": "Zero Spin Throttle Tolerance",
        "info": "Determines the tolerance below (or above on the negative side) the zero spin throttle to also consider as a 0% spin throttle.",
        "sub_idn": 10,
        "format": "f",
        "unit": "",
        "frame_type": 2,
        "maximum": 1.00,
        "minimum": 0.00,
        "default_value": 0.00,
        "decimal": 2,
        "single_step": 0.01
      },
      {
        "type_idn": 60,
        "descriptor": "Report Telemetry as Speed",
        "info": "Updates all telemetry sources to report the module's speed rather than velocity.",
        "sub_idn": 11,
        "format": "B",
        "unit": "enum",
        "frame_type": 1,
        "list_name": [
          "Disabled",
          "Enabled"
        ],
        "list_value": [
          0,
          1
        ]
      },
      {
        "type_idn": 86,
        "descriptor": "Arming State",
        "info": "Reports the current arming state and allows for manually changing it. Setting this to a different state will force the motor to transition to that arming state.",
        "sub_idn": 12,
        "format": "B",
        "unit": "enum",
        "frame_type": 1,
        "list_name": [
          "Disarmed",
		  "Armed"
        ],
        "list_value": [
          0,
          1
        ]
      },
      {
        "type_idn": 86,
        "descriptor": "Manual Arming Throttle Source",
        "info": "Determines the throttle source to lock on to when aming manually or using Always Armed.",
        "sub_idn": 11,
        "format": "B",
        "unit": "enum",
        "frame_type": 1,
        "list_name": [
          "Unknown",
          "Hobby",
          "DroneCAN",
          "IQUART"
        ],
        "list_value": [
          0,
          1,
          2,
          3
        ]
      },
      {
        "type_idn": 80,
        "descriptor": "DroneCAN Bitrate",
        "info": "The bitrate used by the CAN bus",
        "sub_idn": 10,
        "format": "I",
        "unit": "bps",
        "frame_type": 1,
        "list_name": [
          "1000000",
          "500000",
          "250000",
          "125000"
        ],
        "list_value": [
          1000000,
          500000,
          250000,
          125000
        ]
      },
      {
          "type_idn": 59,
          "descriptor": "Maximum Angular Velocity",
          "info": "Sets the maximum angular speed the motor will move at when moving to a position.",
          "sub_idn": 18,
          "format": "f",
          "unit": "rad/s",
          "frame_type": 2,
          "maximum": 10000,
          "minimum": -10000,
          "decimal": 2,
          "single_step": 0.1
      },
      {
          "type_idn": 102,
          "descriptor": "Motoring Supply Current Limit Enable",
          "info": "Enables the motoring supply current limit feature which will attempt to limit the maximum current draw from the supply when motoring",
          "sub_idn": 7,
          "format": "B",
          "unit": "enum",
          "frame_type": 1,
          "list_name": [
            "Disabled",
            "Enabled"
          ],
          "list_value": [
            0,
            1
          ]
      },
      {
          "type_idn": 102,
          "descriptor": "Regenerating Supply Current Limit Enable",
          "info": "Enables the regenerating supply current limit feature which will attempt to limit the maximum current sent to the supply when regenerating",
          "sub_idn": 10,
          "format": "B",
          "unit": "enum",
          "frame_type": 1,
          "list_name": [
            "Disabled",
            "Enabled"
          ],
          "list_value": [
            0,
            1
          ]
      },
      {
        "type_idn": 102,
        "descriptor": "Motoring Supply Current Limit",
        "info": "The supply current to limit the supply current draw to when using the motoring supply current limit",
        "sub_idn": 18,
        "format": "f",
        "unit": "A",
        "frame_type": 2,
        "maximum": 120,
        "minimum": 0,
        "single_step": 0.1,
        "decimal": 1
      },
      {
        "type_idn": 102,
        "descriptor": "Motoring Supply Current Limit Kp",
        "info": "Kp for the closed loop adjustment available when using the motoring supply current limiter",
        "sub_idn": 19,
        "format": "f",
        "unit": "",
        "frame_type": 2,
        "maximum": 10,
        "minimum": 0,
        "decimal": 2,
        "single_step": 0.01
      },
      {
        "type_idn": 102,
        "descriptor": "Motoring Supply Current Limit Ki",
        "info": "Ki for the closed loop adjustment available when using the motoring supply current limiter",
        "sub_idn": 20,
        "format": "f",
        "unit": "",
        "frame_type": 2,
        "maximum": 10,
        "minimum": 0,
        "decimal": 2,
        "single_step": 0.01
      },
      {
        "type_idn": 102,
        "descriptor": "Motoring Supply Current Limit Kd",
        "info": "Kd for the closed loop adjustment available when using the motoring supply current limiter",
        "sub_idn": 21,
        "format": "f",
        "unit": "",
        "frame_type": 2,
        "maximum": 10,
        "minimum": 0,
        "decimal": 3,
        "single_step": 0.001
      },
      {
        "type_idn": 102,
        "descriptor": "Motoring Supply Current Limit Max Adjust",
        "info": "The maximum amount of closed loop adjustment that the motoring supply current limiter can add to its feed-forward limit.",
        "sub_idn": 22,
        "format": "f",
        "unit": "A",
        "frame_type": 2,
        "maximum": 120,
        "minimum": 0,
        "decimal": 1,
        "single_step": 0.1
      },
      {
        "type_idn": 102,
        "descriptor": "Regnerating Supply Current Limit",
        "info": "The supply current to limit the supply current regenerated when using the regenerating supply current limit",
        "sub_idn": 23,
        "format": "f",
        "unit": "A",
        "frame_type": 2,
        "maximum": 0,
        "minimum": -120,
        "single_step": 0.1,
        "decimal": 1
      },
      {
        "type_idn": 102,
        "descriptor": "Regenerating Supply Current Limit Kp",
        "info": "Kp for the closed loop adjustment available when using the regenerating supply current limiter",
        "sub_idn": 24,
        "format": "f",
        "unit": "",
        "frame_type": 2,
        "maximum": 10,
        "minimum": 0,
        "decimal": 2,
        "single_step": 0.01
      },
      {
        "type_idn": 102,
        "descriptor": "Regenerating Supply Current Limit Ki",
        "info": "Ki for the closed loop adjustment available when using the regenerating supply current limiter",
        "sub_idn": 25,
        "format": "f",
        "unit": "",
        "frame_type": 2,
        "maximum": 10,
        "minimum": 0,
        "decimal": 2,
        "single_step": 0.01
      },
      {
        "type_idn": 102,
        "descriptor": "Regenerating Supply Current Limit Kd",
        "info": "Kd for the closed loop adjustment available when using the regenerating supply current limiter",
        "sub_idn": 26,
        "format": "f",
        "unit": "",
        "frame_type": 2,
        "maximum": 10,
        "minimum": 0,
        "decimal": 3,
        "single_step": 0.001
      },
      {
        "type_idn": 102,
        "descriptor": "Regenerating Supply Current Limit Max Adjust",
        "info": "The maximum amount of closed loop adjustment that the regenerating supply current limiter can add to its feed-forward limit.",
        "sub_idn": 27,
        "format": "f",
        "unit": "A",
        "frame_type": 2,
        "maximum": 120,
        "minimum": 0,
        "decimal": 1,
        "single_step": 0.1
      }
    ]
  }
]