fix shutdown

This commit is contained in:
John
2023-10-14 09:06:40 +02:00
parent 7198a1f015
commit be916c73b6
2 changed files with 5 additions and 3 deletions
+4 -3
View File
@@ -402,6 +402,7 @@ int main(int argc, char* argv[], char* envp[]) {
// create the MainLoop and start it // create the MainLoop and start it
s_mainLoop = new MainLoop(s_opt, device, s_messageMap, s_scanHelper, s_requestQueue); s_mainLoop = new MainLoop(s_opt, device, s_messageMap, s_scanHelper, s_requestQueue);
BusHandler* busHandler = s_mainLoop->getBusHandler(); BusHandler* busHandler = s_mainLoop->getBusHandler();
ProtocolHandler* protocol = busHandler->getProtocol();
if (s_opt.injectMessages) { if (s_opt.injectMessages) {
int scanAdrCount = 0; int scanAdrCount = 0;
bool scanAddresses[256] = {}; bool scanAddresses[256] = {};
@@ -412,7 +413,7 @@ int main(int argc, char* argv[], char* envp[]) {
if (!s_scanHelper->parseMessage(argv[arg_index++], false, &master, &slave)) { if (!s_scanHelper->parseMessage(argv[arg_index++], false, &master, &slave)) {
continue; continue;
} }
busHandler->getProtocol()->injectMessage(master, slave); protocol->injectMessage(master, slave);
if (s_opt.scanConfig && master.size() >= 5 && master[4] == 0 && master[2] == 0x07 && master[3] == 0x04 if (s_opt.scanConfig && master.size() >= 5 && master[4] == 0 && master[2] == 0x07 && master[3] == 0x04
&& isValidAddress(master[1], false) && !isMaster(master[1]) && !scanAddresses[master[1]]) { && isValidAddress(master[1], false) && !isMaster(master[1]) && !scanAddresses[master[1]]) {
// scan message, simulate scanning // scan message, simulate scanning
@@ -420,7 +421,7 @@ int main(int argc, char* argv[], char* envp[]) {
scanAdrCount++; scanAdrCount++;
} }
} }
busHandler->getProtocol()->start("bushandler"); protocol->start("bushandler");
for (symbol_t address = 0; scanAdrCount > 0; address++) { for (symbol_t address = 0; scanAdrCount > 0; address++) {
if (scanAddresses[address]) { if (scanAddresses[address]) {
scanAdrCount--; scanAdrCount--;
@@ -432,7 +433,7 @@ int main(int argc, char* argv[], char* envp[]) {
return 0; return 0;
} }
} else { } else {
busHandler->getProtocol()->start("bushandler"); protocol->start("bushandler");
} }
s_mainLoop->start("mainloop"); s_mainLoop->start("mainloop");
+1
View File
@@ -80,6 +80,7 @@ class DirectProtocolHandler : public ProtocolHandler {
* Destructor. * Destructor.
*/ */
virtual ~DirectProtocolHandler() { virtual ~DirectProtocolHandler() {
join();
if (m_currentRequest != nullptr) { if (m_currentRequest != nullptr) {
delete m_currentRequest; delete m_currentRequest;
m_currentRequest = nullptr; m_currentRequest = nullptr;