Prusa MINI Firmware overview
window_dlg_loadunload_shared.c File Reference
#include "window_dlg_statemachine.h"
#include "window_dlg_loadunload_shared.h"
#include "display_helper.h"
#include "gui.h"
#include "marlin_client.h"
#include "dbg.h"
#include "menu_vars.h"
#include "stm32f4xx_hal.h"
#include <limits.h>

Functions

void f_SH_on_load (void)
 
loop_result_t f_SH_on_loop (_dlg_vars *p_vars, _dlg_ld_vars *additional_vars)
 
void f_SH_on_timeout (void)
 
int _was_move (_dlg_ld_vars *additional_vars)
 
int f_SH_INIT (_dlg_vars *p_vars, _dlg_ld_vars *additional_vars)
 
int f_SH_MOVE_INITIAL_Z (_dlg_vars *p_vars, _dlg_ld_vars *additional_vars)
 
int f_SH_WAIT_INITIAL_Z_MOTION (_dlg_vars *p_vars, _dlg_ld_vars *additional_vars)
 
int f_SH_WAIT_INITIAL_Z_STOPPED (_dlg_vars *p_vars, _dlg_ld_vars *additional_vars)
 
int f_SH_WAIT_E_MOTION (_dlg_vars *p_vars, _dlg_ld_vars *additional_vars)
 
int f_SH_WAIT_E_STOPPED (_dlg_vars *p_vars, _dlg_ld_vars *additional_vars)
 
int f_SH_WAIT_TEMP (_dlg_vars *p_vars, _dlg_ld_vars *additional_vars)
 
int f_SH_WAIT_E_MOTION__WAIT_TEMP (_dlg_vars *p_vars, _dlg_ld_vars *additional_vars)
 

Variables

const float ld_purge_amount = 40.0F
 
static const char * txt_stop [] = { "STOP" }
 
static const char * txt_cont [] = { "CONTINUE" }
 
static const char * txt_none [] = { "" }
 
const _dlg_button_t bt_stop_ena
 
const _dlg_button_t bt_stop_dis
 
const _dlg_button_t bt_cont_ena
 
const _dlg_button_t bt_cont_dis
 
const _dlg_button_t bt_none
 

Function Documentation

◆ f_SH_on_load()

void f_SH_on_load ( void  )
Here is the call graph for this function:

◆ f_SH_on_loop()

loop_result_t f_SH_on_loop ( _dlg_vars p_vars,
_dlg_ld_vars additional_vars 
)
47  {
48  //after M70X is sent i must check marlin_command()
49  //0 == M70X ended - dialog has no reason to exist anymore
51  return LOOP_RESULT_BREAK;
52  }
53 
54  additional_vars->p_marlin_vars = marlin_update_vars(
56  return LOOP_RESULT_CONTINUE;
57 }
Here is the call graph for this function:

◆ f_SH_on_timeout()

void f_SH_on_timeout ( void  )
Here is the call graph for this function:

◆ _was_move()

int _was_move ( _dlg_ld_vars additional_vars)
63  {
64  return additional_vars->initial_move > z_offset_step;
65 }
Here is the caller graph for this function:

◆ f_SH_INIT()

int f_SH_INIT ( _dlg_vars p_vars,
_dlg_ld_vars additional_vars 
)
67  {
68  marlin_gcode("G92 E0"); //saves calculation
70  p_vars->phase++;
71  return 0;
72 }
Here is the call graph for this function:

◆ f_SH_MOVE_INITIAL_Z()

int f_SH_MOVE_INITIAL_Z ( _dlg_vars p_vars,
_dlg_ld_vars additional_vars 
)
74  {
75  additional_vars->initial_move = additional_vars->z_min_extr_pos - additional_vars->z_start;
76 
77  if (_was_move(additional_vars)) {
78  marlin_gcode_printf("G0 Z%f", (double)additional_vars->z_min_extr_pos); //move to start pos
79  additional_vars->z_start = additional_vars->z_min_extr_pos; //set new start pos
80  }
81  p_vars->phase++;
82  return 0;
83 }
Here is the call graph for this function:

◆ f_SH_WAIT_INITIAL_Z_MOTION()

