fix shutdown
This commit is contained in:
+4
-3
@@ -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");
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user