teamALI / Mbed 2 deprecated HB2018

Dependencies:   mbed FreeRTOS

globalFlags.h

Committer:
MasashiNomura
Date:
2019-01-17
Revision:
37:d51dacb4c30f
Parent:
36:2cc739c7e4cb
Child:
38:24ee50452755

File content as of revision 37:d51dacb4c30f:

#ifndef __GLOBALFLAGS_H__
#define __GLOBALFLAGS_H__

#include "mbed.h"
#include "typedef.h"

#define G_CMD_BUF_SIZ 32
#define STATE_QUE_SIZ 8

#define STATE_BUF_SIZ 8

#define LIM_MOT_INP_MIN -2000
#define LIM_MOT_INP_MAX 2000

#define MAX_VAL_12BIT   4095
#define BRK_RPM 4000

typedef union{
    UINT16  flg;
    struct{    
        bool    e1   : 1;//前エンジン回転数
        bool    e2   : 1;//後ろエンジン回転数
        bool    m1   : 1;//サブモーター回転数
        bool    m2   : 1;//サブモーター回転数
        bool    m3   : 1;//サブモーター回転数
        bool    m4   : 1;//サブモーター回転数
        bool    gy   : 1;//ジャイロ
        bool    yaw  : 1;//ヨー角
        bool    fb   : 1;//PID制御feedback結果
        bool    pp   : 1;//P制御ゲイン(アウターループ)
        bool    p    : 1;//P制御ゲイン
        bool    i    : 1;//I制御ゲイン
        bool    d    : 1;//D制御ゲイン
        bool    v    : 1;//PID2(torgue)角速度feedback制御用ゲイン
        bool    stat    : 1;//ステート表示
    }bf;
}typPrintFlag;

typedef union{
    UINT16  flg;
    struct{    
        bool    e1   : 1;//
        bool    e2   : 1;//
        bool    m1   : 1;//
        bool    m2   : 1;//
        bool    m3   : 1;//
        bool    m4   : 1;//
        bool    gy   : 1;//
        bool    yaw  : 1;//
        bool    fb   : 1;//PID制御feedback結果
        bool    pp   : 1;//P制御ゲイン(アウターループ)
        bool    p    : 1;//P制御ゲイン
        bool    i    : 1;//I制御ゲイン
        bool    d    : 1;//D制御ゲイン
    }bf;
}typCalFlag;

//
typedef union{
    UINT16  dt;
    struct{    
        UINT16  val   : 12;//アクセル設定値
        bool    req   : 1;//アクセル更新要求
    }bf;
}typAccel;

typedef struct{
    INT16  val;//アクセル設定値
    bool   req;//アクセル更新要求
}typAxlRpm;


typedef union{
    UINT16  flg;
    struct{    
        bool    mo1   : 1;//Motor1 Offset val
        bool    mo2   : 1;//Motor2 Offset val
        bool    mo3   : 1;//Motor3 Offset val
        bool    mo4   : 1;//Motor4 Offset val
        bool    ana1  : 1;//AnalogRead for Motor Accel
        bool    ana2  : 1;
    }bf;
}typDbgPrintFlg;

typedef union {
    UINT16 dt;
    struct{
        UINT16 num      :6;
        UINT16 counter  :6;
        //UINT16  pos     :3;
        bool    add_end :1;
        bool    req     :1;
    }bf;
}typOnePushFlg;

