Stefan Kiegerl
/
FuncGen
Function Generator for TINF 2021
Diff: include/SvProtocol.h
- Revision:
- 0:464b401734fd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/include/SvProtocol.h Tue Mar 09 20:46:10 2021 +0000 @@ -0,0 +1,98 @@ +#ifndef SvProtocol_h +#define SvProtocol_h + +#include "stdint.h" + +namespace mbed { + +class IStreamHL { + public: + virtual void PutChar(int aCh) = 0; + virtual int GetChar() = 0; + virtual void Write(void* aData, uint32_t aLenBytes) = 0; + virtual void Read(void* aData, uint32_t aLenBytes) = 0; + + virtual void Flush() { } +}; + +class SvProtocol { + public: + IStreamHL* _st; + uint8_t acqON; + uint8_t svMessageON; + public: + SvProtocol(IStreamHL* aStrm) { + acqON=0; svMessageON=1; + _st=aStrm; + } + + // Check's first for acqOn/Off Command + // ret 0 if acqOn/Off was handled in GetCommand + int GetCommand(); + + void Puts(char* aCStr); // Terminate with 0 + + // \r\n is appended automatically + void Printf(const char* format, ...); + + void SvPrintf(const char *format, ...); + + void WriteSV(int aId, char* aData) { + if( !svMessageON ) return; + _st->PutChar(aId); Puts(aData); + } + + void SvMessage(char* aTxt) { + if( !svMessageON ) return; + _st->PutChar(10); Puts(aTxt); + } + + void VectHeader(int aId, int aNVals) + { _st->PutChar(aId); _st->PutChar(aNVals); } + + void WriteSvI16(int aId, int16_t aData) + { _st->PutChar(aId+10); _st->Write(&aData,2); } + + void WriteSvI32(int aId, int32_t aData) + { _st->PutChar(aId); _st->Write(&aData,4); } + + void WriteSV(int aId, float aData) + { _st->PutChar(aId+20); _st->Write(&aData,4); } + + // aLen = Anzahl g�ltiger Werte in aAry + void WriteArray(int16_t aAry[], int aLen) + { + _st->PutChar(100); // Id f�r array + _st->PutChar(aLen); // L�nge als Byte geschrieben + for(int i=0; i<aLen; i++) + { + _st->Write(&(aAry[i]),2); // jeder Arrayeintrag als int16 + } + } + + // float in 3.13 Format + void WriteSV3p13(int aId, float aData); + + int16_t ReadI16() + { int16_t ret; _st->Read(&ret,2); return ret; } + + int32_t ReadI32() + { int32_t ret; _st->Read(&ret,4); return ret; } + + float ReadF() + { float ret; _st->Read(&ret,4); return ret; } +}; + +} // namespace mbed + +// SV-Id Ranges and DataTypes for SvVis3 Visualisation-Tool +//---------------------------------------------------------- +// Id = 10 : string +// Id = 1 .. 9 : format 3.13 2 Bytes +// Id = 11 .. 20 : short 2 Bytes +// Id = 21 .. 30 : float 4 Bytes +// Id = 100 : int16-Array + +#endif + +