{
  "metadata": {
    "id": "rev-41-1097-smart-robot-servo",
    "name": "REV Smart Robot Servo (REV-41-1097)",
    "type": "servo",
    "schema_version": "1.4.0",
    "version": "1.2",
    "manufacturer": "REV Robotics",
    "part_number": "REV-41-1097",
    "datasheet_url": "https://www.revrobotics.com/rev-41-1097/",
    "description": "Configurable metal-geared smart servo. 3-wire female PWM/power connector (GND/PWM/V+), rotating 25T spline output, and 4 mounting holes.",
    "taxonomy": [
      "actuator.motor.servo",
      "robotics.ftc"
    ]
  },
  "domains": [
    {
      "domain": "electrical",
      "resources": [
        {
          "id": "female_gnd",
          "name": "female-connector-gnd",
          "connector_type": "servo_pwm_female_3pos",
          "functions": [
            {
              "name": "ground",
              "direction": "bidirectional",
              "signal_class": "ground",
              "shareable_with": [
                "ground"
              ]
            }
          ],
          "notes": "Female connector contact for Ground (GND)."
        },
        {
          "id": "female_pwm",
          "name": "female-connector-pwm",
          "connector_type": "servo_pwm_female_3pos",
          "functions": [
            {
              "name": "pwm_input",
              "direction": "input",
              "signal_class": "data"
            }
          ],
          "notes": "Female connector contact for PWM signal."
        },
        {
          "id": "female_vplus",
          "name": "female-connector-power",
          "connector_type": "servo_pwm_female_3pos",
          "functions": [
            {
              "name": "power_input",
              "direction": "input",
              "signal_class": "power"
            }
          ],
          "notes": "Female connector contact for supply voltage (V+)."
        }
      ],
      "interfaces": [
        {
          "id": "pwm_power_in",
          "name": "PWM + Power (3-wire female)",
          "protocol": {
            "type": "digital",
            "role": "peer"
          },
          "requires": [
            {
              "function": "ground",
              "count": 1
            },
            {
              "function": "pwm_input",
              "count": 1
            },
            {
              "function": "power_input",
              "count": 1
            }
          ],
          "constraints": {
            "max_connections": 1
          }
        }
      ]
    },
    {
      "domain": "mechanical",
      "resources": [
        {
          "id": "output_spline_25t",
          "name": "servo-output-spline-25t",
          "connector_type": "servo_spline_25t",
          "functions": [
            {
              "name": "rotary_output",
              "direction": "output",
              "signal_class": "mechanical"
            }
          ],
          "notes": "Rotating servo output spline (25T)."
        },
        {
          "id": "mount_hole_1",
          "name": "mount-hole-1",
          "connector_type": "mounting_hole",
          "functions": [
            {
              "name": "mounting_hole",
              "direction": "passive",
              "signal_class": "mechanical"
            }
          ]
        },
        {
          "id": "mount_hole_2",
          "name": "mount-hole-2",
          "connector_type": "mounting_hole",
          "functions": [
            {
              "name": "mounting_hole",
              "direction": "passive",
              "signal_class": "mechanical"
            }
          ]
        },
        {
          "id": "mount_hole_3",
          "name": "mount-hole-3",
          "connector_type": "mounting_hole",
          "functions": [
            {
              "name": "mounting_hole",
              "direction": "passive",
              "signal_class": "mechanical"
            }
          ]
        },
        {
          "id": "mount_hole_4",
          "name": "mount-hole-4",
          "connector_type": "mounting_hole",
          "functions": [
            {
              "name": "mounting_hole",
              "direction": "passive",
              "signal_class": "mechanical"
            }
          ]
        }
      ],
      "interfaces": [
        {
          "id": "rotary_output",
          "name": "Rotary output (spline)",
          "protocol": {
            "type": "mechanical",
            "role": "output"
          },
          "requires": [
            {
              "function": "rotary_output",
              "count": 1
            }
          ],
          "constraints": {
            "max_connections": 1
          }
        },
        {
          "id": "mount_pattern_4x",
          "name": "Mounting pattern (4 holes)",
          "protocol": {
            "type": "mechanical",
            "role": "mount"
          },
          "requires": [
            {
              "function": "mounting_hole",
              "count": 1
            }
          ],
          "constraints": {
            "max_connections": 4
          },
          "notes": "Add up to 4 instances; each instance binds to one mounting_hole resource (mount-hole-1..4)."
        }
      ],
      "metadata": {
        "mount_hole_count": 4
      }
    }
  ]
}