00001 00012 #ifndef DJI_HARDDRIVER_H 00013 #define DJI_HARDDRIVER_H 00014 00015 #include <stdint.h> 00016 #include <time.h> 00017 #include "DJI_Type.h" 00018 00019 namespace DJI 00020 { 00021 namespace onboardSDK 00022 { 00023 00024 class HardDriver 00025 { 00026 public: 00027 HardDriver() {} 00028 00080 public: 00081 virtual void init() = 0; 00082 virtual time_ms getTimeStamp() = 0; 00083 virtual size_t send(const uint8_t *buf, size_t len) = 0; 00084 virtual size_t readall(uint8_t *buf, size_t maxlen) = 0; 00085 virtual bool getDeviceStatus() {return true;} 00086 00087 public: 00088 virtual void lockMemory() = 0; 00089 virtual void freeMemory() = 0; 00090 00091 virtual void lockMSG() = 0; 00092 virtual void freeMSG() = 0; 00093 00094 virtual void lockACK() = 0; 00095 virtual void freeACK() = 0; 00096 00097 virtual void notify() = 0; 00098 virtual void wait(int timeout) = 0; 00099 00100 virtual void lockProtocolHeader() {;} 00101 virtual void freeProtocolHeader() {;} 00102 00103 virtual void lockNonBlockCBAck() {;} 00104 virtual void freeNonBlockCBAck() {;} 00105 00106 virtual void notifyNonBlockCBAckRecv() {;} 00107 virtual void nonBlockWait() {;} 00108 00109 public: 00110 virtual void displayLog(const char *buf = 0); 00111 }; 00112 } // namespace onboardSDK 00113 } // namespace DJI 00114 00115 #endif // DJI_HARDDRIVER_H