Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Duet3D/RepRapFirmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDavid Crocker <dcrocker@eschertech.com>2022-01-01 13:25:46 +0300
committerDavid Crocker <dcrocker@eschertech.com>2022-01-01 13:25:46 +0300
commit1700e65ffb2d6f47b558d573fb6bb9b737fd7246 (patch)
treeed292b7f339b0c9119a8afef887d4210ebbe5876 /src
parentd2f377e617f118aaabc3830925c431b67dcf1963 (diff)
Added a comment
Diffstat (limited to 'src')
-rw-r--r--src/CAN/ExpansionManager.cpp9
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