{
  "metadata": {
    "id": "rev-neo-brushless",
    "name": "REV NEO Brushless Motor",
    "type": "motor",
    "description": "REV NEO Brushless Motor for FRC. Requires SPARK MAX or compatible brushless controller. Includes integrated hall effect encoder for position/velocity feedback.",
    "manufacturer": "REV Robotics",
    "part_number": "REV-21-1650",
    "datasheet_url": "https://docs.revrobotics.com/brushless/neo/neo-motor",
    "tags": [
      "FRC",
      "NEO",
      "REV",
      "brushless",
      "BLDC",
      "hall encoder"
    ],
    "schema_version": "1.4.0",
    "version": "1.2.0",
    "taxonomy": [
      "actuator.motor.brushless",
      "robotics.frc"
    ]
  },
  "domains": [
    {
      "domain": "electrical",
      "power_domains": [
        {
          "id": "motor-power",
          "name": "Motor Power",
          "nominal_voltage_V": 12,
          "voltage_range_V": [
            6,
            16
          ],
          "isolation_type": "non_isolated",
          "ground_reference": "floating",
          "description": "3-phase power from SPARK MAX controller"
        },
        {
          "id": "encoder-logic",
          "name": "Hall Encoder Logic",
          "nominal_voltage_V": 5,
          "voltage_range_V": [
            4.5,
            5.5
          ],
          "isolation_type": "non_isolated",
          "ground_reference": "system_ground",
          "description": "5V logic for hall encoder feedback"
        }
      ],
      "resources": [
        {
          "id": "phase-a",
          "name": "Phase A",
          "functions": [
            {
              "name": "phase_a",
              "direction": "sink",
              "signal_class": "power"
            }
          ],
          "power_domain_id": "motor-power"
        },
        {
          "id": "phase-b",
          "name": "Phase B",
          "functions": [
            {
              "name": "phase_b",
              "direction": "sink",
              "signal_class": "power"
            }
          ],
          "power_domain_id": "motor-power"
        },
        {
          "id": "phase-c",
          "name": "Phase C",
          "functions": [
            {
              "name": "phase_c",
              "direction": "sink",
              "signal_class": "power"
            }
          ],
          "power_domain_id": "motor-power"
        },
        {
          "id": "hall-5v",
          "name": "Hall 5V",
          "functions": [
            {
              "name": "hall_5v",
              "direction": "sink",
              "signal_class": "power"
            }
          ],
          "power_domain_id": "encoder-logic"
        },
        {
          "id": "hall-gnd",
          "name": "Hall GND",
          "functions": [
            {
              "name": "hall_gnd",
              "direction": "sink",
              "signal_class": "ground"
            }
          ],
          "power_domain_id": "encoder-logic"
        },
        {
          "id": "hall-a",
          "name": "Hall A",
          "functions": [
            {
              "name": "hall_a",
              "direction": "source",
              "signal_class": "data"
            }
          ],
          "power_domain_id": "encoder-logic"
        },
        {
          "id": "hall-b",
          "name": "Hall B",
          "functions": [
            {
              "name": "hall_b",
              "direction": "source",
              "signal_class": "data"
            }
          ],
          "power_domain_id": "encoder-logic"
        },
        {
          "id": "hall-c",
          "name": "Hall C",
          "functions": [
            {
              "name": "hall_c",
              "direction": "source",
              "signal_class": "data"
            }
          ],
          "power_domain_id": "encoder-logic"
        }
      ],
      "interfaces": [
        {
          "id": "motor-in-3phase",
          "name": "3-Phase Motor Input",
          "protocol": {
            "type": "brushless_3phase",
            "role": "motor"
          },
          "requires": [
            {
              "function": "phase_a",
              "count": 1
            },
            {
              "function": "phase_b",
              "count": 1
            },
            {
              "function": "phase_c",
              "count": 1
            }
          ],
          "max_instances": 1,
          "description": "3-phase brushless motor input from SPARK MAX"
        },
        {
          "id": "hall-encoder-out",
          "name": "Hall Encoder Output",
          "protocol": {
            "type": "hall_encoder",
            "role": "sensor"
          },
          "requires": [
            {
              "function": "hall_a",
              "count": 1
            },
            {
              "function": "hall_b",
              "count": 1
            },
            {
              "function": "hall_c",
              "count": 1
            },
            {
              "function": "hall_gnd",
              "count": 1
            },
            {
              "function": "hall_5v",
              "count": 1
            }
          ],
          "max_instances": 1,
          "description": "Integrated hall encoder for position/velocity feedback"
        }
      ]
    }
  ]
}