teamALI / Mbed 2 deprecated HB2018

Dependencies:   mbed FreeRTOS

globalFlags.h

Committer:
MasashiNomura
Date:
2018-12-06
Revision:
22:24c9c2dedca9
Parent:
21:78302ecdb661
Child:
23:79e20be4bc5b

File content as of revision 22:24c9c2dedca9:

#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

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;
}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;

//ステート定義
enum enmHbState
    {NONE = 0      //何もなし
    ,SLEEP      //スリープモード(最初ここ)
    ,WAKEUP     //起動処理
    ,STANDBY    //スタンバイ(エンジンかかるの待ち)
    ,IDLE       //アイドル(エンジンがかかったけどなにもしない)
    ,TAKE_OFF   //離陸
    ,HOVER      //ホバリング
    ,DRIVE      //運転
    ,GROUND     //着陸(エンジン同時下げ)
    ,EMGGND     //緊急着陸(後ろエンジンを先に下げる)
    ,CHK_ENT    //チェックエンター
    ,CHK_MOT    //モーターチェック
    ,CHK_AXL    //アクセルサーボチェック
    ,CHK_ATT    //姿勢制御チェック
    ,CHK_EXIT   //チェックステート脱出
    };

/////////////////////////////////////////////////

void initFlags();

void setState(enmHbState stat);


/*
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 GlobalFlags  gf;

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

extern bool         gf_Armed;       //アーミングフラグ
extern bool         gf_Dbg;         //デバッグフラグ
extern typPrintFlag gf_Print;       //デバッグプリントフラグ(1回表示)
extern typPrintFlag gf_Mon;         //デバッグモニタフラグ(繰り返し表示)
extern typCalFlag   gf_Cal;         //キャリブレーションフラグ
extern typAccel     gf_AxReq[2];    //アクセル更新
extern typAccel     gf_MtReq[4];    //モーター更新

extern enmHbState      gf_State;    //現在のステート


#endif