Browse Source

Fix DGUS write variable endianness (#18689)

vanilla_fb_2.0.x
yufanyufan 5 years ago
committed by GitHub
parent
commit
6f0885a3a3
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      Marlin/src/lcd/extui/lib/dgus/DGUSDisplay.cpp
  2. 5
      Marlin/src/lcd/extui/lib/dgus/DGUSDisplay.h

4
Marlin/src/lcd/extui/lib/dgus/DGUSDisplay.cpp

@ -1180,6 +1180,10 @@ void DGUSDisplay::WriteVariable(uint16_t adr, const void* values, uint8_t values
} }
} }
void DGUSDisplay::WriteVariable(uint16_t adr, uint16_t value) {
WriteVariable(adr, static_cast<const void*>(&value), sizeof(uint16_t));
}
void DGUSDisplay::WriteVariablePGM(uint16_t adr, const void* values, uint8_t valueslen, bool isstr) { void DGUSDisplay::WriteVariablePGM(uint16_t adr, const void* values, uint8_t valueslen, bool isstr) {
const char* myvalues = static_cast<const char*>(values); const char* myvalues = static_cast<const char*>(values);
bool strend = !myvalues; bool strend = !myvalues;

5
Marlin/src/lcd/extui/lib/dgus/DGUSDisplay.h

@ -54,10 +54,7 @@ public:
// Variable access. // Variable access.
static void WriteVariable(uint16_t adr, const void* values, uint8_t valueslen, bool isstr=false); static void WriteVariable(uint16_t adr, const void* values, uint8_t valueslen, bool isstr=false);
static void WriteVariablePGM(uint16_t adr, const void* values, uint8_t valueslen, bool isstr=false); static void WriteVariablePGM(uint16_t adr, const void* values, uint8_t valueslen, bool isstr=false);
template<typename T> static void WriteVariable(uint16_t adr, uint16_t value);
static void WriteVariable(uint16_t adr, T value) {
WriteVariable(adr, static_cast<const void*>(&value), sizeof(T));
}
// Until now I did not need to actively read from the display. That's why there is no ReadVariable // Until now I did not need to actively read from the display. That's why there is no ReadVariable
// (I extensively use the auto upload of the display) // (I extensively use the auto upload of the display)

Loading…
Cancel
Save