Library for receiving 2021NHK Bteam Controller
Dependents: 2021NHK_Bcon_RX 2021NHK_B_syudo 2021NHK_B_main 2022kouroboBv2 ... more
controller.h@0:9ea2a0d8b9d9, 2021-10-16 (annotated)
- Committer:
- piroro4560
- Date:
- Sat Oct 16 05:24:37 2021 +0000
- Revision:
- 0:9ea2a0d8b9d9
- Child:
- 1:a8f5f13b0840
Test
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 | 0:9ea2a0d8b9d9 | 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 | 0:9ea2a0d8b9d9 | 18 | * @note mbed-os 6 では使えません。 Not compatible with mbed-os 6 |
piroro4560 | 0:9ea2a0d8b9d9 | 19 | */ |
piroro4560 | 0:9ea2a0d8b9d9 | 20 | class Bcon : public RawSerial { |
piroro4560 | 0:9ea2a0d8b9d9 | 21 | public : |
piroro4560 | 0:9ea2a0d8b9d9 | 22 | /** constructor |
piroro4560 | 0:9ea2a0d8b9d9 | 23 | * @param tx FEPと接続するSerialTX pin |
piroro4560 | 0:9ea2a0d8b9d9 | 24 | * @param rx FEPと接続するSerialRX pin |
piroro4560 | 0:9ea2a0d8b9d9 | 25 | * @param addr 通信相手のアドレス |
piroro4560 | 0:9ea2a0d8b9d9 | 26 | * @param baud 通信速度(デフォルト115200) |
piroro4560 | 0:9ea2a0d8b9d9 | 27 | */ |
piroro4560 | 0:9ea2a0d8b9d9 | 28 | Bcon(PinName tx, PinName rx, uint8_t addr_, int baud=115200); |
piroro4560 | 0:9ea2a0d8b9d9 | 29 | |
piroro4560 | 0:9ea2a0d8b9d9 | 30 | /** Start receiving |
piroro4560 | 0:9ea2a0d8b9d9 | 31 | */ |
piroro4560 | 0:9ea2a0d8b9d9 | 32 | void StartReceive(); |
piroro4560 | 0:9ea2a0d8b9d9 | 33 | |
piroro4560 | 0:9ea2a0d8b9d9 | 34 | /** Check timeout |
piroro4560 | 0:9ea2a0d8b9d9 | 35 | * @brief 0.1秒毎のループで受信のタイムアウトをチェック |
piroro4560 | 0:9ea2a0d8b9d9 | 36 | */ |
piroro4560 | 0:9ea2a0d8b9d9 | 37 | void TimeoutLoop(); |
piroro4560 | 0:9ea2a0d8b9d9 | 38 | |
piroro4560 | 0:9ea2a0d8b9d9 | 39 | /** Interrupt input |
piroro4560 | 0:9ea2a0d8b9d9 | 40 | */ |
piroro4560 | 0:9ea2a0d8b9d9 | 41 | void ReceiveBytes(); |
piroro4560 | 0:9ea2a0d8b9d9 | 42 | |
piroro4560 | 0:9ea2a0d8b9d9 | 43 | /** extract the message |
piroro4560 | 0:9ea2a0d8b9d9 | 44 | */ |
piroro4560 | 0:9ea2a0d8b9d9 | 45 | void CheckData(); |
piroro4560 | 0:9ea2a0d8b9d9 | 46 | |
piroro4560 | 0:9ea2a0d8b9d9 | 47 | /** Write the received message |
piroro4560 | 0:9ea2a0d8b9d9 | 48 | * @param data 受信メッセージを格納する配列 |
piroro4560 | 0:9ea2a0d8b9d9 | 49 | */ |
piroro4560 | 0:9ea2a0d8b9d9 | 50 | void GetData(uint8_t *data); |
piroro4560 | 0:9ea2a0d8b9d9 | 51 | |
piroro4560 | 0:9ea2a0d8b9d9 | 52 | bool getButton(uint8_t n); //! BusInの計算をしてボタンの値を返す。 |
piroro4560 | 0:9ea2a0d8b9d9 | 53 | int16_t getStick(uint8_t n); //! スティックの値を返す。中心を0,範囲は-128 ~ 128とする。 |
piroro4560 | 0:9ea2a0d8b9d9 | 54 | |
piroro4560 | 0:9ea2a0d8b9d9 | 55 | bool status; //! (TIMEOUT_COUNT * 0.1)秒間通信が来ていないと0 |
piroro4560 | 0:9ea2a0d8b9d9 | 56 | |
piroro4560 | 0:9ea2a0d8b9d9 | 57 | private : |
piroro4560 | 0:9ea2a0d8b9d9 | 58 | |
piroro4560 | 0:9ea2a0d8b9d9 | 59 | Ticker timeoutTimer; |
piroro4560 | 0:9ea2a0d8b9d9 | 60 | |
piroro4560 | 0:9ea2a0d8b9d9 | 61 | uint8_t addr; //! 通信相手のアドレス |
piroro4560 | 0:9ea2a0d8b9d9 | 62 | uint8_t buffer[256]; //! 全受信データを格納するリングバッファ配列 |
piroro4560 | 0:9ea2a0d8b9d9 | 63 | uint8_t retdata[128]; //! メッセージのみを格納する配列 |
piroro4560 | 0:9ea2a0d8b9d9 | 64 | uint8_t bufindex; //! buffer の添え字変数 |
piroro4560 | 0:9ea2a0d8b9d9 | 65 | uint8_t retindex; //! retdata の添え字変数 |
piroro4560 | 0:9ea2a0d8b9d9 | 66 | uint8_t timeout; //! 0.1秒間通信が成功していないと1増える |
piroro4560 | 0:9ea2a0d8b9d9 | 67 | uint8_t sum; |
piroro4560 | 0:9ea2a0d8b9d9 | 68 | uint8_t stick[4]; |
piroro4560 | 0:9ea2a0d8b9d9 | 69 | }; |
piroro4560 | 0:9ea2a0d8b9d9 | 70 | |
piroro4560 | 0:9ea2a0d8b9d9 | 71 | #endif |