Menu Code generation for Arduino, PicoSDK, mbed
25-07-2026
Visit associated GitHub repository
Visit reference documentation page

TcMenu supports a wide range of displays, input devices, and remote control options. To support such a range of hardware, a plugin system is required. Once you're menu is edited and ready, select Generate Code from the page header to open the generator page. We'll discuss the page below.

Each part of this page is discussed in detail below.

Configuring the board level options

The top part of the code generator allows you to configure the board-level properties. We'll go through each of the options below.

Code Generator Properties
Code Generator Properties
  • Application UUID the unique ID of the application. Each application has a unique ID, it is used to identify the application, with this each board can have as many serial numbers as required.
  • Embedded Platform the platform that the code will be generated for. This is used to select the correct mode of code generation.
  • EEPROM Support menu applications can load and save items to EEPROM. Many types of EEPROM are support by the library, select the right EEPROM for your hardware.
  • Authenticator Support when using TcMenu authentication with remote control, this option checks that a particular client is allowed to connect to the menu. Each client has a UUID and a name, this is used to identify the client and ensure that only authorized clients can connect to the menu. Read about this in the full menu documentation

In most cases, you can search the plugins by just entering the display/input type that you have, then it is as simple as entering the right configuration properties and clicking the "Generate" button.

Selecting and configuring plugins

Below the board level properties are the plugins for input, display, and remote. You can choose a plugin seimply by clicking on either the current image, where it has the button Change underneath. Below is an example:

Choose plugin window - unpopulated
The choose plugin component in TcMenu Designer Turbo

Once you click on the choose button, a list of plugins appears. You can select a plugin from the list that's provided. The list will contain plugins that are compatible with the selected platform and subsystem. There is also a search box that allows you to filter the list. See below:

List of plugins for selection
The plugin search list

Once you've selected a plugin, the configuration details for it will appear on the right side, and you can configure it as required. Each plugin comes with documentation that describes how to configure it. It is in the Click for documentation link.

A plugins chosen with configuration details
Plugin loaded into project with configuration options.

On the left is a thumbnail of the plugin, in the middle is the description and a link to documentation, and to the right are the properties.

Each of the properties on the right-hand side of the plugin window is used to populate variables during generation. The properties are saved in the project EMF file and will be remembered. Most plugin properties have an additional longer description accessed using the Extra info button.

Although it is possible to wrongly configure a plugin, some basic validation of the value is done. Below is how each type of property is validated:

  • For pins, the pin must either be a positive number such as a valid pin number E.G. 10 , no pin -1, or a variable name, such as A0 for example.
  • For numbers, unsigned integer numbers within a specific range. Each property defines that range.
  • For text, safe strings that are unlikely to cause issues in generated code.
  • For variables, a valid C++ variable name.
  • For menu items, a drop down of compatible items will be provided.
  • Where there are clear choices, a drop-down with all of them will be provided.
  • For flags/boolean, a checkbox will be provided.

Running code generation

To run code generation for your platform, click the "Generate" button. This will switch to display a log viewer showing the progress of the code generation on the server.

Code Generation Logging
Code Generation Logging

The status of the generator system is shown at the top of the log viewer, along with the build ID. Once the build has completed, the status will update and a few new buttons appear:

  • "Download Zip", will get the files generated from the server. The output of this will be a project loadable into the Arduino IDE.
  • "Apply Directly" (round trip mode) updates the files locally after generation has completed. The status will change to PATCHED FILES when local patching is complete.
  • "Dismiss" closes the log viewer.

Additional documentation

You can see a more detailed guide to code generation where the files and other components are discussed.

Once you've generated the code

Depending on the mode used, the code generator will either prepare a zip file for the application or it will offer to patch files locally in round-trip mode. In most cases, the application should run without adjustment on your hardware. Leaving you just to build the project and upload the code to your Arduino board.

The output code for Arduino boards is compatible with Arduino IDE (and we often test that it is) along with a wide range of build systems, editors, and IDEs. I tend to use the CLion IDE with PlatformIO plugin for Arduino and mbed, and CMake for PicoSDK and ESP-IDF. Many also use PlatformIO with VSCode, or even the Arduino plugin with VSCode.

At this point you'll probably want to use the main tcMenu documentation as needed to move forward building out your project.

These may be of interest

Want to let us know about something?

We use cookies to analyse traffic and to personalise content. We also embed Twitter and Youtube on some pages, these companies have their own privacy policies.

See the privacy policy and terms of use of this site should you need more information or wish to adjust your settings.