From 34f9971143445e53919798a52f017dd77eae41cf Mon Sep 17 00:00:00 2001 From: Hansi Reiser Date: Thu, 4 Apr 2019 08:11:14 +0200 Subject: [PATCH] scanner-test --- libraries/SondeLib/Scanner.cpp | 51 ++++++++++++++++++++++++++++++++++ libraries/SondeLib/Scanner.h | 13 +++++++++ 2 files changed, 64 insertions(+) create mode 100644 libraries/SondeLib/Scanner.cpp create mode 100644 libraries/SondeLib/Scanner.h diff --git a/libraries/SondeLib/Scanner.cpp b/libraries/SondeLib/Scanner.cpp new file mode 100644 index 0000000..69a5488 --- /dev/null +++ b/libraries/SondeLib/Scanner.cpp @@ -0,0 +1,51 @@ +#include "Scanner.h" +#include + +#define CHANBW 7.5 +#define SMOOTH 1 +#define STARTF 400000000 +#define NCHAN ((int)(6000/CHANBW)) + +int scanresult[NCHAN]; +int scandisp[NCHAN/2]; + +void Scanner::scan() +{ + // Configure + sx1278.writeRegister(REG_PLL_HOP, 0x80); // FastHopOn + sx1278.setRxBandwidth(CHANBW*1000); + sx1278.writeRegister(REG_RSSI_CONFIG, SMOOTH&0x07); + sx1278.writeRegister(REG_OP_MODE, FSK_RX_MODE); + + unsigned long start = millis(); + uint32_t lastfrf=-1; + for(int i=0; i>16)!=(frf>>16) ) { + sx1278.writeRegister(REG_FRF_MSB, (frf&0xff0000)>>16); + } + if( ((lastfrf&0x00ff00)>>8) != ((frf&0x00ff00)>>8) ) { + sx1278.writeRegister(REG_FRF_MID, (frf&0x00ff00)>>8); + } + sx1278.writeRegister(REG_FRF_LSB, (frf&0x0000ff)); + lastfrf = frf; + // Wait TS_HOP (20us) + TS_RSSI ( 2^(SMOOTH+1) / 4 / CHANBW us) + int wait = 20 + 1000*(1<<(SMOOTH+1))/4/CHANBW; + delayMicroseconds(wait); + int rssi = -sx1278.readRegister(REG_RSSI_VALUE_FSK)/2; + scanresult[i] = rssi; + } + unsigned long duration = millis()-start; + Serial.print("Scan time: "); + Serial.println(duration); + for(int i=0; iscandisp[i/2]) scandisp[i/2] = scanresult[i+j]; } + Serial.print(scanresult[i]); Serial.print(", "); + if(((i+1)%32) == 0) Serial.println(); + } + Serial.println("\n"); +} + +Scanner scanner = Scanner(); diff --git a/libraries/SondeLib/Scanner.h b/libraries/SondeLib/Scanner.h new file mode 100644 index 0000000..cd4fb6e --- /dev/null +++ b/libraries/SondeLib/Scanner.h @@ -0,0 +1,13 @@ + + +#ifndef _SCANNER_H +#define _SCANNER_H + +class Scanner +{ + public: + void scan(void); +}; + +extern Scanner scanner; +#endif