LineSensTest for Bertl16

Dependencies:   mbed

Fork of B16Test4 by michael hollegha

Committer:
hollegha3
Date:
Wed Sep 26 13:51:22 2018 +0000
Revision:
2:fffc57eb649f
Parent:
1:a2c68aba6d98
xx17

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hollegha3 1:a2c68aba6d98 1
hollegha3 1:a2c68aba6d98 2 #ifndef SvProtocol_h
hollegha3 1:a2c68aba6d98 3 #define SvProtocol_h
hollegha3 1:a2c68aba6d98 4
hollegha3 1:a2c68aba6d98 5 #include "stdint.h"
hollegha3 1:a2c68aba6d98 6
hollegha3 1:a2c68aba6d98 7 // V2.0
hollegha3 1:a2c68aba6d98 8 namespace mbed {
hollegha3 1:a2c68aba6d98 9
hollegha3 1:a2c68aba6d98 10 class IStreamHL {
hollegha3 1:a2c68aba6d98 11 public:
hollegha3 1:a2c68aba6d98 12 virtual void PutChar(int aCh) = 0;
hollegha3 1:a2c68aba6d98 13 virtual int GetChar() = 0;
hollegha3 1:a2c68aba6d98 14 virtual void Write(void* aData, uint32_t aLenBytes) = 0;
hollegha3 1:a2c68aba6d98 15 virtual void Read(void* aData, uint32_t aLenBytes) = 0;
hollegha3 1:a2c68aba6d98 16 };
hollegha3 1:a2c68aba6d98 17
hollegha3 1:a2c68aba6d98 18 class SvProtocol {
hollegha3 1:a2c68aba6d98 19 public:
hollegha3 1:a2c68aba6d98 20 IStreamHL* _st;
hollegha3 1:a2c68aba6d98 21 uint8_t acqON;
hollegha3 1:a2c68aba6d98 22 uint8_t svMessageON;
hollegha3 1:a2c68aba6d98 23 public:
hollegha3 1:a2c68aba6d98 24 SvProtocol(IStreamHL* aStrm) {
hollegha3 1:a2c68aba6d98 25 acqON=0; svMessageON=1;
hollegha3 1:a2c68aba6d98 26 _st=aStrm;
hollegha3 1:a2c68aba6d98 27 }
hollegha3 1:a2c68aba6d98 28
hollegha3 1:a2c68aba6d98 29 // Check's first for acqOn/Off Command
hollegha3 1:a2c68aba6d98 30 // ret 0 if acqOn/Off was handled in GetCommand
hollegha3 1:a2c68aba6d98 31 int GetCommand();
hollegha3 1:a2c68aba6d98 32
hollegha3 1:a2c68aba6d98 33 void Puts(char* aCStr); // Terminate with 0
hollegha3 1:a2c68aba6d98 34
hollegha3 1:a2c68aba6d98 35 void Puts2(char* aCStr, char aEndChar);
hollegha3 1:a2c68aba6d98 36
hollegha3 1:a2c68aba6d98 37 // \r\n is appended automatically
hollegha3 1:a2c68aba6d98 38 void Printf(const char* format, ...);
hollegha3 1:a2c68aba6d98 39
hollegha3 1:a2c68aba6d98 40 void SvPrintf(const char *format, ...);
hollegha3 1:a2c68aba6d98 41
hollegha3 1:a2c68aba6d98 42 void WriteSV(int aId, char* aData) {
hollegha3 1:a2c68aba6d98 43 if( !svMessageON ) return;
hollegha3 1:a2c68aba6d98 44 _st->PutChar(aId); Puts(aData);
hollegha3 1:a2c68aba6d98 45 }
hollegha3 1:a2c68aba6d98 46
hollegha3 1:a2c68aba6d98 47 void SvMessage(char* aTxt) {
hollegha3 1:a2c68aba6d98 48 if( !svMessageON ) return;
hollegha3 1:a2c68aba6d98 49 _st->PutChar(10); Puts(aTxt);
hollegha3 1:a2c68aba6d98 50 }
hollegha3 1:a2c68aba6d98 51
hollegha3 1:a2c68aba6d98 52 void VectHeader(int aId, int aNVals)
hollegha3 1:a2c68aba6d98 53 { _st->PutChar(aId); _st->PutChar(aNVals); }
hollegha3 1:a2c68aba6d98 54
hollegha3 1:a2c68aba6d98 55 void WriteSvI16(int aId, int16_t aData)
hollegha3 1:a2c68aba6d98 56 { _st->PutChar(aId+10); _st->Write(&aData,2); }
hollegha3 1:a2c68aba6d98 57
hollegha3 1:a2c68aba6d98 58 void WriteSvI32(int aId, int32_t aData)
hollegha3 1:a2c68aba6d98 59 { _st->PutChar(aId); _st->Write(&aData,4); }
hollegha3 1:a2c68aba6d98 60
hollegha3 1:a2c68aba6d98 61 void WriteSV(int aId, float aData)
hollegha3 1:a2c68aba6d98 62 { _st->PutChar(aId+20); _st->Write(&aData,4); }
hollegha3 1:a2c68aba6d98 63
hollegha3 1:a2c68aba6d98 64 // float in 3.13 Format
hollegha3 1:a2c68aba6d98 65 void WriteSV3p13(int aId, float aData);
hollegha3 1:a2c68aba6d98 66
hollegha3 1:a2c68aba6d98 67 int16_t ReadI16()
hollegha3 1:a2c68aba6d98 68 { int16_t ret; _st->Read(&ret,2); return ret; }
hollegha3 1:a2c68aba6d98 69
hollegha3 1:a2c68aba6d98 70 int32_t ReadI32()
hollegha3 1:a2c68aba6d98 71 { int32_t ret; _st->Read(&ret,4); return ret; }
hollegha3 1:a2c68aba6d98 72
hollegha3 1:a2c68aba6d98 73 float ReadF()
hollegha3 1:a2c68aba6d98 74 { float ret; _st->Read(&ret,4); return ret; }
hollegha3 1:a2c68aba6d98 75
hollegha3 1:a2c68aba6d98 76 // reads until aTermChar is found
hollegha3 1:a2c68aba6d98 77 void ReadCString(char* aBuff, char aTermChar);
hollegha3 1:a2c68aba6d98 78
hollegha3 1:a2c68aba6d98 79 SvProtocol& WrB(char aVal)
hollegha3 1:a2c68aba6d98 80 { _st->PutChar(aVal); return *this; }
hollegha3 1:a2c68aba6d98 81
hollegha3 1:a2c68aba6d98 82 SvProtocol& WrF(float aVal)
hollegha3 1:a2c68aba6d98 83 { _st->Write(&aVal,4); return *this; }
hollegha3 1:a2c68aba6d98 84 };
hollegha3 1:a2c68aba6d98 85
hollegha3 1:a2c68aba6d98 86 } // namespace mbed
hollegha3 1:a2c68aba6d98 87
hollegha3 1:a2c68aba6d98 88 // SV-Id Ranges and DataTypes for SvVis3 Visualisation-Tool
hollegha3 1:a2c68aba6d98 89 //----------------------------------------------------------
hollegha3 1:a2c68aba6d98 90 // Id = 10 : string
hollegha3 1:a2c68aba6d98 91 // Id = 1 .. 9 : format 3.13 2 Bytes
hollegha3 1:a2c68aba6d98 92 // Id = 11 .. 20 : short 2 Bytes
hollegha3 1:a2c68aba6d98 93 // Id = 21 .. 30 : float 4 Bytes
hollegha3 1:a2c68aba6d98 94
hollegha3 1:a2c68aba6d98 95 #endif
hollegha3 1:a2c68aba6d98 96