FEP interrupt, response, ring buffer
Dependents: 087_myFEP_TX 087_myFEP_RX
Diff: FEP.h
- Revision:
- 0:b01dc5fd59bc
- Child:
- 1:a4103af46277
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FEP.h Sat Oct 09 11:42:03 2021 +0000 @@ -0,0 +1,76 @@ +#ifndef FEP_H +#define FEP_H + +class myFEP{ +public : + /** コンストラクタ + * @param tx FEPtxに繋いでるピン + * @param rx FEPrxに繋いでるピン + * @param addr 通信相手のアドレス + * @param baud 通信速度 + */ + myFEP(PinName tx, PinName rx, uint8_t addr_, int baud=115200); + + /** 受信開始用関数 + */ + void StartReceive(); + + /** 受信割り込み用関数 + */ + void ReceiveBytes(); + + /** メッセージ読み取り用関数 + */ + void CheckData(); + + /** 受信メッセージ引き渡し用関数 + * @param data 格納先のデータアドレス + */ + void GetData(uint8_t *data); + + /** 通信相手FEPにデータ送信 + * @brief 引数の中のデータ全部送信 + * @param data 送信する配列 + * @return 0 送信成功 + * @return 1 データ量過多 + * @return 2 コマンドエラー + * @return 3 相手からの応答なし + * @return 4 相手が受信失敗 + * @return -1 可否不明 + */ + uint8_t SendData(uint8_t *data); + + /** 長さ指定ver + * @brief dataの配列をlength分送る + * @param data 送信する配列 + * @param length 送信する長さ + * @return 0 送信成功 + * @return 1 データ量過多 + * @return 2 コマンドエラー + * @return 3 相手からの応答なし + * @return 4 相手が受信失敗 + * @return -1 可否不明 + */ + uint8_t SendData(uint8_t *data, uint8_t length); + + /** レスポンス取得用関数 + * @return 0 送信成功 + * @return 1 データ量過多 + * @return 2 コマンドエラー + * @return 3 相手からの応答なし + * @return 4 相手が受信失敗 + * @return -1 可否不明 + */ + uint8_t GetResponse(); + +private : + uint8_t ctoi(char c); + + uint8_t addr; //! 通信相手のアドレス + uint8_t buffer[256]; //! 受信データ格納用配列 + uint8_t retdata[256]; //! 引き渡し用データ格納用配列 + uint16_t bufindex; //! bufferの添え字用変数 + uint16_t retindex; //! retdataの添え字用変数 +} + +#endif \ No newline at end of file