4bef4e98f5
* Make setup.sh/ps1 prompt for board revision for boards that have revisions
276 lines
5.8 KiB
JSON
276 lines
5.8 KiB
JSON
{
|
|
"$id": "https://zmkfirmware.dev/zmk.metadata.json",
|
|
"title": "HardwareMetadata",
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"oneOf": [
|
|
{
|
|
"$ref": "#/$defs/board"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/shield"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/interconnect"
|
|
}
|
|
],
|
|
"$defs": {
|
|
"id": {
|
|
"type": "string",
|
|
"pattern": "^[a-z0-9_]+(@([A-Z]|[0-9]+|([0-9]+(\\.[0-9]+){1,2})))?$"
|
|
},
|
|
"revision": {
|
|
"type": "string",
|
|
"pattern": "[A-Z]|[0-9]+|([0-9]+(\\.[0-9]+){1,2})"
|
|
},
|
|
"keyboard_siblings": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"variant": {
|
|
"oneOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": ["id", "features"],
|
|
"properties": {
|
|
"id": {
|
|
"$ref": "#/$defs/id"
|
|
},
|
|
"features": {
|
|
"$ref": "#/$defs/features"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"features": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"keys",
|
|
"display",
|
|
"encoder",
|
|
"underglow",
|
|
"backlight",
|
|
"pointer"
|
|
]
|
|
}
|
|
},
|
|
"interconnects": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"$ref": "#/$defs/id"
|
|
}
|
|
},
|
|
"sibling_details": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"id": {
|
|
"$ref": "#/$defs/id"
|
|
},
|
|
"features": {
|
|
"$ref": "#/$defs/features"
|
|
},
|
|
"variants": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/variant"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"interconnect_node_labels": {
|
|
"title": "InterconnectNodeLabels",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["gpio"],
|
|
"properties": {
|
|
"gpio": { "type": "string" },
|
|
"i2c": { "type": "string" },
|
|
"spi": { "type": "string" },
|
|
"uart": { "type": "string" },
|
|
"adc": { "type": "string" }
|
|
}
|
|
},
|
|
"interconnect": {
|
|
"title": "Interconnect",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["file_format", "id", "name", "description", "url", "type"],
|
|
"properties": {
|
|
"file_format": {
|
|
"type": "string",
|
|
"const": "1"
|
|
},
|
|
"id": {
|
|
"$ref": "#/$defs/id"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"type": "string"
|
|
},
|
|
"url": {
|
|
"type": "string",
|
|
"format": "uri"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"node_labels": {
|
|
"$ref": "#/$defs/interconnect_node_labels"
|
|
},
|
|
"design_guideline": {
|
|
"type": "string"
|
|
},
|
|
"manufacturer": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"const": "interconnect"
|
|
}
|
|
}
|
|
},
|
|
"board": {
|
|
"title": "Board",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"file_format",
|
|
"id",
|
|
"name",
|
|
"url",
|
|
"arch",
|
|
"type",
|
|
"outputs"
|
|
],
|
|
"properties": {
|
|
"file_format": {
|
|
"type": "string",
|
|
"const": "1"
|
|
},
|
|
"id": {
|
|
"$ref": "#/$defs/id"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"type": "string"
|
|
},
|
|
"url": {
|
|
"type": "string",
|
|
"format": "uri"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"manufacturer": {
|
|
"type": "string"
|
|
},
|
|
"arch": {
|
|
"type": "string",
|
|
"pattern": "^[a-z0-9_]+$"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"const": "board"
|
|
},
|
|
"siblings": {
|
|
"$ref": "#/$defs/keyboard_siblings"
|
|
},
|
|
"outputs": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": ["usb", "ble"]
|
|
}
|
|
},
|
|
"features": {
|
|
"$ref": "#/$defs/features"
|
|
},
|
|
"variants": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/variant"
|
|
}
|
|
},
|
|
"exposes": {
|
|
"$ref": "#/$defs/interconnects"
|
|
},
|
|
"revisions": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/revision"
|
|
}
|
|
},
|
|
"default_revision": {
|
|
"$ref": "#/$defs/revision"
|
|
}
|
|
}
|
|
},
|
|
"shield": {
|
|
"title": "Shield",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["file_format", "id", "name", "url", "type", "requires"],
|
|
"properties": {
|
|
"file_format": {
|
|
"type": "string",
|
|
"const": "1"
|
|
},
|
|
"id": {
|
|
"$ref": "#/$defs/id"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"url": {
|
|
"type": "string",
|
|
"format": "uri"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"manufacturer": {
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"const": "shield"
|
|
},
|
|
"features": {
|
|
"$ref": "#/$defs/features"
|
|
},
|
|
"variants": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/variant"
|
|
}
|
|
},
|
|
"siblings": {
|
|
"$ref": "#/$defs/keyboard_siblings"
|
|
},
|
|
"requires": {
|
|
"$ref": "#/$defs/interconnects"
|
|
},
|
|
"exposes": {
|
|
"$ref": "#/$defs/interconnects"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|