Bsongis/accst support over pxx2 (#6455)

ACCST support over PXX2
This commit is contained in:
Bertrand Songis
2019-05-27 17:23:17 +02:00
committed by GitHub
parent bca162f4a5
commit 4d07faa8e0
46 changed files with 669 additions and 697 deletions
+23 -6
View File
@@ -38,7 +38,7 @@ uint8_t Pxx2Pulses::addFlag0(uint8_t module)
void Pxx2Pulses::addFlag1(uint8_t module)
{
uint8_t flag1 = g_model.moduleData[module].rfProtocol << 4;
uint8_t flag1 = g_model.moduleData[module].subType << 4;
Pxx2Transport::addByte(flag1);
}
@@ -220,7 +220,21 @@ void Pxx2Pulses::setupReceiverSettingsFrame(uint8_t module)
}
}
void Pxx2Pulses::setupBindFrame(uint8_t module)
void Pxx2Pulses::setupAccstBindFrame(uint8_t module)
{
addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_BIND);
Pxx2Transport::addByte(0x01); // DATA0
for (uint8_t i=0; i<PXX2_LEN_RX_NAME; i++) {
Pxx2Transport::addByte(0x00);
}
if (g_model.moduleData[module].type == MODULE_TYPE_PXX2_ISRM)
Pxx2Transport::addByte((g_model.moduleData[module].pxx.receiver_telem_off << 7) + (g_model.moduleData[module].pxx.receiver_telem_off << 6));
else
Pxx2Transport::addByte(0x00);
Pxx2Transport::addByte(g_model.header.modelId[module]);
}
void Pxx2Pulses::setupAccessBindFrame(uint8_t module)
{
BindInformation * destination = moduleState[module].bindInformation;
@@ -236,13 +250,13 @@ void Pxx2Pulses::setupBindFrame(uint8_t module)
addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_BIND);
if (destination->step == BIND_INFO_REQUEST) {
Pxx2Transport::addByte(0x02);
Pxx2Transport::addByte(0x02); // DATA0
for (uint8_t i=0; i<PXX2_LEN_RX_NAME; i++) {
Pxx2Transport::addByte(destination->candidateReceiversNames[destination->selectedReceiverIndex][i]);
}
}
else if (destination->step == BIND_START) {
Pxx2Transport::addByte(0x01);
Pxx2Transport::addByte(0x01); // DATA0
for (uint8_t i=0; i<PXX2_LEN_RX_NAME; i++) {
Pxx2Transport::addByte(destination->candidateReceiversNames[destination->selectedReceiverIndex][i]);
}
@@ -250,7 +264,7 @@ void Pxx2Pulses::setupBindFrame(uint8_t module)
Pxx2Transport::addByte(g_model.header.modelId[module]);
}
else {
Pxx2Transport::addByte(0x00);
Pxx2Transport::addByte(0x00); // DATA0
for (uint8_t i=0; i<PXX2_LEN_REGISTRATION_ID; i++) {
Pxx2Transport::addByte(zchar2char(g_model.modelRegistrationID[i]));
}
@@ -343,7 +357,10 @@ void Pxx2Pulses::setupFrame(uint8_t module)
setupRegisterFrame(module);
break;
case MODULE_MODE_BIND:
setupBindFrame(module);
if (g_model.moduleData[module].subType == MODULE_SUBTYPE_ISRM_PXX2_ACCESS || g_model.moduleData[module].subType == MODULE_SUBTYPE_R9M_PXX2_ACCESS)
setupAccessBindFrame(module);
else
setupAccstBindFrame(module);
break;
case MODULE_MODE_RESET:
setupResetFrame(module);