+ if ( size < 1024 ) return 0; // not enough samples
+
+ // jump to modulating data by finding the first 4 threshold crossings (or first 2 waves)
+ // in case you have junk or noise at the beginning of the trace...
+ uint8_t thresholdCnt = 0;
+ size_t waveSizeCnt = 0;
+ bool isAboveThreshold = dest[idx] >= threshold_value;
+ for (; idx < size-20; idx++ ) {
+ if(dest[idx] < threshold_value && isAboveThreshold) {
+ thresholdCnt++;
+ if (thresholdCnt > 4 && waveSizeCnt < fchigh+1) break;
+ isAboveThreshold = false;
+ waveSizeCnt = 0;
+ } else if (dest[idx] >= threshold_value && !isAboveThreshold) {
+ thresholdCnt++;
+ if (thresholdCnt > 4 && waveSizeCnt < fchigh+1) break;
+ isAboveThreshold = true;
+ waveSizeCnt = 0;
+ } else {
+ waveSizeCnt++;
+ }
+ if (thresholdCnt > 10) break;
+ }
+ if (g_debugMode == 2) prnt("threshold Count reached at %u",idx);