MityDSP Documentation Index
Public Types | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes
MityDSP::tcDspParserBase Class Reference

This class provides a base class from which various MityDSP parsers may be derived. More...

#include <core/DspParserBase.h>

Inheritance diagram for MityDSP::tcDspParserBase:
MityDSP::tcDspParseIHex

List of all members.

Public Types

enum  teDspParseStatus {
  eeParseOK = 0, eeParseChecksumErr = -1, eeParseSyncErr = -2, eeParseBustedMsg = -3,
  eeParseTooBigErr = -4, eeBaseLast = -5
}
 possible return status' More...
typedef bool(* tfParserCallback )(int, void *, int, unsigned int, void *)
 Prototype for message complete callbacks.

Public Member Functions

 tcDspParserBase (void *apOutBuf=NULL, int anOutBufLen=4096)
 This constructor is used to create an instance of a parser.
virtual ~tcDspParserBase ()
 This destructor is used to close up and free the resources tied to the associated parser.
virtual bool ResetParser (void *apOutBuf=NULL, int anOutBufLen=0)
 This routine is used to reset a parser to an initialized state.
virtual int AddData (void *apData, int anLength)
 This routine is used to add data to the parser.
virtual void RegisterCallback (tfParserCallback afCallback, void *apUser=NULL)
 Registers the specified callback for the parser.

Public Attributes

unsigned int mnBytesRead
 Bytes passed to parser.
unsigned int mnBytesWritten
 Bytes written to buffer.
unsigned int mnGoodMsgs
 Count of valid messages decoded.
unsigned int mnBadMsgs
 Count of bad messages.
unsigned int mnSyncErrs
 Number of synchronization errors.
unsigned int mnChecksumErrs
 Number of checksum errors.

Protected Member Functions

int AssembleLine (void *apInput, int anLength, bool &arLineComplete)
 Utility routine to assemble a line of data (delimited by a <CR> or <LF>) into the local line buffer.
char AsciiHexDigitVal (char anHexdigit)
 This routine converts a hex character (0-9, a-f, or A-F) to it's corresponding numeric value.

Protected Attributes

tfParserCallback mfCallback
 Storage for parser callback.
C_SECT mhMutex
 Semaphore to serialize access.
bool mbStorageCreated
 Indicates whether out buf created.
void * mpOutBuf
 Pointer to output storage.
int mnOutBufLen
 Current bytes written to output.
unsigned int mnChecksum
 Storage to accumulate checksum.
char * maLineBuffer
 Storage to acculate complete lines (or other entities) to parse.
int mnLineBufLen
 Length of line buffer.
int mnLinePos
 Working position in the line buffer.
void * mpUserParameter
 User-provided parameter to callback.

Detailed Description

This class provides a base class from which various MityDSP parsers may be derived.

See also:
tcDspParserBase Page

Member Typedef Documentation

typedef bool(* MityDSP::tcDspParserBase::tfParserCallback)(int, void *, int, unsigned int, void *)

Prototype for message complete callbacks.

Parameters:
[in]anStatusCast of teDspParseStatus to an integer
[in]apDataPointer to the buffer containing parse results
[in]anLengthLength of parse results
[in]anInfoOther buffer info (usually a checksum)
[in]apUserUser parameter (provided at registration)
Returns:
True to continue parsing, if possible False to restart parser on next message

Member Enumeration Documentation

possible return status'

Enumerator:
eeParseOK 

success

eeParseChecksumErr 

checksum failure

eeParseSyncErr 

data sync error

eeParseBustedMsg 

broken message (missing data)

eeParseTooBigErr 

result too big for output buffer

eeBaseLast 

errors beyond this are outside base class


Constructor & Destructor Documentation

tcDspParserBase::tcDspParserBase ( void *  apOutBuf = NULL,
int  anOutBufLen = 4096 
)

This constructor is used to create an instance of a parser.

Storage for parser output, and the maximum size of the output, may be optionally provided. If no buffer is provided, the class attempts to create one.

Parameters:
[in]apOutBufAddress of parser output buffer (default: NULL)
[in]anOutBufLenLength of output buffer (default: 4K)
Returns:
None.
See also:
DspParserBase.h
tcDspParserBase::~tcDspParserBase ( )
virtual

