#ifndef HOMING_H
#define HOMING_H
#include <rtapi_bool.h>
typedef enum {
HOME_SEQUENCE_IDLE = 0, HOME_SEQUENCE_START, HOME_SEQUENCE_DO_ONE_JOINT, HOME_SEQUENCE_DO_ONE_SEQUENCE, HOME_SEQUENCE_START_JOINTS, HOME_SEQUENCE_WAIT_JOINTS, } home_sequence_state_t;
extern void set_joint_homing_params(int jno,
double offset,
double home,
double home_final_vel,
double home_search_vel,
double home_latch_vel,
int home_flags,
int home_sequence,
bool volatile_home
);
void update_joint_homing_params (int jno,
double home_offset,
double home_home,
int home_sequence
);
extern void homing_init(void);
extern int export_joint_home_pins(int njoints,int id);
extern void read_homing_in_pins(int njoints);
extern void do_homing_sequence(void);
extern void do_homing(void);
extern void write_homing_out_pins(int njoints);
extern void set_home_sequence_state(home_sequence_state_t);
extern void set_home_start(int jno);
extern void set_home_abort(int jno);
extern void set_home_idle( int jno);
extern void set_joint_homing( int jno, bool value);
extern void set_joint_homed( int jno, bool value);
extern void set_joint_at_home(int jno, bool value);
extern home_sequence_state_t get_home_sequence_state(void);
extern bool get_homing_is_active(void);
extern int get_home_sequence(int jno);
extern bool get_homing(int jno);
extern bool get_homed(int jno);
extern bool get_index_enable(int jno);
extern bool get_home_is_volatile(int jno);
extern bool get_home_needs_unlock_first(int jno);
extern bool get_home_is_idle(int jno);
extern bool get_homing_at_index_search_wait(int jno);
extern bool get_home_is_synchronized(int jno);
#endif