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/shell-uart-config.h>
|
||||||
#include <reflow-controller/oven-driver.h>
|
#include <reflow-controller/oven-driver.h>
|
||||||
#include <fatfs/ff.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/safety/safety-controller.h>
|
||||||
#include <reflow-controller/settings/settings.h>
|
#include <reflow-controller/settings/settings.h>
|
||||||
|
|
||||||
@ -141,33 +141,17 @@ static bool mount_sd_card_if_avail(bool mounted)
|
|||||||
return 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)
|
static inline void setup_system(void)
|
||||||
{
|
{
|
||||||
setup_nvic_priorities();
|
setup_nvic_priorities();
|
||||||
systick_setup();
|
systick_setup();
|
||||||
|
|
||||||
oven_driver_init();
|
oven_driver_init();
|
||||||
digio_setup_default_all();
|
digio_setup_default_all();
|
||||||
led_setup();
|
led_setup();
|
||||||
loudspeaker_setup();
|
loudspeaker_setup();
|
||||||
reflow_menu_init();
|
gui_init();
|
||||||
|
|
||||||
uart_gpio_config();
|
uart_gpio_config();
|
||||||
setup_shell_uart(&shell_uart);
|
setup_shell_uart(&shell_uart);
|
||||||
|
|
||||||
setup_unused_pins();
|
|
||||||
|
|
||||||
safety_controller_init();
|
safety_controller_init();
|
||||||
adc_pt1000_setup_meas();
|
adc_pt1000_setup_meas();
|
||||||
}
|
}
|
||||||
@ -220,7 +204,7 @@ int main(void)
|
|||||||
quarter_sec_timestamp = systick_get_global_tick();
|
quarter_sec_timestamp = systick_get_global_tick();
|
||||||
}
|
}
|
||||||
|
|
||||||
menu_wait_request = reflow_menu_handle();
|
menu_wait_request = gui_handle();
|
||||||
handle_shell_uart_input(shell_handle);
|
handle_shell_uart_input(shell_handle);
|
||||||
|
|
||||||
safety_controller_handle();
|
safety_controller_handle();
|
||||||
|
@ -477,11 +477,136 @@ return_value:
|
|||||||
return ret;
|
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)
|
int safety_memory_dump_base64(char *buffer, size_t buffsize, size_t *used_size)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user