New methods to retrieve product and vendor information of the radio used for better dashboard integration.

This commit is contained in:
Adi / DL1HRC 2023-01-13 19:31:04 +01:00
parent bb8ed356d0
commit b0ad69cf1f
6 changed files with 72 additions and 8 deletions

View File

@ -324,6 +324,12 @@ void Reflector::updateRssistate(Json::Value eventmessage)
} /* Reflector::updateRssistate */
void Reflector::updateSysteminfostate(Json::Value eventmessage)
{
cout << jsonToString(eventmessage) << endl;
} /* Reflector::updateSysteminfostate */
void Reflector::nodeList(std::vector<std::string>& nodes) const
{
nodes.clear();

View File

@ -200,6 +200,12 @@ class Reflector : public sigc::trackable
*/
void updateQsostate(Json::Value eventmessage);
/**
* @brief Update System information
* @param event message with System information
*/
void updateSysteminfostate(Json::Value eventmessage);
/**
* @brief Update Rssi information
* @param event message with rssi info

View File

@ -722,6 +722,10 @@ void ReflectorClient::handleStateEvent(std::istream& is)
{
m_reflector->updateRssistate(eventmessage);
}
else if (msg.name() == "System:info")
{
m_reflector->updateSysteminfostate(eventmessage);
}
} /* ReflectorClient::handleStateEvent */

View File

@ -117,6 +117,8 @@ using namespace SvxLink;
#define WAP_MESSAGE 32
#define LOCATION_SYSTEM_TSDU 33
#define RSSI 34
#define VENDOR 35
#define MODEL 36
#define DMO_OFF 7
#define DMO_ON 8
@ -132,7 +134,7 @@ using namespace SvxLink;
#define MAX_TRIES 5
#define TETRA_LOGIC_VERSION "10012023"
#define TETRA_LOGIC_VERSION "13012023"
/****************************************************************************
*
@ -210,7 +212,7 @@ TetraLogic::TetraLogic(void)
dmcc(0), dissi(0), infosds(""), is_tx(false), last_sdsid(0), pei_pty_path(""),
pei_pty(0), ai(-1), check_qos(0), qos_sds_to("0815"), qos_limit(-90),
qosTimer(300000, Timer::TYPE_ONESHOT, false), min_rssi(100), max_rssi(100),
reg_cell(0), reg_la(0), reg_mni(0)
reg_cell(0), reg_la(0), reg_mni(0), vendor(""), model("")
{
peiComTimer.expired.connect(mem_fun(*this, &TetraLogic::onComTimeout));
peiActivityTimer.expired.connect(mem_fun(*this,
@ -904,6 +906,7 @@ void TetraLogic::initPei(void)
ss << "pei_init_finished";
processEvent(ss.str());
sendUserInfo(); // send userinfo to reflector
if (vendor.length() > 1) sendSystemInfo(); // send systeminfo to reflector
peirequest = INIT_COMPLETE;
}
} /* TetraLogic::initPei */
@ -1072,6 +1075,14 @@ void TetraLogic::handlePeiAnswer(std::string m_message)
handleCreg(m_message);
break;
case VENDOR:
handleVendor(m_message);
break;
case MODEL:
handleModel(m_message);
break;
case INVALID:
log(LOGWARN, "+++ Pei answer not known, ignoring ;)");
@ -2037,6 +2048,8 @@ int TetraLogic::handleMessage(std::string mesg)
mre["^\\+CLVL:"] = CLVL;
mre["^\\+CSQ:"] = RSSI;
mre["^\\+CREG:"] = REGISTRATION;
mre["^\\+GMI:"] = VENDOR;
mre["^\\+GMM:"] = MODEL;
mre["^01"] = OTAK;
mre["^02"] = SIMPLE_TEXT_SDS;
mre["^03"] = SIMPLE_LIP_SDS;
@ -2487,6 +2500,36 @@ void TetraLogic::handleCreg(std::string m_message)
} /* TetraLogic::handleCreg */
void TetraLogic::handleModel(std::string m_message)
{
// +GMM: 54007,M83PF-----AN,88.2.0.0
m_message.erase(0,6);
model = getNextStr(m_message);
} /* TetraLogic::handleModel */
void TetraLogic::handleVendor(std::string m_message)
{
// +GMI: MOTOROLA
m_message.erase(0,6);
vendor = m_message;
} /* TetraLogic::handleVendor */
void TetraLogic::sendSystemInfo(void)
{
// prepare event systeminfo for reflector
Json::Value systeminfo(Json::objectValue);
systeminfo["vendor"] = vendor;
systeminfo["model"] = model;
systeminfo["call"] = callsign();
systeminfo["issi"] = issi;
systeminfo["message"] = "Signal:info";
systeminfo["tl_version"] = TETRA_LOGIC_VERSION;
publishInfo("System:info", systeminfo);
} /* TetraLogic::sendSystemInfo */
std::string TetraLogic::jsonToString(Json::Value eventmessage)
{
Json::StreamWriterBuilder builder;

View File

@ -366,6 +366,8 @@ class TetraLogic : public Logic
int reg_la;
int reg_mni;
int reg_state;
std::string vendor;
std::string model;
void initPei(void);
void onCharactersReceived(char *buf, int count);
@ -419,6 +421,9 @@ class TetraLogic : public Logic
void handleRssi(std::string m_message);
void handleCreg(std::string m_message);
void checkReg(void);
void handleModel(std::string m_message);
void handleVendor(std::string m_message);
void sendSystemInfo(void);
std::string jsonToString(Json::Value eventmessage);
}; /* class TetraLogic */

View File

@ -1,6 +1,6 @@
[
{ "mode" : "TMO", "commands" : ["AT+CTOM=0", "AT+CTSP=1,3,131", "AT+CTSP=1,3,130", "AT+CTSP=1,3,138", "AT+CTSP=1,2,20", "AT+CTSP=2,0,0", "AT+CTSP=1,3,24", "AT+CTSP=1,3,25", "AT+CTSP=1,3,3", "AT+CTSP=1,3,10", "AT+CTSP=1,1,11", "AT+CTSDC=0,0,0,1,1,0,1,1,0,0"]},
{ "mode" : "DMO-RPT", "commands" : ["AT+CTOM=6", "AT+CTSP=1,3,131", "AT+CTSP=1,3,130", "AT+CTSP=1,3,138", "AT+CTSP=1,2,20", "AT+CTSP=2,0,0", "AT+CTSP=1,3,24", "AT+CTSP=1,3,25", "AT+CTSP=1,3,3", "AT+CTSP=1,3,10", "AT+CTSP=1,1,11", "AT+CTSDC=0,0,0,1,1,0,1,1,0,0"]},
{ "mode" : "DMO-MS", "commands" : ["AT+CTOM=1", "AT+CTSP=1,3,131", "AT+CTSP=1,3,130", "AT+CTSP=1,3,138", "AT+CTSP=1,2,20", "AT+CTSP=2,0,0", "AT+CTSP=1,3,24", "AT+CTSP=1,3,25", "AT+CTSP=1,3,3", "AT+CTSP=1,3,10", "AT+CTSP=1,1,11", "AT+CTSDC=0,0,0,1,1,0,1,1,0,0"]},
{ "mode" : "GATEWAY", "commands" : ["AT+CTOM=5", "AT+CTSP=1,3,131", "AT+CTSP=1,3,130", "AT+CTSP=1,3,138", "AT+CTSP=1,2,20", "AT+CTSP=2,0,0", "AT+CTSP=1,3,24", "AT+CTSP=1,3,25", "AT+CTSP=1,3,3", "AT+CTSP=1,3,10", "AT+CTSP=1,1,11", "AT+CTSDC=0,0,0,1,1,0,1,1,0,0"]}
{ "mode" : "TMO", "commands" : ["AT+CTOM=0", "AT+CTSP=1,3,131", "AT+CTSP=1,3,130", "AT+CTSP=1,3,138", "AT+CTSP=1,2,20", "AT+CTSP=2,0,0", "AT+CTSP=1,3,24", "AT+CTSP=1,3,25", "AT+CTSP=1,3,3", "AT+CTSP=1,3,10", "AT+CTSP=1,1,11", "AT+CTSDC=0,0,0,1,1,0,1,1,0,0", "AT+GMI", "AT+GMM"]},
{ "mode" : "DMO-RPT", "commands" : ["AT+CTOM=6", "AT+CTSP=1,3,131", "AT+CTSP=1,3,130", "AT+CTSP=1,3,138", "AT+CTSP=1,2,20", "AT+CTSP=2,0,0", "AT+CTSP=1,3,24", "AT+CTSP=1,3,25", "AT+CTSP=1,3,3", "AT+CTSP=1,3,10", "AT+CTSP=1,1,11", "AT+CTSDC=0,0,0,1,1,0,1,1,0,0", "AT+GMI", "AT+GMM"]},
{ "mode" : "DMO-MS", "commands" : ["AT+CTOM=1", "AT+CTSP=1,3,131", "AT+CTSP=1,3,130", "AT+CTSP=1,3,138", "AT+CTSP=1,2,20", "AT+CTSP=2,0,0", "AT+CTSP=1,3,24", "AT+CTSP=1,3,25", "AT+CTSP=1,3,3", "AT+CTSP=1,3,10", "AT+CTSP=1,1,11", "AT+CTSDC=0,0,0,1,1,0,1,1,0,0", "AT+GMI", "AT+GMM"]},
{ "mode" : "GATEWAY", "commands" : ["AT+CTOM=5", "AT+CTSP=1,3,131", "AT+CTSP=1,3,130", "AT+CTSP=1,3,138", "AT+CTSP=1,2,20", "AT+CTSP=2,0,0", "AT+CTSP=1,3,24", "AT+CTSP=1,3,25", "AT+CTSP=1,3,3", "AT+CTSP=1,3,10", "AT+CTSP=1,1,11", "AT+CTSDC=0,0,0,1,1,0,1,1,0,0", "AT+GMI", "AT+GMM"]}
]