Refactor board "hwid" option to "hwids"

This commit is contained in:
Ivan Kravets
2016-06-11 15:12:27 +03:00
parent ba574667c7
commit a4345cedc5
13 changed files with 101 additions and 115 deletions

View File

@ -7,7 +7,7 @@
"mcu": "atmega32u4",
"usb_product": "Adafruit Flora",
"variant": "flora",
"hwid": [
"hwids": [
["0x239A", "0x8004"]
]
},
@ -36,7 +36,7 @@
"mcu": "atmega32u4",
"usb_product": "Bluefruit Micro",
"variant": "bluefruitmicro",
"hwid": [
"hwids": [
["0x239A", "0x800A"]
]
},
@ -85,7 +85,7 @@
"mcu": "atmega32u4",
"usb_product": "Feather 32u4",
"variant": "feather32u4",
"hwid": [
"hwids": [
["0x239A", "0x800C"]
]
},

View File

@ -7,7 +7,7 @@
"mcu": "atmega32u4",
"usb_product": "LilyPad USB",
"variant": "leonardo",
"hwid": [
"hwids": [
["0x1B4F", "0x9207"],
["0x1B4F", "0x9208"]
]
@ -164,7 +164,7 @@
"mcu": "atmega32u4",
"usb_product": "Arduino Esplora",
"variant": "leonardo",
"hwid": [
"hwids": [
["0x2341", "0x003C"],
["0x2341", "0x803C"],
["0x2A03", "0x003C"],
@ -237,7 +237,7 @@
"mcu": "atmega32u4",
"usb_product": "Arduino Leonardo",
"variant": "leonardo",
"hwid": [
"hwids": [
["0x2341", "0x0036"],
["0x2341", "0x8036"],
["0x2A03", "0x0036"],
@ -268,7 +268,7 @@
"mcu": "atmega32u4",
"usb_product": "Arduino Leonardo ETH",
"variant": "leonardo",
"hwid": [
"hwids": [
["0x2A03", "0x8040"],
["0x2A03", "0x0040"]
]
@ -402,7 +402,7 @@
"mcu": "atmega32u4",
"usb_product": "Arduino Micro",
"variant": "micro",
"hwid": [
"hwids": [
["0x2341", "0x0037"],
["0x2341", "0x8037"],
["0x2A03", "0x0037"],
@ -601,7 +601,7 @@
"mcu": "atmega32u4",
"usb_product": "Robot Control",
"variant": "robot_control",
"hwid": [
"hwids": [
["0x2341", "0x0038"],
["0x2341", "0x8038"],
["0x2A03", "0x0038"],
@ -632,7 +632,7 @@
"mcu": "atmega32u4",
"usb_product": "Robot Motor",
"variant": "robot_motor",
"hwid": [
"hwids": [
["0x2341", "0x0039"],
["0x2341", "0x8039"],
["0x2A03", "0x0039"],
@ -662,7 +662,7 @@
"f_cpu": "16000000L",
"mcu": "atmega328p",
"variant": "standard",
"hwid": [
"hwids": [
["0x2341", "0x0043"],
["0x2341", "0x0001"],
["0x2A03", "0x0043"]
@ -689,7 +689,7 @@
"mcu": "atmega32u4",
"usb_product": "Arduino Yun",
"variant": "yun",
"hwid": [
"hwids": [
["0x2341", "0x0041"],
["0x2341", "0x8041"],
["0x2A03", "0x0041"],
@ -721,7 +721,7 @@
"mcu": "atmega32u4",
"usb_product": "Arduino Yun Mini",
"variant": "yun",
"hwid": [
"hwids": [
["0x2A03", "0x8050"],
["0x2A03", "0x0050"]
]
@ -751,7 +751,7 @@
"mcu": "atmega32u4",
"usb_product": "Arduino Industrial 101",
"variant": "yun",
"hwid": [
"hwids": [
["0x2A03", "0x8056"],
["0x2A03", "0x0056"]
]
@ -781,7 +781,7 @@
"mcu": "atmega32u4",
"usb_product": "Linino One",
"variant": "yun",
"hwid": [
"hwids": [
["0x2A03", "0x8001"],
["0x2A03", "0x0001"]
]
@ -813,7 +813,7 @@
"usb_product": "Arduino Due",
"variant": "arduino_due_x",
"ldscript": "sam3x8e.ld",
"hwid": [
"hwids": [
["0x2341", "0x003D"],
["0x2A03", "0x003D"]
]
@ -843,7 +843,7 @@
"usb_product": "Arduino Due",
"variant": "arduino_due_x",
"ldscript": "sam3x8e.ld",
"hwid": [
"hwids": [
["0x2341", "0x003E"],
["0x2A03", "0x003E"]
]
@ -873,7 +873,7 @@
"usb_product": "Arduino Zero",
"variant": "arduino_zero",
"ldscript": "flash_with_bootloader.ld",
"hwid": [
"hwids": [
["0x2341", "0x804D"],
["0x03EB", "0x2157"]
]
@ -903,7 +903,7 @@
"usb_product": "Arduino Zero",
"variant": "arduino_zero",
"ldscript": "flash_with_bootloader.ld",
"hwid": [
"hwids": [
["0x2341", "0x804D"],
["0x2341", "0x004D"],
["0x2341", "0x824D"]

View File

@ -85,7 +85,7 @@
"ldscript": "sam3x8e.ld",
"usb_product": "Digistump DigiX",
"variant": "digispark_digix",
"hwid": [
"hwids": [
["0x16D0", "0x078A"]
]
},

View File

@ -7,7 +7,7 @@
"mcu": "atmega32u4",
"usb_product": "EngduinoV1",
"variant": "engduinov1",
"hwid": [
"hwids": [
["0x1B4F", "0x9208"]
]
},
@ -35,7 +35,7 @@
"mcu": "atmega32u4",
"usb_product": "EngduinoV2",
"variant": "engduinov2",
"hwid": [
"hwids": [
["0x1B4F", "0x9208"]
]
},
@ -63,7 +63,7 @@
"mcu": "atmega32u4",
"usb_product": "EngduinoV3",
"variant": "engduinov3",
"hwid": [
"hwids": [
["0x1B4F", "0x9208"]
]
},

View File

@ -134,7 +134,7 @@
"ldscript": "esp8266.flash.4m1m.ld",
"mcu": "esp8266",
"variant": "nodemcu",
"hwid": [
"hwids": [
["0x10C4", "0xEA60"]
]
},
@ -162,7 +162,7 @@
"ldscript": "esp8266.flash.4m1m.ld",
"mcu": "esp8266",
"variant": "nodemcu",
"hwid": [
"hwids": [
["0x10C4", "0xEA60"]
]
},

View File

@ -8,7 +8,7 @@
"mcu": "ARCv2EM",
"usb_product": "Genuino 101",
"variant": "arduino_101",
"hwid": [
"hwids": [
["0x8087", "0x0AB6"]
]
},
@ -18,11 +18,8 @@
"upload": {
"maximum_ram_size": 81920,
"maximum_size": 196608,
"use_1200bps_touch": true,
"protocol": "script",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": false
"require_upload_port" : true
},
"url": "https://www.arduino.cc/en/Main/ArduinoBoard101",
"vendor": "Intel"

View File

@ -6,7 +6,7 @@
"cpu": "fpga",
"mcu": "ice40hx1k",
"variant": "1k",
"hwid": [
"hwids": [
["0x0403", "0x6010"]
]
},
@ -28,7 +28,7 @@
"cpu": "fpga",
"mcu": "ice40hx1k",
"variant": "1k",
"hwid": [
"hwids": [
["0x0403", "0x6010"]
]
},

View File

@ -16,8 +16,7 @@
"maximum_size": 520192,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "http://store.digilentinc.com/cerebot-32mx4-limited-time-see-chipkit-pro-mx4/",
"vendor": "Digilent"
@ -40,8 +39,7 @@
"maximum_size": 520192,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "http://www.microchip.com/Developmenttools/ProductDetails.aspx?PartNO=TDGL004",
"vendor": "Digilent"
@ -64,8 +62,7 @@
"maximum_size": 126976,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "http://store.digilentinc.com/chipkit-mx3-microcontroller-board-with-pmod-headers/",
"vendor": "Digilent"
@ -88,8 +85,7 @@
"maximum_size": 520192,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "http://store.digilentinc.com/chipkit-pro-mx4-embedded-systems-trainer-board/",
"vendor": "Digilent"
@ -112,8 +108,7 @@
"maximum_size": 520192,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "http://store.digilentinc.com/chipkit-pro-mx7-advanced-peripherals-embedded-systems-trainer-board/",
"vendor": "Digilent"
@ -136,8 +131,7 @@
"maximum_size": 122880,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "http://www.element14.com/community/community/knode/dev_platforms_kits/element14_dev_kits/microchip-chipkit/chipkit_pi",
"vendor": "element14"
@ -160,8 +154,7 @@
"maximum_size": 126976,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "http://store.digilentinc.com/chipkit-cmod-breadboardable-mz-microcontroller-board/",
"vendor": "Digilent"
@ -184,8 +177,7 @@
"maximum_size": 520192,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "http://www.seeedstudio.com/wiki/CUI32Stem",
"vendor": "SeeedStudio"
@ -208,8 +200,7 @@
"maximum_size": 520192,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "http://www.schmalzhaus.com/UBW32/",
"vendor": "UBW32"
@ -232,8 +223,7 @@
"maximum_size": 520192,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "http://www.schmalzhaus.com/UBW32/",
"vendor": "UBW32"
@ -256,8 +246,7 @@
"maximum_size": 520192,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "http://www.pontech.com/productdisplay/uav100",
"vendor": "PONTECH"
@ -280,8 +269,7 @@
"maximum_size": 122880,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "http://store.digilentinc.com/chipkit-dp32-dip-package-prototyping-microcontroller-board/",
"vendor": "Digilent"
@ -304,8 +292,7 @@
"maximum_size": 122880,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "http://fubarino.org/mini/",
"vendor": "Fubarino"
@ -328,8 +315,7 @@
"maximum_size": 520192,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "http://fubarino.org/sd/index.html",
"vendor": "Fubarino"
@ -352,8 +338,7 @@
"maximum_size": 520192,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "http://store.digilentinc.com/chipkit-max32-microcontroller-board-with-mega-r3-headers/",
"vendor": "Digilent"
@ -376,8 +361,7 @@
"maximum_size": 258048,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "https://www.olimex.com/Products/Duino/PIC32/PIC32-PINGUINO/open-source-hardware",
"vendor": "Olimex"
@ -400,8 +384,7 @@
"maximum_size": 520192,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "http://www.4dsystems.com.au/product/Picadillo_35T/",
"vendor": "4DSystems"
@ -424,8 +407,7 @@
"maximum_size": 520192,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "http://quick240.com/quicki/",
"vendor": "PONTECH"
@ -448,8 +430,7 @@
"maximum_size": 520192,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "http://store.digilentinc.com/chipkit-uc32-basic-microcontroller-board-with-uno-r3-headers/",
"vendor": "Digilent"
@ -472,8 +453,7 @@
"maximum_size": 126976,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "http://store.digilentinc.com/chipkit-uno32-basic-microcontroller-board-retired-see-chipkit-uc32/",
"vendor": "Digilent"
@ -496,8 +476,7 @@
"maximum_size": 520192,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "http://store.digilentinc.com/chipkit-wf32-wifi-enabled-microntroller-board-with-uno-r3-headers/",
"vendor": "Digilent"
@ -520,8 +499,7 @@
"maximum_size": 2080768,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "http://store.digilentinc.com/chipkit-wi-fire-wifi-enabled-mz-microcontroller-board/",
"vendor": "Digilent"
@ -544,8 +522,7 @@
"maximum_size": 2080768,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "http://store.digilentinc.com/",
"vendor": "Digilent"
@ -568,8 +545,7 @@
"maximum_size": 122880,
"protocol": "stk500v2",
"require_upload_port" : true,
"speed": 115200,
"wait_for_upload_port": true
"speed": 115200
},
"url": "http://shop.openbci.com/",
"vendor": "OpenBCI"

View File

@ -132,7 +132,7 @@
"f_cpu": "16000000L",
"mcu": "atmega32u4",
"variant": "32u4",
"hwid": [
"hwids": [
["0x2341", "0x8036"]
]
},

View File

@ -75,7 +75,7 @@
"usb_product": "Arduino Due",
"variant": "arduino_due_x",
"ldscript": "sam3x8e.ld",
"hwid": [
"hwids": [
["0x2341", "0x003E"]
]
},
@ -104,7 +104,7 @@
"usb_product": "Arduino Due",
"variant": "arduino_due_x",
"ldscript": "sam3x8e.ld",
"hwid": [
"hwids": [
["0x2341", "0x003E"]
]
},
@ -348,7 +348,7 @@
"mcu": "atmega32u4",
"usb_product": "RedBearLab Blend",
"variant": "leonardo",
"hwid": [
"hwids": [
["0x2341", "0x8036"]
]
},
@ -377,7 +377,7 @@
"mcu": "atmega32u4",
"usb_product": "RedBearLab Blend",
"variant": "micro",
"hwid": [
"hwids": [
["0x03EB", "0x2404"]
]
},
@ -406,7 +406,7 @@
"mcu": "atmega32u4",
"usb_product": "RedBearLab Blend",
"variant": "micro",
"hwid": [
"hwids": [
["0x03EB", "0x2404"]
]
},
@ -457,7 +457,7 @@
"mcu": "atmega32u4",
"usb_product": "LightUp",
"variant": "leonardo",
"hwid": [
"hwids": [
["0x1d50", "0x6096"]
]
},
@ -553,7 +553,7 @@
"mcu": "atmega32u4",
"variant" : "quirkbot",
"usb_product": "Quirkbot",
"hwid": [
"hwids": [
["0x2886", "0xf004"],
["0x2886", "0xf005"],
["0x2886", "0xf006"],
@ -770,7 +770,7 @@
"mcu": "atmega32u4",
"usb_product": "Arduboy",
"variant": "leonardo",
"hwid": [
"hwids": [
["0x2341", "0x0036"],
["0x2341", "0x8036"]
]
@ -800,7 +800,7 @@
"mcu": "atmega32u4",
"usb_product": "Arduboy DevKit",
"variant": "leonardo",
"hwid": [
"hwids": [
["0x2341", "0x0036"],
["0x2341", "0x8036"]
]

View File

@ -28,7 +28,7 @@
"mcu": "atmega32u4",
"usb_product": "SparkFun Pro Micro",
"variant": "sparkfun_promicro",
"hwid": [
"hwids": [
["0x1B4F", "0x9205"],
["0x1B4F", "0x9206"]
]
@ -57,7 +57,7 @@
"mcu": "atmega32u4",
"usb_product": "SparkFun Pro Micro",
"variant": "sparkfun_promicro",
"hwid": [
"hwids": [
["0x1B4F", "0x9203"],
["0x1B4F", "0x9204"]
]
@ -86,7 +86,7 @@
"mcu": "atmega32u4",
"usb_product": "SparkFun Fio v3",
"variant": "sparkfun_promicro",
"hwid": [
"hwids": [
["0x1B4F", "0xF100"],
["0x1B4F", "0xF101"]
]
@ -115,7 +115,7 @@
"mcu": "atmega32u4",
"usb_product": "SparkFun MaKey",
"variant": "sparkfun_promicro",
"hwid": [
"hwids": [
["0x1B4F", "0x2B74"],
["0x1B4F", "0x2B75"]
]

View File

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

View File

@ -79,40 +79,53 @@ def WaitForNewSerialPort(env, before):
return new_port
def AutodetectUploadPort(env):
if "UPLOAD_PORT" in env:
return
def AutodetectUploadPort(*args, **kwargs): # pylint: disable=unused-argument
env = args[0]
print("Looking for upload port/disk...")
if env.subst("$FRAMEWORK") == "mbed":
def _look_for_mbed_disk():
msdlabels = ("mbed", "nucleo", "frdm")
for item in util.get_logicaldisks():
if (not item['name'] or
not any([l in item['name'].lower() for l in msdlabels])):
continue
env.Replace(UPLOAD_PORT=item['disk'])
break
return item['disk']
return None
def _look_for_serial_port():
port = None
board_hwids = env.get("BOARD_OPTIONS", {}).get(
"build", {}).get("hwids", [])
for item in util.get_serialports():
if "VID:PID" not in item['hwid']:
continue
port = item['port']
for hwid in board_hwids:
hwid_str = ("%s:%s" % (hwid[0], hwid[1])).replace("0x", "")
if hwid_str in item['hwid']:
return port
return port
if "UPLOAD_PORT" in env:
print(env.subst("Manually specified: $UPLOAD_PORT"))
return
if env.subst("$FRAMEWORK") == "mbed":
env.Replace(UPLOAD_PORT=_look_for_mbed_disk())
else:
if (system() == "Linux" and
not isfile("/etc/udev/99-platformio-udev.rules")):
print (
print(
"\nWarning! Please install `99-platformio-udev.rules` and "
"check that your board's PID and VID are listed in the rules."
"\n https://raw.githubusercontent.com/platformio/platformio"
"/develop/scripts/99-platformio-udev.rules\n"
)
env.Replace(UPLOAD_PORT=_look_for_serial_port())
board_build_opts = env.get("BOARD_OPTIONS", {}).get("build", {})
for item in util.get_serialports():
if "VID:PID" not in item['hwid']:
continue
env.Replace(UPLOAD_PORT=item['port'])
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']
if env.subst("$UPLOAD_PORT"):
print(env.subst("Auto-detected: $UPLOAD_PORT"))
print("")
else:
env.Exit("Error: Please specify `upload_port` for environment or use "
"global `--upload-port` option.\n"