FEP interrupt, response, ring buffer

Dependents:   087_myFEP_TX 087_myFEP_RX

Committer:
piroro4560
Date:
Sat Oct 09 11:54:44 2021 +0000
Revision:
1:a4103af46277
Parent:
0:b01dc5fd59bc
Child:
2:aa9a344a42a8
added mbed.h

Who changed what in which revision?

UserRevisionLine numberNew contents of line
piroro4560 0:b01dc5fd59bc 1 #ifndef FEP_H
piroro4560 0:b01dc5fd59bc 2 #define FEP_H
piroro4560 0:b01dc5fd59bc 3
piroro4560 1:a4103af46277 4 #include "mbed.h"
piroro4560 1:a4103af46277 5
piroro4560 0:b01dc5fd59bc 6 class myFEP{
piroro4560 0:b01dc5fd59bc 7 public :
piroro4560 0:b01dc5fd59bc 8 /** コンストラクタ
piroro4560 0:b01dc5fd59bc 9 * @param tx FEPtxに繋いでるピン
piroro4560 0:b01dc5fd59bc 10 * @param rx FEPrxに繋いでるピン
piroro4560 0:b01dc5fd59bc 11 * @param addr 通信相手のアドレス
piroro4560 0:b01dc5fd59bc 12 * @param baud 通信速度
piroro4560 0:b01dc5fd59bc 13 */
piroro4560 0:b01dc5fd59bc 14 myFEP(PinName tx, PinName rx, uint8_t addr_, int baud=115200);
piroro4560 0:b01dc5fd59bc 15
piroro4560 0:b01dc5fd59bc 16 /** 受信開始用関数
piroro4560 0:b01dc5fd59bc 17 */
piroro4560 0:b01dc5fd59bc 18 void StartReceive();
piroro4560 0:b01dc5fd59bc 19
piroro4560 0:b01dc5fd59bc 20 /** 受信割り込み用関数
piroro4560 0:b01dc5fd59bc 21 */
piroro4560 0:b01dc5fd59bc 22 void ReceiveBytes();
piroro4560 0:b01dc5fd59bc 23
piroro4560 0:b01dc5fd59bc 24 /** メッセージ読み取り用関数
piroro4560 0:b01dc5fd59bc 25 */
piroro4560 0:b01dc5fd59bc 26 void CheckData();
piroro4560 0:b01dc5fd59bc 27
piroro4560 0:b01dc5fd59bc 28 /** 受信メッセージ引き渡し用関数
piroro4560 0:b01dc5fd59bc 29 * @param data 格納先のデータアドレス
piroro4560 0:b01dc5fd59bc 30 */
piroro4560 0:b01dc5fd59bc 31 void GetData(uint8_t *data);
piroro4560 0:b01dc5fd59bc 32
piroro4560 0:b01dc5fd59bc 33 /** 通信相手FEPにデータ送信
piroro4560 0:b01dc5fd59bc 34 * @brief 引数の中のデータ全部送信
piroro4560 0:b01dc5fd59bc 35 * @param data 送信する配列
piroro4560 0:b01dc5fd59bc 36 * @return 0 送信成功
piroro4560 0:b01dc5fd59bc 37 * @return 1 データ量過多
piroro4560 0:b01dc5fd59bc 38 * @return 2 コマンドエラー
piroro4560 0:b01dc5fd59bc 39 * @return 3 相手からの応答なし
piroro4560 0:b01dc5fd59bc 40 * @return 4 相手が受信失敗
piroro4560 0:b01dc5fd59bc 41 * @return -1 可否不明
piroro4560 0:b01dc5fd59bc 42 */
piroro4560 0:b01dc5fd59bc 43 uint8_t SendData(uint8_t *data);
piroro4560 0:b01dc5fd59bc 44
piroro4560 0:b01dc5fd59bc 45 /** 長さ指定ver
piroro4560 0:b01dc5fd59bc 46 * @brief dataの配列をlength分送る
piroro4560 0:b01dc5fd59bc 47 * @param data 送信する配列
piroro4560 0:b01dc5fd59bc 48 * @param length 送信する長さ
piroro4560 0:b01dc5fd59bc 49 * @return 0 送信成功
piroro4560 0:b01dc5fd59bc 50 * @return 1 データ量過多
piroro4560 0:b01dc5fd59bc 51 * @return 2 コマンドエラー
piroro4560 0:b01dc5fd59bc 52 * @return 3 相手からの応答なし
piroro4560 0:b01dc5fd59bc 53 * @return 4 相手が受信失敗
piroro4560 0:b01dc5fd59bc 54 * @return -1 可否不明
piroro4560 0:b01dc5fd59bc 55 */
piroro4560 0:b01dc5fd59bc 56 uint8_t SendData(uint8_t *data, uint8_t length);
piroro4560 0:b01dc5fd59bc 57
piroro4560 0:b01dc5fd59bc 58 /** レスポンス取得用関数
piroro4560 0:b01dc5fd59bc 59 * @return 0 送信成功
piroro4560 0:b01dc5fd59bc 60 * @return 1 データ量過多
piroro4560 0:b01dc5fd59bc 61 * @return 2 コマンドエラー
piroro4560 0:b01dc5fd59bc 62 * @return 3 相手からの応答なし
piroro4560 0:b01dc5fd59bc 63 * @return 4 相手が受信失敗
piroro4560 0:b01dc5fd59bc 64 * @return -1 可否不明
piroro4560 0:b01dc5fd59bc 65 */
piroro4560 0:b01dc5fd59bc 66 uint8_t GetResponse();
piroro4560 0:b01dc5fd59bc 67
piroro4560 0:b01dc5fd59bc 68 private :
piroro4560 0:b01dc5fd59bc 69 uint8_t ctoi(char c);
piroro4560 0:b01dc5fd59bc 70
piroro4560 0:b01dc5fd59bc 71 uint8_t addr; //! 通信相手のアドレス
piroro4560 0:b01dc5fd59bc 72 uint8_t buffer[256]; //! 受信データ格納用配列
piroro4560 0:b01dc5fd59bc 73 uint8_t retdata[256]; //! 引き渡し用データ格納用配列
piroro4560 0:b01dc5fd59bc 74 uint16_t bufindex; //! bufferの添え字用変数
piroro4560 0:b01dc5fd59bc 75 uint16_t retindex; //! retdataの添え字用変数
piroro4560 0:b01dc5fd59bc 76 }
piroro4560 0:b01dc5fd59bc 77
piroro4560 0:b01dc5fd59bc 78 #endif