@@ -377,3 +377,67 @@ myboard.upload_port.1.apples=40
377377
378378will match on both ` pears=20, apples=30 `  and ` pears=30, apples=40 `  but not ` pears=20, apples=40 ` , in that sense each
379379"set" of identification properties is independent from each other and cannot be mixed for port matching.
380+ 
381+ #### Identification of board options  
382+ 
383+ The board identification can also identify [ custom board options] ( platform-specification.md#custom-board-options )  if the
384+ corresponding ` upload_port `  properties are defined:
385+ 
386+ ``` 
387+ BOARDNAME.menu.MENUNAME.MENUOPTION.upload_port.IDENTIFIER=Value 
388+ BOARDNAME.menu.MENUNAME.MENUOPTION.upload_port.#.IDENTIFIER=Value 
389+ ``` 
390+ 
391+ a discovery tools capable of detecting which menu options where used could report properties to match those lines. Let's
392+ see an example to clarify it, in the following ` boards.txt ` :
393+ 
394+ ``` 
395+ myboard.upload_port.pid=0x0010 
396+ myboard.upload_port.vid=0x2341 
397+ myboard.menu.cpu.atmega1280=ATmega1280 
398+ myboard.menu.cpu.atmega1280.upload_port.c=atmega1280          <--- identification property for cpu=atmega1280 
399+ myboard.menu.cpu.atmega1280.build_cpu=atmega1280 
400+ myboard.menu.cpu.atmega2560=ATmega2560 
401+ myboard.menu.cpu.atmega2560.upload_port.c=atmega2560          <--- identification property for cpu=atmega2560 
402+ myboard.menu.cpu.atmega2560.build_cpu=atmega2560 
403+ myboard.menu.mem.1k=1KB 
404+ myboard.menu.mem.1k.upload_port.mem=1                         <--- identification property for mem=1k 
405+ myboard.menu.mem.1k.build_mem=1024 
406+ myboard.menu.mem.2k=2KB 
407+ myboard.menu.mem.2k.upload_port.1.mem=2                       <------ identification property for mem=2k (case 1) 
408+ myboard.menu.mem.2k.upload_port.2.ab=ef                       <---\ 
409+ myboard.menu.mem.2k.upload_port.2.cd=gh                       <---+-- identification property for mem=2k (case 2) 
410+ myboard.menu.mem.2k.build_mem=2048 
411+ ``` 
412+ 
413+ we have a board called ` myboard `  with two custom menu options ` cpu `  and ` mem ` . The discovery may provide extra
414+ identification properties to determine the custom menu options of the connected board, for example the following
415+ properties:
416+ 
417+ ``` 
418+ vid=0x0010 
419+ pid=0x2341 
420+ c=atmega2560 
421+ ``` 
422+ 
423+ will match the FQBN ` mypackage:avr:myboard:cpu=atmega2560 `  becuase of the property ` c=atmega2560 ` . The identification
424+ properties:
425+ 
426+ ``` 
427+ vid=0x0010 
428+ pid=0x2341 
429+ c=atmega2560 
430+ mem=2 
431+ ``` 
432+ 
433+ will match the FQBN ` mypackage:avr:myboard:cpu=atmega2560,mem=2k ` . The identification properties:
434+ 
435+ ``` 
436+ vid=0x0010 
437+ pid=0x2341 
438+ c=atmega2560 
439+ ab=ef 
440+ cd=gh 
441+ ``` 
442+ 
443+ will match the FQBN ` mypackage:avr:myboard:cpu=atmega2560,mem=2k `  too (they will match the second set for ` mem=2k ` ).
0 commit comments