Add HWID option for the boards // Issue #632

This commit is contained in:
Valeriy Koval
2016-04-25 12:35:21 +03:00
parent 7cb21dd981
commit 1872ecff16
9 changed files with 134 additions and 76 deletions

View File

@ -6,9 +6,10 @@
"f_cpu": "8000000L",
"mcu": "atmega32u4",
"usb_product": "Adafruit Flora",
"pid": "0x8004",
"variant": "flora",
"vid": "0x239A"
"hwid": [
["0x239A", "0x8004"]
]
},
"frameworks": ["arduino"],
"name": "Adafruit Flora",
@ -34,9 +35,10 @@
"f_cpu": "8000000L",
"mcu": "atmega32u4",
"usb_product": "Bluefruit Micro",
"pid": "0x800A",
"variant": "bluefruitmicro",
"vid": "0x239A"
"hwid": [
["0x239A", "0x800A"]
]
},
"frameworks": ["arduino"],
"name": "Adafruit Bluefruit Micro",
@ -82,9 +84,10 @@
"f_cpu": "8000000L",
"mcu": "atmega32u4",
"usb_product": "Feather 32u4",
"pid": "0x800C",
"variant": "feather32u4",
"vid": "0x239C"
"hwid": [
["0x239A", "0x800C"]
]
},
"frameworks": ["arduino"],
"name": "Adafruit Feather",

View File

