Added memory config class
This commit is contained in:
@@ -7,9 +7,13 @@
|
||||
#include "logic/button_force.h"
|
||||
#include "logic/dccd_force.h"
|
||||
|
||||
#include "logic/cfg_mem.h"
|
||||
|
||||
/**** Private definitions ****/
|
||||
/**** Private constants ****/
|
||||
/**** Private variables ****/
|
||||
static logic::CfgMemory cfg_mem = logic::CfgMemory();
|
||||
|
||||
static logic::ButtonForce button_force = logic::ButtonForce(&btn_up, &btn_down);
|
||||
static logic::DccdForce dccd_force = logic::DccdForce(&btn_mode, &sw_hbrake, &sw_brakes);
|
||||
|
||||
@@ -20,51 +24,13 @@ int main(void)
|
||||
// HW setup
|
||||
devices_init();
|
||||
|
||||
// Read saved config
|
||||
cfg_mem.init();
|
||||
|
||||
uint8_t user_force = 0;
|
||||
|
||||
button_force.force = mcu::eeprom_read8b(0x0000);
|
||||
dccd_force.brake_mode = mcu::eeprom_read8b(0x0001);
|
||||
uint8_t pot_mode = mcu::eeprom_read8b(0x0002);
|
||||
uint8_t dsp_brigth = mcu::eeprom_read8b(0x0003);
|
||||
uint8_t dsp_dimm = mcu::eeprom_read8b(0x0004);
|
||||
uint16_t lock_current = mcu::eeprom_read16b(0x0005);
|
||||
|
||||
// Safeguard eeprom values
|
||||
if(button_force.force > 100)
|
||||
{
|
||||
button_force.force = 0;
|
||||
mcu::eeprom_write8b(0x0000, button_force.force);
|
||||
};
|
||||
|
||||
if(dccd_force.brake_mode > 2)
|
||||
{
|
||||
button_force.force = 0;
|
||||
mcu::eeprom_write8b(0x0001, dccd_force.brake_mode);
|
||||
};
|
||||
|
||||
if(pot_mode > 1)
|
||||
{
|
||||
pot_mode = 0;
|
||||
mcu::eeprom_write8b(0x0002, pot_mode);
|
||||
};
|
||||
|
||||
if(dsp_brigth > 100)
|
||||
{
|
||||
dsp_brigth = 100;
|
||||
mcu::eeprom_write8b(0x0003, dsp_brigth);
|
||||
};
|
||||
|
||||
if(dsp_dimm > 100)
|
||||
{
|
||||
dsp_dimm = 50;
|
||||
mcu::eeprom_write8b(0x0004, dsp_dimm);
|
||||
};
|
||||
|
||||
if(lock_current > 6000)
|
||||
{
|
||||
lock_current = 4500;
|
||||
mcu::eeprom_write16b(0x0005, lock_current);
|
||||
};
|
||||
button_force.force = cfg_mem.btn_force;
|
||||
dccd_force.brake_mode = cfg_mem.bmode;
|
||||
|
||||
// Super loop
|
||||
while(1)
|
||||
@@ -76,7 +42,7 @@ int main(void)
|
||||
button_force.update();
|
||||
|
||||
// Select user force input
|
||||
if(pot_mode) user_force = pot.percent;
|
||||
if(cfg_mem.pot_mode) user_force = pot.percent;
|
||||
else user_force = button_force.force;
|
||||
|
||||
// Calculate next target force
|
||||
@@ -86,7 +52,7 @@ int main(void)
|
||||
if((sup_fuse.fault)||(out_fuse.fault)) dccd_force.force = 0;
|
||||
|
||||
// Convert force to current
|
||||
ccout.target = util::percent_of(dccd_force.force, lock_current);
|
||||
ccout.target = util::percent_of(dccd_force.force, cfg_mem.lock_current);
|
||||
|
||||
// Execute outputs
|
||||
ccout.update();
|
||||
@@ -95,21 +61,13 @@ int main(void)
|
||||
display.show_percent(dccd_force.force, hw::DisplayLed::LED_DSP_DOT10);
|
||||
|
||||
// Process dimm
|
||||
if(sw_dimm.state == hw::BUTTON_ON) display.set_brigthness(dsp_dimm);
|
||||
else display.set_brigthness(dsp_brigth);
|
||||
if(sw_dimm.state == hw::BUTTON_ON) display.set_brigthness(cfg_mem.dsp_dimm);
|
||||
else display.set_brigthness(cfg_mem.dsp_brigth);
|
||||
|
||||
// Save user setting changes
|
||||
if(button_force.is_new)
|
||||
{
|
||||
mcu::eeprom_write8b(0x0000, button_force.force);
|
||||
button_force.is_new = 0;
|
||||
};
|
||||
|
||||
if(dccd_force.is_new_bmode)
|
||||
{
|
||||
mcu::eeprom_write8b(0x0001, dccd_force.brake_mode);
|
||||
dccd_force.is_new_bmode = 0;
|
||||
};
|
||||
cfg_mem.btn_force = button_force.force;
|
||||
cfg_mem.bmode = dccd_force.brake_mode;
|
||||
cfg_mem.save();
|
||||
|
||||
continue; // End of super loop
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user