diff options
| author | Votre Nom <git-account@loicguegan.fr> | 2017-08-30 10:48:11 +0400 |
|---|---|---|
| committer | Votre Nom <git-account@loicguegan.fr> | 2017-08-30 10:48:11 +0400 |
| commit | f37f200792444fee2f74e807acfd5be7c9180cd7 (patch) | |
| tree | 135975e83d27a144d56f27e1ee4dc6fe0fe91af0 /GEOLOC/lib/fskconfig.c | |
Init repo
Diffstat (limited to 'GEOLOC/lib/fskconfig.c')
| -rw-r--r-- | GEOLOC/lib/fskconfig.c | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/GEOLOC/lib/fskconfig.c b/GEOLOC/lib/fskconfig.c new file mode 100644 index 0000000..42f3775 --- /dev/null +++ b/GEOLOC/lib/fskconfig.c @@ -0,0 +1,66 @@ +#include "fskconfig.h" + +void applyFSKConfig(FSKConfig fsk){ + + // Set preambleDetection + byte reg=readReg(REG_PREAMBLE_DETECT)&0x7F; + writeReg(REG_PREAMBLE_DETECT, fsk.preambleDetection | reg); + + // Set preamble size + reg=fsk.preambleSize>>8; + writeReg(REG_PREAMBLE_MSB, reg); + reg=fsk.preambleSize & 0x00ff; + writeReg(REG_PREAMBLE_LSB, reg); + + // Set crcOn + reg=readReg(REG_PACKET_CONFIG_1) & 0xEF; + writeReg(REG_PACKET_CONFIG_1,reg|fsk.crcOn); + + // Set crc autoclear + reg=readReg(REG_PACKET_CONFIG_1) & 0xF7; + writeReg(REG_PACKET_CONFIG_1,reg|fsk.crcAutoClearOff); + + // Set payloadLength + reg=readReg(REG_PACKET_CONFIG_2) & 0xF8; + byte payloadLengthMSB=(fsk.payloadLength >> 8) &0x7; + byte payloadLengthLSB=fsk.payloadLength &0xFF; + writeReg(REG_PACKET_CONFIG_2,payloadLengthMSB|reg); + writeReg(REG_PAYLOAD_LENGTH, payloadLengthLSB); + + // Set fifo threshold + reg=readReg(REG_FIFO_THRESH) & 0xC0; + reg=reg| (fsk.fifoThreshold & 0x3F); + writeReg(REG_FIFO_THRESH,reg); + + // Set fixedPayloadLength + reg=readReg(REG_PACKET_CONFIG_1) & 0x7F; + writeReg(REG_PACKET_CONFIG_1,reg | fsk.fixedPayloadLength); + + // Set frequency dev + short freqDev=fsk.freqDev/FSTEP; + byte freqDevMSB=freqDev>>8; + byte freqDevLSB=freqDev&0x00FF; + writeReg(REG_FDEV_MSB, freqDevMSB); + writeReg(REG_FDEV_LSB, freqDevLSB); + + // Apply bitrate // + short bitrate=FXOSC/fsk.bitrate; + byte bitrateMSB=bitrate>>8; + byte bitrateLSB=bitrate & 0x00FF; + writeReg(REG_BITRATE_MSB, bitrateMSB); + writeReg(REG_BITRATE_LSB, bitrate & 0x0F); + + // Apply rssi smoothing + reg=readReg(REG_RSSI_CONFIG) & 0xF8; + reg=reg|fsk.rssiSmoothing; + writeReg(REG_RSSI_CONFIG,reg); + +} + + +int fetchRSSI(){ + int value=readReg(REG_RSSI_VALUE); + value=(-value)/2; // See SX1276 datasheet page 86 + return(value); +} + |
