Compare commits
2 Commits
a474111f36
...
687c72bde7
Author | SHA1 | Date | |
---|---|---|---|
687c72bde7 | |||
b6d4a2e35e |
@ -40,7 +40,7 @@
|
||||
#include <reflow-controller/shell-uart-config.h>
|
||||
#include <reflow-controller/oven-driver.h>
|
||||
#include <fatfs/ff.h>
|
||||
#include <reflow-controller/reflow-menu.h>
|
||||
#include <reflow-controller/ui/gui.h>
|
||||
#include <reflow-controller/safety/safety-controller.h>
|
||||
#include <reflow-controller/settings/settings.h>
|
||||
|
||||
@ -141,33 +141,17 @@ static bool mount_sd_card_if_avail(bool mounted)
|
||||
return mounted;
|
||||
}
|
||||
|
||||
static void setup_unused_pins(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
rcc_manager_enable_clock(&RCC->AHB1ENR, BITMASK_TO_BITNO(RCC_AHB1ENR_GPIOEEN));
|
||||
GPIOE->MODER = 0UL;
|
||||
for (i = 0; i < 16; i++)
|
||||
GPIOE->PUPDR |= PULLDOWN(i);
|
||||
rcc_manager_disable_clock(&RCC->AHB1ENR, BITMASK_TO_BITNO(RCC_AHB1ENR_GPIOEEN));
|
||||
}
|
||||
|
||||
static inline void setup_system(void)
|
||||
{
|
||||
setup_nvic_priorities();
|
||||
systick_setup();
|
||||
|
||||
oven_driver_init();
|
||||
digio_setup_default_all();
|
||||
led_setup();
|
||||
loudspeaker_setup();
|
||||
reflow_menu_init();
|
||||
|
||||
gui_init();
|
||||
uart_gpio_config();
|
||||
setup_shell_uart(&shell_uart);
|
||||
|
||||
setup_unused_pins();
|
||||
|
||||
safety_controller_init();
|
||||
adc_pt1000_setup_meas();
|
||||
}
|
||||
@ -220,7 +204,7 @@ int main(void)
|
||||
quarter_sec_timestamp = systick_get_global_tick();
|
||||
}
|
||||
|
||||
menu_wait_request = reflow_menu_handle();
|
||||
menu_wait_request = gui_handle();
|
||||
handle_shell_uart_input(shell_handle);
|
||||
|
||||
safety_controller_handle();
|
||||
|
@ -477,11 +477,136 @@ return_value:
|
||||
return ret;
|
||||
}
|
||||
|
||||
int safety_memory_insert_config_override(struct config_override *config_override);
|
||||
|
||||
int safety_memory_get_config_override_count(uint32_t *count);
|
||||
static uint32_t convert_config_override_to_word(const struct config_override *conf_override)
|
||||
{
|
||||
uint32_t data = 0;
|
||||
|
||||
int safety_memory_get_config_override(uint32_t idx, struct config_override *config_override);
|
||||
if (conf_override->type == SAFETY_MEMORY_CONFIG_OVERRIDE_WEIGHT) {
|
||||
data |= 0xAA0000A2UL;
|
||||
data |= ((uint32_t)conf_override->entry.weight_override.flag) << 16;
|
||||
data |= ((uint32_t)conf_override->entry.weight_override.weight) << 8;
|
||||
} else if (conf_override->type == SAFETY_MEMORY_CONFIG_OVERRIDE_PERSISTANCE) {
|
||||
data |= 0xBB00008EUL;
|
||||
data |= ((uint32_t)conf_override->entry.persistance_override.flag) << 16;
|
||||
data |= ((uint32_t)conf_override->entry.persistance_override.persistance) << 8;
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
int safety_memory_insert_config_override(struct config_override *config_override)
|
||||
{
|
||||
struct safety_memory_header header;
|
||||
uint32_t idx;
|
||||
uint32_t data;
|
||||
int res;
|
||||
int ret = -3;
|
||||
|
||||
if (safety_memory_get_header(&header) != SAFETY_MEMORY_INIT_VALID_MEMORY) {
|
||||
return -2000;
|
||||
}
|
||||
|
||||
if (header.config_overrides_len == 0)
|
||||
return -1;
|
||||
|
||||
for (idx = 0; idx < header.config_overrides_len; idx++) {
|
||||
res = backup_ram_get_data(header.config_overrides_offset + idx, &data, 1UL);
|
||||
if (res)
|
||||
return -2;
|
||||
if (data == 0UL) {
|
||||
data = convert_config_override_to_word(config_override);
|
||||
res = backup_ram_write_data(header.config_overrides_offset + idx, &data, 1UL);
|
||||
if (res)
|
||||
return -4;
|
||||
res = safety_memory_gen_crc();
|
||||
if (res)
|
||||
return -5;
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int safety_memory_get_config_override_count(uint32_t *count)
|
||||
{
|
||||
struct safety_memory_header header;
|
||||
uint32_t iter;
|
||||
uint32_t valid_count;
|
||||
uint32_t data;
|
||||
int res;
|
||||
|
||||
if (!count)
|
||||
return -1001;
|
||||
|
||||
*count = 0UL;
|
||||
|
||||
if (safety_memory_get_header(&header) != SAFETY_MEMORY_INIT_VALID_MEMORY) {
|
||||
return -2000;
|
||||
}
|
||||
|
||||
if (header.config_overrides_len == 0)
|
||||
return 0;
|
||||
|
||||
valid_count = 0;
|
||||
for (iter = 0; iter < header.config_overrides_len; iter++) {
|
||||
res = backup_ram_get_data(header.config_overrides_offset + iter, &data, 1UL);
|
||||
if (res)
|
||||
return -2;
|
||||
|
||||
if (data != 0)
|
||||
valid_count++;
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
*count = valid_count;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int safety_memory_get_config_override(uint32_t idx, struct config_override *config_override)
|
||||
{
|
||||
struct safety_memory_header header;
|
||||
uint32_t data;
|
||||
int res;
|
||||
|
||||
if (!config_override)
|
||||
return -1002;
|
||||
|
||||
if (safety_memory_get_header(&header) != SAFETY_MEMORY_INIT_VALID_MEMORY) {
|
||||
return -2000;
|
||||
}
|
||||
|
||||
if (idx >= header.config_overrides_len) {
|
||||
return -1001;
|
||||
}
|
||||
|
||||
res = backup_ram_get_data(header.config_overrides_offset + idx, &data, 1UL);
|
||||
if (res) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
switch (data & 0xFF) {
|
||||
case 0xA2:
|
||||
/* Weight override */
|
||||
config_override->type = SAFETY_MEMORY_CONFIG_OVERRIDE_WEIGHT;
|
||||
config_override->entry.weight_override.flag = (data & 0xFF0000UL) >> 16;
|
||||
config_override->entry.weight_override.weight = (data & 0xFF00UL) >> 8;
|
||||
break;
|
||||
case 0x8E:
|
||||
/* persistance override */
|
||||
config_override->type = SAFETY_MEMORY_CONFIG_OVERRIDE_PERSISTANCE;
|
||||
config_override->entry.persistance_override.flag = (data & 0xFF0000UL) >> 16;
|
||||
config_override->entry.persistance_override.persistance = (data & 0xFF00UL) >> 8;
|
||||
break;
|
||||
default:
|
||||
return -2;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int safety_memory_dump_base64(char *buffer, size_t buffsize, size_t *used_size)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user