/****************************************************** * Rapid Embedded Development Architecture (redA) * * Copyright (C) 2008 RecoSys * * -------------- * * TLiteProtcol: * * Simplified protocol object to allow for fast * * communications between componets * * * * Contents: * * CLiteProtocol - Core of simple protocol * * * ******************************************************/ #ifndef LITE_PROTOCOL_CORE #define LITE_PROTOCOL_CORE using namespace std; // redA Libraries /* none */ // Standard C/C++ Libraries #include //--------------------------------------------------------------------------- // Very Simple Lightweight Protcol class CLiteProtocol { protected: // Parameters int BufferInc; char StartChar; char EndChar; char Separator; char *CommandStr; int BufferSize; long Length; int NoOfParams; bool Verified; char Error[100]; int CurrPos; int CurrParam; // Internal tools bool IncCommandStr( int pLength ); bool UpdateCommandStr(); bool VerifyStr( char * pString, int pLength, int &ParamCount, char * pError ); public: // Constructor & Destructor CLiteProtocol( int pBufferInc, char pStartChar = 0x02, char pEndChar = 0x03, char pSeparator = 0x00 ); ~CLiteProtocol(); // Set Command string bool ClearCommandStr(); bool NewCommandStr(); bool SetCommandStr( char * pString, int pLength, char * Error ); bool AppendCommandStr( char *pString, int &pLength ); bool VerifyCommandStr(); // Get Command String char* GetCommandStr( char ** pString = NULL, int * pLength = NULL ); int GetCommandLen() { return Length; }; int GetNoOfParams() { return NoOfParams; }; bool isVerified() { return Verified; }; char* GetError() { return Error; }; // Set Parameters bool AppendParam( const char * pString, const int pLength ); bool AppendParam( long pValue ); bool AppendParam( double pValue, int pDigits ); // Get Parameters char const * GetParamNo( int ParamNo, char ** pString = NULL, int * pLength = NULL ); bool GotoParam( int ParamNo ); bool NextParam(); char const * GetParam( char ** pString = NULL, int * pLength = NULL ); }; #endif /* LITE_PROTOCOL_CORE */