teamALI / Mbed 2 deprecated HB2018

Dependencies:   mbed FreeRTOS

Committer:
MasashiNomura
Date:
Sat Dec 08 12:08:25 2018 +0000
Revision:
23:79e20be4bc5b
Parent:
22:24c9c2dedca9
Child:
24:c5945aaae777
2018/12/08 Add State Trans etc

Who changed what in which revision?

UserRevisionLine numberNew contents of line
takeru0x1103 8:1ca49cb18290 1 #ifndef __GLOBALFLAGS_H__
takeru0x1103 8:1ca49cb18290 2 #define __GLOBALFLAGS_H__
takeru0x1103 8:1ca49cb18290 3
takeru0x1103 16:05b9e44889f1 4 #include "mbed.h"
takeru0x1103 17:f9610f3cfa1b 5 #include "typedef.h"
takeru0x1103 17:f9610f3cfa1b 6
takeru0x1103 19:4b0fe9a5ec38 7 #define G_CMD_BUF_SIZ 32
takeru0x1103 19:4b0fe9a5ec38 8 #define STATE_QUE_SIZ 8
takeru0x1103 19:4b0fe9a5ec38 9
MasashiNomura 22:24c9c2dedca9 10 #define STATE_BUF_SIZ 8
MasashiNomura 22:24c9c2dedca9 11
takeru0x1103 17:f9610f3cfa1b 12 typedef union{
takeru0x1103 17:f9610f3cfa1b 13 UINT16 flg;
takeru0x1103 17:f9610f3cfa1b 14 struct{
takeru0x1103 17:f9610f3cfa1b 15 bool e1 : 1;//前エンジン回転数
takeru0x1103 17:f9610f3cfa1b 16 bool e2 : 1;//後ろエンジン回転数
takeru0x1103 17:f9610f3cfa1b 17 bool m1 : 1;//サブモーター回転数
takeru0x1103 17:f9610f3cfa1b 18 bool m2 : 1;//サブモーター回転数
takeru0x1103 17:f9610f3cfa1b 19 bool m3 : 1;//サブモーター回転数
takeru0x1103 17:f9610f3cfa1b 20 bool m4 : 1;//サブモーター回転数
takeru0x1103 17:f9610f3cfa1b 21 bool gy : 1;//ジャイロ
takeru0x1103 17:f9610f3cfa1b 22 bool yaw : 1;//ヨー角
takeru0x1103 18:5aa48aec9cae 23 bool fb : 1;//PID制御feedback結果
takeru0x1103 18:5aa48aec9cae 24 bool pp : 1;//P制御ゲイン(アウターループ)
takeru0x1103 18:5aa48aec9cae 25 bool p : 1;//P制御ゲイン
takeru0x1103 18:5aa48aec9cae 26 bool i : 1;//I制御ゲイン
takeru0x1103 18:5aa48aec9cae 27 bool d : 1;//D制御ゲイン
MasashiNomura 23:79e20be4bc5b 28 bool stat : 1;//ステート表示
takeru0x1103 17:f9610f3cfa1b 29 }bf;
takeru0x1103 17:f9610f3cfa1b 30 }typPrintFlag;
takeru0x1103 17:f9610f3cfa1b 31
takeru0x1103 17:f9610f3cfa1b 32 typedef union{
takeru0x1103 17:f9610f3cfa1b 33 UINT16 flg;
takeru0x1103 17:f9610f3cfa1b 34 struct{
takeru0x1103 17:f9610f3cfa1b 35 bool e1 : 1;//
takeru0x1103 17:f9610f3cfa1b 36 bool e2 : 1;//
takeru0x1103 17:f9610f3cfa1b 37 bool m1 : 1;//
takeru0x1103 17:f9610f3cfa1b 38 bool m2 : 1;//
takeru0x1103 17:f9610f3cfa1b 39 bool m3 : 1;//
takeru0x1103 17:f9610f3cfa1b 40 bool m4 : 1;//
takeru0x1103 17:f9610f3cfa1b 41 bool gy : 1;//
takeru0x1103 17:f9610f3cfa1b 42 bool yaw : 1;//
takeru0x1103 18:5aa48aec9cae 43 bool fb : 1;//PID制御feedback結果
takeru0x1103 18:5aa48aec9cae 44 bool pp : 1;//P制御ゲイン(アウターループ)
takeru0x1103 18:5aa48aec9cae 45 bool p : 1;//P制御ゲイン
takeru0x1103 18:5aa48aec9cae 46 bool i : 1;//I制御ゲイン
takeru0x1103 18:5aa48aec9cae 47 bool d : 1;//D制御ゲイン
takeru0x1103 17:f9610f3cfa1b 48 }bf;
takeru0x1103 17:f9610f3cfa1b 49 }typCalFlag;
takeru0x1103 17:f9610f3cfa1b 50
takeru0x1103 19:4b0fe9a5ec38 51 //
takeru0x1103 17:f9610f3cfa1b 52 typedef union{
takeru0x1103 17:f9610f3cfa1b 53 UINT16 dt;
takeru0x1103 17:f9610f3cfa1b 54 struct{
takeru0x1103 18:5aa48aec9cae 55 UINT16 val : 12;//アクセル設定値
takeru0x1103 17:f9610f3cfa1b 56 bool req : 1;//アクセル更新要求
takeru0x1103 17:f9610f3cfa1b 57 }bf;
takeru0x1103 17:f9610f3cfa1b 58 }typAccel;
takeru0x1103 17:f9610f3cfa1b 59
takeru0x1103 19:4b0fe9a5ec38 60 //ステート定義
takeru0x1103 19:4b0fe9a5ec38 61 enum enmHbState
MasashiNomura 22:24c9c2dedca9 62 {NONE = 0 //何もなし
takeru0x1103 21:78302ecdb661 63 ,SLEEP //スリープモード(最初ここ)
takeru0x1103 20:0394e15412c3 64 ,WAKEUP //起動処理
takeru0x1103 20:0394e15412c3 65 ,STANDBY //スタンバイ(エンジンかかるの待ち)
takeru0x1103 21:78302ecdb661 66 ,IDLE //アイドル(エンジンがかかったけどなにもしない)
takeru0x1103 20:0394e15412c3 67 ,TAKE_OFF //離陸
takeru0x1103 20:0394e15412c3 68 ,HOVER //ホバリング
takeru0x1103 21:78302ecdb661 69 ,DRIVE //運転
takeru0x1103 21:78302ecdb661 70 ,GROUND //着陸(エンジン同時下げ)
takeru0x1103 21:78302ecdb661 71 ,EMGGND //緊急着陸(後ろエンジンを先に下げる)
takeru0x1103 20:0394e15412c3 72 ,CHK_ENT //チェックエンター
takeru0x1103 20:0394e15412c3 73 ,CHK_MOT //モーターチェック
takeru0x1103 20:0394e15412c3 74 ,CHK_AXL //アクセルサーボチェック
takeru0x1103 20:0394e15412c3 75 ,CHK_ATT //姿勢制御チェック
takeru0x1103 20:0394e15412c3 76 ,CHK_EXIT //チェックステート脱出
takeru0x1103 19:4b0fe9a5ec38 77 };
takeru0x1103 19:4b0fe9a5ec38 78
takeru0x1103 17:f9610f3cfa1b 79 /////////////////////////////////////////////////
takeru0x1103 21:78302ecdb661 80
MasashiNomura 22:24c9c2dedca9 81 void initFlags();
MasashiNomura 22:24c9c2dedca9 82
MasashiNomura 22:24c9c2dedca9 83 void setState(enmHbState stat);
MasashiNomura 23:79e20be4bc5b 84 void setStateF(enmHbState stat);
MasashiNomura 22:24c9c2dedca9 85
MasashiNomura 22:24c9c2dedca9 86
takeru0x1103 21:78302ecdb661 87 /*
takeru0x1103 19:4b0fe9a5ec38 88 class GlobalFlags{
takeru0x1103 19:4b0fe9a5ec38 89 private:
takeru0x1103 19:4b0fe9a5ec38 90 enmHbState stateQueue[STATE_QUE_SIZ];//ステート予約用のキューバッファ
takeru0x1103 19:4b0fe9a5ec38 91 int wp; //ライトポインタ
takeru0x1103 19:4b0fe9a5ec38 92 int rp; //リードポインタ
takeru0x1103 19:4b0fe9a5ec38 93 bool full; //フルフラグ
takeru0x1103 19:4b0fe9a5ec38 94 bool empty; //エンプティフラグ
takeru0x1103 19:4b0fe9a5ec38 95 public:
takeru0x1103 21:78302ecdb661 96 //プロパティ
takeru0x1103 20:0394e15412c3 97 enmHbState state;//現在のステート
takeru0x1103 21:78302ecdb661 98 //メソッド
takeru0x1103 20:0394e15412c3 99 GlobalFlags();//コンストラクタ
takeru0x1103 19:4b0fe9a5ec38 100 bool push(enmHbState iState);
takeru0x1103 19:4b0fe9a5ec38 101 bool pull();
takeru0x1103 19:4b0fe9a5ec38 102 };
takeru0x1103 16:05b9e44889f1 103
takeru0x1103 21:78302ecdb661 104 */
takeru0x1103 21:78302ecdb661 105
takeru0x1103 21:78302ecdb661 106
takeru0x1103 17:f9610f3cfa1b 107 //モニタ用LED
takeru0x1103 16:05b9e44889f1 108 extern DigitalOut led1;
takeru0x1103 16:05b9e44889f1 109 extern DigitalOut led2;
takeru0x1103 16:05b9e44889f1 110 extern DigitalOut led3;
takeru0x1103 16:05b9e44889f1 111 extern DigitalOut led4;
takeru0x1103 8:1ca49cb18290 112
MasashiNomura 22:24c9c2dedca9 113 //////////////////////////////////////////////////
MasashiNomura 22:24c9c2dedca9 114 // フラグ
takeru0x1103 21:78302ecdb661 115 //extern GlobalFlags gf;
takeru0x1103 19:4b0fe9a5ec38 116
takeru0x1103 19:4b0fe9a5ec38 117 extern char g_CmdBuf[G_CMD_BUF_SIZ] ;// コマンド受け渡しバッファ
MasashiNomura 22:24c9c2dedca9 118 extern bool gf_CmdPrs; //コマンドパーサー実行要求フラグ
takeru0x1103 19:4b0fe9a5ec38 119
takeru0x1103 21:78302ecdb661 120 extern bool gf_Armed; //アーミングフラグ
MasashiNomura 22:24c9c2dedca9 121 extern bool gf_Dbg; //デバッグフラグ
MasashiNomura 22:24c9c2dedca9 122 extern typPrintFlag gf_Print; //デバッグプリントフラグ(1回表示)
MasashiNomura 22:24c9c2dedca9 123 extern typPrintFlag gf_Mon; //デバッグモニタフラグ(繰り返し表示)
MasashiNomura 22:24c9c2dedca9 124 extern typCalFlag gf_Cal; //キャリブレーションフラグ
MasashiNomura 22:24c9c2dedca9 125 extern typAccel gf_AxReq[2]; //アクセル更新
MasashiNomura 22:24c9c2dedca9 126 extern typAccel gf_MtReq[4]; //モーター更新
MasashiNomura 22:24c9c2dedca9 127
MasashiNomura 22:24c9c2dedca9 128 extern enmHbState gf_State; //現在のステート
takeru0x1103 19:4b0fe9a5ec38 129
takeru0x1103 19:4b0fe9a5ec38 130
takeru0x1103 18:5aa48aec9cae 131 #endif