MountMonitor.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #ifndef _OS_MOUNT_MONITOR_H
  2. #define _OS_MOUNT_MONITOR_H
  3. #include <vector>
  4. #include "system/Thread.h"
  5. /**
  6. * @brief 挂载监听
  7. */
  8. class MountMonitor : Thread {
  9. public:
  10. /**
  11. * @brief 挂载监听接口
  12. */
  13. class IMountListener {
  14. public:
  15. virtual ~IMountListener() { };
  16. virtual void notify(int what, int status, const char *msg) = 0;
  17. };
  18. /**
  19. * @brief 挂载状态
  20. */
  21. typedef enum {
  22. E_MOUNT_STATUS_NO_MEDIA = 0,
  23. E_MOUNT_STATUS_IDLE,
  24. E_MOUNT_STATUS_PENDING,
  25. E_MOUNT_STATUS_CHECKING,
  26. E_MOUNT_STATUS_MOUNTED, /**< 已挂载上 */
  27. E_MOUNT_STATUS_UNMOUNTING,
  28. E_MOUNT_STATUS_FORMATTING,
  29. E_MOUNT_STATUS_SHARED,
  30. E_MOUNT_STATUS_SHAREDMNT,
  31. E_MOUNT_STATUS_REMOVE /**< 移除挂载 */
  32. } EMountStatus;
  33. public:
  34. virtual ~MountMonitor();
  35. /**
  36. * @brief 添加挂载监听
  37. */
  38. void addMountListener(IMountListener *pListener);
  39. /**
  40. * @brief 移除挂载监听
  41. */
  42. void removeMountListener(IMountListener *pListener);
  43. int mountToPC();
  44. int unmountFromPC();
  45. int formatSDcard();
  46. bool isInsert();
  47. /**
  48. * @brief SD卡是否已挂载
  49. */
  50. bool isMount();
  51. bool isShare();
  52. bool isFormated();
  53. bool isMounted(const char *checkPath);
  54. const char* getSDcardPath() const;
  55. static MountMonitor* getInstance();
  56. protected:
  57. virtual bool threadLoop();
  58. private:
  59. MountMonitor();
  60. int init();
  61. int exit();
  62. void notifyListeners(int what, int status, const char *msg);
  63. void processStr(char *src);
  64. private:
  65. bool mShared;
  66. bool mSharing;
  67. bool mInserted;
  68. bool mMounted;
  69. bool mFormated;
  70. bool mFormating;
  71. int mStatus;
  72. int mConnectFD;
  73. char mPath[125];
  74. std::vector<IMountListener *> mListeners;
  75. static Mutex sLock;
  76. };
  77. #define MOUNTMONITOR MountMonitor::getInstance()
  78. #endif