Created more helpers
This commit is contained in:
85
firmware/src/dccd/user_force.cpp
Normal file
85
firmware/src/dccd/user_force.cpp
Normal file
@@ -0,0 +1,85 @@
|
||||
/**** 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 ***/
|
||||
Reference in New Issue
Block a user