1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-21 07:15:12 +03:00

Fixes (TELEMETRY DATA0 missing)

This commit is contained in:
Bertrand Songis 2019-03-05 11:46:39 +01:00
parent b2e6d0da7a
commit 9fbff6e67d
4 changed files with 35 additions and 34 deletions

View file

@ -104,7 +104,7 @@ void Pxx2Pulses::setupChannelsFrame(uint8_t module)
} }
} }
bool Pxx2Pulses::setupRegisterFrame(uint8_t module) void Pxx2Pulses::setupRegisterFrame(uint8_t module)
{ {
addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_REGISTER); addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_REGISTER);
@ -120,23 +120,22 @@ bool Pxx2Pulses::setupRegisterFrame(uint8_t module)
else { else {
Pxx2Transport::addByte(0); Pxx2Transport::addByte(0);
} }
return true; // TODO not always
} }
bool Pxx2Pulses::setupBindFrame(uint8_t module) void Pxx2Pulses::setupBindFrame(uint8_t module)
{ {
addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_BIND);
if (reusableBuffer.moduleSetup.pxx2.bindStep == BIND_WAIT) { if (reusableBuffer.moduleSetup.pxx2.bindStep == BIND_WAIT) {
if (get_tmr10ms() > reusableBuffer.moduleSetup.pxx2.bindWaitTimeout) { if (get_tmr10ms() > reusableBuffer.moduleSetup.pxx2.bindWaitTimeout) {
moduleSettings[module].mode = MODULE_MODE_NORMAL; moduleSettings[module].mode = MODULE_MODE_NORMAL;
reusableBuffer.moduleSetup.pxx2.bindStep = BIND_OK; reusableBuffer.moduleSetup.pxx2.bindStep = BIND_OK;
POPUP_INFORMATION(STR_BIND_OK); POPUP_INFORMATION(STR_BIND_OK);
} }
return false; return;
} }
else if (reusableBuffer.moduleSetup.pxx2.bindStep == BIND_RX_NAME_SELECTED) {
addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_BIND);
if (reusableBuffer.moduleSetup.pxx2.bindStep == BIND_RX_NAME_SELECTED) {
Pxx2Transport::addByte(0x01); Pxx2Transport::addByte(0x01);
for (uint8_t i=0; i<PXX2_LEN_RX_NAME; i++) { for (uint8_t i=0; i<PXX2_LEN_RX_NAME; i++) {
Pxx2Transport::addByte(reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversNames[reusableBuffer.moduleSetup.pxx2.bindSelectedReceiverIndex][i]); Pxx2Transport::addByte(reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversNames[reusableBuffer.moduleSetup.pxx2.bindSelectedReceiverIndex][i]);
@ -150,15 +149,13 @@ bool Pxx2Pulses::setupBindFrame(uint8_t module)
Pxx2Transport::addByte(zchar2char(g_model.modelRegistrationID[i])); Pxx2Transport::addByte(zchar2char(g_model.modelRegistrationID[i]));
} }
} }
return true; // TODO not always
} }
bool Pxx2Pulses::setupSpectrumAnalyser(uint8_t module) void Pxx2Pulses::setupSpectrumAnalyser(uint8_t module)
{ {
if (moduleSettings[module].counter > 1000) { if (moduleSettings[module].counter > 1000) {
moduleSettings[module].counter = 1002; moduleSettings[module].counter = 1002;
return false; return;
} }
moduleSettings[module].counter = 1002; moduleSettings[module].counter = 1002;
@ -174,11 +171,9 @@ bool Pxx2Pulses::setupSpectrumAnalyser(uint8_t module)
reusableBuffer.spectrum.step = 100000; // 100KHz reusableBuffer.spectrum.step = 100000; // 100KHz
Pxx2Transport::addWord(reusableBuffer.spectrum.step); Pxx2Transport::addWord(reusableBuffer.spectrum.step);
return true;
} }
bool Pxx2Pulses::setupShareMode(uint8_t module) void Pxx2Pulses::setupShareMode(uint8_t module)
{ {
addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_RX_SETUP); addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_RX_SETUP);
@ -191,24 +186,22 @@ bool Pxx2Pulses::setupShareMode(uint8_t module)
} }
moduleSettings[module].mode = MODULE_MODE_NORMAL; moduleSettings[module].mode = MODULE_MODE_NORMAL;
return true;
} }
bool Pxx2Pulses::setupFrame(uint8_t module) void Pxx2Pulses::setupFrame(uint8_t module)
{ {
initFrame(); initFrame();
bool result = true;
uint8_t mode = moduleSettings[module].mode; uint8_t mode = moduleSettings[module].mode;
if (mode == MODULE_MODE_REGISTER) if (mode == MODULE_MODE_REGISTER)
result = setupRegisterFrame(module); setupRegisterFrame(module);
else if (mode == MODULE_MODE_BIND) else if (mode == MODULE_MODE_BIND)
result = setupBindFrame(module); setupBindFrame(module);
else if (mode == MODULE_MODE_SPECTRUM_ANALYSER) else if (mode == MODULE_MODE_SPECTRUM_ANALYSER)
result = setupSpectrumAnalyser(module); setupSpectrumAnalyser(module);
else if (mode == MODULE_MODE_SHARE) else if (mode == MODULE_MODE_SHARE)
result = setupShareMode(module); setupShareMode(module);
else else
setupChannelsFrame(module); setupChannelsFrame(module);
@ -217,8 +210,6 @@ bool Pxx2Pulses::setupFrame(uint8_t module)
} }
endFrame(); endFrame();
return result;
} }
template class PxxPulses<Pxx2Transport>; template class PxxPulses<Pxx2Transport>;

