#ifndef _SLOWYOGENERATOR_H_
#define _SLOWYOGENERATOR_H_

#include <vector>

void print_vector(const std::vector<double> & v);

struct SlowYoProfile
{
  double T;  // seconds, period of slowyo
  double dt;  // seconds, sample time between depth_rate commands
  std::vector<double> depth_profile;  // meters, array of depth commands
  std::vector<double> depth_rate_profile;  // m/s, array of depth_rate commands
  std::vector<double> pitch_profile;  // degrees, array of pitch commands
  std::vector<double> t;  // seconds, array of time
};


struct SlowYoGenerator
{
  // inputs
  double min_depth;
  double max_depth;
  double dive_angle;
  double speed;
  double alpha;

  // output
  SlowYoProfile slowyo;

  SlowYoGenerator(const double & min_depth,  // meters
                  const double & max_depth,  // meters
                  const double & dive_angle,  // degrees
                  const double & speed,  // meters per second
                  const double & alpha);  // smoothing factor:
                                        //   max: 1.0==sinusoidal
                                        //   min: 0.0==trapezoidal
};

#endif  // _SLOWYO_HPP_
