113 lines
2.3 KiB
C
113 lines
2.3 KiB
C
#ifndef MAIN_CONTROL_FSM_H_
|
|
#define MAIN_CONTROL_FSM_H_
|
|
|
|
#include "freertos/FreeRTOS.h" // Must be FIRST
|
|
#include "freertos/projdefs.h"
|
|
#include "freertos/task.h"
|
|
#include "freertos/queue.h"
|
|
|
|
|
|
typedef enum {
|
|
FSM_CMD_START,
|
|
FSM_CMD_START_IGNORE_OVERTRAVEL,
|
|
FSM_CMD_STOP,
|
|
FSM_CMD_UNDO,
|
|
FSM_CMD_SHUTDOWN,
|
|
|
|
FSM_CMD_CALIBRATE_JACK_PREP,
|
|
FSM_CMD_CALIBRATE_JACK_START,
|
|
FSM_CMD_CALIBRATE_JACK_END,
|
|
FSM_CMD_CALIBRATE_JACK_FINISH,
|
|
|
|
FSM_CMD_CALIBRATE_DRIVE_PREP,
|
|
FSM_CMD_CALIBRATE_DRIVE_START,
|
|
FSM_CMD_CALIBRATE_DRIVE_END,
|
|
FSM_CMD_CALIBRATE_DRIVE_FINISH
|
|
} fsm_cmd_t;
|
|
|
|
typedef enum {
|
|
STATE_IDLE = 0,
|
|
STATE_MOVE_START_DELAY,
|
|
STATE_JACK_UP_START,
|
|
STATE_JACK_UP,
|
|
STATE_DRIVE_START_DELAY,
|
|
STATE_DRIVE,
|
|
STATE_DRIVE_END_DELAY,
|
|
STATE_JACK_DOWN,
|
|
STATE_UNDO_JACK_START,
|
|
|
|
STATE_CALIBRATE_JACK_DELAY,
|
|
STATE_CALIBRATE_JACK_MOVE,
|
|
|
|
STATE_CALIBRATE_DRIVE_DELAY,
|
|
STATE_CALIBRATE_DRIVE_MOVE
|
|
} fsm_state_t;
|
|
#define LOG_TYPE_BAT 100
|
|
#define LOG_TYPE_CRASH 101
|
|
#define LOG_TYPE_BOOT 102 // Every boot: [ts_ms u64][boot_info u8]
|
|
// boot_info bits[3:0] = esp_reset_reason_t
|
|
// boot_info bits[7:4] = esp_sleep_wakeup_cause_t (non-zero only when reset=DEEPSLEEP)
|
|
#define LOG_TYPE_TIME_SET 103 // Time sync: [ts_ms u64]
|
|
|
|
typedef enum {
|
|
RELAY_SENSORS = 0,
|
|
RELAY_C3,
|
|
RELAY_B3,
|
|
RELAY_A3,
|
|
RELAY_B2,
|
|
RELAY_A2,
|
|
RELAY_B1,
|
|
RELAY_A1
|
|
} relay_t;
|
|
|
|
typedef enum {
|
|
BRIDGE_AUX = 2,
|
|
BRIDGE_JACK = 1,
|
|
BRIDGE_DRIVE = 0,
|
|
NUM_BRIDGES = 3,
|
|
} bridge_t;
|
|
|
|
typedef enum {
|
|
BRIDGE_FWD = 0b10,
|
|
BRIDGE_REV = 0b01,
|
|
BRIDGE_OFF = 0b00,
|
|
BRIDGE_ON = 0b11
|
|
} bridge_dir_t;
|
|
|
|
typedef enum {
|
|
FSM_OVERRIDE_DRIVE_FWD,
|
|
FSM_OVERRIDE_DRIVE_REV,
|
|
FSM_OVERRIDE_JACK_UP,
|
|
FSM_OVERRIDE_JACK_DOWN,
|
|
FSM_OVERRIDE_AUX
|
|
} fsm_override_t;
|
|
|
|
#define N_RELAYS 8
|
|
#define N_BRIDGES 3
|
|
|
|
void pulse_override(fsm_override_t cmd);
|
|
|
|
esp_err_t fsm_init();
|
|
esp_err_t fsm_stop();
|
|
|
|
void fsm_set_cal_val(float v);
|
|
int64_t fsm_get_cal_t();
|
|
int64_t fsm_get_cal_e();
|
|
void fsm_request(fsm_cmd_t cmd);
|
|
|
|
esp_err_t fsm_get_error();
|
|
void fsm_clear_error();
|
|
|
|
|
|
float fsm_get_remaining_distance(void);
|
|
void fsm_set_remaining_distance(float x);
|
|
|
|
//void fsm_begin_auto_move();
|
|
|
|
int8_t fsm_get_current_progress(int8_t remainder);
|
|
|
|
fsm_state_t fsm_get_state();
|
|
|
|
int8_t get_bridge_state(bridge_t bridge);
|
|
|
|
#endif /* MAIN_CONTROL_FSM_H_ */ |