just ack the FSC_SEL_CHAN command when requested; fix data offset for TIA-102 DFSI data;

82-dvmbridge---implement-notch-filter-for-2175hz-trc-guard-tone
Bryan Biedenkapp 1 year ago
parent 418ffeea24
commit 6d5e158808

@ -44,15 +44,17 @@ namespace p25
namespace FSCMessageType { namespace FSCMessageType {
/** @brief FSC Control Service Message.*/ /** @brief FSC Control Service Message.*/
enum E : uint8_t { enum E : uint8_t {
FSC_CONNECT = 0, //! Establish connection with FSS. FSC_CONNECT = 0, //! Establish connection with FSS
FSC_HEARTBEAT = 1, //! Heartbeat/Connectivity Maintenance. FSC_HEARTBEAT = 1, //! Heartbeat/Connectivity Maintenance
FSC_ACK = 2, //! Control Service Ack. FSC_ACK = 2, //! Control Service Ack.
FSC_SEL_CHAN = 5, //! Channel Selection
FSC_REPORT_SEL_MODES = 8, //! Report Selected Modes FSC_REPORT_SEL_MODES = 8, //! Report Selected Modes
FSC_DISCONNECT = 9, //! Detach Control Service. FSC_DISCONNECT = 9, //! Detach Control Service
FSC_INVALID = 127, //! Invalid Control Message. FSC_INVALID = 127, //! Invalid Control Message
}; };
} }

@ -1120,7 +1120,7 @@ void ModemV24::convertToAirTIA(const uint8_t *data, uint32_t length)
uint8_t blockCnt = ctrl.getBlockHeaderCnt(); uint8_t blockCnt = ctrl.getBlockHeaderCnt();
// iterate through blocks // iterate through blocks
uint8_t hdrOffs = 1U, dataOffs = blockCnt; uint8_t hdrOffs = 1U, dataOffs = blockCnt + 1U;
for (uint8_t i = 0U; i < blockCnt; i++) { for (uint8_t i = 0U; i < blockCnt; i++) {
BlockHeader hdr = BlockHeader(); BlockHeader hdr = BlockHeader();
hdr.decode(dfsiData + hdrOffs); hdr.decode(dfsiData + hdrOffs);

@ -514,6 +514,23 @@ void* V24UDPPort::threadedCtrlNetworkRx(void* arg)
} }
break; break;
case FSCMessageType::FSC_SEL_CHAN:
{
FSCACK ackResp = FSCACK();
ackResp.setCorrelationTag(message->getCorrelationTag());
ackResp.setAckMessageId(FSCMessageType::FSC_SEL_CHAN);
ackResp.setResponseCode(FSCAckResponseCode::CONTROL_ACK);
ackResp.setAckCorrelationTag(message->getCorrelationTag());
ackResp.setResponseLength(0U);
uint8_t buffer[FSCACK::LENGTH];
::memset(buffer, 0x00U, FSCACK::LENGTH);
ackResp.encode(buffer);
network->m_ctrlFrameQueue->write(buffer, FSCACK::LENGTH, network->m_controlAddr, network->m_ctrlAddrLen);
}
break;
case FSCMessageType::FSC_REPORT_SEL_MODES: case FSCMessageType::FSC_REPORT_SEL_MODES:
{ {
FSCACK ackResp = FSCACK(); FSCACK ackResp = FSCACK();

Loading…
Cancel
Save

Powered by TurnKey Linux.