diff options
author | Ryan <fauxpark@gmail.com> | 2022-01-17 08:44:34 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-17 08:44:34 +1100 |
commit | c72ed7c02473dec4da6cb263c1e0fb2ca4856b94 (patch) | |
tree | 4c218562b5ed5bbd34da67f37093ba6f47012d57 | |
parent | 557fbbd6afbff3bdd571e580ea79ba3905a28ce4 (diff) | |
download | qmk_firmware-c72ed7c02473dec4da6cb263c1e0fb2ca4856b94.tar.gz qmk_firmware-c72ed7c02473dec4da6cb263c1e0fb2ca4856b94.zip |
CLI: Parse USB device version BCD (#14580)
* CLI: Parse USB device version BCD
* Apply suggestions
42 files changed, 88 insertions, 52 deletions
diff --git a/data/mappings/info_config.json b/data/mappings/info_config.json index 3cb64dd3a2..cfe8807d43 100644 --- a/data/mappings/info_config.json +++ b/data/mappings/info_config.json @@ -15,6 +15,8 @@ "COMBO_TERM": {"info_key": "combo.term", "value_type": "int"}, "DEBOUNCE": {"info_key": "debounce", "value_type": "int"}, "DEVICE_VER": {"info_key": "usb.device_ver", "value_type": "hex"}, + # TODO: Replace ^^^ with vvv + #"DEVICE_VER": {"info_key": "usb.device_version", "value_type": "bcd_version"}, "DESCRIPTION": {"info_key": "keyboard_folder", "to_json": false}, "DIODE_DIRECTION": {"info_key": "diode_direction"}, "FORCE_NKRO": {"info_key": "usb.force_nkro", "value_type": "bool"}, diff --git a/data/schemas/definitions.jsonschema b/data/schemas/definitions.jsonschema index 822f237073..3f92e289a7 100644 --- a/data/schemas/definitions.jsonschema +++ b/data/schemas/definitions.jsonschema @@ -20,6 +20,10 @@ "type": "string", "pattern": "^0x[0-9A-F]{4}$" }, + "bcd_version": { + "type": "string", + "pattern": "^[0-9]{1,2}\\.[0-9]\\.[0-9]$" + }, "text_identifier": { "type": "string", "minLength": 1, @@ -70,13 +74,13 @@ "signed_int": { "type": "number", "multipleOf": 1 - } + }, "signed_int_8": { "type": "number", "min": -127, "max": 127, "multipleOf": 1 - } + }, "string_array": { "type": "array", "items": { @@ -97,7 +101,7 @@ "type": "number", "min": 0, "multipleOf": 1 - } + }, "unsigned_int_8": { "type": "number", "min": 0, diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema index 94bbbe7e85..f7b05d6655 100644 --- a/data/schemas/keyboard.jsonschema +++ b/data/schemas/keyboard.jsonschema @@ -320,7 +320,8 @@ "type": "object", "additionalProperties": false, "properties": { - "device_ver": {"$ref": "qmk.definitions.v1#/hex_number_4d"}, + "device_ver": {"$ref": "qmk.definitions.v1#/hex_number_4d"}, # Deprecated + "device_version": {"$ref": "qmk.definitions.v1#/bcd_version"}, "force_nkro": {"type": "boolean"}, "pid": {"$ref": "qmk.definitions.v1#/hex_number_4d"}, "vid": {"$ref": "qmk.definitions.v1#/hex_number_4d"}, diff --git a/docs/reference_info_json.md b/docs/reference_info_json.md index b2e6cae28e..3cc807c179 100644 --- a/docs/reference_info_json.md +++ b/docs/reference_info_json.md @@ -172,7 +172,7 @@ The following animations can be enabled: ### USB -Every USB keyboard needs to have its USB parmaters defined. At a minimum you need to set vid, pid, and device version. +Every USB keyboard needs to have its USB parameters defined. At a minimum you need to set the Vendor ID, Product ID, and device version. Example: @@ -181,7 +181,9 @@ Example: "usb": { "vid": "0xC1ED", "pid": "0x23B0", - "device_ver": "0x0001" + "device_version": "1.0.0" } } ``` + +The device version is a BCD (binary coded decimal) value, in the format `MMmr`, so the below value would look like `0x0100` in the generated code. This also means the maximum valid values for each part are `99.9.9`, despite it being a hexadecimal value under the hood. diff --git a/keyboards/40percentclub/25/config.h b/keyboards/40percentclub/25/config.h index 8ff5264671..d478131e95 100644 --- a/keyboards/40percentclub/25/config.h +++ b/keyboards/40percentclub/25/config.h @@ -19,9 +19,9 @@ #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0x4025 -#define PRODUCT_ID 0x0A0C -#define DEVICE_VER 0x0F25 +#define VENDOR_ID 0x4025 // 40% +#define PRODUCT_ID 0x0F25 +#define DEVICE_VER 0x0100 #define MANUFACTURER di0ib #define PRODUCT The 5x5 Keyboard diff --git a/keyboards/40percentclub/5x5/config.h b/keyboards/40percentclub/5x5/config.h index c9a83de737..c3bb5d6380 100644 --- a/keyboards/40percentclub/5x5/config.h +++ b/keyboards/40percentclub/5x5/config.h @@ -5,9 +5,9 @@ #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0x4025 -#define PRODUCT_ID 0x0A0C -#define DEVICE_VER 0x05B5 +#define VENDOR_ID 0x4025 // 40% +#define PRODUCT_ID 0x05B5 +#define DEVICE_VER 0x0100 #define MANUFACTURER di0ib #define PRODUCT The 5x5 Keyboard diff --git a/keyboards/40percentclub/6lit/config.h b/keyboards/40percentclub/6lit/config.h index f5c0ea3040..ae4ee1bad8 100644 --- a/keyboards/40percentclub/6lit/config.h +++ b/keyboards/40percentclub/6lit/config.h @@ -19,9 +19,9 @@ #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0x4025 -#define PRODUCT_ID 0x0A0C -#define DEVICE_VER 0x0F61 +#define VENDOR_ID 0x4025 // 40% +#define PRODUCT_ID 0x0F61 +#define DEVICE_VER 0x0100 #define MANUFACTURER di0ib #define PRODUCT The 6lit Macropad diff --git a/keyboards/40percentclub/foobar/config.h b/keyboards/40percentclub/foobar/config.h index a65b6e51bf..1e91d3bd10 100644 --- a/keyboards/40percentclub/foobar/config.h +++ b/keyboards/40percentclub/foobar/config.h @@ -19,9 +19,9 @@ #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0x4025 -#define PRODUCT_ID 0x0A0C -#define DEVICE_VER 0x0F00 +#define VENDOR_ID 0x4025 // 40% +#define PRODUCT_ID 0x0F00 +#define DEVICE_VER 0x0100 #define MANUFACTURER di0ib #define PRODUCT The foobar Keyboard diff --git a/keyboards/40percentclub/half_n_half/config.h b/keyboards/40percentclub/half_n_half/config.h index f79f83839c..0c819031da 100644 --- a/keyboards/40percentclub/half_n_half/config.h +++ b/keyboards/40percentclub/half_n_half/config.h @@ -20,9 +20,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0x4025 -#define PRODUCT_ID 0x0A0C -#define DEVICE_VER 0x4A1F +#define VENDOR_ID 0x4025 // 40% +#define PRODUCT_ID 0x4A1F +#define DEVICE_VER 0x0100 #define MANUFACTURER di0ib #define PRODUCT half_n_half diff --git a/keyboards/boston_meetup/2019/config.h b/keyboards/boston_meetup/2019/config.h index 80896242e0..138dedab57 100644 --- a/keyboards/boston_meetup/2019/config.h +++ b/keyboards/boston_meetup/2019/config.h @@ -1,7 +1,7 @@ #pragma once /* USB Device descriptor parameter */ -#define DEVICE_VER 0x07E3 +#define DEVICE_VER 0x2019 #undef MATRIX_ROWS #undef MATRIX_COLS diff --git a/keyboards/capsunlocked/cu80/v2_ansi/info.json b/keyboards/capsunlocked/cu80/v2_ansi/info.json index f0317de36d..7615d9f029 100644 --- a/keyboards/capsunlocked/cu80/v2_ansi/info.json +++ b/keyboards/capsunlocked/cu80/v2_ansi/info.json @@ -37,7 +37,7 @@ }, "url": "https://caps-unlocked.com/cu80-round-2/", "usb": { - "device_ver": "0x0001", + "device_version": "0.0.1", "pid": "0x0081", "vid": "0x4355" }, diff --git a/keyboards/capsunlocked/cu80/v2_iso/info.json b/keyboards/capsunlocked/cu80/v2_iso/info.json index c332156069..43f074f170 100644 --- a/keyboards/capsunlocked/cu80/v2_iso/info.json +++ b/keyboards/capsunlocked/cu80/v2_iso/info.json @@ -37,7 +37,7 @@ }, "url": "https://caps-unlocked.com/cu80-round-2/", "usb": { - "device_ver": "0x0001", + "device_version": "0.0.1", "pid": "0x0080", "vid": "0x4355" }, diff --git a/keyboards/clueboard/17/info.json b/keyboards/clueboard/17/info.json index fb12f7dcce..5ea4937e50 100644 --- a/keyboards/clueboard/17/info.json +++ b/keyboards/clueboard/17/info.json @@ -32,7 +32,7 @@ }, "url": "", "usb": { - "device_ver": "0x0001", + "device_version": "0.0.1", "pid": "0x2312", "vid": "0xC1ED" }, diff --git a/keyboards/clueboard/2x1800/2019/info.json b/keyboards/clueboard/2x1800/2019/info.json index a877cae8b0..886f3878bf 100644 --- a/keyboards/clueboard/2x1800/2019/info.json +++ b/keyboards/clueboard/2x1800/2019/info.json @@ -24,7 +24,7 @@ "rows": ["C0", "C1", "C2", "C3", "C7", "F7", "B1", "F2", "F3", "F4", "F5", "F6", "C6"] }, "usb": { - "device_ver": "0x0001", + "device_version": "0.0.1", "pid": "0x23A0", "vid": "0xC1ED" }, diff --git a/keyboards/clueboard/60/info.json b/keyboards/clueboard/60/info.json index 6e0d90fe1d..16f94644c9 100644 --- a/keyboards/clueboard/60/info.json +++ b/keyboards/clueboard/60/info.json @@ -25,7 +25,7 @@ "rows": ["B0", "B1", "B2", "A15", "A10"] }, "usb": { - "device_ver": "0x0001", + "device_version": "0.0.1", "pid": "0x2350", "vid": "0xC1ED" }, diff --git a/keyboards/clueboard/66/rev1/info.json b/keyboards/clueboard/66/rev1/info.json index 6ff733b3dd..bc3e1e23b6 100644 --- a/keyboards/clueboard/66/rev1/info.json +++ b/keyboards/clueboard/66/rev1/info.json @@ -37,7 +37,7 @@ "saturation_steps": 17 }, "usb": { - "device_ver": "0x0001", + "device_version": "0.0.1", "pid": "0x2301", "vid": "0xC1ED" }, diff --git a/keyboards/clueboard/66/rev2/info.json b/keyboards/clueboard/66/rev2/info.json index 27d293552d..0cfb690388 100644 --- a/keyboards/clueboard/66/rev2/info.json +++ b/keyboards/clueboard/66/rev2/info.json @@ -37,7 +37,7 @@ "saturation_steps": 17 }, "usb": { - "device_ver": "0x0001", + "device_version": "0.0.1", "pid": "0x2320", "vid": "0xC1ED" }, diff --git a/keyboards/clueboard/66/rev3/info.json b/keyboards/clueboard/66/rev3/info.json index 0f2eada753..208bc22dd1 100644 --- a/keyboards/clueboard/66/rev3/info.json +++ b/keyboards/clueboard/66/rev3/info.json @@ -37,7 +37,7 @@ "saturation_steps": 17 }, "usb": { - "device_ver": "0x0001", + "device_version": "0.0.1", "pid": "0x2370", "vid": "0xC1ED" }, diff --git a/keyboards/clueboard/66/rev4/info.json b/keyboards/clueboard/66/rev4/info.json index b40abf402f..8733216f05 100644 --- a/keyboards/clueboard/66/rev4/info.json +++ b/keyboards/clueboard/66/rev4/info.json @@ -36,7 +36,7 @@ "saturation_steps": 17 }, "usb": { - "device_ver": "0x0001", + "device_version": "0.0.1", "pid": "0x2390", "vid": "0xC1ED" }, diff --git a/keyboards/clueboard/66_hotswap/gen1/info.json b/keyboards/clueboard/66_hotswap/gen1/info.json index cf6288b545..2b42bf22e8 100644 --- a/keyboards/clueboard/66_hotswap/gen1/info.json +++ b/keyboards/clueboard/66_hotswap/gen1/info.json @@ -25,7 +25,7 @@ "rows": ["B11", "A6", "A3", "A2", "A1", "B5", "B6", "C15", "C14", "C13"] }, "usb": { - "device_ver": "0x0001", + "device_version": "0.0.1", "pid": "0x2391", "vid": "0xC1ED" }, diff --git a/keyboards/clueboard/66_hotswap/prototype/info.json b/keyboards/clueboard/66_hotswap/prototype/info.json index d3f81851f4..4940af8439 100644 --- a/keyboards/clueboard/66_hotswap/prototype/info.json +++ b/keyboards/clueboard/66_hotswap/prototype/info.json @@ -37,7 +37,7 @@ "saturation_steps": 17 }, "usb": { - "device_ver": "0x0001", + "device_version": "0.0.1", "pid": "0x2390", "vid": "0xC1ED" }, diff --git a/keyboards/clueboard/card/info.json b/keyboards/clueboard/card/info.json index 24088b2c41..62ccd9ced0 100644 --- a/keyboards/clueboard/card/info.json +++ b/keyboards/clueboard/card/info.json @@ -32,7 +32,7 @@ "saturation_steps": 17 }, "usb": { - "device_ver": "0x0001", + "device_version": "0.0.1", "pid": "0x2330", "vid": "0xC1ED" }, diff --git a/keyboards/clueboard/info.json b/keyboards/clueboard/info.json index 47514f280b..4421643e10 100644 --- a/keyboards/clueboard/info.json +++ b/keyboards/clueboard/info.json @@ -2,7 +2,7 @@ "manufacturer": "Clueboard", "maintainer": "skullydazed", "usb": { - "device_ver": "0x0001", + "device_version": "0.0.1", "vid": "0xC1ED" } } diff --git a/keyboards/coarse/ixora/config.h b/keyboards/coarse/ixora/config.h index ec7dfa705b..13246e9226 100644 --- a/keyboards/coarse/ixora/config.h +++ b/keyboards/coarse/ixora/config.h @@ -5,7 +5,7 @@ /* USB Device descriptor parameter */ #define VENDOR_ID 0xFEED #define PRODUCT_ID 0x0C61 -#define DEVICE_VER 0x00C6 +#define DEVICE_VER 0x0100 #define MANUFACTURER PeiorisBoards #define PRODUCT Ixora Rev1 diff --git a/keyboards/coarse/vinta/config.h b/keyboards/coarse/vinta/config.h index d08994ae67..4e35b3461a 100644 --- a/keyboards/coarse/vinta/config.h +++ b/keyboards/coarse/vinta/config.h @@ -5,7 +5,7 @@ /* USB Device descriptor parameter */ #define VENDOR_ID 0xFEED #define PRODUCT_ID 0x0C61 -#define DEVICE_VER 0x00C6 +#define DEVICE_VER 0x0100 #define MANUFACTURER PeiorisBoards #define PRODUCT Vinta R1 diff --git a/keyboards/cybergear/macro25/info.json b/keyboards/cybergear/macro25/info.json index a029ae1ce3..75078962bf 100644 --- a/keyboards/cybergear/macro25/info.json +++ b/keyboards/cybergear/macro25/info.json @@ -5,7 +5,7 @@ "usb": { "vid": "0x1209", "pid": "0x69A1", - "device_ver": "0x0001" + "device_version": "0.0.1", }, "diode_direction": "COL2ROW", "layouts": { diff --git a/keyboards/dyz/dyz60/info.json b/keyboards/dyz/dyz60/info.json index 24ff257554..d946f9b97b 100644 --- a/keyboards/dyz/dyz60/info.json +++ b/keyboards/dyz/dyz60/info.json @@ -20,7 +20,7 @@ "usb": { "vid": "0xD772", "pid": "0x000A", - "device_ver": "0x0001" + "device_version": "0.0.1" }, "layouts": { "LAYOUT_all": { diff --git a/keyboards/ez_maker/directpins/promicro/info.json b/keyboards/ez_maker/directpins/promicro/info.json index 419450385c..264ee350c8 100644 --- a/keyboards/ez_maker/directpins/promicro/info.json +++ b/keyboards/ez_maker/directpins/promicro/info.json @@ -26,7 +26,7 @@ }, "processor": "atmega32u4", "usb": { - "device_ver": "0x0001", + "device_version": "0.0.1", "pid": "0x2320", "vid": "0xFEED" }, diff --git a/keyboards/ez_maker/directpins/proton_c/info.json b/keyboards/ez_maker/directpins/proton_c/info.json index e3d000424a..d35fe9a90a 100644 --- a/keyboards/ez_maker/directpins/proton_c/info.json +++ b/keyboards/ez_maker/directpins/proton_c/info.json @@ -32,7 +32,7 @@ ] }, "usb": { - "device_ver": "0x0001", + "device_version": "0.0.1", "pid": "0x2321", "vid": "0xFEED" }, diff --git a/keyboards/ez_maker/directpins/teensy_2/info.json b/keyboards/ez_maker/directpins/teensy_2/info.json index 0c8fa672a9..731d089322 100644 --- a/keyboards/ez_maker/directpins/teensy_2/info.json +++ b/keyboards/ez_maker/directpins/teensy_2/info.json @@ -28,7 +28,7 @@ ] }, "usb": { - "device_ver": "0x0001", + "device_version": "0.0.1", "pid": "0x2322", "vid": "0xFEED" }, diff --git a/keyboards/ez_maker/directpins/teensy_2pp/info.json b/keyboards/ez_maker/directpins/teensy_2pp/info.json index e12544a5ef..214d4bdadc 100644 --- a/keyboards/ez_maker/directpins/teensy_2pp/info.json +++ b/keyboards/ez_maker/directpins/teensy_2pp/info.json @@ -35,7 +35,7 @@ ] }, "usb": { - "device_ver": "0x0001", + "device_version": "0.0.1", "pid": "0x2323", "vid": "0xFEED" }, diff --git a/keyboards/ez_maker/directpins/teensy_32/info.json b/keyboards/ez_maker/directpins/teensy_32/info.json index e0c024ec94..851f9e67d1 100644 --- a/keyboards/ez_maker/directpins/teensy_32/info.json +++ b/keyboards/ez_maker/directpins/teensy_32/info.json @@ -27,7 +27,7 @@ ] }, "usb": { - "device_ver": "0x0001", + "device_version": "0.0.1", "pid": "0x2324", "vid": "0xFEED" }, diff --git a/keyboards/ez_maker/directpins/teensy_lc/info.json b/keyboards/ez_maker/directpins/teensy_lc/info.json index bf93c41fab..8f64145e45 100644 --- a/keyboards/ez_maker/directpins/teensy_lc/info.json +++ b/keyboards/ez_maker/directpins/teensy_lc/info.json @@ -27,7 +27,7 @@ ] }, "usb": { - "device_ver": "0x0001", + "device_version": "0.0.1", "pid": "0x2325", "vid": "0xFEED" }, diff --git a/keyboards/forever65/info.json b/keyboards/forever65/info.json index 9f5a3539e3..b50a2cf406 100644 --- a/keyboards/forever65/info.json +++ b/keyboards/forever65/info.json @@ -12,7 +12,7 @@ "usb": { "vid": "0x4E53", "pid": "0x0F65", - "device_ver": "0x0001" + "device_version": "0.0.1" }, "features": { "bootmagic": true, diff --git a/keyboards/frooastboard/info.json b/keyboards/frooastboard/info.json index ca99cf594a..4217439b5e 100644 --- a/keyboards/frooastboard/info.json +++ b/keyboards/frooastboard/info.json @@ -37,6 +37,6 @@ "usb": { "vid": "0x4642", "pid": "0x6F21", - "device_ver": "0x0001" + "device_version": "0.0.1" } } diff --git a/keyboards/handwired/qc60/config.h b/keyboards/handwired/qc60/config.h index 0c27755910..db3d88dcf4 100644 --- a/keyboards/handwired/qc60/config.h +++ b/keyboards/handwired/qc60/config.h @@ -5,7 +5,7 @@ /* USB Device descriptor parameter */ #define VENDOR_ID 0xFEED #define PRODUCT_ID 0x0C60 -#define DEVICE_VER 0x00C6 +#define DEVICE_VER 0x0100 #define MANUFACTURER PeiorisBoards #define PRODUCT QC60 diff --git a/keyboards/lets_split_eh/config.h b/keyboards/lets_split_eh/config.h index 7527c6b3d2..787b9783b8 100644 --- a/keyboards/lets_split_eh/config.h +++ b/keyboards/lets_split_eh/config.h @@ -22,7 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. /* USB Device descriptor parameter */ #define VENDOR_ID 0xFEED #define PRODUCT_ID 0xE401 -#define DEVICE_VER 0x0E41 +#define DEVICE_VER 0x0100 #define MANUFACTURER That-Canadian #define PRODUCT Lets Split Eh? diff --git a/keyboards/ramonimbao/squishytkl/config.h b/keyboards/ramonimbao/squishytkl/config.h index 3e0812bb12..ebebc35bb4 100644 --- a/keyboards/ramonimbao/squishytkl/config.h +++ b/keyboards/ramonimbao/squishytkl/config.h @@ -22,7 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. /* USB Device descriptor parameter */ #define VENDOR_ID 0xB16B #define PRODUCT_ID 0x00B1 -#define DEVICE_VER 0xE500 +#define DEVICE_VER 0x0100 #define MANUFACTURER Ramon Imbao #define PRODUCT SquishyTKL diff --git a/keyboards/spacetime/config.h b/keyboards/spacetime/config.h index 3afcee1735..7dfca576a0 100644 --- a/keyboards/spacetime/config.h +++ b/keyboards/spacetime/config.h @@ -22,7 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. /* USB Device descriptor parameter */ #define VENDOR_ID 0xFEED #define PRODUCT_ID 0x0A0C -#define DEVICE_VER 0x4A1F +#define DEVICE_VER 0x0100 #define MANUFACTURER Kyle Terry #define PRODUCT spacetime diff --git a/keyboards/tempo_turtle/bradpad/info.json b/keyboards/tempo_turtle/bradpad/info.json index d32cc2c665..e1caeeeb88 100644 --- a/keyboards/tempo_turtle/bradpad/info.json +++ b/keyboards/tempo_turtle/bradpad/info.json @@ -10,7 +10,7 @@ "usb":{ "vid":"0x7474", "pid":"0x6270", - "device_ver":"0x0001" + "device_version":"0.0.1" }, "layouts": { "LAYOUT": { diff --git a/lib/python/qmk/cli/generate/config_h.py b/lib/python/qmk/cli/generate/config_h.py index f16dca1de8..6b1012fae7 100755 --- a/lib/python/qmk/cli/generate/config_h.py +++ b/lib/python/qmk/cli/generate/config_h.py @@ -108,6 +108,12 @@ def generate_config_items(kb_info_json, config_h_lines): config_h_lines.append(f'#ifndef {key}') config_h_lines.append(f'# define {key} {value}') config_h_lines.append(f'#endif // {key}') + elif key_type == 'bcd_version': + (major, minor, revision) = config_value.split('.') + config_h_lines.append('') + config_h_lines.append(f'#ifndef {config_key}') + config_h_lines.append(f'# define {config_key} 0x{major.zfill(2)}{minor}{revision}') + config_h_lines.append(f'#endif // {config_key}') else: config_h_lines.append('') config_h_lines.append(f'#ifndef {config_key}') diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py index 6bdf2cb166..905f10ecc2 100644 --- a/lib/python/qmk/info.py +++ b/lib/python/qmk/info.py @@ -387,6 +387,19 @@ def _extract_matrix_info(info_data, config_c): return info_data +# TODO: kill off usb.device_ver in favor of usb.device_version +def _extract_device_version(info_data): + if info_data.get('usb'): + if info_data['usb'].get('device_version') and not info_data['usb'].get('device_ver'): + (major, minor, revision) = info_data['usb']['device_version'].split('.', 3) + info_data['usb']['device_ver'] = f'0x{major.zfill(2)}{minor}{revision}' + if not info_data['usb'].get('device_version') and info_data['usb'].get('device_ver'): + major = int(info_data['usb']['device_ver'][2:4]) + minor = int(info_data['usb']['device_ver'][4]) + revision = int(info_data['usb']['device_ver'][5]) + info_data['usb']['device_version'] = f'{major}.{minor}.{revision}' + + def _extract_config_h(info_data): """Pull some keyboard information from existing config.h files """ @@ -430,6 +443,13 @@ def _extract_config_h(info_data): elif key_type == 'int': dotty_info[info_key] = int(config_c[config_key]) + elif key_type == 'bcd_version': + major = int(config_c[config_key][2:4]) + minor = int(config_c[config_key][4]) + revision = int(config_c[config_key][5]) + + dotty_info[info_key] = f'{major}.{minor}.{revision}' + else: dotty_info[info_key] = config_c[config_key] @@ -444,6 +464,7 @@ def _extract_config_h(info_data): _extract_split_main(info_data, config_c) _extract_split_transport(info_data, config_c) _extract_split_right_pins(info_data, config_c) + _extract_device_version(info_data) return info_data |