diff --git a/librfm.c b/librfm.c index f4715f9..db96cf5 100644 --- a/librfm.c +++ b/librfm.c @@ -62,7 +62,7 @@ static void timeoutEnable(bool enable) { if (enable) { // get "Timeout" on DIO4 (default) - regWrite(DIO_MAP2, 0x00); + regWrite(DIO_MAP2, regRead(DIO_MAP2) & ~0xc0); // both sum up to about 100 ms regWrite(RX_TO_RSSI, 0x1f); regWrite(RX_TO_PRDY, 0x1f); @@ -214,7 +214,7 @@ void rfmStartReceive(void) { // get "PayloadReady" on DIO0 - regWrite(DIO_MAP1, 0x40); + regWrite(DIO_MAP1, (regRead(DIO_MAP1) & ~0x80) | 0x40); setMode(MODE_RX); } @@ -237,7 +237,7 @@ size_t len = regRead(FIFO); len = min(len, size); - // TODO assume and ignore address for now + // TODO assume and ignore address for now (already filtered anyway) regRead(FIFO); _rfmSel(); @@ -290,10 +290,11 @@ _rfmDes(); // get "PacketSent" on DIO0 (default) - regWrite(DIO_MAP1, 0x00); + regWrite(DIO_MAP1, regRead(DIO_MAP1) & ~0xc0); setMode(MODE_TX); + // wait until "PacketSent" do {} while (!(irqFlags2 & (1 << 3))); clearIrqFlags(); diff --git a/librfm.h b/librfm.h index f8d598f..f921684 100644 --- a/librfm.h +++ b/librfm.h @@ -69,9 +69,11 @@ #define MODE_TX 0x0c #define MODE_RX 0x10 -#define PA_OFF 18 +#define DBM_MIN -2 +#define DBM_MAX 13 #define PA_MIN 16 #define PA_MAX 31 +#define PA_OFF 18 #define MESSAGE_SIZE 63 #define F_STEP 6103515625ULL