Chrono Literals
Since 1.5.0:
A number of APIs have been modified to support chrono literals. For example, instead of having to use 2000
for 2 seconds in the delay(), you can use 2s
for 2 seconds.
// EXAMPLE
SerialLogHandler logHandler;
void setup() {
}
void loop() {
Log.info("testing");
delay(2s);
}
The available units are:
Literal | Unit |
---|---|
us | microseconds |
ms | milliseconds |
s | seconds |
min | minutes |
h | hours |
Individual APIs may have minimum unit limits. For example, delay() has a minimum unit of milliseconds, so you cannot specify a value in microseconds (us). If you attempt to do this, you will get a compile-time error:
../wiring/inc/spark_wiring_ticks.h:47:20: note: no known conversion for argument 1 from 'std::chrono::microseconds {aka std::chrono::duration<long long int, std::ratio<1ll, 1000000ll> >}' to 'std::chrono::milliseconds {aka std::chrono::duration<long long int, std::ratio<1ll, 1000ll> >}'
Some places where you can use them:
- delay()
- delayMicroseconds()
- Particle.pubishVitals()
- Particle.keepAlive()
- System.sleep()
- Timer::changePeriod()
- Timer::changePeriodFromISR()
- ApplicationWatchdog
- Cellular.setListenTimeout()
- Ethernet.setListenTimeout()
- WiFi.setListenTimeout()