int f_SH_WAIT_INITIAL_Z_MOTION ( _dlg_vars p_vars,
_dlg_ld_vars additional_vars 
)
85  {
86  if (_was_move(additional_vars)) {
87  //did move
88  //wait Z motion
89  if (additional_vars->p_marlin_vars->motion & MARLIN_VAR_MOTION_MSK_Z)
90  p_vars->phase++;
91  } else {
92  //no move, skip this part
93  p_vars->phase++;
94  }
95  return 0;
96 }
Here is the call graph for this function:

◆ f_SH_WAIT_INITIAL_Z_STOPPED()

int f_SH_WAIT_INITIAL_Z_STOPPED ( _dlg_vars p_vars,
_dlg_ld_vars additional_vars 
)
98  {
99  if (_was_move(additional_vars)) {
100  //did move, wait Z stopped
101  if ((additional_vars->p_marlin_vars->motion & MARLIN_VAR_MOTION_MSK_Z) == 0)
102  p_vars->phase++;
103 
104  return 100.F * (additional_vars->p_marlin_vars->pos[MARLIN_VAR_INDEX_Z] - additional_vars->z_start) / additional_vars->initial_move;
105  } else {
106  //no move, skip this part
107  p_vars->phase++;
108  }
109  return 0;
110 }
Here is the call graph for this function:

◆ f_SH_WAIT_E_MOTION()

int f_SH_WAIT_E_MOTION ( _dlg_vars p_vars,
_dlg_ld_vars additional_vars 
)
112  {
113  //wait E motion
114  if (additional_vars->p_marlin_vars->motion & MARLIN_VAR_MOTION_MSK_E)
115  p_vars->phase++;
116  return 0;
117 }

◆ f_SH_WAIT_E_STOPPED()

int f_SH_WAIT_E_STOPPED ( _dlg_vars p_vars,
_dlg_ld_vars additional_vars 
)
119  {
120  //wait Z stopped
121  if ((additional_vars->p_marlin_vars->motion & MARLIN_VAR_MOTION_MSK_E) == 0)
122  p_vars->phase++;
123  return 0;
124 }

◆ f_SH_WAIT_TEMP()

int f_SH_WAIT_TEMP ( _dlg_vars p_vars,
_dlg_ld_vars additional_vars 
)
126  {
127  //wait E temp
128  float min_temp = additional_vars->p_marlin_vars->target_nozzle - 10.0F;
129  float diff_temp = additional_vars->p_marlin_vars->temp_nozzle - min_temp;
130  if (diff_temp > 0) {
131  p_vars->phase++;
132  return 100;
133  } else {
134  //200 degrrees diff == 0%
135  diff_temp = 100.0F + diff_temp / 2;
136  if (diff_temp > 99.0F)
137  return 99;
138  if (diff_temp < 0.0F)
139  return 0;
140  return (int)diff_temp;
141  }
142 }

◆ f_SH_WAIT_E_MOTION__WAIT_TEMP()

int f_SH_WAIT_E_MOTION__WAIT_TEMP ( _dlg_vars p_vars,
_dlg_ld_vars additional_vars 
)
144  {
145  //wait E motion
146  if (additional_vars->p_marlin_vars->motion & MARLIN_VAR_MOTION_MSK_E)
147  p_vars->phase++;
148  return 100 * (HAL_GetTick() - p_vars->tick_part_start) / 10000;
149 }
Here is the call graph for this function:

Variable Documentation

◆ ld_purge_amount

const float ld_purge_amount = 40.0F

◆ txt_stop

const char* txt_stop[] = { "STOP" }
static

◆ txt_cont

const char* txt_cont[] = { "CONTINUE" }
static

◆ txt_none

const char* txt_none[] = { "" }
static

◆ bt_stop_ena

◆ bt_stop_dis

const _dlg_button_t bt_stop_dis

◆ bt_cont_ena

◆ bt_cont_dis

const _dlg_button_t bt_cont_dis

◆ bt_none

