|  | @@ -34,68 +34,53 @@ The script downloads Arduino with our modifications and Rambo board support inst
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  ## Windows
 | 
	
		
			
				|  |  |  ### Using Arduino
 | 
	
		
			
				|  |  | -note: Multi language build is not supported.
 | 
	
		
			
				|  |  | +_Note: Multi language build is not supported._
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  #### 1. Development environment preparation
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -   a. install `"Arduino Software IDE"` for your preferred operating system  
 | 
	
		
			
				|  |  | -`https://www.arduino.cc -> Software->Downloads`  
 | 
	
		
			
				|  |  | -it is recommended to use version `"1.8.5"`, as it is used on out build server to produce official builds.  
 | 
	
		
			
				|  |  | -_note: in the case of persistent compilation problems, check the version of the currently used C/C++ compiler (GCC) - should be `4.8.1`; version can be verified by entering the command  
 | 
	
		
			
				|  |  | -`avr-gcc --version`  
 | 
	
		
			
				|  |  | -if you are not sure where the file is placed (depends on how `"Arduino Software IDE"` was installed), you can use the search feature within the file system_  
 | 
	
		
			
				|  |  | -_note: name collision for `"LiquidCrystal"` library known from previous versions is now obsolete (so there is no need to delete or rename original file/-s)_
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -   b. add (`UltiMachine`) `RAMBo` board into the list of Arduino target boards  
 | 
	
		
			
				|  |  | -`File->Preferences->Settings`  
 | 
	
		
			
				|  |  | -into text field `"Additional Boards Manager URLs"`  
 | 
	
		
			
				|  |  | -type location  
 | 
	
		
			
				|  |  | -`"https://raw.githubusercontent.com/ultimachine/ArduinoAddons/master/package_ultimachine_index.json"`  
 | 
	
		
			
				|  |  | -or you can 'manually' modify the item  
 | 
	
		
			
				|  |  | -`"boardsmanager.additional.urls=....."`  
 | 
	
		
			
				|  |  | -at the file `"preferences.txt"` (this parameter allows you to write a comma-separated list of addresses)  
 | 
	
		
			
				|  |  | -_note: you can find location of this file on your disk by doing the following:  
 | 
	
		
			
				|  |  | -`File->Preferences->Settings`  (`"More preferences can be edited in file ..."`)_  
 | 
	
		
			
				|  |  | -then choose 
 | 
	
		
			
				|  |  | -`Tools->Board->BoardsManager`  
 | 
	
		
			
				|  |  | -from viewed list and select the item labeled `"RAMBo"` (will probably be labeled as `"RepRap Arduino-compatible Mother Board (RAMBo) by UltiMachine"`  
 | 
	
		
			
				|  |  | -_note: select this item for any variant of board used in printers `'Prusa i3 MKx'`, that is for `RAMBo-mini x.y` and `EINSy x.y` to_  
 | 
	
		
			
				|  |  | -'clicking' the item will display the installation button; select choice `"1.0.1"` from the list(last known version as of the date of issue of this document)  
 | 
	
		
			
				|  |  | -_(after installation, the item is labeled as `"INSTALLED"` and can then be used for target board selection)_  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -   c. modify platform.txt to enable float printf support:  
 | 
	
		
			
				|  |  | -add "-Wl,-u,vfprintf -lprintf_flt -lm" to "compiler.c.elf.flags=" before existing flag "-Wl,--gc-sections"  
 | 
	
		
			
				|  |  | -example:  
 | 
	
		
			
				|  |  | -`"compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections"`
 | 
	
		
			
				|  |  | -The file can be found in Arduino instalation directory, or after Arduino has been updated at:  
 | 
	
		
			
				|  |  | -"C:\Users\(user)\AppData\Local\Arduino15\packages\arduino\hardware\avr\(version)"
 | 
	
		
			
				|  |  | -If you can locate the file in both places, file from user profile is probably used.
 | 
	
		
			
				|  |  | +**a.** Install `"Arduino Software IDE"` from the official website `https://www.arduino.cc -> Software->Downloads` 
 | 
	
		
			
				|  |  | +   
 | 
	
		
			
				|  |  | +   _It is recommended to use version `"1.8.5"`, as it is used on out build server to produce official builds._
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +**b.** Setup Arduino to use Prusa Rambo board definition
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* Open Arduino and navigate to File -> Preferences -> Settings
 | 
	
		
			
				|  |  | +* To the text field `"Additional Boards Manager URLSs"` add `https://raw.githubusercontent.com/prusa3d/Arduino_Boards/master/IDE_Board_Manager/package_prusa3d_index.json`
 | 
	
		
			
				|  |  | +* Open Board manager (`Tools->Board->Board manager`), and install `Prusa Research AVR MK3 RAMBo EINSy board`
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +**c.** Modify compiler flags in `platform.txt` file
 | 
	
		
			
				|  |  | +     
 | 
	
		
			
				|  |  | +* The platform.txt file can be found in Arduino instalation directory, or after Arduino has been updated at: `"C:\Users\(user)\AppData\Local\Arduino15\packages\arduino\hardware\avr\(version)"` If you can locate the file in both places, file from user profile is probably used.
 | 
	
		
			
				|  |  | +       
 | 
	
		
			
				|  |  | +* Add `"-Wl,-u,vfprintf -lprintf_flt -lm"` to `"compiler.c.elf.flags="` before existing flag "-Wl,--gc-sections"  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    For example:  `"compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections"`
 | 
	
		
			
				|  |  | +   
 | 
	
		
			
				|  |  | +_Notes:_
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +_In the case of persistent compilation problems, check the version of the currently used C/C++ compiler (GCC) - should be at leas `4.8.1`; 
 | 
	
		
			
				|  |  | +If you are not sure where the file is placed (depends on how `"Arduino Software IDE"` was installed), you can use the search feature within the file system_
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +_Name collision for `"LiquidCrystal"` library known from previous versions is now obsolete (so there is no need to delete or rename original file/-s)_
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #### 2. Source code compilation
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -a. place the source codes corresponding to your printer model obtained from the repository into the selected directory on your disk  
 | 
	
		
			
				|  |  | -`https://github.com/prusa3d/Prusa-Firmware/`  
 | 
	
		
			
				|  |  | +**a.** Clone this repository`https://github.com/prusa3d/Prusa-Firmware/` to your local drive.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -b.<a name="2b"></a> In the subdirectory `"Firmware/variants/"` select the configuration file (`.h`) corresponding to your printer model, make copy named `"Configuration_prusa.h"` (or make simple renaming) and copy it into `"Firmware/"` directory.  
 | 
	
		
			
				|  |  | +**b.**<a name="2b"></a> In the subdirectory `"Firmware/variants/"` select the configuration file (`.h`) corresponding to your printer model, make copy named `"Configuration_prusa.h"` (or make simple renaming) and copy it into `"Firmware/"` directory.  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -c.<a name="2c"></a> In file `"Firmware/config.h"` set LANG_MODE to 0.
 | 
	
		
			
				|  |  | +**c.**<a name="2c"></a> In file `"Firmware/config.h"` set LANG_MODE to 0.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -run `"Arduino IDE"`; select the file `"Firmware.ino"` from the subdirectory `"Firmware/"` at the location, where you placed the source code  
 | 
	
		
			
				|  |  | -`File->Open`  
 | 
	
		
			
				|  |  | -make the desired code customizations; **all changes are on your own risk!**  
 | 
	
		
			
				|  |  | +**d.** Run `"Arduino IDE"`; select the file `"Firmware.ino"` from the subdirectory `"Firmware/"` at the location, where you placed the source code `File->Open` Make the desired code customizations; **all changes are on your own risk!**  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -select the target board `"RAMBo"`  
 | 
	
		
			
				|  |  | -`Tools->Board->RAMBo`  
 | 
	
		
			
				|  |  | -_note: it is not possible to use any of the variants `"Arduino Mega …"`, even though it is the same MCU_  
 | 
	
		
			
				|  |  | +**e.** Select the target board `"Tools->Board->PrusaResearch Einsy RAMBo"`  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -run the compilation  
 | 
	
		
			
				|  |  | -`Sketch->Verify/Compile`  
 | 
	
		
			
				|  |  | +**f.** Run the compilation `Sketch->Verify/Compile`  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -upload the result code into the connected printer  
 | 
	
		
			
				|  |  | -`Sketch->Upload`  
 | 
	
		
			
				|  |  | +**g.** Upload the result code into the connected printer `Sketch->Upload`  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -or you can also save the output code to the file (in so called `HEX`-format) `"Firmware.ino.rambo.hex"`:  
 | 
	
		
			
				|  |  | -`Sketch->ExportCompiledBinary`  
 | 
	
		
			
				|  |  | -and then upload it to the printer using the program `"FirmwareUpdater"`  
 | 
	
		
			
				|  |  | +* or you can also save the output code to the file (in so called `HEX`-format) `"Firmware.ino.rambo.hex"`:  `Sketch->ExportCompiledBinary` and then upload it to the printer using the program `"FirmwareUpdater"`  
 | 
	
		
			
				|  |  |  _note: this file is created in the directory `"Firmware/"`_  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  ### Using Linux subsystem under Windows 10 64-bit
 | 
	
	
		
			
				|  | @@ -152,11 +137,9 @@ _notes: Script and instructions contributed by 3d-gussner. Use at your own risk.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  # 3. Automated tests
 | 
	
		
			
				|  |  |  ## Prerequisites
 | 
	
		
			
				|  |  | -c++11 compiler e.g. g++ 6.3.1
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -cmake
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -build system - ninja or gnu make
 | 
	
		
			
				|  |  | +* c++11 compiler e.g. g++ 6.3.1
 | 
	
		
			
				|  |  | +* cmake
 | 
	
		
			
				|  |  | +* build system - ninja or gnu make
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  ## Building
 | 
	
		
			
				|  |  |  Create a folder where you want to build tests.
 |