{
  "metadata": {
    "id": "ctre-talon-srx",
    "name": "CTRE Talon SRX",
    "type": "motor_controller",
    "description": "CTRE Talon SRX Motor Controller. High-performance brushed motor controller with CAN or PWM control for FRC.",
    "manufacturer": "CTRE",
    "part_number": "Talon SRX",
    "datasheet_url": "https://store.ctr-electronics.com/talon-srx/",
    "tags": [
      "FRC",
      "motor controller",
      "brushed",
      "CAN",
      "PWM",
      "CTRE"
    ],
    "schema_version": "1.4.0",
    "version": "0.1.0",
    "taxonomy": [
      "actuator.motor_controller",
      "robotics.frc"
    ]
  },
  "domains": [
    {
      "domain": "electrical",
      "power_domains": [
        {
          "id": "12v-in",
          "name": "12V Input",
          "nominal_voltage_V": 12,
          "voltage_range_V": [
            6,
            16
          ],
          "max_current_mA": 40000
        }
      ],
      "resources": [
        {
          "id": "vin-pos",
          "name": "VIN+ (Red)",
          "functions": [
            {
              "name": "VIN+",
              "direction": "sink",
              "signal_class": "power"
            }
          ],
          "power_domain_id": "12v-in"
        },
        {
          "id": "vin-neg",
          "name": "VIN- (Black)",
          "functions": [
            {
              "name": "VIN-",
              "direction": "sink",
              "signal_class": "ground"
            }
          ],
          "power_domain_id": "12v-in"
        },
        {
          "id": "can-h-pwm-sig",
          "name": "CAN_H / PWM_SIG (Yellow)",
          "functions": [
            {
              "name": "CAN_H",
              "direction": "bidirectional",
              "signal_class": "data",
              "shareable_with": []
            },
            {
              "name": "PWM_SIG",
              "direction": "sink",
              "signal_class": "data",
              "shareable_with": []
            }
          ]
        },
        {
          "id": "can-l-pwm-gnd",
          "name": "CAN_L / PWM_GND (Green)",
          "functions": [
            {
              "name": "CAN_L",
              "direction": "bidirectional",
              "signal_class": "data",
              "shareable_with": []
            },
            {
              "name": "PWM_GND",
              "direction": "sink",
              "signal_class": "ground",
              "shareable_with": []
            }
          ]
        },
        {
          "id": "motor-pos",
          "name": "M+ (White)",
          "functions": [
            {
              "name": "M+",
              "direction": "source",
              "signal_class": "power"
            }
          ],
          "power_domain_id": "12v-in"
        },
        {
          "id": "motor-neg",
          "name": "M- (Green)",
          "functions": [
            {
              "name": "M-",
              "direction": "source",
              "signal_class": "ground"
            }
          ],
          "power_domain_id": "12v-in"
        }
      ],
      "interfaces": [
        {
          "id": "power-in",
          "name": "Power Input",
          "protocol": {
            "type": "power",
            "role": "sink"
          },
          "requires": [
            {
              "function": "VIN+",
              "count": 1
            },
            {
              "function": "VIN-",
              "count": 1
            }
          ],
          "max_instances": 1
        },
        {
          "id": "can-bus",
          "name": "CAN Bus",
          "protocol": {
            "type": "can",
            "role": "slave"
          },
          "requires": [
            {
              "function": "CAN_H",
              "count": 1
            },
            {
              "function": "CAN_L",
              "count": 1
            }
          ],
          "max_instances": 1
        },
        {
          "id": "pwm-control",
          "name": "PWM Control",
          "protocol": {
            "type": "digital",
            "role": "input"
          },
          "requires": [
            {
              "function": "PWM_SIG",
              "count": 1
            },
            {
              "function": "PWM_GND",
              "count": 1
            }
          ],
          "max_instances": 1
        },
        {
          "id": "motor-out",
          "name": "Motor Output (Brushed)",
          "protocol": {
            "type": "power",
            "role": "source"
          },
          "requires": [
            {
              "function": "M+",
              "count": 1
            },
            {
              "function": "M-",
              "count": 1
            }
          ],
          "max_instances": 1
        }
      ]
    }
  ],
  "node_geometry": {
    "xScale": 1,
    "yScale": 1,
    "outline": {
      "preset": "rounded_rectangle"
    }
  }
}