diff options
author | David Crocker <dcrocker@eschertech.com> | 2022-01-01 13:25:46 +0300 |
---|---|---|
committer | David Crocker <dcrocker@eschertech.com> | 2022-01-01 13:25:46 +0300 |
commit | 1700e65ffb2d6f47b558d573fb6bb9b737fd7246 (patch) | |
tree | ed292b7f339b0c9119a8afef887d4210ebbe5876 /src | |
parent | d2f377e617f118aaabc3830925c431b67dcf1963 (diff) |
Added a comment
Diffstat (limited to 'src')
-rw-r--r-- | src/CAN/ExpansionManager.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/CAN/ExpansionManager.cpp b/src/CAN/ExpansionManager.cpp index d3b10ff2..546e517a 100644 --- a/src/CAN/ExpansionManager.cpp +++ b/src/CAN/ExpansionManager.cpp @@ -140,6 +140,7 @@ void ExpansionManager::ProcessAnnouncement(CanMessageBuffer *buf, bool isNewForm UpdateBoardState(src, BoardState::unknown); if (board.typeName == nullptr || strcmp(board.typeName, boardTypeAndFirmwareVersion.c_str()) != 0) { + // To save memory, see if we already have another board with the same type name const char *newTypeName = nullptr; for (const ExpansionBoardData& data : boards) { @@ -149,12 +150,14 @@ void ExpansionManager::ProcessAnnouncement(CanMessageBuffer *buf, bool isNewForm break; } } + if (newTypeName == nullptr) { char * const temp = new char[boardTypeAndFirmwareVersion.strlen() + 1]; strcpy(temp, boardTypeAndFirmwareVersion.c_str()); newTypeName = temp; } + board.typeName = newTypeName; if (isNewFormat) { @@ -168,9 +171,11 @@ void ExpansionManager::ProcessAnnouncement(CanMessageBuffer *buf, bool isNewForm } } UpdateBoardState(src, BoardState::running); + + // Tell the sending board that we don't need any more announcements from it + buf->SetupResponseMessage<CanMessageAcknowledgeAnnounce>(0, CanInterface::GetCanAddress(), src); + CanInterface::SendResponseNoFree(buf); } - buf->SetupResponseMessage<CanMessageAcknowledgeAnnounce>(0, CanInterface::GetCanAddress(), src); - CanInterface::SendResponseNoFree(buf); } // Process a board status report |