00001 #ifndef PPARSER_H__
00002 #define PPARSER_H__
00003 #include <cstring>
00004 #include <cstdlib>
00005
00007
00011 class PParser
00012 {
00013 private:
00014
00015 enum State {INIT, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, ERR};
00016
00018 char * mp_packet;
00019
00021 unsigned int m_packet_length;
00023 unsigned int m_packet_index;
00025
00028 unsigned int m_frame_counter;
00029
00031 unsigned int parse_fr();
00033 void parse_ts();
00035 void parse_3DOF();
00037 void parse_gl();
00039 void parse_6DOF();
00041 void parse_flystick();
00043 void parse_flystick2();
00045 void parse_6dcal();
00046
00048
00051 int parse_int();
00053
00056 float parse_float();
00057 public:
00058
00060
00066 PParser(char * packet = 0, unsigned int length = 0);
00067
00069
00072 ~PParser();
00073
00075
00078 void setPacket(char * packet);
00079
00081
00084 void setLength(unsigned int length);
00085
00087 char * getPacket();
00088
00090 unsigned int getLength();
00091
00093
00096 bool parse();
00097 };
00098 #endif