diff --git a/libraries/BlePoll/BlePoll.cpp b/libraries/BlePoll/BlePoll.cpp index 00a564cd7575ec7a7d24384f6844d4777af7d0b5..f2b89ae3d67d527cf753ec12a685ac02e0bde3ae 100644 --- a/libraries/BlePoll/BlePoll.cpp +++ b/libraries/BlePoll/BlePoll.cpp @@ -1502,6 +1502,48 @@ int BlePoll::getMeas(int slAdr, byte *dest) return(anzByte); } +int BlePoll::getCtrlM(int slAdr, byte *dest){ + int anzByte; + PlpType appId; + + if(slAdr < 1) return(false); + if(slAdr >= MAXSLAVE) return(false); + + + SlavePtr slavePtr = &slaveList[slAdr]; + appId = (PlpType) slavePtr->result.plData[0]; + + switch(appId) + { + case plptMeas6: + anzByte = 0; + break; + + case plptMeas9: + anzByte = 0; + break; + + case plptMeas9Ctrl4: + anzByte = 4; + break; + + case plptMeas13: + anzByte = 0; + break; + + default: + anzByte = 0; + break; + } + + for (int i = 0; i < anzByte; i++) + { + dest[i] = slavePtr->result.plData[i+20]; + } + + return(anzByte); +} + // -------------------------------------------------------------------------- // Debugging diff --git a/libraries/BlePoll/BlePoll.h b/libraries/BlePoll/BlePoll.h index 59757afc66b79a22f4c5aa28971f164361d0f75f..721d22c5c1b2fd65fc1415d7707fb2d93383e036 100644 --- a/libraries/BlePoll/BlePoll.h +++ b/libraries/BlePoll/BlePoll.h @@ -219,6 +219,7 @@ typedef struct _PollInfo dword wrongs; // Anzahl ungewünschter Netzaktivitäten } PollInfo, *PollInfoPtr; + typedef struct _PollState { byte slIdx; // Index in der Slave-Liste @@ -493,7 +494,7 @@ public: int getArea(int slIdx); // Wert der Area auslesen PlpType getAppId(int slIdx); // Wert der AppId (BlePoll) auslesen int getMeas(int slIdx, byte *dest); // Messwerte übergeben - + int getCtrlM(int slIdx, byte *dest); // -------------------------------------------------------------------------- diff --git a/libraries/environment/SoaapBleMaster.h b/libraries/environment/SoaapBleMaster.h index fb14e55e99bd8ccfb2139924ab0425a6a21de623..98bd22eb99c0839cf9f5ad554dd116b21c0afd81 100644 --- a/libraries/environment/SoaapBleMaster.h +++ b/libraries/environment/SoaapBleMaster.h @@ -37,6 +37,11 @@ // Vorwärtsreferenzen // ---------------------------------------------------------------------------- // +void ctrlIdle(); +void ctrlInit(); +void sendCtrl(); +void checkCtrl(); + void apInit(); void apWaitDE(); void apWaitMeas(); diff --git a/sketches/_PIO_Sketches/Karger/SoaapBleMaster_Test_2/src/main.cpp b/sketches/_PIO_Sketches/Karger/SoaapBleMaster_Test_2/src/main.cpp index 138a3b7033e0e1f2c71e089f81f214d850350db3..cc5c3622d1c730e194ae97c530e1f11bfdb2d4a1 100644 --- a/sketches/_PIO_Sketches/Karger/SoaapBleMaster_Test_2/src/main.cpp +++ b/sketches/_PIO_Sketches/Karger/SoaapBleMaster_Test_2/src/main.cpp @@ -259,7 +259,9 @@ void loop() // byte apTmpByteArray[256]; // Zwischenspeicher für Zeichenfolgen int apNrOfMeasBytes; // Anzahl der empfangenen Messwertbytes +int apNrOfCtrlBytes; // Anzahl der empfangenen Steuerbytes inkl count und path byte apMeasByteArray[32]; // Zwischenspeicher für Messwerte +byte apCtrlByteArray[32]; // Zwischenspeicher für Steuerbytes byte apSlaveList[NrOfSlavesToPoll]; // Merker für gepollte Slaves int apNrOfSlaves; // Aktuelle Anzahl von Slaves int curListIdx; // Aktueller Index für Slaveliste @@ -352,6 +354,7 @@ void apProcMeas() area = blePoll.getArea(slNr); pAppId = blePoll.getAppId(slNr); apNrOfMeasBytes = blePoll.getMeas(slNr, apMeasByteArray); + apNrOfCtrlBytes = blePoll.getCtrlM(slNr, apCtrlByteArray); #ifdef TEST001 ap.enter(apWaitMeas); @@ -529,6 +532,17 @@ void smCtrlPolling() sm.resetEnter(); } + // -------------------------------------------------------------------------- + else if(mon.lastKeyIn == 'K' || mon.lastKeyIn == 'k') + { + mon.print(slNr); mon.print((char *)"|"); + for(int i= 0; i< apNrOfCtrlBytes; i++){ + mon.print(apCtrlByteArray[i]); + mon.print((char *)" "); + } + mon.print((char *) "\n"); + sm.resetEnter(); + } // -------------------------------------------------------------------------- else if(mon.lastKeyIn == 'L' || mon.lastKeyIn == 'l') { diff --git a/sketches/_PIO_Sketches/Karger/SoaapBleSlave_Test_2/src/main.cpp b/sketches/_PIO_Sketches/Karger/SoaapBleSlave_Test_2/src/main.cpp index a08a695470c1e17a573a33cbbaea07ca59419c6c..dc884bde144955acdd20fe68907119e60539e262 100644 --- a/sketches/_PIO_Sketches/Karger/SoaapBleSlave_Test_2/src/main.cpp +++ b/sketches/_PIO_Sketches/Karger/SoaapBleSlave_Test_2/src/main.cpp @@ -16,6 +16,7 @@ #include "SoaapBleSlave.h" #define SlaveADR1 +#define DebugTerminal #ifdef SlaveADR1 #define SlaveADR 1 @@ -306,11 +307,12 @@ bool xchgCtrl(PlpType plpType, byte *dest, byte *src, int sSize) case plptMeas9Ctrl4: for(si = 0; si < sSize; si++) procData[si] = src[si]; - procSize = sSize; - dest[di++] = procPath; - dest[di++] = procCnt; - dest[di++] = (byte) (gpio.readArd(ArdA0A3) & 0x0F); - dest[di++] = 0; + procSize = sSize; + dest[di++] = procPath; + dest[di++] = procCnt; + dest[di++] = (byte) (gpio.readArd(ArdA0A3) & 0x0F); + dest[di++] = 0xAB; + retv = true; break; }