FEP interrupt, response, ring buffer
Dependents: 087_myFEP_TX 087_myFEP_RX
FEP.h@0:b01dc5fd59bc, 2021-10-09 (annotated)
- Committer:
- piroro4560
- Date:
- Sat Oct 09 11:42:03 2021 +0000
- Revision:
- 0:b01dc5fd59bc
- Child:
- 1:a4103af46277
make
Who changed what in which revision?
User | Revision | Line number | New 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 |