//ステート定義
enum enmHbState
    {NONE = 0      //何もなし
    ,SLEEP      //スリープモード(最初ここ)
    ,WAKEUP     //起動処理
    ,STANDBY    //スタンバイ(エンジンかかるの待ち)
    ,IDLE       //アイドル(エンジンがかかったけどなにもしない)
    ,TAKE_OFF   //離陸(エンジン回転数上昇 規定値まで)
    ,HOVER      //ホバリング
    ,DRIVE      //運転
    ,GROUND     //着陸(エンジン同時下げ)
    ,EMGGND     //緊急着陸(後ろエンジンを先に下げる)
    ,CHK_EG_ENT //SLEEPからエンジン調整モードへ(フラグリセット、アナログ入力が下がっていること、ボタンが押されいないことの確認State)
    ,CHK_EG_F   //フロントエンジン調整
    ,CHK_EG_MID //アナログ入力が下がっていること、ボタンが押されていないことを確認するState
    ,CHK_EG_R   //リアエンジン調整
    ,CHK_EG_EXIT//アナログ入力が下がっていること、他のボタンが押されていないことを確認してSLEEPへ
    ,CHK_ENT    //チェックエンター
    ,CHK_MOT    //モーターチェック
    ,CHK_AXL    //アクセルサーボチェック
    ,CHK_ATT    //姿勢制御チェック
    ,CHK_EXIT   //チェックステート脱出
    ,MOT_STOP   //モーター停止用
    };

enum eMotPos{
    F_L = 0,    // 前 左
    F_R,        // 前 右
    R_L,        // 後 左
    R_R,        // 後 右
};
enum eMotType{
    IN = 0,
    OUT,
};
enum eMotInType{
    OFS = 0,
    ATT,
    USER,
};
enum eEgPos{
    FRONT = 0,
    REAR,
};
/////////////////////////////////////////////////

//void init1PushStruct(typ1Push& item);

void initFlags();

void setState(enmHbState stat);
void setStateF(enmHbState stat);

bool isActiveState();

/*
class GlobalFlags{
private:
    enmHbState    stateQueue[STATE_QUE_SIZ];//ステート予約用のキューバッファ
    int           wp;       //ライトポインタ
    int           rp;       //リードポインタ
    bool          full;     //フルフラグ
    bool          empty;    //エンプティフラグ
public:
    //プロパティ
    enmHbState    state;//現在のステート
    //メソッド
    GlobalFlags();//コンストラクタ
    bool        push(enmHbState iState);
    bool        pull();
};

*/


//モニタ用LED
extern DigitalOut led1;
extern DigitalOut led2;
extern DigitalOut led3;
extern DigitalOut led4;

//モーターアクセル用アナログ入力
extern AnalogIn AinAxl;

//エンジンスロットル用アナログ入力
extern AnalogIn AinThrottle;

//////////////////////////////////////////////////
// フラグ
//extern GlobalFlags  gf;

extern char         g_CmdBuf[G_CMD_BUF_SIZ] ;// コマンド受け渡しバッファ
extern bool         gf_CmdPrs;      //コマンドパーサー実行要求フラグ

extern bool         gf_Armed;       //アーミングフラグ
extern bool         gf_Dbg;         //デバッグフラグ
extern bool         gf_StopMot;     //モーターの強制停止 サーボ全閉
extern bool         gf_FromActiveStat   ;//モーターの強制停止 サーボ全閉が動作時に発生したかどうか

extern typPrintFlag gf_Print;       //デバッグプリントフラグ(1回表示)
extern typPrintFlag gf_Mon;         //デバッグモニタフラグ(繰り返し表示)
extern typCalFlag   gf_Cal;         //キャリブレーションフラグ

extern typDbgPrintFlg  gf_DbgPrint         ;//デバッグ用

extern typAccel     gf_AxReq[2];    //アクセル更新
extern typAxlRpm     gf_MtReq[4];       //モーター姿勢制御更新
extern typAxlRpm     gf_MtReqOfs[4];    //モーターオフセット更新
extern typAxlRpm     gf_MtReqU[4];      //モーターユーザー更新
extern typAxlRpm     gf_MtReqDct[8]           ;//ダイレクト(FPGA関数直接呼び出し)モーター更新フラグ

extern enmHbState      gf_State;    //現在のステート
extern bool            gf_StateEnt ;//状態遷移後、最初であることを示す

extern bool         gf_PidParaUpdate       ;//PID Pp,P,I,Dの係数アップデートフラグ
extern typPidPara   g_PidPara;      //PID Pp,P,I,Dの係数の外部設定用

// extern bool            gf_MotParaUpdate[4]        ;//モーターのパラメータ値更新フラグ
// extern typMotPara      g_MotPara[4];            //モーターのパラメータ値

#endif