akkera 102
/
apuplay
SPC music playback tools for real snes apu
gpio.h@0:5bd52e196edb, 2017-01-09 (annotated)
- Committer:
- akkera102
- Date:
- Mon Jan 09 13:54:39 2017 +0000
- Revision:
- 0:5bd52e196edb
- Child:
- 2:62e6e22f8be2
first
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
akkera102 | 0:5bd52e196edb | 1 | /** |
akkera102 | 0:5bd52e196edb | 2 | * @file gpio.h |
akkera102 | 0:5bd52e196edb | 3 | * @brief GPIO クラスの宣言およびインターフェイスの定義をします |
akkera102 | 0:5bd52e196edb | 4 | */ |
akkera102 | 0:5bd52e196edb | 5 | |
akkera102 | 0:5bd52e196edb | 6 | #pragma once |
akkera102 | 0:5bd52e196edb | 7 | |
akkera102 | 0:5bd52e196edb | 8 | /** |
akkera102 | 0:5bd52e196edb | 9 | * @brief GPIO クラス |
akkera102 | 0:5bd52e196edb | 10 | */ |
akkera102 | 0:5bd52e196edb | 11 | class CGpio |
akkera102 | 0:5bd52e196edb | 12 | { |
akkera102 | 0:5bd52e196edb | 13 | public: |
akkera102 | 0:5bd52e196edb | 14 | static CGpio* GetInstance(); |
akkera102 | 0:5bd52e196edb | 15 | |
akkera102 | 0:5bd52e196edb | 16 | static void Initialize(); |
akkera102 | 0:5bd52e196edb | 17 | static void PinDir(int pin, bool write); |
akkera102 | 0:5bd52e196edb | 18 | static void SetPin(int pin, bool high); |
akkera102 | 0:5bd52e196edb | 19 | static bool GetPin(int pin); |
akkera102 | 0:5bd52e196edb | 20 | |
akkera102 | 0:5bd52e196edb | 21 | void WriteByte(unsigned char c); |
akkera102 | 0:5bd52e196edb | 22 | unsigned char ReadByte(); |
akkera102 | 0:5bd52e196edb | 23 | |
akkera102 | 0:5bd52e196edb | 24 | private: |
akkera102 | 0:5bd52e196edb | 25 | /** |
akkera102 | 0:5bd52e196edb | 26 | * モード |
akkera102 | 0:5bd52e196edb | 27 | */ |
akkera102 | 0:5bd52e196edb | 28 | enum ByteDir |
akkera102 | 0:5bd52e196edb | 29 | { |
akkera102 | 0:5bd52e196edb | 30 | kUninitialize = -1, /*!< 未初期化 */ |
akkera102 | 0:5bd52e196edb | 31 | kRead = 0, /*!< リード */ |
akkera102 | 0:5bd52e196edb | 32 | kWrite = 1 /*!< ライト */ |
akkera102 | 0:5bd52e196edb | 33 | }; |
akkera102 | 0:5bd52e196edb | 34 | |
akkera102 | 0:5bd52e196edb | 35 | static CGpio sm_instance; /*!< 唯一のインスタンスです */ |
akkera102 | 0:5bd52e196edb | 36 | ByteDir m_dir; /*!< バイト方向 */ |
akkera102 | 0:5bd52e196edb | 37 | |
akkera102 | 0:5bd52e196edb | 38 | CGpio(); |
akkera102 | 0:5bd52e196edb | 39 | void ByteMode(ByteDir dir); |
akkera102 | 0:5bd52e196edb | 40 | static unsigned char SwapBits(unsigned char c); |
akkera102 | 0:5bd52e196edb | 41 | }; |
akkera102 | 0:5bd52e196edb | 42 | |
akkera102 | 0:5bd52e196edb | 43 | /** |
akkera102 | 0:5bd52e196edb | 44 | * インスタンスの取得 |
akkera102 | 0:5bd52e196edb | 45 | * @return インスタンス |
akkera102 | 0:5bd52e196edb | 46 | */ |
akkera102 | 0:5bd52e196edb | 47 | inline CGpio* CGpio::GetInstance() |
akkera102 | 0:5bd52e196edb | 48 | { |
akkera102 | 0:5bd52e196edb | 49 | return &sm_instance; |
akkera102 | 0:5bd52e196edb | 50 | } |