BT_ENABLED
#define BT_ENABLED
Definition: window_dlg_statemachine.h:15
z_offset_step
const float z_offset_step
Definition: menu_vars.cpp:26
_dlg_vars::flags
uint8_t flags
Definition: window_dlg_statemachine.h:38
BT_AUTOEXIT
#define BT_AUTOEXIT
Definition: window_dlg_statemachine.h:17
txt_none
static const char * txt_none[]
Definition: window_dlg_loadunload_shared.c:18
MARLIN_VAR_MOTION
#define MARLIN_VAR_MOTION
Definition: marlin_vars.h:8
window_dlg_statemachine_event_1bt
void window_dlg_statemachine_event_1bt(window_dlg_statemachine_t *window, uint8_t event, void *param)
Definition: window_dlg_statemachine.c:235
_dlg_ld_vars::z_start
float z_start
Definition: window_dlg_loadunload_shared.h:18
_dlg_vars::phase
int8_t phase
Definition: window_dlg_statemachine.h:39
txt_cont
static const char * txt_cont[]
Definition: window_dlg_loadunload_shared.c:17
NULL
#define NULL
Definition: usbd_def.h:53
F
#define F(str)
Definition: UHS_macros.h:164
HAL_GetTick
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
Definition: stm32f4xx_hal.c:339
_marlin_vars_t::temp_nozzle
float temp_nozzle
Definition: marlin_vars.h:83
_dlg_ld_vars::z_min_extr_pos
float z_min_extr_pos
Definition: window_dlg_loadunload_shared.h:16
LOOP_RESULT_BREAK
Definition: window_dlg_statemachine.h:52
_was_move
int _was_move(_dlg_ld_vars *additional_vars)
Definition: window_dlg_loadunload_shared.c:63
MARLIN_VAR_TEMP_NOZ
#define MARLIN_VAR_TEMP_NOZ
Definition: marlin_vars.h:19
MARLIN_EVT_CommandEnd
#define MARLIN_EVT_CommandEnd
Definition: marlin_events.h:34
LOOP_RESULT_CONTINUE
Definition: window_dlg_statemachine.h:51
_marlin_vars_t::target_nozzle
float target_nozzle
Definition: marlin_vars.h:85
marlin_gcode
void marlin_gcode(const char *gcode)
Definition: marlin_client.c:195
MARLIN_VAR_POS_Z
#define MARLIN_VAR_POS_Z
Definition: marlin_vars.h:17
MARLIN_VAR_POS_E
#define MARLIN_VAR_POS_E
Definition: marlin_vars.h:18
marlin_update_vars
marlin_vars_t * marlin_update_vars(uint64_t msk)
Definition: marlin_client.c:368
window_dlg_statemachine_draw_0bt
void window_dlg_statemachine_draw_0bt(window_dlg_statemachine_t *window)
Definition: window_dlg_statemachine.c:94
MARLIN_VAR_MSK
#define MARLIN_VAR_MSK(v_id)
Definition: marlin_vars.h:35
DLG_CH_CMD
#define DLG_CH_CMD
Definition: window_dlg_statemachine.h:20
txt_stop
static const char * txt_stop[]
Definition: window_dlg_loadunload_shared.c:16
MARLIN_VAR_INDEX_Z
#define MARLIN_VAR_INDEX_Z
Definition: marlin_vars.h:66
_marlin_vars_t::pos
float pos[4]
Definition: marlin_vars.h:82
MARLIN_VAR_TTEM_NOZ
#define MARLIN_VAR_TTEM_NOZ
Definition: marlin_vars.h:21
MARLIN_VAR_MOTION_MSK_E
#define MARLIN_VAR_MOTION_MSK_E
Definition: marlin_vars.h:71
window_dlg_statemachine_draw_1bt
void window_dlg_statemachine_draw_1bt(window_dlg_statemachine_t *window)
Definition: window_dlg_statemachine.c:87
_dlg_vars::tick_part_start
uint32_t tick_part_start
Definition: window_dlg_statemachine.h:46
_dlg_ld_vars::p_marlin_vars
marlin_vars_t * p_marlin_vars
Definition: window_dlg_loadunload_shared.h:15
marlin_gcode_printf
int marlin_gcode_printf(const char *format,...)
Definition: marlin_client.c:206
_dlg_ld_vars::initial_move
float initial_move
Definition: window_dlg_loadunload_shared.h:17
_marlin_vars_t::motion
uint8_t motion
Definition: marlin_vars.h:78
marlin_event_clr
int marlin_event_clr(uint8_t evt_id)
Definition: marlin_client.c:252
MARLIN_VAR_MOTION_MSK_Z
#define MARLIN_VAR_MOTION_MSK_Z
Definition: marlin_vars.h:70