Function Generator for TINF 2021

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
+
+