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
diff options
context:
space:
mode:
authorChristian Hammacher <bmasterc@gmail.com>2021-02-22 19:09:12 +0300
committerChristian Hammacher <bmasterc@gmail.com>2021-02-22 19:09:12 +0300
commit5baa6d2ecab3f2fe7861495f7a2daf0c3a74443f (patch)
tree930e4384b8f27b3a03e78bae78a53a8f5fbe4181 /src/ObjectModel
parent12c8c1a8747f07cbe14600208d216ab75bc6b78c (diff)
Work towards v3.3
Introduced new "obsolete" attribute for object model fields Marked some fields in the object model obsolete Warnings are now shown when obsolete fields are used Reduced object model size a bit of grid definitions Added back some grid properties for backwards-compatibility Added new o-flag to M409 and rr_model
Diffstat (limited to 'src/ObjectModel')
-rw-r--r--src/ObjectModel/ObjectModel.cpp14
-rw-r--r--src/ObjectModel/ObjectModel.h12
2 files changed, 22 insertions, 4 deletions
diff --git a/src/ObjectModel/ObjectModel.cpp b/src/ObjectModel/ObjectModel.cpp
index 430821cf..917cc6e2 100644
--- a/src/ObjectModel/ObjectModel.cpp
+++ b/src/ObjectModel/ObjectModel.cpp
@@ -215,7 +215,7 @@ ObjectModel::ObjectModel() noexcept
ObjectExplorationContext::ObjectExplorationContext(bool wal, const char *reportFlags, unsigned int initialMaxDepth) noexcept
: startMillis(millis()), maxDepth(initialMaxDepth), currentDepth(0), numIndicesProvided(0), numIndicesCounted(0),
line(-1), column(-1),
- shortForm(false), onlyLive(false), includeVerbose(false), wantArrayLength(wal), includeNulls(false)
+ shortForm(false), onlyLive(false), includeVerbose(false), wantArrayLength(wal), includeNulls(false), includeObsolete(false), obsoleteFieldQueried(false)
{
while (true)
{
@@ -235,6 +235,9 @@ ObjectExplorationContext::ObjectExplorationContext(bool wal, const char *reportF
case 'n':
includeNulls = true;
break;
+ case 'o':
+ includeObsolete = true;
+ break;
case 'd':
maxDepth = 0;
while (isdigit(*reportFlags))
@@ -257,7 +260,7 @@ ObjectExplorationContext::ObjectExplorationContext(bool wal, const char *reportF
ObjectExplorationContext::ObjectExplorationContext(bool wal, int p_line, int p_col) noexcept
: startMillis(millis()), maxDepth(99), currentDepth(0), numIndicesProvided(0), numIndicesCounted(0),
line(p_line), column(p_col),
- shortForm(false), onlyLive(false), includeVerbose(true), wantArrayLength(wal), includeNulls(false)
+ shortForm(false), onlyLive(false), includeVerbose(true), wantArrayLength(wal), includeNulls(false), includeObsolete(true), obsoleteFieldQueried(false)
{
}
@@ -282,7 +285,8 @@ int32_t ObjectExplorationContext::GetLastIndex() const THROWS(GCodeException)
bool ObjectExplorationContext::ShouldReport(const ObjectModelEntryFlags f) const noexcept
{
return (!onlyLive || ((uint8_t)f & (uint8_t)ObjectModelEntryFlags::live) != 0)
- && (includeVerbose || ((uint8_t)f & (uint8_t)ObjectModelEntryFlags::verbose) == 0);
+ && (includeVerbose || ((uint8_t)f & (uint8_t)ObjectModelEntryFlags::verbose) == 0)
+ && (includeObsolete || ((uint8_t)f & (uint8_t)ObjectModelEntryFlags::obsolete) == 0);
}
GCodeException ObjectExplorationContext::ConstructParseException(const char *msg) const noexcept
@@ -771,6 +775,10 @@ ExpressionValue ObjectModel::GetObjectValue(ObjectExplorationContext& context, c
const ObjectModelTableEntry * const e = FindObjectModelTableEntry(classDescriptor, tableNumber, idString);
if (e != nullptr)
{
+ if (e->IsObsolete())
+ {
+ context.SetObsoleteFieldQueried();
+ }
idString = GetNextElement(idString);
const ExpressionValue val = e->func(this, context);
return GetObjectValue(context, classDescriptor, val, idString);
diff --git a/src/ObjectModel/ObjectModel.h b/src/ObjectModel/ObjectModel.h
index f400a60e..f46e54e7 100644
--- a/src/ObjectModel/ObjectModel.h
+++ b/src/ObjectModel/ObjectModel.h
@@ -162,6 +162,8 @@ enum class ObjectModelEntryFlags : uint8_t
// canAlter can be or'ed in
canAlter = 4, // we can alter this value
liveCanAlter = 5, // we can alter this value
+
+ obsolete = 8 // entry is deprecated and should not be used any more
};
// Context passed to object model functions
@@ -190,6 +192,9 @@ public:
bool ShouldIncludeNulls() const noexcept { return includeNulls; }
uint64_t GetStartMillis() const { return startMillis; }
+ bool ObsoleteFieldQueried() const noexcept { return obsoleteFieldQueried; }
+ void SetObsoleteFieldQueried() noexcept { obsoleteFieldQueried = true; }
+
GCodeException ConstructParseException(const char *msg) const noexcept;
GCodeException ConstructParseException(const char *msg, const char *sparam) const noexcept;
@@ -208,7 +213,9 @@ private:
onlyLive : 1,
includeVerbose : 1,
wantArrayLength : 1,
- includeNulls : 1;
+ includeNulls : 1,
+ includeObsolete : 1,
+ obsoleteFieldQueried : 1;
};
// Entry to describe an array of objects or values. These must be brace-initializable into flash memory.
@@ -300,6 +307,9 @@ public:
// Return true if this object table entry matches a filter or query
bool Matches(const char *filter, const ObjectExplorationContext& context) const noexcept;
+ // Check if the queried field is obsolete
+ bool IsObsolete() const noexcept { return ((uint8_t)flags & (uint8_t)ObjectModelEntryFlags::obsolete) != 0; }
+
// See whether we should add the value of this element to the buffer, returning true if it matched the filter and we did add it
bool ReportAsJson(OutputBuffer* buf, ObjectExplorationContext& context, const ObjectModelClassDescriptor *classDescriptor, const ObjectModel *self, const char* filter, bool first) const noexcept;