Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 1701 → Rev 1702

/C-OSD/arducam-osd/libraries/PTPCamera/examples/EOSCamController/eoseventparser.h
0,0 → 1,75
#ifndef __EOSEVENTPARSER_H__
#define __EOSEVENTPARSER_H__
 
#include <inttypes.h>
#include <avr/pgmspace.h>
#include <Max_LCD.h>
#include <ptpcallback.h>
#include <canoneos.h>
 
 
struct EOSParamValues
{
uint8_t upperValue;
uint8_t currentValue;
uint8_t lowerValue;
};
 
#define MAX_OBJ_IN_LIST 8
 
class EOSEventParser : public PTPReadParser
{
const uint16_t constInitialEventCode;
 
uint8_t paramsChanged;
 
struct EOSEvent
{
uint16_t eventCode;
uint16_t propCode;
uint32_t propValue;
};
 
uint8_t nStage;
uint8_t nRecStage;
uint16_t nRecSize;
MultiValueBuffer theBuffer;
uint32_t varBuffer;
EOSEvent eosEvent;
uint16_t paramCountdown;
uint16_t paramCount;
 
MultiByteValueParser valueParser;
ByteSkipper byteSkipper;
 
bool EventRecordParse(uint8_t **pp, uint16_t *pcntdn);
bool IsLastEventRecord() { return (eosEvent.eventCode == 0); };
void InitEOSEventStruct();
 
public:
EOSEventParser() :
constInitialEventCode(0xFFFF),
nStage(0),
nRecStage(0),
nRecSize(0),
varBuffer(0),
paramCountdown(0),
paramsChanged(0)
{
theBuffer.pValue = &varBuffer;
};
 
void Reset()
{
nStage = 0;
nRecStage = 0;
nRecSize = 0;
varBuffer = 0;
paramCountdown = 0;
paramsChanged = 0;
};
 
virtual void Parse(const uint16_t len, const uint8_t *pbuf, const uint32_t &offset);
};
 
#endif // __EOSEVENTPARSER_H__