For RX SETTINGS tests

This commit is contained in:
Bertrand Songis
2019-03-08 11:01:24 +01:00
parent 2ce141c7ae
commit e33579f305
5 changed files with 52 additions and 22 deletions
+23 -11
View File
@@ -23,6 +23,14 @@
#warning "TODO remove it"
uint8_t g_moduleIdx;
void drawReceiverName(uint8_t x, uint8_t y, uint8_t receiverSlot)
{
if (g_model.receiverData[receiverSlot].name[0] != '\0')
lcdDrawSizedText(x, y, g_model.receiverData[receiverSlot].name, PXX2_LEN_RX_NAME);
else
lcdDrawText(x, y, "---");
}
void menuModelFailsafe(event_t event);
void menuModelPinmap(event_t event);
@@ -1247,7 +1255,6 @@ void menuModelSetup(event_t event)
lcdDrawTextAlignedLeft(y, STR_RECEIVER);
lcdDrawNumber(lcdLastRightPos + 1, y, receiverIdx + 1);
// lcdDrawSizedText(MODEL_SETUP_2ND_COLUMN, y, g_model.moduleData[moduleIdx].pxx2.receivers[receiverIdx].rxName, PXX2_LEN_RX_NAME, ZCHAR);
if (receiverSlot) {
lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_DEL_BUTTON, attr);
@@ -1294,7 +1301,6 @@ void menuModelSetup(event_t event)
memclear(&reusableBuffer.receiverSetup, sizeof(reusableBuffer.receiverSetup));
reusableBuffer.receiverSetup.moduleIdx = moduleIdx;
reusableBuffer.receiverSetup.receiverId = receiverSlot;
moduleSettings[moduleIdx].mode = MODULE_MODE_RECEIVER_SETTINGS;
pushMenu(menuModelPinmap);
}
}
@@ -1329,11 +1335,7 @@ void menuModelSetup(event_t event)
uint8_t receiverIdx = CURRENT_RECEIVER_EDITED(k);
uint8_t receiverSlot = g_model.moduleData[moduleIdx].pxx2.getReceiverSlot(receiverIdx) - 1;
if (g_model.receiverData[receiverSlot].name[0] != '\0')
lcdDrawSizedText(INDENT_WIDTH * 2, y, g_model.receiverData[receiverSlot].name, PXX2_LEN_RX_NAME);
else
lcdDrawTextAlignedLeft(y, INDENT INDENT "---");
drawReceiverName(INDENT_WIDTH * 2, y, receiverSlot);
lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_MODULE_BIND, menuHorizontalPosition==0 ? attr : 0);
lcdDrawText(lcdLastRightPos + FW/2, y, BUTTON("Share"), menuHorizontalPosition==1 ? attr : 0);
@@ -1927,15 +1929,26 @@ void menuModelFailsafe(event_t event)
void menuModelPinmap(event_t event)
{
if (menuEvent) {
moduleSettings[reusableBuffer.receiverSetup.moduleIdx].mode = MODULE_MODE_NORMAL;
return;
}
const int lim = (g_model.extendedLimits ? (512 * LIMIT_EXT_PERCENT / 100) : 512) * 2;
uint8_t wbar = LCD_W / 2 - 20;
SIMPLE_SUBMENU_NOTITLE(sentModuleChannels(g_moduleIdx));
lcdDrawTextAlignedLeft(0, STR_PINMAPSET);
// TODO write receiver name here
drawReceiverName(FW * 10, 0, reusableBuffer.receiverSetup.receiverId);
lcdInvertLine(0);
if (reusableBuffer.receiverSetup.state > 0) {
if (event == EVT_ENTRY || (reusableBuffer.receiverSetup.state == 0x00 && get_tmr10ms() >= reusableBuffer.receiverSetup.updateTime)) {
reusableBuffer.receiverSetup.updateTime = get_tmr10ms() + 100/*1s*/;
reusableBuffer.receiverSetup.timeout = 0;
moduleSettings[reusableBuffer.receiverSetup.moduleIdx].mode = MODULE_MODE_RECEIVER_SETTINGS;
}
if (reusableBuffer.receiverSetup.state != 0) {
for (uint8_t i = 0; i < NUM_BODY_LINES; i++) {
coord_t y = MENU_HEADER_HEIGHT + 1 + i * FH;
uint8_t pin = menuVerticalOffset + i;
@@ -1952,8 +1965,7 @@ void menuModelPinmap(event_t event)
flags |= INVERS;
if (s_editMode > 0) {
flags |= BLINK;
#warning "Not a MODELVAR"
CHECK_INCDEC_MODELVAR(event, channel, 0, sentModuleChannels(g_moduleIdx));
channel = checkIncDec(event, channel, 0, sentModuleChannels(g_moduleIdx));
if (checkIncDec_Ret) {
reusableBuffer.receiverSetup.channelMapping[pin] = channel;
reusableBuffer.receiverSetup.state = 0x40;
+6
View File
@@ -36,6 +36,12 @@
#if defined(PXX2)
void menuRadioModulesVersion(event_t event)
{
if (menuEvent) {
moduleSettings[INTERNAL_MODULE].mode = MODULE_MODE_NORMAL;
moduleSettings[EXTERNAL_MODULE].mode = MODULE_MODE_NORMAL;
return;
}
TITLE("MODULES / RX VERSION");
if (event == EVT_ENTRY || get_tmr10ms() >= reusableBuffer.hardware.updateTime) {
+2
View File
@@ -1143,6 +1143,8 @@ union ReusableBuffer
struct {
uint8_t state; // 0x00 = READ 0x40 = WRITE
tmr10ms_t timeout;
tmr10ms_t updateTime;
uint8_t moduleIdx;
uint8_t receiverId;
uint8_t channelMapping[24];
+18 -6
View File
@@ -115,10 +115,12 @@ void Pxx2Pulses::setupHardwareInfoFrame(uint8_t module)
}
else {
reusableBuffer.hardware.modules[module].timeout--;
setupChannelsFrame(module);
}
}
else {
moduleSettings[module].mode = MODULE_MODE_NORMAL;
setupChannelsFrame(module);
}
}
@@ -142,13 +144,23 @@ void Pxx2Pulses::setupRegisterFrame(uint8_t module)
void Pxx2Pulses::setupReceiverSettingsFrame(uint8_t module)
{
addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_RX_SETTINGS);
Pxx2Transport::addByte(reusableBuffer.receiverSetup.state + reusableBuffer.receiverSetup.receiverId);
Pxx2Transport::addByte(0x0);
for (int i=0; i<24; i++) {
Pxx2Transport::addByte(reusableBuffer.receiverSetup.channelMapping[i]);
if (reusableBuffer.receiverSetup.timeout) {
if (get_tmr10ms() > reusableBuffer.receiverSetup.timeout) {
reusableBuffer.receiverSetup.timeout = 0;
moduleSettings[module].mode = MODULE_MODE_NORMAL;
}
#warning "TODO send channels during the timeout"
//setupChannelsFrame(module);
}
else {
addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_RX_SETTINGS);
Pxx2Transport::addByte(reusableBuffer.receiverSetup.state + reusableBuffer.receiverSetup.receiverId);
Pxx2Transport::addByte(0x0);
for (int i = 0; i < 24; i++) {
Pxx2Transport::addByte(reusableBuffer.receiverSetup.channelMapping[i]);
}
reusableBuffer.receiverSetup.timeout = get_tmr10ms() + 10/*100ms*/;
}
// TODO moduleSettings[module].mode = MODULE_MODE_NORMAL;
}
void Pxx2Pulses::setupBindFrame(uint8_t module)
+3 -5
View File
@@ -90,17 +90,15 @@ void processGetHardwareInfoFrame(uint8_t module, uint8_t * frame)
void processReceiverSettingsFrame(uint8_t module, uint8_t * frame)
{
#warning "TODO This will be needed to ensure we are in the right menu"
// if (moduleSettings[module].mode != MODULE_MODE_GET_HARDWARE_INFO) {
// return;
// }
if (moduleSettings[module].mode != MODULE_MODE_RECEIVER_SETTINGS) {
return;
}
for (uint8_t pin=0; pin<24; pin++) {
reusableBuffer.receiverSetup.channelMapping[pin] = frame[5 + pin];
}
reusableBuffer.receiverSetup.state = 0xFF;
moduleSettings[module].mode = MODULE_MODE_NORMAL;
}
void processRegisterFrame(uint8_t module, uint8_t * frame)