|
|
@ -57,7 +57,7 @@ public: |
|
|
virtual uint8_t getCodingRate() const { return 8; } // default CR4/8, override in subclass
|
|
|
virtual uint8_t getCodingRate() const { return 8; } // default CR4/8, override in subclass
|
|
|
virtual float getFreqMHz() const { return 0.0f; } // default unknown, override in subclass
|
|
|
virtual float getFreqMHz() const { return 0.0f; } // default unknown, override in subclass
|
|
|
|
|
|
|
|
|
bool isJapanMode() const override { |
|
|
bool isAS923_1_JP() const override { |
|
|
float freq = getFreqMHz(); |
|
|
float freq = getFreqMHz(); |
|
|
return (fabsf(freq - 920.800f) < 0.05f || |
|
|
return (fabsf(freq - 920.800f) < 0.05f || |
|
|
fabsf(freq - 921.000f) < 0.05f || |
|
|
fabsf(freq - 921.000f) < 0.05f || |
|
|
@ -65,7 +65,7 @@ public: |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
int getMaxTextLen() const { |
|
|
int getMaxTextLen() const { |
|
|
if (!isJapanMode()) return 10 * 16; // default 160 bytes
|
|
|
if (!isAS923_1_JP()) return 10 * 16; // default 160 bytes
|
|
|
uint8_t cr = getCodingRate(); |
|
|
uint8_t cr = getCodingRate(); |
|
|
if (cr <= 5) return 64; // 3874ms @ SF12/BW125/CR4-5
|
|
|
if (cr <= 5) return 64; // 3874ms @ SF12/BW125/CR4-5
|
|
|
if (cr == 6) return 48; // 3874ms @ SF12/BW125/CR4-6
|
|
|
if (cr == 6) return 48; // 3874ms @ SF12/BW125/CR4-6
|
|
|
@ -74,7 +74,7 @@ public: |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
int getMaxGroupTextLen() const { |
|
|
int getMaxGroupTextLen() const { |
|
|
if (!isJapanMode()) return 10 * 16; // default 160 bytes
|
|
|
if (!isAS923_1_JP()) return 10 * 16; // default 160 bytes
|
|
|
uint8_t cr = getCodingRate(); |
|
|
uint8_t cr = getCodingRate(); |
|
|
if (cr <= 5) return 64; // 3710ms @ SF12/BW125/CR4-5
|
|
|
if (cr <= 5) return 64; // 3710ms @ SF12/BW125/CR4-5
|
|
|
if (cr == 6) return 48; // 3678ms @ SF12/BW125/CR4-6
|
|
|
if (cr == 6) return 48; // 3678ms @ SF12/BW125/CR4-6
|
|
|
|