[AX25] Added option to modify tone length for AFSK mode
This commit is contained in:
parent
b903ddabc6
commit
67937f4f46
2 changed files with 8 additions and 3 deletions
|
@ -163,11 +163,13 @@ AX25Client::AX25Client(AFSKClient* audio) {
|
|||
_audio = audio;
|
||||
_afskMark = RADIOLIB_AX25_AFSK_MARK;
|
||||
_afskSpace = RADIOLIB_AX25_AFSK_SPACE;
|
||||
_afskLen = RADIOLIB_AX25_AFSK_TONE_DURATION;
|
||||
}
|
||||
|
||||
int16_t AX25Client::setCorrection(int16_t mark, int16_t space) {
|
||||
int16_t AX25Client::setCorrection(int16_t mark, int16_t space, float length) {
|
||||
_afskMark = RADIOLIB_AX25_AFSK_MARK + mark;
|
||||
_afskSpace = RADIOLIB_AX25_AFSK_SPACE + space;
|
||||
_afskLen = length*(float)RADIOLIB_AX25_AFSK_TONE_DURATION;
|
||||
return(RADIOLIB_ERR_NONE);
|
||||
}
|
||||
#endif
|
||||
|
@ -411,7 +413,7 @@ int16_t AX25Client::sendFrame(AX25Frame* frame) {
|
|||
} else {
|
||||
_audio->tone(_afskSpace, false);
|
||||
}
|
||||
while(mod->micros() - start < RADIOLIB_AX25_AFSK_TONE_DURATION) {
|
||||
while(mod->micros() - start < _afskLen) {
|
||||
mod->yield();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -300,9 +300,11 @@ class AX25Client {
|
|||
|
||||
\param space Positive or negative correction offset for space audio frequency in Hz.
|
||||
|
||||
\param length Audio tone length modifier, defaults to 1.0.
|
||||
|
||||
\returns \ref status_codes
|
||||
*/
|
||||
int16_t setCorrection(int16_t mark, int16_t space);
|
||||
int16_t setCorrection(int16_t mark, int16_t space, float length = 1.0f);
|
||||
#endif
|
||||
|
||||
// basic methods
|
||||
|
@ -365,6 +367,7 @@ class AX25Client {
|
|||
AFSKClient* _audio;
|
||||
uint32_t _afskMark;
|
||||
uint32_t _afskSpace;
|
||||
uint32_t _afskLen;
|
||||
#endif
|
||||
|
||||
char _srcCallsign[RADIOLIB_AX25_MAX_CALLSIGN_LEN + 1] = {0, 0, 0, 0, 0, 0, 0};
|
||||
|
|
Loading…
Add table
Reference in a new issue