# 2. Release 1.6¶

February 10th, 2017

We are happy to announce release 1.6 of the Mono SDK. This release focuses on improvement in the software library, introducing new font and timer systems.

## New features¶

Here is a short intro to the the new features of Release 1.6. Later we will discuss some of them in detail, also we strive to write tutorials on the all the new features.

### New proportionally spaced fonts¶

We have taken the font format from Adafruits Gfx library, and made support for it in the text rendering system. This means the TextRender class now support the Adafruit GFXfont format. The class TextLabelView can use the new fonts as well. In fact, the default font face is changed to a beautiful proportionally spaced sans serif type.

We have included all the available font faces from Adafruits library. These include Italic and bold faces of Serif and Sans Serif fonts.

The old mono spaced fonts are still available, but you have to explicitly set them in your code.

### Wake Mono on timers¶

For a long time we wanted this feature: To sleep mono and then wake up at a specific point in the future. With our new ScheduledTask class, this is possible! A ScheduledTask is a object that calls a function at a given point in time. You provide it with a function pointer and a DateTime. This function will then be called at that time, also if Mono are in sleep at that point. (This is opt-in.)

Using ScheduledTask we can create a temperature logger, that sleeps and automatically wakes up periodically to measure the temperature.

### Analog API (mbed)¶

In this release we finally had the time to implement mbed::AnalogIn functionality. This means you can easily use the ADC to measure the voltage on the input pins. Almost all pins on our Cypress PSoC5 MCU can be routed to the ADC, exceptions are the USB pins and the SIO (Special I/O) pins. One of these SIO pins are the J_TIP pin.

An example of how you read the voltage level on the 3.5mm jack connector’s J_RING1 pin is:

mbed::AnalogIn ring1(J_RING1);
float normalizedValue = ring1;


Thats it! The system take care of setting the right pins mode, and setup the routing of the analog interconnect.

### Power saver¶

We found ourself keep writing code to auto-sleep mono. Just like smartphone will automatically dim the display and eventually go into standby, to spare the battery. For Mono we wanted it to be opt-in, so you always start a new application project, with a clean slate.

Therefore we have introduced the class PowerSaver in 1.6. This class dims the display after a period of inactivity. After even further inactivity, it automatically trigger sleep mode.

Inactivity is no incoming touch events. You can manually ping or momemtarily deactivate the class to keep mono awake. But by default it will trigger sleep mode, if nothing happens to 20 secs.

You should add the PowerSaver as a member variable to your AppController class, to enable its functionality.