You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

141 lines
6.0 KiB

  1. """Information that should be available to the python library.
  2. """
  3. from os import environ
  4. from datetime import date
  5. from pathlib import Path
  6. # The root of the qmk_firmware tree.
  7. QMK_FIRMWARE = Path.cwd()
  8. # Upstream repo url
  9. QMK_FIRMWARE_UPSTREAM = 'qmk/qmk_firmware'
  10. # This is the number of directories under `qmk_firmware/keyboards` that will be traversed. This is currently a limitation of our make system.
  11. MAX_KEYBOARD_SUBFOLDERS = 5
  12. # Supported processor types
  13. CHIBIOS_PROCESSORS = 'cortex-m0', 'cortex-m0plus', 'cortex-m3', 'cortex-m4', 'MKL26Z64', 'MK20DX128', 'MK20DX256', 'MK66FX1M0', 'STM32F042', 'STM32F072', 'STM32F103', 'STM32F303', 'STM32F401', 'STM32F405', 'STM32F407', 'STM32F411', 'STM32F446', 'STM32G431', 'STM32G474', 'STM32L412', 'STM32L422', 'STM32L432', 'STM32L433', 'STM32L442', 'STM32L443', 'GD32VF103', 'WB32F3G71', 'WB32FQ95'
  14. LUFA_PROCESSORS = 'at90usb162', 'atmega16u2', 'atmega32u2', 'atmega16u4', 'atmega32u4', 'at90usb646', 'at90usb647', 'at90usb1286', 'at90usb1287', None
  15. VUSB_PROCESSORS = 'atmega32a', 'atmega328p', 'atmega328', 'attiny85'
  16. # Bootloaders of the supported processors
  17. MCU2BOOTLOADER = {
  18. "MKL26Z64": "halfkay",
  19. "MK20DX128": "halfkay",
  20. "MK20DX256": "halfkay",
  21. "MK66FX1M0": "halfkay",
  22. "STM32F042": "stm32-dfu",
  23. "STM32F072": "stm32-dfu",
  24. "STM32F103": "stm32duino",
  25. "STM32F303": "stm32-dfu",
  26. "STM32F401": "stm32-dfu",
  27. "STM32F405": "stm32-dfu",
  28. "STM32F407": "stm32-dfu",
  29. "STM32F411": "stm32-dfu",
  30. "STM32F446": "stm32-dfu",
  31. "STM32G431": "stm32-dfu",
  32. "STM32G474": "stm32-dfu",
  33. "STM32L412": "stm32-dfu",
  34. "STM32L422": "stm32-dfu",
  35. "STM32L432": "stm32-dfu",
  36. "STM32L433": "stm32-dfu",
  37. "STM32L442": "stm32-dfu",
  38. "STM32L443": "stm32-dfu",
  39. "GD32VF103": "gd32v-dfu",
  40. "WB32F3G71": "wb32-dfu",
  41. "WB32FQ95": "wb32-dfu",
  42. "atmega16u2": "atmel-dfu",
  43. "atmega32u2": "atmel-dfu",
  44. "atmega16u4": "atmel-dfu",
  45. "atmega32u4": "atmel-dfu",
  46. "at90usb162": "atmel-dfu",
  47. "at90usb646": "atmel-dfu",
  48. "at90usb647": "atmel-dfu",
  49. "at90usb1286": "atmel-dfu",
  50. "at90usb1287": "atmel-dfu",
  51. "atmega32a": "bootloadhid",
  52. "atmega328p": "usbasploader",
  53. "atmega328": "usbasploader",
  54. }
  55. # Common format strings
  56. DATE_FORMAT = '%Y-%m-%d'
  57. DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S %Z'
  58. TIME_FORMAT = '%H:%M:%S'
  59. # Used when generating matrix locations
  60. COL_LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijilmnopqrstuvwxyz'
  61. ROW_LETTERS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnop'
  62. # Mapping between info.json and config.h keys
  63. LED_INDICATORS = {
  64. 'caps_lock': 'LED_CAPS_LOCK_PIN',
  65. 'num_lock': 'LED_NUM_LOCK_PIN',
  66. 'scroll_lock': 'LED_SCROLL_LOCK_PIN',
  67. }
  68. # Constants that should match their counterparts in make
  69. BUILD_DIR = environ.get('BUILD_DIR', '.build')
  70. KEYBOARD_OUTPUT_PREFIX = f'{BUILD_DIR}/obj_'
  71. # Headers for generated files
  72. GPL2_HEADER_C_LIKE = f'''\
  73. // Copyright {date.today().year} QMK
  74. // SPDX-License-Identifier: GPL-2.0-or-later
  75. '''
  76. GPL2_HEADER_SH_LIKE = f'''\
  77. # Copyright {date.today().year} QMK
  78. # SPDX-License-Identifier: GPL-2.0-or-later
  79. '''
  80. GENERATED_HEADER_C_LIKE = '''\
  81. /*******************************************************************************
  82. 88888888888 888 d8b .d888 d8b 888 d8b
  83. 888 888 Y8P d88P" Y8P 888 Y8P
  84. 888 888 888 888
  85. 888 88888b. 888 .d8888b 888888 888 888 .d88b. 888 .d8888b
  86. 888 888 "88b 888 88K 888 888 888 d8P Y8b 888 88K
  87. 888 888 888 888 "Y8888b. 888 888 888 88888888 888 "Y8888b.
  88. 888 888 888 888 X88 888 888 888 Y8b. 888 X88
  89. 888 888 888 888 88888P' 888 888 888 "Y8888 888 88888P'
  90. 888 888
  91. 888 888
  92. 888 888
  93. .d88b. .d88b. 88888b. .d88b. 888d888 8888b. 888888 .d88b. .d88888
  94. d88P"88b d8P Y8b 888 "88b d8P Y8b 888P" "88b 888 d8P Y8b d88" 888
  95. 888 888 88888888 888 888 88888888 888 .d888888 888 88888888 888 888
  96. Y88b 888 Y8b. 888 888 Y8b. 888 888 888 Y88b. Y8b. Y88b 888
  97. "Y88888 "Y8888 888 888 "Y8888 888 "Y888888 "Y888 "Y8888 "Y88888
  98. 888
  99. Y8b d88P
  100. "Y88P"
  101. *******************************************************************************/
  102. '''
  103. GENERATED_HEADER_SH_LIKE = '''\
  104. ################################################################################
  105. #
  106. # 88888888888 888 d8b .d888 d8b 888 d8b
  107. # 888 888 Y8P d88P" Y8P 888 Y8P
  108. # 888 888 888 888
  109. # 888 88888b. 888 .d8888b 888888 888 888 .d88b. 888 .d8888b
  110. # 888 888 "88b 888 88K 888 888 888 d8P Y8b 888 88K
  111. # 888 888 888 888 "Y8888b. 888 888 888 88888888 888 "Y8888b.
  112. # 888 888 888 888 X88 888 888 888 Y8b. 888 X88
  113. # 888 888 888 888 88888P' 888 888 888 "Y8888 888 88888P'
  114. #
  115. # 888 888
  116. # 888 888
  117. # 888 888
  118. # .d88b. .d88b. 88888b. .d88b. 888d888 8888b. 888888 .d88b. .d88888
  119. # d88P"88b d8P Y8b 888 "88b d8P Y8b 888P" "88b 888 d8P Y8b d88" 888
  120. # 888 888 88888888 888 888 88888888 888 .d888888 888 88888888 888 888
  121. # Y88b 888 Y8b. 888 888 Y8b. 888 888 888 Y88b. Y8b. Y88b 888
  122. # "Y88888 "Y8888 888 888 "Y8888 888 "Y888888 "Y888 "Y8888 "Y88888
  123. # 888
  124. # Y8b d88P
  125. # "Y88P"
  126. #
  127. ################################################################################
  128. '''