1 #ifndef HAL_FAKES_H_
2 #define HAL_FAKES_H_
3 
4 #include <android-base/logging.h>
5 
6 #include "nfc_hal_api.h"
7 
8 class FakeHal;
9 
10 extern FakeHal* g_fake_hal;
11 
12 // Captures HAL callbacks from entry_funcs and allows a client
13 // to simulate HAL and data packet events.
14 class FakeHal {
15  public:
16   FakeHal();
17   ~FakeHal();
18 
19   void FuzzedOpen(tHAL_NFC_CBACK* p_hal_cback,
20                   tHAL_NFC_DATA_CBACK* p_data_cback);
21   void FuzzedClose();
22 
23   void SimulateHALEvent(uint8_t event, tHAL_NFC_STATUS status);
24   void SimulatePacketArrival(uint8_t mt, uint8_t pbf, uint8_t gid,
25                              uint8_t opcode, uint8_t* data, size_t size);
26 
27  private:
28   tHAL_NFC_CBACK* hal_callback_;
29   tHAL_NFC_DATA_CBACK* data_callback_;
30 };
31 
32 extern tHAL_NFC_ENTRY fuzzed_hal_entry;
33 
34 #endif  // HAL_FAKES_H_
35