@ -5,10 +5,12 @@
"extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_LILYPAD_USB",
"f_cpu": "8000000L",
"mcu": "atmega32u4",
"pid": "0x9208",
"usb_product": "LilyPad USB",
"variant": "leonardo",
"vid": "0x1B4F"
"hwid": [
["0x1B4F", "0x9207"],
["0x1B4F", "0x9208"]
]
},
"frameworks": ["arduino"],
"name": "Arduino LilyPad USB",
@ -160,10 +162,14 @@
"extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_ESPLORA",
"f_cpu": "16000000L",
"mcu": "atmega32u4",
"pid": "0x803c",
"usb_product": "Arduino Esplora",
"variant": "leonardo",
"vid": "0x2341"
"hwid": [
["0x2341", "0x003C"],
["0x2341", "0x803C"],
["0x2A03", "0x003C"],
["0x2A03", "0x803C"]
]
},
"frameworks": ["arduino"],
"name": "Arduino Esplora",
@ -229,10 +235,14 @@
"extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_LEONARDO",
"f_cpu": "16000000L",
"mcu": "atmega32u4",
"pid": "0x8036",
"usb_product": "Arduino Leonardo",
"variant": "leonardo",
"vid": "0x2341"
"hwid": [
["0x2341", "0x0036"],
["0x2341", "0x8036"],
["0x2A03", "0x0036"],
["0x2A03", "0x8036"]
]
},
"frameworks": ["arduino"],
"name": "Arduino Leonardo",
@ -361,10 +371,14 @@
"extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_MICRO",
"f_cpu": "16000000L",
"mcu": "atmega32u4",
"pid": "0x8037",
"usb_product": "Arduino Micro",
"variant": "micro",
"vid": "0x2341"
"hwid": [
["0x2341", "0x0037"],
["0x2341", "0x8037"],
["0x2A03", "0x0037"],
["0x2A03", "0x8037"]
]
},
"frameworks": ["arduino"],
"name": "Arduino Micro",
@ -556,10 +570,14 @@
"extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_ROBOT_CONTROL",
"f_cpu": "16000000L",
"mcu": "atmega32u4",
"pid": "0x8038",
"usb_product": "Robot Control",
"variant": "robot_control",
"vid": "0x2341"
"hwid": [
["0x2341", "0x0038"],
["0x2341", "0x8038"],
["0x2A03", "0x0038"],
["0x2A03", "0x8038"]
]
},
"frameworks": ["arduino"],
"name": "Arduino Robot Control",
@ -583,10 +601,14 @@
"extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_ROBOT_MOTOR",
"f_cpu": "16000000L",
"mcu": "atmega32u4",
"pid": "0x8039",
"usb_product": "Robot Motor",
"variant": "robot_motor",
"vid": "0x2341"
"hwid": [
["0x2341", "0x0039"],
["0x2341", "0x8039"],
["0x2A03", "0x0039"],
["0x2A03", "0x8039"]
]
},
"frameworks": ["arduino"],
"name": "Arduino Robot Motor",
@ -631,10 +653,14 @@
"extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_YUN",
"f_cpu": "16000000L",
"mcu": "atmega32u4",
"pid": "0x8041",
"usb_product": "Arduino Yun",
"variant": "yun",
"vid": "0x2341"
"hwid": [
["0x2341", "0x0041"],
["0x2341", "0x8041"],
["0x2A03", "0x0041"],
["0x2A03", "0x8041"]
]
},
"frameworks": ["arduino"],
"name": "Arduino Yun",
@ -660,11 +686,13 @@
"f_cpu": "84000000L",
"mcu": "sam3x8e",
"cpu": "cortex-m3",
"pid": "0x003e",
"usb_product": "Arduino Due",
"variant": "arduino_due_x",
"vid": "0x2341",
"ldscript": "sam3x8e.ld"
"ldscript": "sam3x8e.ld",
"hwid": [
["0x2341", "0x003D"],
["0x2A03", "0x003D"]
]
},
"frameworks": ["arduino"],
"name": "Arduino Due (Programming Port)",
@ -688,11 +716,13 @@
"f_cpu": "84000000L",
"mcu": "sam3x8e",
"cpu": "cortex-m3",
"pid": "0x003e",
"usb_product": "Arduino Due",
"variant": "arduino_due_x",
"vid": "0x2341",
"ldscript": "sam3x8e.ld"
"ldscript": "sam3x8e.ld",
"hwid": [
["0x2341", "0x003E"],
["0x2A03", "0x003E"]
]
},
"frameworks": ["arduino"],
"name": "Arduino Due (USB Native Port)",
@ -716,11 +746,13 @@
"f_cpu": "48000000L",
"mcu": "samd21g18a",
"cpu": "cortex-m0plus",
"pid": "0x804d",
"usb_product": "Arduino Zero",
"variant": "arduino_zero",
"vid": "0x2341",
"ldscript": "flash_with_bootloader.ld"
"ldscript": "flash_with_bootloader.ld",
"hwid": [
["0x2341", "0x804D"],
["0x03EB", "0x2157"]
]
},
"frameworks": ["arduino"],
"name": "Arduino Zero (Programming Port)",
@ -744,11 +776,14 @@
"f_cpu": "48000000L",
"mcu": "samd21g18a",
"cpu": "cortex-m0plus",
"pid": "0x804d",
"usb_product": "Arduino Zero",
"variant": "arduino_zero",
"vid": "0x2341",
"ldscript": "flash_with_bootloader.ld"
"ldscript": "flash_with_bootloader.ld",
"hwid": [
["0x2341", "0x804D"],
["0x2341", "0x004D"],
["0x2341", "0x824D"]
]
},
"frameworks": ["arduino"],
"name": "Arduino Zero (USB Native Port)",

View File

@ -83,10 +83,11 @@
"mcu": "at91sam3x8e",
"cpu": "cortex-m3",
"ldscript": "sam3x8e.ld",
"pid": "0x078A",
"usb_product": "Digistump DigiX",
"variant": "digispark_digix",
"vid": "0x16D0"
"hwid": [
["0x16D0", "0x078A"]
]
},
"frameworks": ["arduino"],
"name": "Digistump DigiX",

View File

@ -5,10 +5,11 @@
"core": "arduino",
"f_cpu": "8000000L",
"mcu": "atmega32u4",
"pid": "0x9208",
"usb_product": "EngduinoV1",
"variant": "engduinov1",
"vid": "0x1B4F"
"hwid": [
["0x1B4F", "0x9208"]
]
},
"frameworks": ["arduino"],
"name": "Engduino 1",
@ -32,10 +33,11 @@
"core": "arduino",
"f_cpu": "8000000L",
"mcu": "atmega32u4",
"pid": "0x9208",
"usb_product": "EngduinoV2",
"variant": "engduinov2",
"vid": "0x1B4F"
"hwid": [
["0x1B4F", "0x9208"]
]
},
"frameworks": ["arduino"],
"name": "Engduino 2",
@ -59,10 +61,11 @@
"core": "arduino",
"f_cpu": "8000000L",
"mcu": "atmega32u4",
"pid": "0x9208",
"usb_product": "EngduinoV3",
"variant": "engduinov3",
"vid": "0x1B4F"
"hwid": [
["0x1B4F", "0x9208"]
]
},
"frameworks": ["arduino"],
"name": "Engduino 3",

