FEP interrupt, response, ring buffer

Dependents:   087_myFEP_TX 087_myFEP_RX

Committer:
piroro4560
Date:
Sat Oct 09 11:42:03 2021 +0000
Revision:
0:b01dc5fd59bc
Child:
1:a4103af46277
make

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