7 years, 5 months ago.  This question has been closed. Reason: Off Topic

How to deal with 'function does not support cv-qualifiers'?

Hi guys,

I'm trying to compile a 3rd party application for a Nucleo_L073RZ using mbed-os, which tries to attach a class member function to an mbed Timer, as follows:

rxTimeoutTimer.attach_us( this, &SX1276::OnTimeoutIrq, timeout );

This generates a compiler warning that could be the cause of the application failing in strange ways:

[Warning] sx1276.cpp@919,71: 'void mbed::Ticker::attach_us(T*, M, timestamp_t) [with T = SX1276; M = void (SX1276::*)(); timestamp_t = long unsigned int]' is deprecated: The attach_us function does not support cv-qualifiers. Replaced by attach_us(callback(obj, method), t). [since mbed-os-5.1] [-Wdeprecated-declarations]

I'd really appreciate if somebody can suggest a possible workaround.

Cheers, Ron

Belatedly realised that the error is just relating to the syntax which should be: rxTimeoutTimer.attach_us(callback(this, &SX1276::OnTimeoutIrq), timeout );

1 Answer

7 years, 5 months ago.

According to Ticker.h, the object and method should now be wrapped in a callback<>:

    rxTimeoutTimer.attach_us( callback(this, &SX1276::OnTimeoutIrq), timeout );