1
0
mirror of https://github.com/DCC-EX/CommandStation-EX.git synced 2024-11-23 08:06:13 +01:00

JO and JP working

This commit is contained in:
peteGSX 2023-09-07 07:32:54 +10:00
parent 21ce87eb3e
commit 004d7b6631
2 changed files with 19 additions and 7 deletions

View File

@ -86,6 +86,7 @@ const int16_t HASH_KEYWORD_C='C';
const int16_t HASH_KEYWORD_G='G'; const int16_t HASH_KEYWORD_G='G';
const int16_t HASH_KEYWORD_I='I'; const int16_t HASH_KEYWORD_I='I';
const int16_t HASH_KEYWORD_O='O'; const int16_t HASH_KEYWORD_O='O';
const int16_t HASH_KEYWORD_P='P';
const int16_t HASH_KEYWORD_R='R'; const int16_t HASH_KEYWORD_R='R';
const int16_t HASH_KEYWORD_T='T'; const int16_t HASH_KEYWORD_T='T';
const int16_t HASH_KEYWORD_X='X'; const int16_t HASH_KEYWORD_X='X';
@ -706,30 +707,41 @@ void DCCEXParser::parseOne(Print *stream, byte *com, RingStream * ringStream)
} else { // <JO id> } else { // <JO id>
Turntable *tto=Turntable::get(id); Turntable *tto=Turntable::get(id);
if (!tto || tto->isHidden()) { if (!tto || tto->isHidden()) {
StringFormatter::send(stream, F(" %d X"), id); StringFormatter::send(stream, F(" %d X>\n"), id);
} else { } else {
uint8_t pos = tto->getPosition(); uint8_t pos = tto->getPosition();
uint8_t type = tto->isEXTT(); uint8_t type = tto->isEXTT();
uint8_t posCount = tto->getPositionCount(); uint8_t posCount = tto->getPositionCount();
const FSH *todesc = NULL; const FSH *todesc = NULL;
const FSH *tpdesc = NULL;
#ifdef EXRAIL_ACTIVE #ifdef EXRAIL_ACTIVE
todesc = RMFT2::getTurntableDescription(id); todesc = RMFT2::getTurntableDescription(id);
#endif #endif
if (todesc == NULL) todesc = F(""); if (todesc == NULL) todesc = F("");
StringFormatter::send(stream, F(" %d %d %d %d \"%S\">\n"), id, type, pos, posCount, todesc); StringFormatter::send(stream, F(" %d %d %d %d \"%S\">\n"), id, type, pos, posCount, todesc);
}
}
return;
case HASH_KEYWORD_P: // <JP id> returns turntable position list for the turntable id
if (params==2) { // <JP id>
Turntable *tto=Turntable::get(id);
if (!tto || tto->isHidden()) {
StringFormatter::send(stream, F(" %d X>\n"), id);
} else {
uint8_t posCount = tto->getPositionCount();
const FSH *tpdesc = NULL;
for (uint8_t p = 0; p < posCount; p++) { for (uint8_t p = 0; p < posCount; p++) {
StringFormatter::send(stream, F("jO>")); StringFormatter::send(stream, F("<jP"));
int16_t value = tto->getPositionValue(p); int16_t value = tto->getPositionValue(p);
#ifdef EXRAIL_ACTIVE #ifdef EXRAIL_ACTIVE
tpdesc = RMFT2::getTurntablePositionDescription(id, p); tpdesc = RMFT2::getTurntablePositionDescription(id, p);
#endif #endif
if (tpdesc == NULL) todesc = F(""); if (tpdesc == NULL) tpdesc = F("");
StringFormatter::send(stream, F(" %d \"%S\""), value, tpdesc); StringFormatter::send(stream, F(" %d %d %d \"%S\""), id, p, value, tpdesc);
StringFormatter::send(stream, F(">\n")); StringFormatter::send(stream, F(">\n"));
} }
} }
} else {
StringFormatter::send(stream, F("<jP X>\n"));
} }
return; return;
#endif #endif

View File

@ -30,7 +30,7 @@ include_dir = .
[env] [env]
build_flags = -Wall -Wextra build_flags = -Wall -Wextra
monitor_filters = time ; monitor_filters = time
; lib_deps = adafruit/Adafruit ST7735 and ST7789 Library @ ^1.10.0 ; lib_deps = adafruit/Adafruit ST7735 and ST7789 Library @ ^1.10.0
[env:samd21-dev-usb] [env:samd21-dev-usb]