Direct dial, logic changes
This commit is contained in:
parent
fbcc72420d
commit
40a9a2c562
|
@ -19,6 +19,7 @@
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
|
||||||
std::vector<unsigned int> DMRAccessControl::m_dstBlackListSlot1RF;
|
std::vector<unsigned int> DMRAccessControl::m_dstBlackListSlot1RF;
|
||||||
|
@ -42,6 +43,8 @@ unsigned int DMRAccessControl::m_id = 0U;
|
||||||
unsigned int DMRAccessControl::m_dstRewriteID = 0U;
|
unsigned int DMRAccessControl::m_dstRewriteID = 0U;
|
||||||
unsigned int DMRAccessControl::m_SrcID = 0U;
|
unsigned int DMRAccessControl::m_SrcID = 0U;
|
||||||
|
|
||||||
|
CDMRLC* DMRAccessControl::m_lastdmrLC;
|
||||||
|
|
||||||
std::time_t DMRAccessControl::m_time;
|
std::time_t DMRAccessControl::m_time;
|
||||||
|
|
||||||
unsigned int DMRAccessControl::m_callHang;
|
unsigned int DMRAccessControl::m_callHang;
|
||||||
|
@ -211,23 +214,32 @@ unsigned int DMRAccessControl::DstIdRewrite (unsigned int did, unsigned int sid,
|
||||||
if (network) {
|
if (network) {
|
||||||
m_dstRewriteID = did;
|
m_dstRewriteID = did;
|
||||||
m_SrcID = sid;
|
m_SrcID = sid;
|
||||||
|
memcpy(&dmrLC, &m_lastdmrLC, sizeof(dmrLC));
|
||||||
if ( (did < 4000 || did > 5000) && did > 0 && did != 9 && dmrLC->getFLCO() == FLCO_GROUP ) {
|
if ( (did < 4000 || did > 5000) && did > 0 && did != 9 && dmrLC->getFLCO() == FLCO_GROUP ) {
|
||||||
LogMessage("DMR Slot %u, Rewrite DST ID (TG) of of inbound network traffic from %u to 9",slot,did);
|
LogMessage("DMR Slot %u, Rewrite DST ID (TG) of of inbound network traffic from %u to 9",slot,did);
|
||||||
return 9;
|
return 9;
|
||||||
// rewrite incoming BM voice prompts to TG 9
|
// rewrite incoming BM voice prompts to TG 9
|
||||||
} else if ((sid >= 4000 && sid <= 5000) && dmrLC->getFLCO() == FLCO_USER_USER) {
|
} else if ((sid >= 4000 && sid <= 5000) && dmrLC->getFLCO() == FLCO_USER_USER) {
|
||||||
dmrLC->setFLCO(FLCO_GROUP);
|
dmrLC->setFLCO(FLCO_GROUP);
|
||||||
LogMessage("DMR Slot %u, Rewrite inbound private call to %u to Group Call on TG9",slot,did);
|
LogMessage("DMR Slot %u, Rewrite inbound private call to %u to Group Call on TG 9 (BM reflector voice prompt)",slot,did);
|
||||||
return 9;
|
return 9;
|
||||||
|
// rewrite direct dial inbound
|
||||||
|
} else if (did == 235135 && dmrLC->getFLCO() == FLCO_USER_USER) {
|
||||||
|
dmrLC->setFLCO(FLCO_GROUP);
|
||||||
|
LogMessage("DMR Slot %u, Rewrite inbound private call to repeater ID to Group Call on TG9 (direct dial)",slot,did);
|
||||||
|
return(9);
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
} else if (did == 9 && m_dstRewriteID != 9 && m_dstRewriteID != 0 && (m_time + m_callHang) > currenttime) {
|
} else if (did == 9 && m_dstRewriteID != 9 && m_dstRewriteID != 0 && (m_time + m_callHang) > currenttime && dmrLC->getFLCO() == FLCO_GROUP ) {
|
||||||
LogMessage("DMR Slot %u, Rewrite DST ID (TG) of outbound network traffic from %u to %u (return traffic during CallHang)",slot,did,m_dstRewriteID);
|
LogMessage("DMR Slot %u, Rewrite DST ID (TG) of outbound network traffic from %u to %u (return traffic during CallHang)",slot,did,m_dstRewriteID);
|
||||||
return(m_dstRewriteID);
|
return(m_dstRewriteID);
|
||||||
} else if ((did < 4000 || did > 5000) && did > 0 && did !=9) {
|
} else if ((did < 4000 || did > 5000) && did > 0 && did !=9) {
|
||||||
m_dstRewriteID = did;
|
m_dstRewriteID = did;
|
||||||
}
|
} else if (m_dstRewriteID == 235135 && m_lastdmrLC->getFLCO() == FLCO_USER_USER) {
|
||||||
|
LogMessage("DMR Slot %u, Rewrite DST ID of outbound network group call on TG %u to private call %u (direct dial response)",slot,did,m_SrcID);
|
||||||
|
return(m_SrcID);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -61,6 +61,8 @@ private:
|
||||||
static bool m_TGRewriteSlot1;
|
static bool m_TGRewriteSlot1;
|
||||||
static bool m_TGRewriteSlot2;
|
static bool m_TGRewriteSlot2;
|
||||||
|
|
||||||
|
static CDMRLC* m_lastdmrLC;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue