'############################## 'Lumiplan PILOT IBIS Controller '############################## 'Lumiplan PILOT IBIS Controller. ' 27.11.2020 Fourkane Mhoma (TheFMrr) 'Script version: 0.1 'Omsi release: 2.3.004 'Needs: '- elec '- IBIS vars (TerminusCode, TerminusIndex, LinieKurs...) '- Matrix (Krueger++ ready, untested on other systems) 'Revision History: '- Fourkane Mhoma 27.11.2020 Created, early wip version '- Fourkane Mhoma 20.12.2020 Added piep sound, mapped left arrow to correct the input, improved NoData mode, improved input mode '- Fourkane Mhoma 23.07.2021 Began the SpecialTerminusCode implementation + multi-page display support ' rajouter les drivermenu ' faire la font ' '-------------------------------------------------------------------------------- '---------------------- ' Trigger '---------------------- {trigger:IBIS_1} (L.L.LumIBIS2_mode) {if} 1 (S.L.LumIBIS2_IsAwake) 1 (M.L.LumIBIS2_Zahlentasten) 0 (S.L.LumIBIS2_GoToSleep_timer) (T.L.ev_IBIS_piep) {endif} {end} {trigger:IBIS_2} (L.L.LumIBIS2_mode) {if} 1 (S.L.LumIBIS2_IsAwake) 2 (M.L.LumIBIS2_Zahlentasten) 0 (S.L.LumIBIS2_GoToSleep_timer) (T.L.ev_IBIS_piep) {endif} {end} {trigger:IBIS_3} (L.L.LumIBIS2_mode) {if} 1 (S.L.LumIBIS2_IsAwake) 3 (M.L.LumIBIS2_Zahlentasten) 0 (S.L.LumIBIS2_GoToSleep_timer) (T.L.ev_IBIS_piep) {endif} {end} {trigger:IBIS_4} (L.L.LumIBIS2_mode) {if} 1 (S.L.LumIBIS2_IsAwake) 4 (M.L.LumIBIS2_Zahlentasten) 0 (S.L.LumIBIS2_GoToSleep_timer) (T.L.ev_IBIS_piep) {endif} {end} {trigger:IBIS_5} (L.L.LumIBIS2_mode) {if} 1 (S.L.LumIBIS2_IsAwake) 5 (M.L.LumIBIS2_Zahlentasten) 0 (S.L.LumIBIS2_GoToSleep_timer) (T.L.ev_IBIS_piep) {endif} {end} {trigger:IBIS_6} (L.L.LumIBIS2_mode) {if} 1 (S.L.LumIBIS2_IsAwake) 6 (M.L.LumIBIS2_Zahlentasten) 0 (S.L.LumIBIS2_GoToSleep_timer) (T.L.ev_IBIS_piep) {endif} {end} {trigger:IBIS_7} (L.L.LumIBIS2_mode) {if} 1 (S.L.LumIBIS2_IsAwake) 7 (M.L.LumIBIS2_Zahlentasten) 0 (S.L.LumIBIS2_GoToSleep_timer) (T.L.ev_IBIS_piep) {endif} {end} {trigger:IBIS_8} (L.L.LumIBIS2_mode) {if} 1 (S.L.LumIBIS2_IsAwake) 8 (M.L.LumIBIS2_Zahlentasten) 0 (S.L.LumIBIS2_GoToSleep_timer) (T.L.ev_IBIS_piep) {endif} {end} {trigger:IBIS_9} (L.L.LumIBIS2_mode) {if} 1 (S.L.LumIBIS2_IsAwake) 9 (M.L.LumIBIS2_Zahlentasten) 0 (S.L.LumIBIS2_GoToSleep_timer) (T.L.ev_IBIS_piep) {endif} {end} {trigger:IBIS_0} (L.L.LumIBIS2_mode) {if} 1 (S.L.LumIBIS2_IsAwake) 0 (M.L.LumIBIS2_Zahlentasten) 0 (S.L.LumIBIS2_GoToSleep_timer) (T.L.ev_IBIS_piep) {endif} {end} {trigger:IBIS_eingabe} (L.L.LumIBIS2_mode) {if} 1 (S.L.LumIBIS2_IsAwake) 10 (M.L.LumIBIS2_Zahlentasten) 0 (S.L.LumIBIS2_GoToSleep_timer) (T.L.ev_IBIS_piep) {endif} {end} {trigger:LumIBIS2_Up} (L.L.LumIBIS2_mode) {if} 1 (S.L.LumIBIS2_IsAwake) 11 (M.L.LumIBIS2_Zahlentasten) 0 (S.L.LumIBIS2_GoToSleep_timer) (T.L.ev_IBIS_piep) {endif} {end} {trigger:LumIBIS2_Down} (L.L.LumIBIS2_mode) {if} 1 (S.L.LumIBIS2_IsAwake) 12 (M.L.LumIBIS2_Zahlentasten) 0 (S.L.LumIBIS2_GoToSleep_timer) (T.L.ev_IBIS_piep) {endif} {end} {trigger:LumIBIS2_Left} (L.L.LumIBIS2_mode) {if} 1 (S.L.LumIBIS2_IsAwake) 13 (M.L.LumIBIS2_Zahlentasten) 0 (S.L.LumIBIS2_GoToSleep_timer) (T.L.ev_IBIS_piep) {endif} {end} {trigger:LumIBIS2_Right} (L.L.LumIBIS2_mode) {if} 1 (S.L.LumIBIS2_IsAwake) 14 (M.L.LumIBIS2_Zahlentasten) 0 (S.L.LumIBIS2_GoToSleep_timer) (T.L.ev_IBIS_piep) {endif} {end} {trigger:LumIBIS2_Dummy} 1 (S.L.LumIBIS2_IsAwake) 0 (S.L.LumIBIS2_GoToSleep_timer) (T.L.ev_IBIS_piep) {end} '---------------------- ' Init '---------------------- {macro:LumIBIS2_init} 901 (S.L.LumIBIS2_SpecialTerminusCode) {end} '---------------------- ' Frame '---------------------- {macro:LumIBIS2_frame} (L.L.elec_busbar_main) (C.L.elec_busbar_minV) > {if} ' ** BEFORE : "IBIS" PART AND OTHERS ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************* ' ---------------- ' Anfangsmelodie (L.L.IBIS_energy_last) ! {if} (T.L.ev_IBIS-startupsound) {endif} ' ---------------- ' Omsi sagen, dass die Strings-Ausgaben aktualisiert werden sollen: 1 (S.L.Refresh_Strings) ' ---------------- ' Date / Hour (L.S.Time) 3600 / s0 trunc s1 "02" $IntToStrEnh ":" $+ l0 l1 - 60 * trunc "02" $IntToStrEnh $+ (S.$.LumIBIS2_Hour) (L.S.Day) "02" $IntToStrEnh "/" $+ (L.S.Month) "02" $IntToStrEnh $+ "/" $+ (L.S.Year) $IntToStr $+ (S.$.LumIBIS2_Date) ' ---------------- ' Startup: (L.L.LumIBIS2_mode) ! {if} "LumIBIS2\LumIBIS2_startuplogo.dds" (S.$.LumIBIS2) 1 (S.L.LumIBIS2_IsAwake) (L.S.GetTime) (L.L.LumIBIS2_Startup_timer) - 1 > {if} 1 (L.L.LumIBIS2_NoData) 10 * + (S.L.LumIBIS2_mode) {endif} {endif} ' ---------------- ' Inactivity timer (L.L.LumIBIS2_mode) (L.L.LumIBIS2_IsAwake) && {if} (L.L.LumIBIS2_GoToSleep_timer) (L.S.Timegap) + (S.L.LumIBIS2_GoToSleep_timer) 5 >= {if} 1 (S.L.LumIBIS2_mode) "" (S.$.LumIBIS2_input) 0 (S.L.LumIBIS2_IsAwake) (S.L.LumIBIS2_GoToSleep_timer) {endif} {endif} ' ---------------- ' When there's no HOF file (L.$.Yard) $length ! (S.L.LumIBIS2_NoData) (L.L.LumIBIS2_mode) && {if} 11 (S.L.LumIBIS2_mode) {endif} ' ---------------- ' DEBUG (L.L.LumIBIS2_Mode) 2 = (L.L.LumIBIS2_Mode) 1 = || (L.L.LumIBIS2_Mode) trunc 4 = || (S.L.LumIBIS2_MS_Strings_visible) ' ** LumIBIS2 MODES ************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** ' LumIBIS-Modi: ' 0: Off ' 1: MainSceen ' 2: Keypad input mode (LLLZZZ) ' 2.1: Arrows Keypad input mode (LLLZZZ) (WiP) ' 4: Second message input (WiP) ' 6: Help (WiP) ' 10: Menu (WiP) ' 11: NoData (L.L.LumIBIS2_mode) 1 = {if} "LumIBIS2\LumIBIS2_MainScreen.dds" (S.$.LumIBIS2) {endif} (L.L.LumIBIS2_mode) 2 = {if} "LumIBIS2\LumIBIS2_ChangeDirection_input_ByKeypad.dds" (S.$.LumIBIS2) {endif} (L.L.LumIBIS2_mode) 2.1 = {if} "LumIBIS2\LumIBIS2_ChangeDirection_input_ByArrowAndKeypad.dds" (S.$.LumIBIS2) {endif} (L.L.LumIBIS2_mode) 3 = {if} "LumIBIS2\LumIBIS2_ChangeDirection_Confirm.dds" (S.$.LumIBIS2) {endif} (L.L.LumIBIS2_mode) 4 = {if} "LumIBIS2\LumIBIS2_SecondMessage_input_ByArrow.dds" (S.$.LumIBIS2) {endif} (L.L.LumIBIS2_mode) 4.1 = {if} "LumIBIS2\LumIBIS2_SecondMessage_input_ByKeypad.dds" (S.$.LumIBIS2) {endif} (L.L.LumIBIS2_mode) 6 = {if} "LumIBIS2\LumIBIS2_Help.dds" (S.$.LumIBIS2) {endif} (L.L.LumIBIS2_mode) 10 = {if} "LumIBIS2\LumIBIS2_DriverMenu_" (L.L.LumIBIS2_DriverMenu_Select) $IntToStr $+ ".dds" $+ (S.$.LumIBIS2) {else} 0 (S.L.LumIBIS2_DriverMenu_Select) {endif} (L.L.LumIBIS2_mode) 11 = {if} "LumIBIS2\LumIBIS2_NoData.dds" (S.$.LumIBIS2) {endif} ' DEBUG (L.L.LumIBIS2_mode) 1 = {if} "L" (L.L.IBIS_LinieKurs) "03" $IntToStrEnh $+ "D" $+ (L.L.IBIS_TerminusCode) "03" $IntToStrEnh $+ {else} (L.$.LumIBIS2_input) {endif} (S.$.LumIBIS2_MS_CodeString) ' > Show the next display (on multi-page displays) (L.L.IBIS_sicma_TerminusIndex) (M.V.GetTerminusCode) (L.L.LumIBIS2_SpecialTerminusCode) = {if} (L.L.target_index_int) (M.V.GetTerminusCode) s0 1000 >= {if} l0 1000 % (M.V.GetTerminusIndex) 5 (M.V.GetTerminusString) {else} l0 (M.V.GetTerminusIndex) 5 (M.V.GetTerminusString) {endif} {else} (L.L.IBIS_sicma_TerminusIndex) (M.V.GetTerminusCode) s1 1000 + (M.V.GetTerminusIndex) s0 0 >= l1 (M.V.GetTerminusIndex) 5 (M.V.GetTerminusString) l1 1000 + (M.V.GetTerminusIndex) 5 (M.V.GetTerminusString) $= ! && {if} l0 5 (M.V.GetTerminusString) {else} (L.L.LumIBIS2_SpecialTerminusCode) s0 l0 (M.V.GetTerminusIndex) 0 >= && {if} l0 (M.V.GetTerminusIndex) 5 (M.V.GetTerminusString) {else} (L.L.IBIS_sicma_TerminusIndex) (M.V.GetTerminusCode) s0 1000 >= {if} l0 1000 % (M.V.GetTerminusIndex) 5 (M.V.GetTerminusString) {else} (L.$.LumIBIS2_Date) {endif} {endif} {endif} {endif} (S.$.LumIBIS2_MS_MultiPageString) ' (L.L.IBIS_sicma_TerminusIndex) (M.V.GetTerminusCode) 1000 + (M.V.GetTerminusIndex) s0 0 >= ' {if} ' l0 5 (M.V.GetTerminusString) ' {else} ' (L.L.IBIS_sicma_TerminusIndex) (M.V.GetTerminusCode) s0 1000 >= l0 1000 + (M.V.GetTerminusIndex) 0 >= ! && ' {if} ' (L.L.IBIS_sicma_TerminusIndex) (M.V.GetTerminusCode) 1000 % (M.V.GetTerminusIndex) 5 (M.V.GetTerminusString) ' {else} ' (L.L.LumIBIS2_SpecialTerminusCode) s0 ' {if} ' l0 (M.V.GetTerminusIndex) 5 (M.V.GetTerminusString) ' {else} ' (L.L.IBIS_sicma_TerminusIndex) (M.V.GetTerminusCode) (L.L.LumIBIS2_SpecialTerminusCode) = ' {if} ' (L.L.IBIS_TerminusCode) (M.V.GetTerminusIndex) 5 (M.V.GetTerminusString) ' {else} ' (L.$.LumIBIS2_Date) ' {endif} ' {endif} ' {endif} ' {endif} ' (S.$.LumIBIS2_MS_MultiPageString) ' (L.L.LumIBIS2_DstError) {if} "DEST. INCONNUE" {else} ' (L.L.IBIS_TerminusCode) ! {if} "GIR. NOIRE" {else} ' (L.L.IBIS_sicma_TerminusIndex) 5 (M.V.GetTerminusString) {endif} {endif} ' (S.$.LumIBIS2_MS_TargetString) (L.L.LumIBIS2_DstError) {if} 1 (M.L.LumIBIS2_GetMultiLanguageString) {else} (L.L.IBIS_TerminusCode) ! {if} 2 (M.L.LumIBIS2_GetMultiLanguageString) {else} (L.L.IBIS_sicma_TerminusIndex) 5 (M.V.GetTerminusString) {endif} {endif} (S.$.LumIBIS2_MS_TargetString) {else} (L.S.GetTime) (S.L.LumIBIS2_Startup_timer) 0 (S.L.LumIBIS2_mode) (S.L.LumIBIS2_IsAwake) (S.L.LumIBIS2_GoToSleep_timer) "" (S.$.LumIBIS2_MS_CodeString) (S.$.LumIBIS2_MS_MultiPageString) (S.$.LumIBIS2_MS_TargetString) "LumIBIS2\LumIBIS2_off.dds" (S.$.LumIBIS2) {endif} ' ---------------- ' Last energy: (L.L.elec_busbar_main) (C.L.elec_busbar_minV) > (S.L.IBIS_energy_last) ' ---------------- {end} '---------------------- ' Macros '---------------------- {macro:LumIBIS2_Zahlentasten} s0 ' Numbers l0 10 < (L.L.LumIBIS2_NoData) ! && {if} ' Input (L.L.LumIBIS2_mode) s1 1 = l1 2 = || (L.$.LumIBIS2_input) $length 8 < && {if} 2 (S.L.LumIBIS2_mode) (L.$.LumIBIS2_input) $length 0 = {if} "L" $+ (S.$.LumIBIS2_input) {endif} (L.$.LumIBIS2_input) $length 3 = s1 (L.$.LumIBIS2_input) l0 $IntToStr $+ l1 {if} "D" $+ {endif} (S.$.LumIBIS2_input) {else} (L.L.LumIBIS2_mode) trunc 4 = (L.$.LumIBIS2_input) $length 3 < && {if} 4.1 (S.L.LumIBIS2_mode) (L.$.LumIBIS2_input) l0 $IntToStr $+ (S.$.LumIBIS2_input) {else} (L.L.LumIBIS2_mode) 10 = {if} (L.L.LumIBIS2_DriverMenu_Select) 3 = {if} {endif} {endif} {endif} {endif} {endif} ' Valid l0 10 = (L.L.LumIBIS2_NoData) ! && {if} (L.L.LumIBIS2_mode) 2 = {if} (L.$.LumIBIS2_input) $length s1 {if} (L.$.LumIBIS2_input) 4 $SetLengthL 1 $cutBegin $RemoveSpaces $StrToFloat (S.L.IBIS_LinieKurs) 100 * (S.L.IBIS_sicma_Linie_Complex) 0 (S.L.IBIS_sicma_Linie_Suffix) l1 5 > {if} (L.$.LumIBIS2_input) 5 $cutBegin $RemoveSpaces $StrToFloat s2 (M.V.GetTerminusIndex) 0 >= {if} l2 (S.L.IBIS_TerminusCode) (M.V.GetTerminusIndex) (S.L.IBIS_sicma_TerminusIndex) 0 (S.L.LumIBIS2_DstError) {else} 0 (S.L.IBIS_sicma_TerminusIndex) (M.V.GetTerminusCode) (S.L.IBIS_TerminusCode) 1 (S.L.LumIBIS2_DstError) {endif} {endif} {endif} 1 (S.L.LumIBIS2_mode) "" (S.$.LumIBIS2_input) {else} (L.L.LumIBIS2_mode) s0 6 = l0 trunc 4 = || {if} l0 trunc 4 = {if} (L.$.LumIBIS2_input) s0 $length && {if} l0 $StrToFloat {else} 0 {endif} (S.L.LumIBIS2_SpecialTerminusCode) {endif} 1 (S.L.LumIBIS2_mode) "" (S.$.LumIBIS2_input) {endif} {endif} {endif} ' Up Arrow l0 11 = (L.L.LumiBIS2_NoData) ! && {if} (L.L.LumIBIS2_mode) 10 = {if} (L.L.LumIBIS2_DriverMenu_Select) 1 + 3 min (S.L.LumIBIS2_DriverMenu_Select) {endif} {endif} ' Down Arrow l0 12 = (L.L.LumiBIS2_NoData) ! && {if} (L.L.LumIBIS2_mode) 10 = {if} (L.L.LumIBIS2_DriverMenu_Select) 1 - 0 max (S.L.LumIBIS2_DriverMenu_Select) {endif} {endif} ' Left Arrow l0 13 = (L.L.LumiBIS2_NoData) ! && {if} (L.L.LumIBIS2_mode) 1 = {if} 6 (S.L.LumIBIS2_mode) {else} (L.L.LumIBIS2_mode) 2 = {if} (L.$.LumIBIS2_input) $length s1 1 > {if} 1 l1 5 = + $cutEnd (S.$.LumIBIS2_input) {endif} l1 1 = {if} 1 (S.L.LumIBIS2_mode) "" (S.$.LumIBIS2_input) {endif} {endif} {endif} {endif} {end} {macro:LumIBIS2_GetMultiLanguageString} s0 (C.L.LumIBIS2_language) s1 "" l0 1 = {if} l1 1 = {if} "FALSCHES ZIEL" {else} l1 2 = {if} "UNKNOWN TARGET" {else} "DEST. INCONNUE" {endif} {endif} {endif} l0 2 = {if} l1 1 = {if} "Leer-Matrix" {else} l1 2 = {if} "BLANK MATRIX" {else} "GIR. NOIRE" {endif} {endif} {endif} {end}