This destructor is used to close up and free the resources tied to the associated parser.

Returns:
None.
See also:
DspParserBase.h

Member Function Documentation

bool tcDspParserBase::ResetParser ( void *  apOutBuf = NULL,
int  anOutBufLen = 0 
)
virtual

This routine is used to reset a parser to an initialized state.

A new output buffer may optionally be provided.

Parameters:
[in]apOutBufAddress of new parser output buffer (default: NULL)
[in]anOutBufLenLength of new output buffer (default: 0)
Returns:
True, if successful.
See also:
DspParserBase.h

Reimplemented in MityDSP::tcDspParseIHex.

int tcDspParserBase::AddData ( void *  apData,
int  anLength 
)
virtual

This routine is used to add data to the parser.

In the base class, this is simply a "passthrough"... the input data is taken as a complete message and is passed to the callback. If the input fits in the output, the status is eeParseOK, otherwise eeParseTooBigErr.

Parameters:
[in]apDataPointer to new data
[in]anLengthLength of new data
Returns:
Integer number of messages completed this call.
See also:
DspParserBase.h

Reimplemented in MityDSP::tcDspParseIHex.

void tcDspParserBase::RegisterCallback ( tfParserCallback  afCallback,
void *  apUser = NULL 
)
virtual

Registers the specified callback for the parser.

Parameters:
[in]afCallbackThe application callback to associate with the parser (or NULL for none).
[in]apUserAn argument to be supplied with the callback.
Returns:
None.
See also:
DspParserBase.h
int tcDspParserBase::AssembleLine ( void *  apInput,
int  anLength,
bool &  arLineComplete 
)
protected

Utility routine to assemble a line of data (delimited by a <CR> or <LF>) into the local line buffer.

Parameters:
[in]apInputPointer to the raw input data.
[in]anLengthLength of available raw data.
[out]arLineCompleteSet to true if a completed line is available.
Returns:
Number of bytes consumed from the input buffer.
See also:
DspParserBase.h
char tcDspParserBase::AsciiHexDigitVal ( char  anHexdigit)
protected

This routine converts a hex character (0-9, a-f, or A-F) to it's corresponding numeric value.

Parameters:
[in]anHexdigitThe ASCII character to convert
Returns:
The resulting numeric value
See also:
DspParserBase.h

Member Data Documentation

unsigned int MityDSP::tcDspParserBase::mnBytesRead

Bytes passed to parser.

unsigned int MityDSP::tcDspParserBase::mnBytesWritten

Bytes written to buffer.

unsigned int MityDSP::tcDspParserBase::mnGoodMsgs

Count of valid messages decoded.

unsigned int MityDSP::tcDspParserBase::mnBadMsgs

Count of bad messages.

unsigned int MityDSP::tcDspParserBase::mnSyncErrs

Number of synchronization errors.

unsigned int MityDSP::tcDspParserBase::mnChecksumErrs

Number of checksum errors.

tfParserCallback MityDSP::tcDspParserBase::mfCallback
protected

Storage for parser callback.

C_SECT MityDSP::tcDspParserBase::mhMutex
protected

Semaphore to serialize access.

bool MityDSP::tcDspParserBase::mbStorageCreated
protected

Indicates whether out buf created.

void* MityDSP::tcDspParserBase::mpOutBuf
protected

Pointer to output storage.

int MityDSP::tcDspParserBase::mnOutBufLen
protected

Current bytes written to output.

unsigned int MityDSP::tcDspParserBase::mnChecksum
protected

Storage to accumulate checksum.

char* MityDSP::tcDspParserBase::maLineBuffer
protected

Storage to acculate complete lines (or other entities) to parse.

int MityDSP::tcDspParserBase::mnLineBufLen
protected

Length of line buffer.

int MityDSP::tcDspParserBase::mnLinePos
protected

Working position in the line buffer.

void* MityDSP::tcDspParserBase::mpUserParameter
protected

User-provided parameter to callback.


  
Generated on Mon Apr 22 2013 11:33:04 for MityDSP Core by  Doxygen Version 1.8.1.1
Copyright © 2009, Critical Link LLC, All rights reserved.