Library for receiving 2021NHK Bteam Controller
Dependents: 2021NHK_Bcon_RX 2021NHK_B_syudo 2021NHK_B_main 2022kouroboBv2 ... more
controller.h@1:a8f5f13b0840, 2021-10-16 (annotated)
- Committer:
- piroro4560
- Date:
- Sat Oct 16 13:41:01 2021 +0000
- Revision:
- 1:a8f5f13b0840
- Parent:
- 0:9ea2a0d8b9d9
- Child:
- 2:e97f32749217
doxygen
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
piroro4560 | 0:9ea2a0d8b9d9 | 1 | /** |
piroro4560 | 0:9ea2a0d8b9d9 | 2 | * @file controller.h |
piroro4560 | 1:a8f5f13b0840 | 3 | * @brief 2021Bcon受信用ライブラリ |
piroro4560 | 0:9ea2a0d8b9d9 | 4 | * @author 安澤瑠 |
piroro4560 | 0:9ea2a0d8b9d9 | 5 | * @date 21/10/16 |
piroro4560 | 0:9ea2a0d8b9d9 | 6 | */ |
piroro4560 | 0:9ea2a0d8b9d9 | 7 | #ifndef CONTROLLER_H |
piroro4560 | 0:9ea2a0d8b9d9 | 8 | #define CONTROLLER_H |
piroro4560 | 0:9ea2a0d8b9d9 | 9 | |
piroro4560 | 0:9ea2a0d8b9d9 | 10 | #define TIMEOUT_COUNT 5 |
piroro4560 | 0:9ea2a0d8b9d9 | 11 | #define DATANUM 5 // ボタン(BusIn)が1 スティックが4 BController_TX側のFEPライブラリと連携していないとダメ |
piroro4560 | 0:9ea2a0d8b9d9 | 12 | |
piroro4560 | 0:9ea2a0d8b9d9 | 13 | #include "mbed.h" |
piroro4560 | 0:9ea2a0d8b9d9 | 14 | |
piroro4560 | 0:9ea2a0d8b9d9 | 15 | /** |
piroro4560 | 0:9ea2a0d8b9d9 | 16 | * @class con |
piroro4560 | 0:9ea2a0d8b9d9 | 17 | * @brief class for receiving 2021Bcon data |
piroro4560 | 1:a8f5f13b0840 | 18 | * 0 4 |
piroro4560 | 1:a8f5f13b0840 | 19 | * 1 3 5 7 |
piroro4560 | 1:a8f5f13b0840 | 20 | * 2 6 |
piroro4560 | 1:a8f5f13b0840 | 21 | * |
piroro4560 | 1:a8f5f13b0840 | 22 | * 0 1 |
piroro4560 | 0:9ea2a0d8b9d9 | 23 | * @note mbed-os 6 では使えません。 Not compatible with mbed-os 6 |
piroro4560 | 0:9ea2a0d8b9d9 | 24 | */ |
piroro4560 | 0:9ea2a0d8b9d9 | 25 | class Bcon : public RawSerial { |
piroro4560 | 0:9ea2a0d8b9d9 | 26 | public : |
piroro4560 | 0:9ea2a0d8b9d9 | 27 | /** constructor |
piroro4560 | 0:9ea2a0d8b9d9 | 28 | * @param tx FEPと接続するSerialTX pin |
piroro4560 | 0:9ea2a0d8b9d9 | 29 | * @param rx FEPと接続するSerialRX pin |
piroro4560 | 1:a8f5f13b0840 | 30 | * @param addr コントローラーについてるFEPのアドレス |
piroro4560 | 0:9ea2a0d8b9d9 | 31 | * @param baud 通信速度(デフォルト115200) |
piroro4560 | 0:9ea2a0d8b9d9 | 32 | */ |
piroro4560 | 0:9ea2a0d8b9d9 | 33 | Bcon(PinName tx, PinName rx, uint8_t addr_, int baud=115200); |
piroro4560 | 0:9ea2a0d8b9d9 | 34 | |
piroro4560 | 0:9ea2a0d8b9d9 | 35 | /** Start receiving |
piroro4560 | 0:9ea2a0d8b9d9 | 36 | */ |
piroro4560 | 0:9ea2a0d8b9d9 | 37 | void StartReceive(); |
piroro4560 | 0:9ea2a0d8b9d9 | 38 | |
piroro4560 | 0:9ea2a0d8b9d9 | 39 | /** Check timeout |
piroro4560 | 0:9ea2a0d8b9d9 | 40 | * @brief 0.1秒毎のループで受信のタイムアウトをチェック |
piroro4560 | 0:9ea2a0d8b9d9 | 41 | */ |
piroro4560 | 0:9ea2a0d8b9d9 | 42 | void TimeoutLoop(); |
piroro4560 | 0:9ea2a0d8b9d9 | 43 | |
piroro4560 | 0:9ea2a0d8b9d9 | 44 | /** Interrupt input |
piroro4560 | 0:9ea2a0d8b9d9 | 45 | */ |
piroro4560 | 0:9ea2a0d8b9d9 | 46 | void ReceiveBytes(); |
piroro4560 | 0:9ea2a0d8b9d9 | 47 | |
piroro4560 | 0:9ea2a0d8b9d9 | 48 | /** extract the message |
piroro4560 | 0:9ea2a0d8b9d9 | 49 | */ |
piroro4560 | 0:9ea2a0d8b9d9 | 50 | void CheckData(); |
piroro4560 | 0:9ea2a0d8b9d9 | 51 | |
piroro4560 | 0:9ea2a0d8b9d9 | 52 | /** Write the received message |
piroro4560 | 0:9ea2a0d8b9d9 | 53 | * @param data 受信メッセージを格納する配列 |
piroro4560 | 0:9ea2a0d8b9d9 | 54 | */ |
piroro4560 | 0:9ea2a0d8b9d9 | 55 | void GetData(uint8_t *data); |
piroro4560 | 0:9ea2a0d8b9d9 | 56 | |
piroro4560 | 0:9ea2a0d8b9d9 | 57 | bool getButton(uint8_t n); //! BusInの計算をしてボタンの値を返す。 |
piroro4560 | 0:9ea2a0d8b9d9 | 58 | int16_t getStick(uint8_t n); //! スティックの値を返す。中心を0,範囲は-128 ~ 128とする。 |
piroro4560 | 0:9ea2a0d8b9d9 | 59 | |
piroro4560 | 0:9ea2a0d8b9d9 | 60 | bool status; //! (TIMEOUT_COUNT * 0.1)秒間通信が来ていないと0 |
piroro4560 | 0:9ea2a0d8b9d9 | 61 | |
piroro4560 | 0:9ea2a0d8b9d9 | 62 | private : |
piroro4560 | 0:9ea2a0d8b9d9 | 63 | |
piroro4560 | 0:9ea2a0d8b9d9 | 64 | Ticker timeoutTimer; |
piroro4560 | 0:9ea2a0d8b9d9 | 65 | |
piroro4560 | 0:9ea2a0d8b9d9 | 66 | uint8_t addr; //! 通信相手のアドレス |
piroro4560 | 0:9ea2a0d8b9d9 | 67 | uint8_t buffer[256]; //! 全受信データを格納するリングバッファ配列 |
piroro4560 | 0:9ea2a0d8b9d9 | 68 | uint8_t retdata[128]; //! メッセージのみを格納する配列 |
piroro4560 | 0:9ea2a0d8b9d9 | 69 | uint8_t bufindex; //! buffer の添え字変数 |
piroro4560 | 0:9ea2a0d8b9d9 | 70 | uint8_t retindex; //! retdata の添え字変数 |
piroro4560 | 0:9ea2a0d8b9d9 | 71 | uint8_t timeout; //! 0.1秒間通信が成功していないと1増える |
piroro4560 | 1:a8f5f13b0840 | 72 | uint8_t sum; //! BusInの値を格納 |
piroro4560 | 1:a8f5f13b0840 | 73 | uint8_t stick[4]; //! スティックの値を格納 |
piroro4560 | 0:9ea2a0d8b9d9 | 74 | }; |
piroro4560 | 0:9ea2a0d8b9d9 | 75 | |
piroro4560 | 0:9ea2a0d8b9d9 | 76 | #endif |