mirror of
https://github.com/opentx/opentx.git
synced 2025-07-21 07:15:12 +03:00
Delay introduced at the end of BIND ...
This commit is contained in:
parent
aa028198fd
commit
dd0ac2c008
5 changed files with 26 additions and 13 deletions
|
@ -239,7 +239,7 @@ enum MenuModelSetupItems {
|
||||||
void onPXX2BindMenu(const char * result)
|
void onPXX2BindMenu(const char * result)
|
||||||
{
|
{
|
||||||
reusableBuffer.modelsetup.pxx2_bind_selected_receiver_index = (result - reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_names[0]) / sizeof(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_names[0]);
|
reusableBuffer.modelsetup.pxx2_bind_selected_receiver_index = (result - reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_names[0]) / sizeof(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_names[0]);
|
||||||
reusableBuffer.modelsetup.pxx2_register_or_bind_step = BIND_RX_ID_SELECTED;
|
reusableBuffer.modelsetup.pxx2_bind_step = BIND_RX_ID_SELECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
void onBindMenu(const char * result)
|
void onBindMenu(const char * result)
|
||||||
|
@ -1160,13 +1160,13 @@ void menuModelSetup(event_t event)
|
||||||
if (attr) {
|
if (attr) {
|
||||||
if (menuHorizontalPosition == 0) {
|
if (menuHorizontalPosition == 0) {
|
||||||
if (event == EVT_KEY_BREAK(KEY_ENTER)) {
|
if (event == EVT_KEY_BREAK(KEY_ENTER)) {
|
||||||
reusableBuffer.modelsetup.pxx2_register_or_bind_step = BIND_START;
|
reusableBuffer.modelsetup.pxx2_bind_step = BIND_START;
|
||||||
reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count = 0;
|
reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count = 0;
|
||||||
moduleSettings[INTERNAL_MODULE].mode ^= MODULE_MODE_BIND;
|
moduleSettings[INTERNAL_MODULE].mode ^= MODULE_MODE_BIND;
|
||||||
}
|
}
|
||||||
if (moduleSettings[INTERNAL_MODULE].mode == MODULE_MODE_BIND) {
|
if (moduleSettings[INTERNAL_MODULE].mode == MODULE_MODE_BIND) {
|
||||||
s_editMode = 1;
|
s_editMode = 1;
|
||||||
if (reusableBuffer.modelsetup.pxx2_register_or_bind_step == BIND_RX_ID_RECEIVED) {
|
if (reusableBuffer.modelsetup.pxx2_bind_step == BIND_RX_ID_RECEIVED) {
|
||||||
popupMenuItemsCount = min<uint8_t>(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count, PXX2_MAX_RECEIVERS_PER_MODULE);
|
popupMenuItemsCount = min<uint8_t>(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count, PXX2_MAX_RECEIVERS_PER_MODULE);
|
||||||
for (uint8_t i=0; i<popupMenuItemsCount; i++) {
|
for (uint8_t i=0; i<popupMenuItemsCount; i++) {
|
||||||
popupMenuItems[i] = reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_names[i];
|
popupMenuItems[i] = reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_names[i];
|
||||||
|
@ -1177,7 +1177,7 @@ void menuModelSetup(event_t event)
|
||||||
else {
|
else {
|
||||||
s_editMode = 0;
|
s_editMode = 0;
|
||||||
}
|
}
|
||||||
if (reusableBuffer.modelsetup.pxx2_register_or_bind_step == BIND_OK) {
|
if (reusableBuffer.modelsetup.pxx2_bind_step == BIND_OK) {
|
||||||
memcpy(g_model.moduleData[INTERNAL_MODULE].pxx2.receivers[receiverIdx].rxID, reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_ids[reusableBuffer.modelsetup.pxx2_bind_selected_receiver_index], PXX2_LEN_RX_ID);
|
memcpy(g_model.moduleData[INTERNAL_MODULE].pxx2.receivers[receiverIdx].rxID, reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_ids[reusableBuffer.modelsetup.pxx2_bind_selected_receiver_index], PXX2_LEN_RX_ID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1117,7 +1117,11 @@ union ReusableBuffer
|
||||||
struct {
|
struct {
|
||||||
char msg[64];
|
char msg[64];
|
||||||
uint8_t r9mPower;
|
uint8_t r9mPower;
|
||||||
uint8_t pxx2_register_or_bind_step;
|
union {
|
||||||
|
uint8_t pxx2_register_step;
|
||||||
|
uint8_t pxx2_bind_step;
|
||||||
|
};
|
||||||
|
uint32_t pxx2_bind_wait_timeout;
|
||||||
uint8_t pxx2_register_rx_id[PXX2_LEN_RX_ID];
|
uint8_t pxx2_register_rx_id[PXX2_LEN_RX_ID];
|
||||||
char pxx2_bind_candidate_receivers_ids[PXX2_MAX_RECEIVERS_PER_MODULE][PXX2_LEN_RX_ID];
|
char pxx2_bind_candidate_receivers_ids[PXX2_MAX_RECEIVERS_PER_MODULE][PXX2_LEN_RX_ID];
|
||||||
char pxx2_bind_candidate_receivers_names[PXX2_MAX_RECEIVERS_PER_MODULE][3*PXX2_LEN_RX_ID+1];
|
char pxx2_bind_candidate_receivers_names[PXX2_MAX_RECEIVERS_PER_MODULE][3*PXX2_LEN_RX_ID+1];
|
||||||
|
|
|
@ -58,7 +58,7 @@ bool Pxx2Pulses::setupRegisterFrame(uint8_t module)
|
||||||
{
|
{
|
||||||
addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_REGISTER);
|
addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_REGISTER);
|
||||||
|
|
||||||
if (reusableBuffer.modelsetup.pxx2_register_or_bind_step == REGISTER_COUNTER_ID_RECEIVED) {
|
if (reusableBuffer.modelsetup.pxx2_register_step == REGISTER_COUNTER_ID_RECEIVED) {
|
||||||
Pxx2Transport::addByte(0x01);
|
Pxx2Transport::addByte(0x01);
|
||||||
for (uint8_t i=0; i<PXX2_LEN_RX_ID; i++) {
|
for (uint8_t i=0; i<PXX2_LEN_RX_ID; i++) {
|
||||||
Pxx2Transport::addByte(0x00);
|
Pxx2Transport::addByte(0x00);
|
||||||
|
@ -78,7 +78,16 @@ bool Pxx2Pulses::setupBindFrame(uint8_t module)
|
||||||
{
|
{
|
||||||
addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_BIND);
|
addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_BIND);
|
||||||
|
|
||||||
if (reusableBuffer.modelsetup.pxx2_register_or_bind_step == BIND_RX_ID_SELECTED) {
|
if (reusableBuffer.modelsetup.pxx2_bind_step == BIND_WAIT) {
|
||||||
|
if (get_tmr10ms() > reusableBuffer.modelsetup.pxx2_bind_wait_timeout) {
|
||||||
|
moduleSettings[module].mode = MODULE_MODE_NORMAL;
|
||||||
|
POPUP_INFORMATION(STR_BIND_OK);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (reusableBuffer.modelsetup.pxx2_bind_step == BIND_RX_ID_SELECTED) {
|
||||||
Pxx2Transport::addByte(0x01);
|
Pxx2Transport::addByte(0x01);
|
||||||
for (uint8_t i=0; i<PXX2_LEN_RX_ID; i++) {
|
for (uint8_t i=0; i<PXX2_LEN_RX_ID; i++) {
|
||||||
Pxx2Transport::addByte(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_ids[reusableBuffer.modelsetup.pxx2_bind_selected_receiver_index][i]);
|
Pxx2Transport::addByte(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_ids[reusableBuffer.modelsetup.pxx2_bind_selected_receiver_index][i]);
|
||||||
|
|
|
@ -51,6 +51,7 @@ enum PXX2BindSteps {
|
||||||
BIND_START,
|
BIND_START,
|
||||||
BIND_RX_ID_RECEIVED,
|
BIND_RX_ID_RECEIVED,
|
||||||
BIND_RX_ID_SELECTED,
|
BIND_RX_ID_SELECTED,
|
||||||
|
BIND_WAIT,
|
||||||
BIND_OK
|
BIND_OK
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -80,13 +80,13 @@ void processRegisterFrame(uint8_t module, uint8_t * frame)
|
||||||
if (frame[3] == 0x00) {
|
if (frame[3] == 0x00) {
|
||||||
// RX_ID follows, we store it for the next step
|
// RX_ID follows, we store it for the next step
|
||||||
memcpy(reusableBuffer.modelsetup.pxx2_register_rx_id, &frame[4], PXX2_LEN_RX_ID);
|
memcpy(reusableBuffer.modelsetup.pxx2_register_rx_id, &frame[4], PXX2_LEN_RX_ID);
|
||||||
reusableBuffer.modelsetup.pxx2_register_or_bind_step = REGISTER_COUNTER_ID_RECEIVED;
|
reusableBuffer.modelsetup.pxx2_register_step = REGISTER_COUNTER_ID_RECEIVED;
|
||||||
}
|
}
|
||||||
else if (frame[3] == 0x01) {
|
else if (frame[3] == 0x01) {
|
||||||
// RX_ID + PASSWORD follow, we check they are good
|
// RX_ID + PASSWORD follow, we check they are good
|
||||||
if (memcmp(&frame[4], reusableBuffer.modelsetup.pxx2_register_rx_id, PXX2_LEN_RX_ID) == 0 &&
|
if (memcmp(&frame[4], reusableBuffer.modelsetup.pxx2_register_rx_id, PXX2_LEN_RX_ID) == 0 &&
|
||||||
memcmp(&frame[12], g_model.modelRegistrationID, PXX2_LEN_REGISTRATION_ID) == 0) {
|
memcmp(&frame[12], g_model.modelRegistrationID, PXX2_LEN_REGISTRATION_ID) == 0) {
|
||||||
reusableBuffer.modelsetup.pxx2_register_or_bind_step = REGISTER_OK;
|
reusableBuffer.modelsetup.pxx2_register_step = REGISTER_OK;
|
||||||
moduleSettings[module].mode = MODULE_MODE_NORMAL;
|
moduleSettings[module].mode = MODULE_MODE_NORMAL;
|
||||||
POPUP_INFORMATION(STR_REG_OK);
|
POPUP_INFORMATION(STR_REG_OK);
|
||||||
}
|
}
|
||||||
|
@ -120,14 +120,13 @@ void processBindFrame(uint8_t module, uint8_t * frame)
|
||||||
}
|
}
|
||||||
*c = '\0';
|
*c = '\0';
|
||||||
++reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count;
|
++reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count;
|
||||||
reusableBuffer.modelsetup.pxx2_register_or_bind_step = BIND_RX_ID_RECEIVED;
|
reusableBuffer.modelsetup.pxx2_bind_step = BIND_RX_ID_RECEIVED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (frame[3] == 0x01) {
|
else if (frame[3] == 0x01) {
|
||||||
if (memcmp(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_ids[reusableBuffer.modelsetup.pxx2_bind_selected_receiver_index], &frame[4], PXX2_LEN_RX_ID) == 0) {
|
if (memcmp(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_ids[reusableBuffer.modelsetup.pxx2_bind_selected_receiver_index], &frame[4], PXX2_LEN_RX_ID) == 0) {
|
||||||
reusableBuffer.modelsetup.pxx2_register_or_bind_step = BIND_OK;
|
reusableBuffer.modelsetup.pxx2_bind_step = BIND_WAIT;
|
||||||
moduleSettings[module].mode = MODULE_MODE_NORMAL;
|
reusableBuffer.modelsetup.pxx2_bind_wait_timeout = get_tmr10ms() + 30;
|
||||||
POPUP_INFORMATION(STR_BIND_OK);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue