86 lines
2.0 KiB
C++
86 lines
2.0 KiB
C++
/**** Includes ****/
|
|
#include "../utils/utils.h"
|
|
#include "user_force.h"
|
|
|
|
using namespace dccd;
|
|
|
|
/**** Private definitions ****/
|
|
/**** Private constants ****/
|
|
/**** Private variables ****/
|
|
/**** Private function declarations ****/
|
|
/**** Public function definitions ****/
|
|
dccd::UserForce::UserForce(void)
|
|
{
|
|
return;
|
|
}
|
|
|
|
dccd::UserForce::~UserForce(void)
|
|
{
|
|
return;
|
|
}
|
|
|
|
void dccd::UserForce::init(dccd::DccdHw* dccd_hw)
|
|
{
|
|
this->hardware = dccd_hw;
|
|
this->is_new_btn_force = 0;
|
|
this->btn_repeat_time = 0;
|
|
this->force = 0;
|
|
this->pot_mode = 0;
|
|
this->btn_force = 0;
|
|
this->btn_step = 20;
|
|
}
|
|
|
|
void dccd::UserForce::cfg_debounce(uint16_t dbnc_time)
|
|
{
|
|
this->hardware->btn_up.dbnc_lim = dbnc_time;
|
|
this->hardware->btn_down.dbnc_lim = dbnc_time;
|
|
}
|
|
|
|
void dccd::UserForce::cfg_pot(uint16_t dead_bot, uint16_t dead_top)
|
|
{
|
|
if(this->pot_mode==0) return;
|
|
this->hardware->pot.high_deadzone = dead_top;
|
|
this->hardware->pot.low_deadzone = dead_bot;
|
|
}
|
|
|
|
void dccd::UserForce::write_force(uint8_t force)
|
|
{
|
|
if(force > 100) force = 100;
|
|
this->btn_force = force;
|
|
this->force = force;
|
|
}
|
|
|
|
uint8_t dccd::UserForce::process(void)
|
|
{
|
|
if(this->pot_mode)
|
|
{
|
|
this->force = this->hardware->pot.last_percent;
|
|
return this->force;
|
|
};
|
|
|
|
if((this->hardware->btn_up.state==1)&&((this->hardware->btn_up.is_new)||((this->hardware->btn_up.time_read() >= this->btn_repeat_time)&&(this->btn_repeat_time!=0))))
|
|
{
|
|
this->hardware->btn_up.time_reset();
|
|
this->hardware->btn_up.is_new = 0;
|
|
// Increase user force
|
|
this->btn_force += this->btn_step;
|
|
if(this->btn_force > 100) this->btn_force = 100;
|
|
is_new_btn_force = 1;
|
|
};
|
|
|
|
if((this->hardware->btn_down.state==1)&&((this->hardware->btn_down.is_new)||((this->hardware->btn_down.time_read() >= this->btn_repeat_time)&&(this->btn_repeat_time!=0))))
|
|
{
|
|
this->hardware->btn_down.time_reset();
|
|
this->hardware->btn_down.is_new = 0;
|
|
// Decrease user force
|
|
this->btn_force -= this->btn_step;
|
|
if(this->btn_force > 100) this->btn_force = 0;
|
|
is_new_btn_force = 1;
|
|
};
|
|
|
|
this->force = this->btn_force;
|
|
return this->force;
|
|
}
|
|
|
|
/**** Private function definitions ***/
|