SATDevices.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #ifndef __SAT_QUERIER__
  2. #define __SAT_QUERIER__
  3. #pragma once
  4. #include "CritSection.h"
  5. enum DEVICE_TYPE{
  6. Virtual,
  7. Usb,
  8. Reticle
  9. };
  10. // 安卓设备adb连接:USB连接、网线连接;
  11. typedef struct __ANDROID__
  12. {
  13. int nType; // 0=虚拟, 1=usb, 2=网线;
  14. std::string strName; // 设备名称(IP:端口号);
  15. /*
  16. 离线时间,如果离线时间超过10分钟,删除该设备:
  17. 因为线程会一直尝试连接掉线设备,如果在指定时间内都未连接上,
  18. 认为设备被拨或IP变了, 只对网线连接Android有效;
  19. */
  20. ULONGLONG ulOfflineTime;
  21. }STAndroid, *pSTAndroid;
  22. class CSATDevices
  23. {
  24. CSATDevices(void);
  25. public:
  26. // 单例对象模式;
  27. static CSATDevices* GetInstance()
  28. {
  29. static CSATDevices* pInstance = NULL;
  30. if ( pInstance == NULL )
  31. {
  32. pInstance = new CSATDevices;
  33. }
  34. return pInstance;
  35. }
  36. ~CSATDevices(void);
  37. protected:
  38. // 线程控制句柄;
  39. HANDLE m_hEvent;
  40. // 线程句柄;
  41. HANDLE m_hWorkThread;
  42. // 是否启动安卓设备;
  43. static bool s_bEnableAndroid;
  44. // 离线擦除时长,单位毫秒;
  45. static ULONGLONG s_ulEraseDuration;
  46. // 线程锁;
  47. static ThreadSection s_ThreadSection;
  48. // 安卓设备列表;
  49. static std::vector<STAndroid> s_vtAndroids;
  50. // 其他接口;
  51. public:
  52. // 工作开始函数;
  53. void StartWork();
  54. // 工作结束函数;
  55. void EndofWork();
  56. // 工作线程;
  57. static DWORD WINAPI WorkThread(LPVOID lpVoid);
  58. // 添加网线连接设备;
  59. static void AddReticleDevices(std::string ip);
  60. // 设备是否存在;
  61. static bool IsDeviceExist(STAndroid &stAndroid);
  62. // 设备是否下线;
  63. static bool IsAndroidOffline(STAndroid &stAndroid, std::vector<STAndroid> &vtAndroids );
  64. static bool IsAndroidOffline(std::string strAndroidName, std::vector<STAndroid> &vtAndroids );
  65. // 是否新设备;
  66. static bool IsNewAndroid(STAndroid &stAndroid);
  67. // 获取当前设备列表;
  68. static void GetCurrentDevices(std::vector<STAndroid> &vtAndroids);
  69. // 重连所有设备;
  70. static void ReConnectAllDevices();
  71. };
  72. #endif // __SAT_QUERIER__