Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
45b7232edThis file is pinned to the selected release. Download the original to open it in your design tool.
/*
* This file was automatically generated using Avlos.
* https://github.com/tinymovr/avlos
*
* Any changes to this file will be overwritten when
* content is regenerated.
*/
#include <string.h>
#include <src/adc/adc.h>
#include <src/system/system.h>
#include <src/sensor/sensors.h>
#include <src/observer/observer.h>
#include <src/motor/motor.h>
#include <src/scheduler/scheduler.h>
#include <src/controller/controller.h>
#include <src/nvm/nvm.h>
#include <src/watchdog/watchdog.h>
#include <src/can/can_endpoints.h>
uint8_t (*avlos_endpoints[97])(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd) = {&avlos_protocol_hash, &avlos_uid, &avlos_fw_version, &avlos_hw_revision, &avlos_Vbus, &avlos_Ibus, &avlos_power, &avlos_temp, &avlos_calibrated, &avlos_errors, &avlos_warnings, &avlos_save_config, &avlos_erase_config, &avlos_reset, &avlos_enter_dfu, &avlos_config_size, &avlos_scheduler_load, &avlos_scheduler_warnings, &avlos_controller_state, &avlos_controller_mode, &avlos_controller_warnings, &avlos_controller_errors, &avlos_controller_position_setpoint, &avlos_controller_position_p_gain, &avlos_controller_velocity_setpoint, &avlos_controller_velocity_limit, &avlos_controller_velocity_p_gain, &avlos_controller_velocity_i_gain, &avlos_controller_velocity_deadband, &avlos_controller_velocity_increment, &avlos_controller_current_Iq_setpoint, &avlos_controller_current_Id_setpoint, &avlos_controller_current_Iq_limit, &avlos_controller_current_Iq_estimate, &avlos_controller_current_bandwidth, &avlos_controller_current_Iq_p_gain, &avlos_controller_current_max_Ibus_regen, &avlos_controller_current_max_Ibrake, &avlos_controller_voltage_Vq_setpoint, &avlos_controller_calibrate, &avlos_controller_idle, &avlos_controller_position_mode, &avlos_controller_velocity_mode, &avlos_controller_current_mode, &avlos_controller_set_pos_vel_setpoints, &avlos_comms_can_rate, &avlos_comms_can_id, &avlos_comms_can_heartbeat, &avlos_motor_R, &avlos_motor_L, &avlos_motor_pole_pairs, &avlos_motor_type, &avlos_motor_calibrated, &avlos_motor_I_cal, &avlos_motor_errors, &avlos_sensors_user_frame_position_estimate, &avlos_sensors_user_frame_velocity_estimate, &avlos_sensors_user_frame_offset, &avlos_sensors_user_frame_multiplier, &avlos_sensors_setup_onboard_calibrated, &avlos_sensors_setup_onboard_errors, &avlos_sensors_setup_external_spi_type, &avlos_sensors_setup_external_spi_rate, &avlos_sensors_setup_external_spi_calibrated, &avlos_sensors_setup_external_spi_errors, &avlos_sensors_setup_hall_calibrated, &avlos_sensors_setup_hall_errors, &avlos_sensors_select_position_sensor_connection, &avlos_sensors_select_position_sensor_bandwidth, &avlos_sensors_select_position_sensor_raw_angle, &avlos_sensors_select_position_sensor_position_estimate, &avlos_sensors_select_position_sensor_velocity_estimate, &avlos_sensors_select_commutation_sensor_connection, &avlos_sensors_select_commutation_sensor_bandwidth, &avlos_sensors_select_commutation_sensor_raw_angle, &avlos_sensors_select_commutation_sensor_position_estimate, &avlos_sensors_select_commutation_sensor_velocity_estimate, &avlos_traj_planner_max_accel, &avlos_traj_planner_max_decel, &avlos_traj_planner_max_vel, &avlos_traj_planner_t_accel, &avlos_traj_planner_t_decel, &avlos_traj_planner_t_total, &avlos_traj_planner_move_to, &avlos_traj_planner_move_to_tlimit, &avlos_traj_planner_errors, &avlos_homing_velocity, &avlos_homing_max_homing_t, &avlos_homing_retract_dist, &avlos_homing_warnings, &avlos_homing_stall_detect_velocity, &avlos_homing_stall_detect_delta_pos, &avlos_homing_stall_detect_t, &avlos_homing_home, &avlos_watchdog_enabled, &avlos_watchdog_triggered, &avlos_watchdog_timeout };
uint32_t _avlos_get_proto_hash(void)
{
return avlos_proto_hash;
}
uint8_t avlos_protocol_hash(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint32_t v;
v = _avlos_get_proto_hash();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_uid(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint32_t v;
v = system_get_uid();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_fw_version(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
*buffer_len = system_get_fw_version_string((char *)buffer);
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_hw_revision(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint32_t v;
v = system_get_hw_revision();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_Vbus(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = system_get_Vbus();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_Ibus(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = controller_get_Ibus_est();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_power(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = controller_get_power_est();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_temp(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = ADC_get_mcu_temp();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_calibrated(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
bool v;
v = system_get_calibrated();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_errors(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint8_t v;
v = system_get_errors();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_warnings(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint8_t v;
v = system_get_warnings();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_save_config(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
nvm_save_config();
return AVLOS_RET_CALL;
}
uint8_t avlos_erase_config(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
nvm_erase_and_reset();
return AVLOS_RET_CALL;
}
uint8_t avlos_reset(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
system_reset();
return AVLOS_RET_CALL;
}
uint8_t avlos_enter_dfu(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
system_enter_dfu();
return AVLOS_RET_CALL;
}
uint8_t avlos_config_size(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint32_t v;
v = system_get_config_size();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_scheduler_load(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint32_t v;
v = scheduler_get_load();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_scheduler_warnings(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint8_t v;
v = scheduler_get_warnings();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_controller_state(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint8_t v;
v = controller_get_state();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
uint8_t v;
memcpy(&v, buffer, sizeof(v));
controller_set_state(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_controller_mode(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint8_t v;
v = controller_get_mode();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
uint8_t v;
memcpy(&v, buffer, sizeof(v));
controller_set_mode(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_controller_warnings(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint8_t v;
v = controller_get_warnings();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_controller_errors(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint8_t v;
v = controller_get_errors();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_controller_position_setpoint(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = controller_get_pos_setpoint_user_frame();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
controller_set_pos_setpoint_user_frame(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_controller_position_p_gain(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = controller_get_pos_gain();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
controller_set_pos_gain(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_controller_velocity_setpoint(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = controller_get_vel_setpoint_user_frame();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
controller_set_vel_setpoint_user_frame(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_controller_velocity_limit(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = controller_get_vel_limit();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
controller_set_vel_limit(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_controller_velocity_p_gain(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = controller_get_vel_gain();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
controller_set_vel_gain(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_controller_velocity_i_gain(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = controller_get_vel_integral_gain();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
controller_set_vel_integral_gain(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_controller_velocity_deadband(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = controller_get_vel_integral_deadband();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
controller_set_vel_integral_deadband(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_controller_velocity_increment(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = controller_get_vel_increment();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
controller_set_vel_increment(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_controller_current_Iq_setpoint(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = controller_get_Iq_setpoint_user_frame();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
controller_set_Iq_setpoint_user_frame(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_controller_current_Id_setpoint(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = controller_get_Id_setpoint_user_frame();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_controller_current_Iq_limit(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = controller_get_Iq_limit();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
controller_set_Iq_limit(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_controller_current_Iq_estimate(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = controller_get_Iq_estimate_user_frame();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_controller_current_bandwidth(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = controller_get_I_bw();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
controller_set_I_bw(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_controller_current_Iq_p_gain(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = controller_get_Iq_gain();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_controller_current_max_Ibus_regen(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = controller_get_max_Ibus_regen();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
controller_set_max_Ibus_regen(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_controller_current_max_Ibrake(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = controller_get_max_Ibrake();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
controller_set_max_Ibrake(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_controller_voltage_Vq_setpoint(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = controller_get_Vq_setpoint_user_frame();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_controller_calibrate(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
controller_calibrate();
return AVLOS_RET_CALL;
}
uint8_t avlos_controller_idle(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
controller_idle();
return AVLOS_RET_CALL;
}
uint8_t avlos_controller_position_mode(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
controller_position_mode();
return AVLOS_RET_CALL;
}
uint8_t avlos_controller_velocity_mode(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
controller_velocity_mode();
return AVLOS_RET_CALL;
}
uint8_t avlos_controller_current_mode(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
controller_current_mode();
return AVLOS_RET_CALL;
}
uint8_t avlos_controller_set_pos_vel_setpoints(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
uint8_t _offset = 0;
float pos_setpoint;
memcpy(&pos_setpoint, buffer+_offset, sizeof(pos_setpoint));
_offset += sizeof(pos_setpoint);
float vel_setpoint;
memcpy(&vel_setpoint, buffer+_offset, sizeof(vel_setpoint));
_offset += sizeof(vel_setpoint);
float ret_val = controller_set_pos_vel_setpoints_user_frame(pos_setpoint, vel_setpoint);
memcpy(buffer, &ret_val, sizeof(ret_val));
*buffer_len = sizeof(ret_val);
return AVLOS_RET_CALL;
}
uint8_t avlos_comms_can_rate(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint32_t v;
v = CAN_get_kbit_rate();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
uint32_t v;
memcpy(&v, buffer, sizeof(v));
CAN_set_kbit_rate(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_comms_can_id(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint32_t v;
v = CAN_get_ID();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
uint32_t v;
memcpy(&v, buffer, sizeof(v));
CAN_set_ID(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_comms_can_heartbeat(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
bool v;
v = CAN_get_send_heartbeat();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
bool v;
memcpy(&v, buffer, sizeof(v));
CAN_set_send_heartbeat(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_motor_R(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = motor_get_phase_resistance();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
motor_set_phase_resistance(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_motor_L(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = motor_get_phase_inductance();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
motor_set_phase_inductance(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_motor_pole_pairs(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint8_t v;
v = motor_get_pole_pairs();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
uint8_t v;
memcpy(&v, buffer, sizeof(v));
motor_set_pole_pairs(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_motor_type(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint8_t v;
v = motor_get_is_gimbal();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
uint8_t v;
memcpy(&v, buffer, sizeof(v));
motor_set_is_gimbal(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_motor_calibrated(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
bool v;
v = motor_get_calibrated();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_motor_I_cal(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = motor_get_I_cal();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
motor_set_I_cal(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_motor_errors(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint8_t v;
v = motor_get_errors();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_sensors_user_frame_position_estimate(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = user_frame_get_pos_estimate();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_sensors_user_frame_velocity_estimate(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = user_frame_get_vel_estimate();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_sensors_user_frame_offset(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = frame_user_to_position_sensor_get_offset();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
frame_user_to_position_sensor_set_offset(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_sensors_user_frame_multiplier(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = frame_user_to_position_sensor_get_multiplier();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
frame_user_to_position_sensor_set_multiplier(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_sensors_setup_onboard_calibrated(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
bool v;
v = sensor_onboard_get_is_calibrated();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_sensors_setup_onboard_errors(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint8_t v;
v = sensor_onboard_get_errors();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_sensors_setup_external_spi_type(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint8_t v;
v = sensor_external_spi_get_type_avlos();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
uint8_t v;
memcpy(&v, buffer, sizeof(v));
sensor_external_spi_set_type_avlos(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_sensors_setup_external_spi_rate(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint8_t v;
v = sensor_external_spi_get_rate_avlos();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
uint8_t v;
memcpy(&v, buffer, sizeof(v));
sensor_external_spi_set_rate_avlos(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_sensors_setup_external_spi_calibrated(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
bool v;
v = sensor_external_spi_get_is_calibrated();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_sensors_setup_external_spi_errors(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint8_t v;
v = sensor_external_spi_get_errors();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_sensors_setup_hall_calibrated(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
bool v;
v = sensor_hall_get_is_calibrated();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_sensors_setup_hall_errors(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint8_t v;
v = sensor_hall_get_errors();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_sensors_select_position_sensor_connection(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint8_t v;
v = position_sensor_get_connection();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
uint8_t v;
memcpy(&v, buffer, sizeof(v));
position_sensor_set_connection(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_sensors_select_position_sensor_bandwidth(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = position_observer_get_bandwidth();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
position_observer_set_bandwidth(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_sensors_select_position_sensor_raw_angle(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
int32_t v;
v = sensor_position_get_raw_angle();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_sensors_select_position_sensor_position_estimate(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = position_observer_get_pos_estimate();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_sensors_select_position_sensor_velocity_estimate(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = position_observer_get_vel_estimate();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_sensors_select_commutation_sensor_connection(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint8_t v;
v = commutation_sensor_get_connection();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
uint8_t v;
memcpy(&v, buffer, sizeof(v));
commutation_sensor_set_connection(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_sensors_select_commutation_sensor_bandwidth(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = commutation_observer_get_bandwidth();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
commutation_observer_set_bandwidth(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_sensors_select_commutation_sensor_raw_angle(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
int32_t v;
v = sensor_commutation_get_raw_angle();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_sensors_select_commutation_sensor_position_estimate(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = commutation_observer_get_pos_estimate();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_sensors_select_commutation_sensor_velocity_estimate(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = commutation_observer_get_vel_estimate();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_traj_planner_max_accel(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = planner_get_max_accel();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
planner_set_max_accel(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_traj_planner_max_decel(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = planner_get_max_decel();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
planner_set_max_decel(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_traj_planner_max_vel(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = planner_get_max_vel();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
planner_set_max_vel(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_traj_planner_t_accel(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = planner_get_deltat_accel();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
planner_set_deltat_accel(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_traj_planner_t_decel(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = planner_get_deltat_decel();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
planner_set_deltat_decel(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_traj_planner_t_total(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = planner_get_deltat_total();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
planner_set_deltat_total(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_traj_planner_move_to(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
uint8_t _offset = 0;
float pos_setpoint;
memcpy(&pos_setpoint, buffer+_offset, sizeof(pos_setpoint));
_offset += sizeof(pos_setpoint);
planner_move_to_vlimit(pos_setpoint);
return AVLOS_RET_CALL;
}
uint8_t avlos_traj_planner_move_to_tlimit(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
uint8_t _offset = 0;
float pos_setpoint;
memcpy(&pos_setpoint, buffer+_offset, sizeof(pos_setpoint));
_offset += sizeof(pos_setpoint);
planner_move_to_tlimit(pos_setpoint);
return AVLOS_RET_CALL;
}
uint8_t avlos_traj_planner_errors(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint8_t v;
v = planner_get_errors();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_homing_velocity(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = homing_planner_get_homing_velocity();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
homing_planner_set_homing_velocity(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_homing_max_homing_t(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = homing_planner_get_max_homing_t();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
homing_planner_set_max_homing_t(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_homing_retract_dist(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = homing_planner_get_retract_distance();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
homing_planner_set_retract_distance(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_homing_warnings(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
uint8_t v;
v = homing_planner_get_warnings();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_homing_stall_detect_velocity(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = homing_planner_get_max_stall_vel();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
homing_planner_set_max_stall_vel(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_homing_stall_detect_delta_pos(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = homing_planner_get_max_stall_delta_pos();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
homing_planner_set_max_stall_delta_pos(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_homing_stall_detect_t(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = homing_planner_get_max_stall_t();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
homing_planner_set_max_stall_t(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_homing_home(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
homing_planner_home();
return AVLOS_RET_CALL;
}
uint8_t avlos_watchdog_enabled(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
bool v;
v = Watchdog_get_enabled();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
bool v;
memcpy(&v, buffer, sizeof(v));
Watchdog_set_enabled(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_watchdog_triggered(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
bool v;
v = Watchdog_triggered();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
return AVLOS_RET_NOACTION;
}
uint8_t avlos_watchdog_timeout(uint8_t * buffer, uint8_t * buffer_len, Avlos_Command cmd)
{
if (AVLOS_CMD_READ == cmd) {
float v;
v = Watchdog_get_timeout_seconds();
*buffer_len = sizeof(v);
memcpy(buffer, &v, sizeof(v));
return AVLOS_RET_READ;
}
else if (AVLOS_CMD_WRITE == cmd) {
float v;
memcpy(&v, buffer, sizeof(v));
Watchdog_set_timeout_seconds(v);
return AVLOS_RET_WRITE;
}
return AVLOS_RET_NOACTION;
}