オシロスコープ

Dependencies:   Array_Matrix mbed SerialTxRxIntr DSP_ADDA_Dual

Committer:
MikamiUitOpen
Date:
Sat Oct 17 10:14:31 2020 +0000
Revision:
0:595c23d6949a
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:595c23d6949a 1 //--------------------------------------------------------
MikamiUitOpen 0:595c23d6949a 2 // バッファの template クラス
MikamiUitOpen 0:595c23d6949a 3 // バッファに2次元配列(Matrix クラス)を使用
MikamiUitOpen 0:595c23d6949a 4 //
MikamiUitOpen 0:595c23d6949a 5 // 2020/10/17, Copyright (c) 2020 MIKAMI, Naoki
MikamiUitOpen 0:595c23d6949a 6 //--------------------------------------------------------
MikamiUitOpen 0:595c23d6949a 7
MikamiUitOpen 0:595c23d6949a 8 #ifndef INPUT_BUFFER_HPP
MikamiUitOpen 0:595c23d6949a 9 #define INPUT_BUFFER_HPP
MikamiUitOpen 0:595c23d6949a 10
MikamiUitOpen 0:595c23d6949a 11 #include "Matrix.hpp"
MikamiUitOpen 0:595c23d6949a 12 using namespace Mikami;
MikamiUitOpen 0:595c23d6949a 13
MikamiUitOpen 0:595c23d6949a 14 template<class T> class InputBuffer
MikamiUitOpen 0:595c23d6949a 15 {
MikamiUitOpen 0:595c23d6949a 16 public:
MikamiUitOpen 0:595c23d6949a 17 // コンストラクタ
MikamiUitOpen 0:595c23d6949a 18 explicit InputBuffer(int size, T initialValue = 0)
MikamiUitOpen 0:595c23d6949a 19 : N_(size), buf_(2, size, initialValue), index_(0), full_(false) {}
MikamiUitOpen 0:595c23d6949a 20
MikamiUitOpen 0:595c23d6949a 21 // データを格納
MikamiUitOpen 0:595c23d6949a 22 void Store(T data1, T data2)
MikamiUitOpen 0:595c23d6949a 23 {
MikamiUitOpen 0:595c23d6949a 24 buf_[0][index_] = data1;
MikamiUitOpen 0:595c23d6949a 25 buf_[1][index_++] = data2;
MikamiUitOpen 0:595c23d6949a 26 }
MikamiUitOpen 0:595c23d6949a 27
MikamiUitOpen 0:595c23d6949a 28 // 出力バッファからデータの取り出し
MikamiUitOpen 0:595c23d6949a 29 T Get(int ch, int n) const { return buf_[ch][n]; }
MikamiUitOpen 0:595c23d6949a 30
MikamiUitOpen 0:595c23d6949a 31 // バッファが満杯で次の準備を行う
MikamiUitOpen 0:595c23d6949a 32 bool IsFullNext()
MikamiUitOpen 0:595c23d6949a 33 {
MikamiUitOpen 0:595c23d6949a 34 if (index_ < N_) return false;
MikamiUitOpen 0:595c23d6949a 35
MikamiUitOpen 0:595c23d6949a 36 index_ = 0;
MikamiUitOpen 0:595c23d6949a 37 full_ = true;
MikamiUitOpen 0:595c23d6949a 38 return true;
MikamiUitOpen 0:595c23d6949a 39 }
MikamiUitOpen 0:595c23d6949a 40
MikamiUitOpen 0:595c23d6949a 41 // バッファが満杯で,true を返す
MikamiUitOpen 0:595c23d6949a 42 bool IsFull()
MikamiUitOpen 0:595c23d6949a 43 {
MikamiUitOpen 0:595c23d6949a 44 bool temp = full_;
MikamiUitOpen 0:595c23d6949a 45 if (full_) full_ = false;
MikamiUitOpen 0:595c23d6949a 46 return temp;
MikamiUitOpen 0:595c23d6949a 47 }
MikamiUitOpen 0:595c23d6949a 48
MikamiUitOpen 0:595c23d6949a 49 private:
MikamiUitOpen 0:595c23d6949a 50 const int N_; // バッファのサイズ
MikamiUitOpen 0:595c23d6949a 51 Matrix<T> buf_; // バッファ
MikamiUitOpen 0:595c23d6949a 52 int index_; // 入力データのカウンタ
MikamiUitOpen 0:595c23d6949a 53 bool full_; // 満杯の場合 true
MikamiUitOpen 0:595c23d6949a 54
MikamiUitOpen 0:595c23d6949a 55 // コピー・コンストラクタおよび代入演算子の禁止のため
MikamiUitOpen 0:595c23d6949a 56 InputBuffer(const InputBuffer&);
MikamiUitOpen 0:595c23d6949a 57 InputBuffer& operator=(const InputBuffer&);
MikamiUitOpen 0:595c23d6949a 58 };
MikamiUitOpen 0:595c23d6949a 59 #endif // INPUT_BUFFER_HPP