IBuzzer

class mono::sensor::IBuzzer

Generic Buzzer interface.

This interface defines a generic API for buzzers used in the framework. You should not construct any subclass of this interface yourself. The system automatically creates a buzzer object for you, that you can obtain through the IApplicationContext:

Example

mono::sensor::IBuzzer *buzz = mono::IApplicationContext::Instance->Buzzer;

To make a short buzz sound do:

mono::IApplicationContext::Instance->Buzzer->buzzAsync(100);

Subclassed by mono::sensor::MonoBuzzer

Public Functions

virtual void buzzAsync(uint32_t timeMs) = 0

Buzz for a given period of time, then stop.

Sets the buzzer to emit a buzz for a defined number of milliseconds. Then stop. This method is asynchronous, so it return immediately. It relies on the run loop to mute the buzzer later in time.

You should not call it multiple times in a row, since it behaves asynchronously. Instread use Timer to schedule multiple beeps.

Parameters
  • timeMs: The time window where the buzzer buzzes, in milliseconds

virtual void buzzKill() = 0

Stop any running buzz.

Use this method to cancel a buzz immediately. This method will not have any impact on callback functions. They will still be called, when the buzz was suppose to end.

template <typename Object>
void mono::sensor::IBuzzer::buzzAsync(uint32_t timeMs, Object * self, void(Object::*)(void) member)

Buzz for some time, and when done call a C++ member function.

Sets the buzzer to emit a buzz for a defined number of milliseconds. Then stop. This method is asynchronous, so it return immediately. It relies on the run loop to mute the buzzer later in time. You also provide a callback function, that gets called when the buzz is finished.

You should not call it multiple times in a row, since it behaves asynchronously. Instead you should use the callback function to make a new beep.

Example

buzzAsync<AppController>(100, this, &AppController::buzzDone);
This will buzz for 100 ms, then call buzzDone.

Parameters
  • timeMs: The time window where the buzzer buzzes, in milliseconds
  • self: The this pointer for the member function
  • member: A pointer to the member function to call

void buzzAsync(uint32_t timeMs, void (*function)(void))

Buzz for some time, and when done call a C function.

Sets the buzzer to emit a buzz for a defined number of milliseconds. Then stop. This method is asynchronous, so it return immediately. It relies on the run loop to mute the buzzer later in time. You also provide a callback function, that gets called when the buzz is finished.

You should not call it multiple times in a row, since it behaves asynchronously. Instead you should use the callback function to make a new beep.

Example

buzzAsync(100, &buzzDone);
This will buzz for 100 ms, then call global C function buzzDone.

Parameters
  • timeMs: The time window where the buzzer buzzes, in milliseconds
  • function: A pointer to the global C function to call