Subversion Repositories Projects

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1702 - 1
#ifndef __EOSEVENTPARSER_H__
2
#define __EOSEVENTPARSER_H__
3
 
4
#include <inttypes.h>
5
#include <avr/pgmspace.h>
6
#include <ptpcallback.h>
7
#include <canoneos.h>
8
 
9
 
10
struct EOSParamValues
11
{
12
        uint8_t         upperValue;
13
        uint8_t         currentValue;
14
        uint8_t         lowerValue;
15
};
16
 
17
#define MAX_OBJ_IN_LIST         8
18
 
19
class EOSEventParser : public PTPReadParser
20
{
21
        const uint16_t          constInitialEventCode;
22
 
23
        uint8_t                         paramsChanged;
24
 
25
        struct EOSEvent
26
        {
27
                uint16_t        eventCode;
28
                uint16_t        propCode;
29
                uint32_t        propValue;
30
        };
31
 
32
        uint8_t                                 nStage;
33
        uint8_t                                 nRecStage;
34
        uint16_t                                nRecSize;
35
        MultiValueBuffer                        theBuffer;
36
        uint32_t                                varBuffer;
37
        EOSEvent                                eosEvent;
38
        uint16_t                                paramCountdown;
39
        uint16_t                                paramCount;
40
 
41
        MultiByteValueParser                    valueParser;
42
        ByteSkipper                             byteSkipper;
43
 
44
        bool EventRecordParse(uint8_t **pp, uint16_t *pcntdn);
45
        bool IsLastEventRecord() { return (eosEvent.eventCode == 0); };
46
        void InitEOSEventStruct();
47
 
48
public:
49
        EOSEventParser() :
50
                constInitialEventCode(0xFFFF),
51
                nStage(0),
52
                nRecStage(0),
53
                nRecSize(0),
54
                varBuffer(0),
55
                paramCountdown(0),
56
                paramsChanged(0)
57
                {
58
                        theBuffer.pValue = &varBuffer;
59
                };
60
 
61
        void Reset()
62
        {
63
                nStage                  = 0;
64
                nRecStage               = 0;
65
                nRecSize                = 0;
66
                varBuffer               = 0;
67
                paramCountdown  = 0;
68
                paramsChanged   = 0;
69
        };
70
 
71
        virtual void Parse(const uint16_t len, const uint8_t *pbuf, const uint32_t &offset);
72
};
73
 
74
#endif // __EOSEVENTPARSER_H__