SDCardClient.hpp
1 //
2 // Created by xiong on 2021/6/1.
3 //
4 
5 #ifndef EMX_SDCardClient_HPP
6 #define EMX_SDCardClient_HPP
7 
8 #include <functional>
9 
10 #include "SDCard.hpp"
11 
12 namespace Emx {
17  class SDCardClient : public SDCard {
18  public:
19  SDCardClient(int chn) : SDCard(chn) {}
20 
25  static int GetChnNum();
26 
27  ErrCodeE Mount() override;
28 
29  ErrCodeE UnMount() override;
30 
31  ErrCodeE Format() override;
32 
33  ErrCodeE GetInfo(Info &info) override;
34 
35  ErrCodeE Check() override;
36  };
37 
40  public:
46  using SDCardInfoCallback = std::function<void(int chn, SDCard::Info &info)>;
47 
55  SDCardClientEvent(EuvLoop &loop, char *buffer, int size, SDCardInfoCallback cb) :
56  m_loop(loop), m_buffer(buffer), m_size(size), m_cb(std::move(cb)) {
57  }
58 
64  void Create();
65 
67  void Destroy();
68 
69  private:
70  void OnMsgRecv(uint32_t topic, const char *data, int32_t size);
71 
72  private:
73  EuvLoop &m_loop;
74  char *m_buffer;
75  int m_size;
76  SDCardInfoCallback m_cb;
78  };
80 }
81 
82 #endif //EMX_SDCardClient_HPP
实现多路复用循环的主体,所有基于EuvLoop的事件都应绑定到一个EuvLoop上
Definition: EuvLoop.hpp:18
用于Topic的异步订阅
Definition: MsgTopic.hpp:175
用于监听SD卡插拔事件
Definition: SDCardClient.hpp:39
std::function< void(int chn, SDCard::Info &info)> SDCardInfoCallback
SD卡插拔事件回调函数
Definition: SDCardClient.hpp:46
void Destroy()
销毁监听
void Create()
创建监听 创建成功之后,会收到异步的SDCardInfoCallback回调 方便使用者知道SD卡当前的状态
SDCardClientEvent(EuvLoop &loop, char *buffer, int size, SDCardInfoCallback cb)
构造函数
Definition: SDCardClient.hpp:55
操作设备SD卡的客户端接口
Definition: SDCardClient.hpp:17
ErrCodeE Check() override
ErrCodeE Mount() override
ErrCodeE Format() override
ErrCodeE UnMount() override
static int GetChnNum()
获取设备支持的通道数量
SDCardClient(int chn)
Definition: SDCardClient.hpp:19
ErrCodeE GetInfo(Info &info) override
提供操作设备SD卡相关接口
Definition: SDCard.hpp:16
ErrCodeE
错误码定义
Definition: EmxTypeDef.hpp:29
Definition: EmxGpio.hpp:10
SD卡信息
Definition: SDCard.hpp:33