View file

@ -100,18 +100,18 @@ class Pxx2Transport: public DataBuffer<uint8_t, 64>, public Pxx2CrcMixin {
class Pxx2Pulses: public PxxPulses<Pxx2Transport> { class Pxx2Pulses: public PxxPulses<Pxx2Transport> {
public: public:
bool setupFrame(uint8_t module); void setupFrame(uint8_t module);
protected: protected:
bool setupRegisterFrame(uint8_t module); void setupRegisterFrame(uint8_t module);
bool setupBindFrame(uint8_t module); void setupBindFrame(uint8_t module);
bool setupShareMode(uint8_t module); void setupShareMode(uint8_t module);
void setupChannelsFrame(uint8_t module); void setupChannelsFrame(uint8_t module);
bool setupSpectrumAnalyser(uint8_t module); void setupSpectrumAnalyser(uint8_t module);
void addHead() void addHead()
{ {
@ -157,11 +157,18 @@ class Pxx2Pulses: public PxxPulses<Pxx2Transport> {
void endFrame() void endFrame()
{ {
// update the frame LEN = frame length minus the 2 first bytes uint8_t size = getSize() - 2;
data[1] = getSize() - 2;
// now add the CRC if (size > 0) {
addCrc(); // update the frame LEN = frame length minus the 2 first bytes
data[1] = getSize() - 2;
// now add the CRC
addCrc();
}
else {
Pxx2Transport::initBuffer();
}
} }
}; };

View file

@ -92,6 +92,9 @@ extern "C" void INTMODULE_USART_IRQHandler(void)
void intmoduleSendBuffer(const uint8_t * data, uint8_t size) void intmoduleSendBuffer(const uint8_t * data, uint8_t size)
{ {
if (size == 0)
return;
DMA_InitTypeDef DMA_InitStructure; DMA_InitTypeDef DMA_InitStructure;
DMA_DeInit(INTMODULE_DMA_STREAM); DMA_DeInit(INTMODULE_DMA_STREAM);
DMA_InitStructure.DMA_Channel = INTMODULE_DMA_CHANNEL; DMA_InitStructure.DMA_Channel = INTMODULE_DMA_CHANNEL;

View file

@ -123,7 +123,7 @@ void processBindFrame(uint8_t module, uint8_t * frame)
void processTelemetryFrame(uint8_t module, uint8_t * frame) void processTelemetryFrame(uint8_t module, uint8_t * frame)
{ {
sportProcessTelemetryPacketWithoutCrc(&frame[3]); sportProcessTelemetryPacketWithoutCrc(&frame[2]);
} }
void processSpectrumFrame(uint8_t module, uint8_t * frame) void processSpectrumFrame(uint8_t module, uint8_t * frame)