str/apps/include/LeftNormalCourse.h (28 lines of code) (raw):
/**
* @file LeftNormalCourse.h
* @brief LコースのNormalCourseの処理を行うクラス
* @author Futa HIRAKOBA
*/
#ifndef __LEFTNORMALCOURSE__
#define __LEFTNORMALCOURSE__
#include "settings.h"
#include "NormalCourse.h"
/**
* 走行場所の状態を保持する列挙型
*/
enum struct LeftStatus {
STRAIGHT,
STRAIGHT_SLOW,
CURVE_RIGHT,
CURVE_LEFT,
CURVE_LEFT_SHORT,
NEUTRAL,
EDGE_CHANGE,
EDGE_RESET,
STOP
};
/**
* LコースのNormalCourseの処理を行うクラス
*/
class LeftNormalCourse : public NormalCourse{
public:
/** コンストラクタ。 左エッジである設定をしている*/
LeftNormalCourse();
/**
* 走行場所でのPID値を設定する
* @return Goalしたかどうか
*/
bool runNormalCourse (int32_t countL, int32_t countR, int8_t light_value);
/**
* 現在の走行場所の状態を設定する
* @param[in] countL 左タイヤの回転角
* @param[in] countR 右タイヤの回転角
* @return 走行場所の状態が変わったかどうか
*/
bool statusCheck(int32_t countL, int32_t countR);
/**
* 現在の走行場所の状態を取得する
* @return 現在の走行場所の状態(int型)
*/
int getStatus();
private:
LeftStatus status;
LeftStatus old_status;
bool isChangedEdge;
int16_t time_count;
};
#endif