View File

@ -131,9 +131,10 @@
"core": "arduino",
"f_cpu": "16000000L",
"mcu": "atmega32u4",
"pid": "0x8036",
"variant": "32u4",
"vid": "0x2341"
"hwid": [
["0x2341", "0x8036"]
]
},
"frameworks": ["arduino"],
"name": "Microduino Core USB (ATmega32U4@16M,5V)",

View File

@ -50,11 +50,12 @@
"f_cpu": "84000000L",
"mcu": "at91sam3x8e",
"cpu": "cortex-m3",
"pid": "0x003e",
"usb_product": "Arduino Due",
"variant": "arduino_due_x",
"vid": "0x2341",
"ldscript": "sam3x8e.ld"
"ldscript": "sam3x8e.ld",
"hwid": [
["0x2341", "0x003E"]
]
},
"frameworks": ["arduino"],
"name": "SainSmart Due (Programming Port)",
@ -78,11 +79,12 @@
"f_cpu": "84000000L",
"mcu": "at91sam3x8e",
"cpu": "cortex-m3",
"pid": "0x003e",
"usb_product": "Arduino Due",
"variant": "arduino_due_x",
"vid": "0x2341",
"ldscript": "sam3x8e.ld"
"ldscript": "sam3x8e.ld",
"hwid": [
["0x2341", "0x003E"]
]
},
"frameworks": ["arduino"],
"name": "SainSmart Due (USB Native Port)",
@ -322,10 +324,11 @@
"extra_flags": "-DARDUINO_ARCH_AVR",
"f_cpu": "16000000L",
"mcu": "atmega32u4",
"pid": "0x8036",
"usb_product": "RedBearLab Blend",
"variant": "leonardo",
"vid": "0x2341"
"hwid": [
["0x2341", "0x8036"]
]
},
"frameworks": ["arduino"],
"name": "RedBearLab Blend",
@ -350,10 +353,11 @@
"extra_flags": "-DARDUINO_ARCH_AVR",
"f_cpu": "8000000L",
"mcu": "atmega32u4",
"pid": "0x2404",
"usb_product": "RedBearLab Blend",
"variant": "micro",
"vid": "0x03EB"
"hwid": [
["0x03EB", "0x2404"]
]
},
"frameworks": ["arduino"],
"name": "RedBearLab Blend Micro 3.3V/8MHz",
@ -378,10 +382,11 @@
"extra_flags": "-DARDUINO_ARCH_AVR",
"f_cpu": "16000000L",
"mcu": "atmega32u4",
"pid": "0x2404",
"usb_product": "RedBearLab Blend",
"variant": "micro",
"vid": "0x03EB"
"hwid": [
["0x03EB", "0x2404"]
]
},
"frameworks": ["arduino"],
"name": "RedBearLab Blend Micro 3.3V/16MHz (overclock)",
@ -428,10 +433,11 @@
"extra_flags": "-DARDUINO_ARCH_AVR -DAVR_LEONARDO",
"f_cpu": "8000000L",
"mcu": "atmega32u4",
"pid": "0x6096",
"usb_product": "LightUp",
"variant": "leonardo",
"vid": "0x1d50"
"hwid": [
["0x1d50", "0x6096"]
]
},
"frameworks": ["arduino"],
"name": "LightUp",
@ -524,9 +530,13 @@
"f_cpu": "8000000L",
"mcu": "atmega32u4",
"variant" : "quirkbot",
"vid": "0xf055",
"pid": "0xf055",
"usb_product": "Quirkbot"
"usb_product": "Quirkbot",
"hwid": [
["0x2886", "0xf004"],
["0x2886", "0xf005"],
["0x2886", "0xf006"],
["0x2886", "0xf007"]
]
},
"frameworks": ["arduino"],
"name": "Quirkbot",

