From 700ebda210bd1c4af1f4c7551977d7e6c962cbec Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Mon, 18 Apr 2016 21:56:10 +0100 Subject: [PATCH] System Fusion bug fixes. --- YSFControl.cpp | 10 ++++++---- YSFDefines.h | 24 +++++++++--------------- YSFFICH.cpp | 5 +++++ YSFFICH.h | 1 + YSFPayload.cpp | 2 +- YSFPayload.h | 2 +- 6 files changed, 23 insertions(+), 21 deletions(-) diff --git a/YSFControl.cpp b/YSFControl.cpp index 1ed252d..ebb4d8b 100644 --- a/YSFControl.cpp +++ b/YSFControl.cpp @@ -103,11 +103,12 @@ bool CYSFControl::writeModem(unsigned char *data) CSync::addYSFSync(data + 2U); unsigned char fn = m_fich.getFN(); + unsigned char ft = m_fich.getFT(); unsigned char dt = m_fich.getDT(); - LogMessage("YSF, EOT, FI=%X FN=%u DT=%X", fi, fn, dt); + LogMessage("YSF, EOT, FI=%X FN=%u FT=%u DT=%X", fi, fn, ft, dt); - m_payload.decode(data + 2U, fi, fn, dt); + m_payload.decode(data + 2U, fi, fn, ft, dt); // m_payload.encode(data + 2U); XXX m_frames++; @@ -144,11 +145,12 @@ bool CYSFControl::writeModem(unsigned char *data) if (valid) { unsigned char cm = m_fich.getCM(); unsigned char fn = m_fich.getFN(); + unsigned char ft = m_fich.getFT(); unsigned char dt = m_fich.getDT(); - LogMessage("YSF, Valid FICH, FI=%X FN=%u DT=%X", fi, fn, dt); + LogMessage("YSF, Valid FICH, FI=%X FN=%u FT=%u DT=%X", fi, fn, ft, dt); - m_payload.decode(data + 2U, fi, fn, dt); + m_payload.decode(data + 2U, fi, fn, ft, dt); // payload.encode(data + 2U); XXX bool change = false; diff --git a/YSFDefines.h b/YSFDefines.h index ad21d78..2241e0d 100644 --- a/YSFDefines.h +++ b/YSFDefines.h @@ -26,28 +26,22 @@ const unsigned int YSF_SYNC_LENGTH_BYTES = 5U; const unsigned int YSF_FICH_LENGTH_BYTES = 25U; -const unsigned char YSF_FI_MASK = 0xC0U; -const unsigned char YSF_DT_MASK = 0x30U; - -const unsigned char YSF_DT_HEADER_CHANNEL = 0x00U; -const unsigned char YSF_DT_TERMINATOR_CHANNEL = 0x80U; - const unsigned char YSF_SYNC_OK = 0x01U; const unsigned char YSF_FI_HEADER = 0x00U; -const unsigned char YSF_FI_COMMUNICATIONS = 0x40U; -const unsigned char YSF_FI_TERMINATOR = 0x80U; -const unsigned char YSF_FI_TEST = 0xC0U; +const unsigned char YSF_FI_COMMUNICATIONS = 0x01U; +const unsigned char YSF_FI_TERMINATOR = 0x02U; +const unsigned char YSF_FI_TEST = 0x03U; const unsigned char YSF_DT_VD_MODE1 = 0x00U; -const unsigned char YSF_DT_DATA_FR_MODE = 0x10U; -const unsigned char YSF_DT_VD_MODE2 = 0x20U; -const unsigned char YSF_DT_VOICE_FR_MODE = 0x30U; +const unsigned char YSF_DT_DATA_FR_MODE = 0x01U; +const unsigned char YSF_DT_VD_MODE2 = 0x02U; +const unsigned char YSF_DT_VOICE_FR_MODE = 0x03U; const unsigned char YSF_CM_GROUP = 0x00U; -const unsigned char YSF_CM_INDIVIDUAL = 0x0CU; +const unsigned char YSF_CM_INDIVIDUAL = 0x03U; -const unsigned char YSF_MR_NOT_BUSY = 0x08U; -const unsigned char YSF_MR_BUSY = 0x10U; +const unsigned char YSF_MR_NOT_BUSY = 0x01U; +const unsigned char YSF_MR_BUSY = 0x02U; #endif diff --git a/YSFFICH.cpp b/YSFFICH.cpp index 268cafc..0b978cc 100644 --- a/YSFFICH.cpp +++ b/YSFFICH.cpp @@ -174,6 +174,11 @@ unsigned char CYSFFICH::getFN() const return (m_fich[1U] >> 3) & 0x07U; } +unsigned char CYSFFICH::getFT() const +{ + return m_fich[1U] & 0x07U; +} + unsigned char CYSFFICH::getDT() const { return m_fich[2U] & 0x03U; diff --git a/YSFFICH.h b/YSFFICH.h index d5a5561..6e8cbe5 100644 --- a/YSFFICH.h +++ b/YSFFICH.h @@ -31,6 +31,7 @@ public: unsigned char getFI() const; unsigned char getCM() const; unsigned char getFN() const; + unsigned char getFT() const; unsigned char getDT() const; void setFI(unsigned char fi); diff --git a/YSFPayload.cpp b/YSFPayload.cpp index d999d8b..d2cf07d 100644 --- a/YSFPayload.cpp +++ b/YSFPayload.cpp @@ -94,7 +94,7 @@ CYSFPayload::~CYSFPayload() delete[] m_dest; } -void CYSFPayload::decode(const unsigned char* bytes, unsigned char fi, unsigned char fn, unsigned char dt) +void CYSFPayload::decode(const unsigned char* bytes, unsigned char fi, unsigned char fn, unsigned char ft, unsigned char dt) { assert(bytes != NULL); diff --git a/YSFPayload.h b/YSFPayload.h index 88b9832..09f33de 100644 --- a/YSFPayload.h +++ b/YSFPayload.h @@ -28,7 +28,7 @@ public: CYSFPayload(); ~CYSFPayload(); - void decode(const unsigned char* bytes, unsigned char fi, unsigned char fn, unsigned char dt); + void decode(const unsigned char* bytes, unsigned char fi, unsigned char fn, unsigned char ft, unsigned char dt); void encode(unsigned char* bytes);