mirror of
https://github.com/g4klx/MMDVMHost.git
synced 2025-12-06 05:32:00 +01:00
MMDVMHost Nextion Commands
This commit is contained in:
parent
43783d6abc
commit
025273844f
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -15,5 +15,6 @@ RemoteCommand
|
||||||
*.user
|
*.user
|
||||||
*.VC.db
|
*.VC.db
|
||||||
.vs
|
.vs
|
||||||
|
.vscode
|
||||||
*.ambe
|
*.ambe
|
||||||
GitVersion.h
|
GitVersion.h
|
||||||
|
|
|
||||||
54
Modem.cpp
54
Modem.cpp
|
|
@ -227,7 +227,8 @@ m_fmExtAudioBoost(1U),
|
||||||
m_fmMaxDevLevel(90.0F),
|
m_fmMaxDevLevel(90.0F),
|
||||||
m_fmExtEnable(false),
|
m_fmExtEnable(false),
|
||||||
m_capabilities1(0x00U),
|
m_capabilities1(0x00U),
|
||||||
m_capabilities2(0x00U)
|
m_capabilities2(0x00U),
|
||||||
|
m_serialDataLen(0U)
|
||||||
{
|
{
|
||||||
m_buffer = new unsigned char[BUFFER_LENGTH];
|
m_buffer = new unsigned char[BUFFER_LENGTH];
|
||||||
}
|
}
|
||||||
|
|
@ -783,10 +784,61 @@ void CModem::clock(unsigned int ms)
|
||||||
printDebug();
|
printDebug();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
//case MMDVM_SERIAL_DATA:
|
||||||
|
// if (m_trace)
|
||||||
|
// CUtils::dump(1U, "RX Serial Data", m_buffer, m_length);
|
||||||
|
// m_rxSerialData.addData(m_buffer + m_offset, m_length - m_offset);
|
||||||
|
// break;
|
||||||
|
|
||||||
|
// Code changed to bring the Nextion Button Pushes back to life
|
||||||
case MMDVM_SERIAL_DATA:
|
case MMDVM_SERIAL_DATA:
|
||||||
if (m_trace)
|
if (m_trace)
|
||||||
CUtils::dump(1U, "RX Serial Data", m_buffer, m_length);
|
CUtils::dump(1U, "RX Serial Data", m_buffer, m_length);
|
||||||
|
|
||||||
|
// Original: Add to serial data buffer
|
||||||
m_rxSerialData.addData(m_buffer + m_offset, m_length - m_offset);
|
m_rxSerialData.addData(m_buffer + m_offset, m_length - m_offset);
|
||||||
|
|
||||||
|
// NEW: Buffer serial data and forward complete commands as transparent data
|
||||||
|
{
|
||||||
|
// Add received bytes to our accumulation buffer
|
||||||
|
for (unsigned int i = 0; i < (m_length - m_offset); i++) {
|
||||||
|
if (m_serialDataLen < 256) {
|
||||||
|
m_serialDataBuffer[m_serialDataLen++] = m_buffer[m_offset + i];
|
||||||
|
|
||||||
|
// Check for Nextion command terminator (0xFF 0xFF 0xFF)
|
||||||
|
if (m_serialDataLen >= 3 &&
|
||||||
|
m_serialDataBuffer[m_serialDataLen - 3] == 0xFF &&
|
||||||
|
m_serialDataBuffer[m_serialDataLen - 2] == 0xFF &&
|
||||||
|
m_serialDataBuffer[m_serialDataLen - 1] == 0xFF) {
|
||||||
|
|
||||||
|
// We have a complete command
|
||||||
|
// Add it to the RX transparent data queue so it will be forwarded to NextionDriver
|
||||||
|
// With sendFrameType=1, we need to include the frame type byte
|
||||||
|
|
||||||
|
// Create a buffer with frame type byte + command data
|
||||||
|
unsigned char frameBuffer[260];
|
||||||
|
frameBuffer[0] = 0x90; // Frame type: transparent data
|
||||||
|
::memcpy(frameBuffer + 1, m_serialDataBuffer, m_serialDataLen);
|
||||||
|
|
||||||
|
// Add length byte and data with frame type to RX queue
|
||||||
|
unsigned char len = m_serialDataLen + 1U; // +1 for frame type byte
|
||||||
|
m_rxTransparentData.addData(&len, 1U);
|
||||||
|
m_rxTransparentData.addData(frameBuffer, len);
|
||||||
|
|
||||||
|
if (m_trace) {
|
||||||
|
CUtils::dump(1U, "Adding button command with frame type to RX Transparent queue", frameBuffer, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset buffer for next command
|
||||||
|
m_serialDataLen = 0U;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Buffer overflow, reset
|
||||||
|
LogWarning("Serial data buffer overflow, resetting");
|
||||||
|
m_serialDataLen = 0U;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue