Skip to content

Commit

Permalink
Unitying RemoteCommand with latest DMRGateway's RemoteControl PR.
Browse files Browse the repository at this point in the history
  • Loading branch information
f1rmb committed Mar 20, 2021
1 parent 69c9500 commit 629cdcf
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 4 deletions.
21 changes: 20 additions & 1 deletion RemoteCommand.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@
#include "Log.h"

#include <cstdio>
#include <chrono>
#include <thread>

const unsigned int BUFFER_LENGTH = 100U;

int main(int argc, char** argv)
{
Expand Down Expand Up @@ -67,6 +71,9 @@ int CRemoteCommand::send(const std::string& command)
{
sockaddr_storage addr;
unsigned int addrLen;
char buffer[BUFFER_LENGTH];
int retStatus = 0;

if (CUDPSocket::lookup("127.0.0.1", m_port, addr, addrLen) != 0) {
LogError("Unable to resolve the address of the host");
return 1;
Expand All @@ -86,7 +93,19 @@ int CRemoteCommand::send(const std::string& command)

LogMessage("Command sent: \"%s\" to port: %u", command.c_str(), m_port);

std::this_thread::sleep_for(std::chrono::milliseconds(50));

int len = socket.read((unsigned char*)&buffer[0], BUFFER_LENGTH, addr, addrLen);
if (len > 0) {
buffer[len] = '\0';
LogMessage("%s", buffer);
}
else
{
retStatus = 1;
}

socket.close();

return 0;
return retStatus;
}
18 changes: 15 additions & 3 deletions RemoteControl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ REMOTE_COMMAND CRemoteControl::getCommand()
m_args.clear();

char command[BUFFER_LENGTH];
char buffer[BUFFER_LENGTH];
char buffer[BUFFER_LENGTH * 2];
std::string replyStr = "OK";
sockaddr_storage address;
unsigned int addrlen;
int ret = m_socket.read((unsigned char*)buffer, BUFFER_LENGTH, address, addrlen);
Expand Down Expand Up @@ -89,6 +90,8 @@ REMOTE_COMMAND CRemoteControl::getCommand()
m_command = RCD_MODE_P25;
else if (m_args.at(1U) == "nxdn")
m_command = RCD_MODE_NXDN;
else
replyStr = "KO";
} else if (m_args.at(0U) == "enable" && m_args.size() >= ENABLE_ARGS) {
if (m_args.at(1U) == "dstar")
m_command = RCD_ENABLE_DSTAR;
Expand All @@ -102,6 +105,8 @@ REMOTE_COMMAND CRemoteControl::getCommand()
m_command = RCD_ENABLE_NXDN;
else if (m_args.at(1U) == "fm")
m_command = RCD_ENABLE_FM;
else
replyStr = "KO";
} else if (m_args.at(0U) == "disable" && m_args.size() >= DISABLE_ARGS) {
if (m_args.at(1U) == "dstar")
m_command = RCD_DISABLE_DSTAR;
Expand All @@ -115,6 +120,8 @@ REMOTE_COMMAND CRemoteControl::getCommand()
m_command = RCD_DISABLE_NXDN;
else if (m_args.at(1U) == "fm")
m_command = RCD_DISABLE_FM;
else
replyStr = "KO";
} else if (m_args.at(0U) == "page" && m_args.size() >= PAGE_ARGS) {
// Page command is in the form of "page <ric> <message>"
m_command = RCD_PAGE;
Expand All @@ -125,13 +132,18 @@ REMOTE_COMMAND CRemoteControl::getCommand()
// Reload command is in the form of "reload"
m_command = RCD_RELOAD;
}
else
replyStr = "KO";

::snprintf(buffer, BUFFER_LENGTH * 2, "%s remote command of \"%s\" received", ((m_command == RCD_NONE) ? "Invalid" : "Valid"), command);
if (m_command == RCD_NONE) {
m_args.clear();
LogWarning("Invalid remote command of \"%s\" received", command);
LogWarning(buffer);
} else {
LogMessage("Valid remote command of \"%s\" received", command);
LogMessage(buffer);
}

m_socket.write((unsigned char*)replyStr.c_str(), replyStr.length(), address, addrlen);
}

return m_command;
Expand Down

0 comments on commit 629cdcf

Please sign in to comment.