00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef THINKGEAR_STREAM_PARSER_H_
00010 #define THINKGEAR_STREAM_PARSER_H_
00011
00033
00034 #include <stdlib.h>
00035
00036
00037 #ifdef __cplusplus
00038 extern "C" {
00039 #endif
00040
00041
00042 #define PARSER_TYPE_NULL 0x00
00043 #define PARSER_TYPE_PACKETS 0x01
00044 #define PARSER_TYPE_2BYTERAW 0x02
00045
00046
00047 #define PARSER_CODE_BATTERY 0x01
00048 #define PARSER_CODE_POOR_QUALITY 0x02
00049 #define PARSER_CODE_ATTENTION 0x04
00050 #define PARSER_CODE_MEDITATION 0x05
00051 #define PARSER_CODE_8BITRAW_SIGNAL 0x06
00052 #define PARSER_CODE_RAW_MARKER 0x07
00053
00054 #define PARSER_CODE_RAW_SIGNAL 0x80
00055 #define PARSER_CODE_EEG_POWERS 0x81
00056 #define PARSER_CODE_ASIC_EEG_POWER_INT 0x83
00057
00061 typedef struct _ThinkGearStreamParser {
00062
00063 unsigned char type;
00064 unsigned char state;
00065
00066 unsigned char lastByte;
00067
00068 unsigned char payloadLength;
00069 unsigned char payloadBytesReceived;
00070 unsigned char payload[256];
00071 unsigned char payloadSum;
00072 unsigned char chksum;
00073
00074 void (*handleDataValue)( unsigned char extendedCodeLevel,
00075 unsigned char code, unsigned char numBytes,
00076 const unsigned char *value, void *customData );
00077 void *customData;
00078
00079 } ThinkGearStreamParser;
00080
00097 int
00098 THINKGEAR_initParser( ThinkGearStreamParser *parser, unsigned char parserType,
00099 void (*handleDataValueFunc)(
00100 unsigned char extendedCodeLevel,
00101 unsigned char code, unsigned char numBytes,
00102 const unsigned char *value, void *customData),
00103 void *customData );
00104
00122 void
00123 exampleHandleDataValueFunc( unsigned char extendedCodeLevel,
00124 unsigned char code,
00125 unsigned char numBytes,
00126 const unsigned char *value,
00127 void *customData );
00128
00129
00149 int
00150 THINKGEAR_parseByte( ThinkGearStreamParser *parser, unsigned char byte );
00151
00152
00153 #ifdef __cplusplus
00154 }
00155 #endif
00156
00157 #endif