View File

@ -26,10 +26,12 @@
"extra_flags": "-DARDUINO_ARCH_AVR -DAVR_PROMICRO16",
"f_cpu": "16000000L",
"mcu": "atmega32u4",
"pid": "0x9206",
"usb_product": "SparkFun Pro Micro",
"variant": "sparkfun_promicro",
"vid": "0x1B4F"
"hwid": [
["0x1B4F", "0x9205"],
["0x1B4F", "0x9206"]
]
},
"frameworks": ["arduino"],
"name": "SparkFun Pro Micro 5V/16MHz",
@ -53,10 +55,12 @@
"extra_flags": "-DARDUINO_ARCH_AVR -DAVR_PROMICRO8",
"f_cpu": "8000000L",
"mcu": "atmega32u4",
"pid": "0x9204",
"usb_product": "SparkFun Pro Micro",
"variant": "sparkfun_promicro",
"vid": "0x1B4F"
"hwid": [
["0x1B4F", "0x9203"],
["0x1B4F", "0x9204"]
]
},
"frameworks": ["arduino"],
"name": "SparkFun Pro Micro 3.3V/8MHz",
@ -80,10 +84,12 @@
"extra_flags": "-DARDUINO_ARCH_AVR -DAVR_FIOV3",
"f_cpu": "8000000L",
"mcu": "atmega32u4",
"pid": "0xF101",
"usb_product": "SparkFun Fio v3",
"variant": "sparkfun_promicro",
"vid": "0x1B4F"
"hwid": [
["0x1B4F", "0xF100"],
["0x1B4F", "0xF101"]
]
},
"frameworks": ["arduino"],
"name": "SparkFun Fio V3 3.3V/8MHz",
@ -107,10 +113,12 @@
"extra_flags": "-DARDUINO_ARCH_AVR -DAVR_MAKEYMAKEY",
"f_cpu": "16000000L",
"mcu": "atmega32u4",
"pid": "0x2B75",
"usb_product": "SparkFun MaKey",
"variant": "sparkfun_promicro",
"vid": "0x1B4F"
"hwid": [
["0x1B4F", "0x2B74"],
["0x1B4F", "0x2B75"]
]
},
"frameworks": ["arduino"],
"name": "SparkFun Makey Makey",

View File

@ -118,8 +118,8 @@ ARDUINO_VERSION = int(
ARDUINO_USBDEFINES = []
if "usb_product" in BOARD_BUILDOPTS:
ARDUINO_USBDEFINES = [
"USB_VID=${BOARD_OPTIONS['build']['vid']}",
"USB_PID=${BOARD_OPTIONS['build']['pid']}",
"USB_VID=${BOARD_OPTIONS['build']['hwid'][0][0]}",
"USB_PID=${BOARD_OPTIONS['build']['hwid'][0][1]}",
'USB_PRODUCT=\\"%s\\"' % (env.subst(
"${BOARD_OPTIONS['build']['usb_product']}").replace('"', "")),
'USB_MANUFACTURER=\\"%s\\"' % (env.subst(

View File

@ -84,17 +84,14 @@ def AutodetectUploadPort(env):
break
else:
board_build_opts = env.get("BOARD_OPTIONS", {}).get("build", {})
board_hwid = ("%s:%s" % (
board_build_opts.get("vid"),
board_build_opts.get("pid")
)).replace("0x", "")
for item in get_serialports():
if "VID:PID" not in item['hwid']:
continue
env.Replace(UPLOAD_PORT=item['port'])
if board_hwid in item['hwid']:
break
for hwid in board_build_opts.get("hwid"):
board_hwid = ("%s:%s" % (hwid[0], hwid[1])).replace("0x", "")
if board_hwid in item['hwid']:
break
if "UPLOAD_PORT" in env:
print "Auto-detected UPLOAD_PORT/DISK: %s" % env['UPLOAD_PORT']