btsnoop-decoder  1.0
Small library to decode Bluetooth Snoop file used to store radio packet records
btsnooptask.h
Go to the documentation of this file.
1 #ifndef BTSNOOPTASK_H
2 #define BTSNOOPTASK_H
3 
4 #include "string"
28 #include "fstream"
29 #include "btsnoop/btsnoopstate.h"
31 #include "btsnoop/btsnooppacket.h"
32 #include "ibtsnooplistener.h"
33 
34 #ifdef __ANDROID__
35 #include "jni.h"
36 #endif //__ANDROID__
37 
39 {
40 
41 public:
42 
47  BtSnoopTask();
48 
55  BtSnoopTask(std::string file_path);
56 
65  BtSnoopTask(std::string file_path,std::vector<IBtSnoopListener*> *snoopListenerList);
66 
67  ~BtSnoopTask();
68 
73  void * decoding_task(void);
74 
85  int decode_streaming_file(std::ifstream *fileStream,int current_position);
86 
93  bool decode_file();
94 
99  void stop();
100 
108 
115  std::vector<BtSnoopPacket> getPacketDataRecords();
116 
117  static void *decoding_helper(void *context) {
118  return ((BtSnoopTask *)context)->decoding_task();
119  }
120 
121  #ifdef __ANDROID__
122  static JavaVM* jvm;
123  static jobject jobj;
124  static jmethodID mid;
125  #endif // __ANDROID__
126 
127 private:
128 
132  std::string file_path;
133 
137  bool task_control;
138 
142  snoop_state state;
143 
147  BtSnoopFileInfo fileInfo;
148 
152  std::vector<IBtSnoopListener*> *snoopListenerList;
153 
157  std::vector<BtSnoopPacket> packetDataRecords;
158 
159  /* packet header value (24 o)*/
160  char * packet_header;
161 
162  /* packet header index count */
163  int header_index;
164 
165  /* packet data value (dynamic size)*/
166  char * packet_data;
167 
168  /* packet data index count*/
169  int data_index;
170 
171  /* current packet*/
172  BtSnoopPacket packet;
173 
174  /* state for packet record streaming*/
175  int packet_record_state;
176 
177  #ifdef __ANDROID__
178  /*local reference to jni_env attached to JVM*/
179  JNIEnv * jni_env;
180  #endif // __ANDROID__
181 };
182 
183 #endif // BTSNOOPTASK_H
int decode_streaming_file(std::ifstream *fileStream, int current_position)
decode full snoop file header / packet record data
Definition: btsnooptask.cpp:203
static void * decoding_helper(void *context)
Definition: btsnooptask.h:117
Definition: btsnooptask.h:38
~BtSnoopTask()
exit control loop
Definition: btsnooptask.cpp:95
Definition: btsnooppacket.h:40
void * decoding_task(void)
decoding thread task
Definition: btsnooptask.cpp:112
bool decode_file()
decode full snoop file header / packet record data
Definition: btsnooptask.cpp:411
BtSnoopTask()
build decoding task
Definition: btsnooptask.cpp:56
std::vector< BtSnoopPacket > getPacketDataRecords()
get list of decoded packet
Definition: btsnooptask.cpp:401
snoop_state
Definition: btsnoopstate.h:36
BtSnoopFileInfo getFileInfo()
get file information header object
Definition: btsnooptask.cpp:391
Definition: btsnoopfileinfo.h:40
void stop()
stop decoding : exit control loop
Definition: btsnooptask.cpp:103