Firmware
|
Simple summing mixer. More...
#include <mixer.h>
Public Member Functions | |
SimpleMixer (ControlCallback control_cb, uintptr_t cb_handle, mixer_simple_s *mixinfo) | |
Constructor. More... | |
unsigned | mix (float *outputs, unsigned space) override |
Perform the mixing function. More... | |
uint16_t | get_saturation_status (void) override |
Get the saturation status. More... | |
void | groups_required (uint32_t &groups) override |
Analyses the mix configuration and updates a bitmask of groups that are required. More... | |
int | check () |
Check that the mixer configuration as loaded is sensible. More... | |
unsigned | set_trim (float trim) override |
Set trim offset for this mixer. More... | |
unsigned | get_trim (float *trim) override |
Get trim offset for this mixer. More... | |
![]() | |
Mixer (ControlCallback control_cb, uintptr_t cb_handle) | |
Constructor. More... | |
virtual void | set_max_delta_out_once (float delta_out_max) |
Empty method, only implemented for MultirotorMixer and MixerGroup class. More... | |
virtual void | set_thrust_factor (float val) |
virtual void | set_airmode (Airmode airmode) |
Set airmode. More... | |
Static Public Member Functions | |
static SimpleMixer * | from_text (Mixer::ControlCallback control_cb, uintptr_t cb_handle, const char *buf, unsigned &buflen) |
Factory method with full external configuration. More... | |
static SimpleMixer * | pwm_input (Mixer::ControlCallback control_cb, uintptr_t cb_handle, unsigned input, uint16_t min, uint16_t mid, uint16_t max) |
Factory method for PWM/PPM input to internal float representation. More... | |
Additional Inherited Members | |
![]() | |
enum | Airmode : int32_t { disabled = 0, roll_pitch = 1, roll_pitch_yaw = 2 } |
typedef int(* | ControlCallback) (uintptr_t handle, uint8_t control_group, uint8_t control_index, float &control) |
Fetch a control value. More... | |
![]() | |
Mixer * | _next |
next mixer in a list | |
![]() | |
float | get_control (uint8_t group, uint8_t index) |
Invoke the client callback to fetch a control value. More... | |
![]() | |
static float | scale (const mixer_scaler_s &scaler, float input) |
Perform simpler linear scaling. More... | |
static int | scale_check (struct mixer_scaler_s &scaler) |
Validate a scaler. More... | |
static const char * | findtag (const char *buf, unsigned &buflen, char tag) |
Find a tag. More... | |
static char | findnexttag (const char *buf, unsigned buflen) |
Find next tag and return it (0 is returned if no tag is found) More... | |
static const char * | skipline (const char *buf, unsigned &buflen) |
Skip a line. More... | |
static bool | string_well_formed (const char *buf, unsigned &buflen) |
Check wether the string is well formed and suitable for parsing. | |
![]() | |
ControlCallback | _control_cb |
client-supplied callback used when fetching control values | |
uintptr_t | _cb_handle |
Simple summing mixer.
Collects zero or more inputs and mixes them to a single output.
SimpleMixer::SimpleMixer | ( | ControlCallback | control_cb, |
uintptr_t | cb_handle, | ||
mixer_simple_s * | mixinfo | ||
) |
Constructor.
mixinfo | Mixer configuration. The pointer passed becomes the property of the mixer and will be freed when the mixer is deleted. |
int SimpleMixer::check | ( | ) |
Check that the mixer configuration as loaded is sensible.
Note that this function will call control_cb, but only cares about error returns, not the input value.
|
static |
Factory method with full external configuration.
Given a pointer to a buffer containing a text description of the mixer, returns a pointer to a new instance of the mixer.
control_cb | The callback to invoke when fetching a control value. |
cb_handle | Handle passed to the control callback. |
buf | Buffer containing a text description of the mixer. |
buflen | Length of the buffer in bytes, adjusted to reflect the bytes consumed. |
|
overridevirtual |
Get the saturation status.
Implements Mixer.
|
overridevirtual |
|
overridevirtual |
Analyses the mix configuration and updates a bitmask of groups that are required.
groups | A bitmask of groups (0-31) that the mixer requires. |
Implements Mixer.
|
overridevirtual |
Perform the mixing function.
outputs | Array into which mixed output(s) should be placed. |
space | The number of available entries in the output array; |
Implements Mixer.
|
static |
Factory method for PWM/PPM input to internal float representation.
control_cb | The callback to invoke when fetching a control value. |
cb_handle | Handle passed to the control callback. |
input | The control index used when fetching the input. |
min | The PWM/PPM value considered to be "minimum" (gives -1.0 out) |
mid | The PWM/PPM value considered to be the midpoint (gives 0.0 out) |
max | The PWM/PPM value considered to be "maximum" (gives 1.0 out) |
|
overridevirtual |