# Deploy Dialog¶

The deploy dialog appears at the end of building the code for the NAO if the build target is run (CLion, Xcode) or the project Utils/deploy is built (Visual Studio). It allows to select the arguments for the script deploy (see this section) graphically. The dialog is split into two halves, each of which again consists of two or three parts.

## Robots Table¶

On the left side, all available robots are displayed with their current status if they are reachable in the network. The icons of the table header have tool tips that describe their meaning. Table cells are empty if no information is available. If they contain information, a cell background colored in yellow or red means that the cell requires attention. Such cells have tool tips that explain why the cell was highlighted.

The upper part of the table with numbered rows contains the robots the software should be deployed to. The number is the player number that will be assigned to them. The unnumbered rows contain the substitutes. Robots can be moved by drag and drop. In the upper part, robots can only be dragged onto a row. In the lower region, they can be both dragged onto a row or between two rows to insert them. If a robot is dragged onto a row that is already occupied, it will switch places with the robot present in that row. If robots are removed from a numbered row, the row becomes empty. If they are removed from an unnumbered row, the row will disappear.

If a robot is reachable in the network, a popup menu can be opened. It allows to open a terminal window to connect to the robot, open SimRobot (see this page) with the scene RemoteRobot to connect to the robot, download calibration files if they were changed, shutdown the robot, or reboot it. The terminal window is opened through the script Make/Common/robotTerminal, which can be extended to open the preferred terminal application. For SimRobot, the binary is chosen that was compiled most recently. The command will silently fail if none is available.

## Settings Area¶

### Team Configuration¶

The right half consists of two tab groups and the main dialog buttons. The first tab group defines the configuration that is deployed. Its contents stem from the file Config/teams.cfg that is also used by the bush (see this section). There can be settings for multiple teams. Each is shown in a different tab. Each team also has an assignment of robots to player numbers. These are shown in the numbered rows of the robot table. Please note that if you are missing a robot, it might be assigned to a team that is currently not shown. The meaning of most fields should be obvious if you read the chapter Getting Started. The magic number is a value that all robots on the same team share. It prevents accepting network packets from other teams that misconfigured their robots. auto means that the deploy script will pick one automatically.

The tab bar has a popup menu that allows to duplicate the current tab, delete it, or rename it.

### Deployment Mode¶

The second tab group defines the deployment mode and parameters that are specific to one of the two modes available. The first mode is to deploy robots via a network connection. In this case, the software is sent to the robots in the numbered rows of the robots table. It can be decided whether or not to restart the software on the robots again after it was deployed. It can also be requested to delete all log files from NAO's internal drive when the deploy script is run. The alternate way to deploy is to write a firmware image containing the software. The image is stored in one of the directories in Build/Image. If an image is written, the configuration in the robots table is completely ignored. Instead, a default player number can be specified for all robots installed with the image. It can be decided whether the robot should wait for the insertion of a USB drive before starting the B-Human software (with a spoken reminder). It can be selected to add a timestamp to the name of the image file to keep different versions distinguishable. The script deploy only creates the firmware image, i.e. it does not automatically flash the robots. When the robot is flashed, it will usually switch off when it is finished. Activating Reboot will start the robot again instead.

### Closing the Dialog¶

Pressing the button Deploy or pressing the enter key sends the software to the robots or writes the firmware image, respectively. In addition, all changes made in the dialog are saved. Thus the dialog will be in the same state the next time it is shown. If the software is deployed to the robots, it will be sent to all robots of the currently selected team that were placed in the numbered rows of the robots table, even if they are not reachable. In that case, the script deploy will report that it could not reach them. This should avoid that the deployment to a robot is suppressed without any notice.

Pressing the button Cancel, the escape key, or the window's close button closes the dialog without deploying the software. If the settings were changed, you will be asked whether they should be saved before closing the dialog.