11 .
name =
"Effects manager" ,
12 .id = CLSID_EFFECTSMGR,
53 for(uint8_t i=0;i<
effects.size();i++){
77 int32_t idx = this->
effects_calc->find_free_effect(effectType);
81 effects[idx].duration = FFB_EFFECT_DURATION_INFINITE;
83 effects[idx].useSingleCondition =
false;
84 for(
auto &cond :
effects[idx].conditions){
102 if(effect->
type == FFB_EFFECT_CONSTANT){
145 replies.emplace_back(
"Constant=1,Ramp=2,Square=3,Sine=4,Triangle=5,Sawtooth Up=6,Sawtooth Down=7,Spring=8,Damper=9,Inertia=10,Friction=11");
154 replies.emplace_back(
effects[cmd.
adr].magnitude);
static CommandStatus handleGetFuncSetFunc(const ParsedCommand &cmd, std::vector< CommandReply > &replies, TVal(cls1::*getfunc)(), void(cls2::*setfunc)(TVal), cls *obj)
virtual uint8_t getCommandHandlerInstance()
void registerCommand(const char *cmd, const ID cmdid, const char *help=nullptr, uint32_t flags=0)
static CommandStatus handleGetSet(const ParsedCommand &cmd, std::vector< CommandReply > &replies, TVal &value)
virtual void fxUpdateEvent()
virtual void cfUpdateEvent()
int32_t newEffect(uint8_t effectType)
void setMagnitude(uint8_t idx, int16_t magnitude)
static ClassIdentifier info
std::array< FFB_Effect, EffectsCalculator::max_effects > & effects
void setEffectState(uint8_t id, bool state)
SerialFFB(std::shared_ptr< EffectsCalculator > ec, uint8_t instance=0)
void set_gain(uint8_t gain)
static constexpr FFB_Effect_Condition defaultCond
const ClassIdentifier getInfo()
Command handlers always have class infos. Works well with ChoosableClass.
std::shared_ptr< EffectsCalculator > effects_calc
CommandStatus command(const ParsedCommand &cmd, std::vector< CommandReply > &replies)