File tree 2 files changed +30
-1
lines changed
2 files changed +30
-1
lines changed Original file line number Diff line number Diff line change @@ -751,4 +751,32 @@ ISR_PREFIX void LoRaClass::onDio0Rise()
751
751
LoRa.handleDio0Rise ();
752
752
}
753
753
754
+ double LoRaClass::Airtime_Message ()
755
+ {
756
+ int SF = getSpreadingFactor ();
757
+ int BW = getSignalBandwidth ();
758
+ int H = _implicitHeaderMode;
759
+ int PL = readRegister (REG_PAYLOAD_LENGTH);
760
+ int DE = 0 ;
761
+ if (((BW == 125E3 ) && ((SF == 11 ) || (SF == 12 ))) ||
762
+ ((BW == 250E3 ) && (SF == 12 )))
763
+ {
764
+ DE = 1 ;
765
+ }
766
+ else
767
+ {
768
+ DE = 0 ;
769
+ }
770
+
771
+ int CR = (readRegister (REG_MODEM_CONFIG_1) & 0xf1 ) + 4 ;
772
+
773
+ double Tsym = pow (2 , SF) / (BW)*1000 ;
774
+ double Tpreamble = (8 + 4.25 ) * Tsym;
775
+ int PrePay = ceil ((8.0 * PL - 4.0 * SF + 28 + 16 - 20 * (1 - H)) / (4.0 * (SF - 2.0 * DE))) * (CR);
776
+ int payloadSymbNb = 8 + _max (PrePay, 0 );
777
+ double Tpayload = payloadSymbNb * Tsym;
778
+ double Tpacket = Tpreamble + Tpayload;
779
+ return Tpacket;
780
+ }
781
+
754
782
LoRaClass LoRa;
Original file line number Diff line number Diff line change @@ -93,7 +93,7 @@ class LoRaClass : public Stream {
93
93
void setSPIFrequency (uint32_t frequency);
94
94
95
95
void dumpRegisters (Stream& out);
96
-
96
+ double Airtime_Message ();
97
97
private:
98
98
void explicitHeaderMode ();
99
99
void implicitHeaderMode ();
@@ -123,6 +123,7 @@ class LoRaClass : public Stream {
123
123
int _implicitHeaderMode;
124
124
void (*_onReceive)(int );
125
125
void (*_onTxDone)();
126
+ int _coderate;
126
127
};
127
128
128
129
extern LoRaClass LoRa;
You can’t perform that action at this time.
0 commit comments