From: Xavier L. <Ba...@us...> - 2011-03-31 14:40:21
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 260df9f53355a424386ccc2b72d403d43ba6b83f (commit) from a51709e923cc4020fdae14ea2ab455f132fc7c45 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 260df9f53355a424386ccc2b72d403d43ba6b83f Author: Xavier Lagorce <Xav...@cr...> Date: Thu Mar 31 16:39:43 2011 +0200 [Controller_Motor_STM32] Comments in command_generator.h ----------------------------------------------------------------------- Changes: diff --git a/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/command_generator.h b/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/command_generator.h index 38e2564..2c80192 100644 --- a/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/command_generator.h +++ b/elec/boards/Controller_Motor_STM32/Firmware/controller_motor_stm32/command_generator.h @@ -15,26 +15,36 @@ #include <drv/timer.h> -#define GEN_NONE 0 -#define GEN_CONSTANT 1 -#define GEN_RAMP 2 -#define GEN_RAMP2 3 - -#define GEN_STATE_PAUSE 0 -#define GEN_STATE_RUNNING 1 - -#define GEN_CALLBACK_NONE 0 -#define GEN_CALLBACK_SUP 1 -#define GEN_CALLBACK_INF 2 +// Generator types +#define GEN_NONE 0 // No type, the generator is not initialized. +#define GEN_CONSTANT 1 // Outputs a constant. +#define GEN_RAMP 2 // Outputs a ramp with the given slope. +#define GEN_RAMP2 3 // Same as GEN_RAMP, but the slope is given by another + // generator. +#define GEN_DD_LEFT 4 // Outputs the left wheel speed for a differential + // drive. +#define GEN_DD_RIGHT 5 // Outputs the right wheel speed for a differential + // drive. + +// Generator states +#define GEN_STATE_PAUSE 0 // The output is freezed. +#define GEN_STATE_RUNNING 1 // The generator is running. + +// Threshold comparison for callback trigger +#define GEN_CALLBACK_NONE 0 // There is no callback. +#define GEN_CALLBACK_SUP 1 // The callback is triggered if output > threshold. +#define GEN_CALLBACK_INF 2 // The callback is triggered if output < threshold. typedef union _command_generator_t command_generator_t; +// Callback description typedef struct { uint8_t type; float threshold; void (*callback_function)(command_generator_t*); } generator_callback_t; +// Generator descriptions typedef struct { uint8_t t; float last_output; @@ -58,26 +68,93 @@ typedef struct { command_generator_t *speed; } ramp2_generator_t; +typedef struct { + placeholder_generator_t gen; + command_generator_t *linear_speed; + command_generator_t *rotational_speed; + float wheel_radius; + float shaft_width; +} dd_generator_t; + +// Usable generator meta-type union _command_generator_t { placeholder_generator_t type; constant_generator_t constant; ramp_generator_t ramp; ramp2_generator_t ramp2; + dd_generator_t dd; }; -command_generator_t* new_constant_generator(command_generator_t *generator, float value); -command_generator_t* new_ramp_generator(command_generator_t *generator, float starting_value, float speed); -command_generator_t* new_ramp2_generator(command_generator_t *generator, float starting_value, command_generator_t *speed); +/* Initializes a new Constant Generator. + * - generator : pointer to the generator to initialize + * - value : output value of the generator + */ +command_generator_t* new_constant_generator(command_generator_t *generator, + float value); + +/* Initializes a new Ramp Generator. + * - generator : pointer to the generator to initialize + * - starting_value : initial output value + * - speed : slope + */ +command_generator_t* new_ramp_generator(command_generator_t *generator, + float starting_value, float speed); + +/* Initializes a new Ramp2 Generator. + * - generator : pointer to the generator to initialize + * - starting_value : initial output value + * - speed : pointer to the generator which output is used as this generator's slope + */ +command_generator_t* new_ramp2_generator(command_generator_t *generator, + float starting_value, + command_generator_t *speed); + +/* Initializes a new Differential Drive generator. + * - generator : pointer to the generator to initialize + * - linear_speed : pointer to the generator giving the linear speed of the drive + * - rotational_speed : pointer to the generator giving the rotational speed of the drive + * - wheel_radius : radius of the wheels + * - shaft_width : width of the propulsion shaft + * - type : 1 for the right_wheel, -1 for the left_wheel + */ +command_generator_t* new_dd_generator(command_generator_t *generator, + command_generator_t *linear_speed, + command_generator_t *rotational_speed, + float wheel_radius, float shaft_width, + uint8_t type); +/* + * Adjusts the current output value of 'generator' to 'value'. + */ command_generator_t* adjust_value(command_generator_t *generator, float value); + +/* + * Adjusts the current slope of the ramp generator 'generator' to 'speed'. + */ command_generator_t* adjust_speed(command_generator_t *generator, float speed); +/* + * Starts or pauses 'generator'. + */ command_generator_t* start_generator(command_generator_t *generator); command_generator_t* pause_generator(command_generator_t *generator); +/* Adds a callback to a generator + * - generator : pointer to the generator to add a callback to + * - type : threshold comparison type + * - threshold : comparison threshold + * - callback_function : callback to be called when the event is triggered + */ command_generator_t* add_callback(command_generator_t *generator, uint8_t type, float threshold, void (*callback_function)(command_generator_t*)); + +/* + * Removes the callback from 'generator' + */ command_generator_t* remove_callback(command_generator_t *generator); +/* + * Gets (and computes) the current output value of 'generator' + */ float get_output_value(command_generator_t *generator); #endif /* __COMMAND_GENERATOR_H */ hooks/post-receive -- krobot |