Hi Sebastian
(Sorry etwas ausführlich und lang... Wills nur Sauber beschreiben)
Womöglich kein Bug aber ein kleiner Schönheitsfehler der zu Problemen führen kann, da die Logik etwas "kompliziert" rüberkommt.
*********
Liest man einen Byte Offset aus wird ja bekanntlich der Dezimal Value angezeigt ( FSUIPC Wert ... Von Compare und Ausgabewert reden wir jetzt mal nicht)
Liest man aber einen Bitmask Offset aus ( z.b. Bit 4 ) und ist dieser an (0001 0000)
Dann hat AUCH diese Configline einen Value der dem eines ganzen Byte entspricht ... In diesen Fall 16 . Somit Bitstatus 0 = Value 0 Bitstatus 1 = Value 16
Habe auch überprüft was passiert wenn man 2 Bits gleichzeitig
mit 2 verschiedenen Configs ausliest.... z.b. Bit 4 und 5 .....
Hier hat die Config für Bit 4 den Value 16 (Wie Oben beschrieben)..... Die Config von Bit 5 hat folgerichtig dann den Value 32.
Liest man zusätzlich den ganzen Byte ( 0011 0000 ) Dann ist der Wert 48 Was stimmt...
Somit steht bis hier fest Mobi arbeitet ansich richtig..... Die Bitmask Offsets arbeiten "Unabhängig" vom restlichen Byte.
Er Zeigt zwar den Wert an wie wenn es ein Byte wäre... Aber spezifisch in jeder Config unabhängig vom "echten " Byte den wir gerade zerstückeln.
Rein Logisch sollte der Wert eines Bit Mask Reads aber doch besser 1 oder 0 sein oder ??
Ansich eigentlich kein Problem aber im weiteren verlauf ergeben sich ein paar unpraktische Situation dadurch.
1. Input Bitmask.
Will ich mit einen Schalter den Wert eines BITs ändern MUSS dieses in Mobiflight mit 1 oder 0 geschehen. Also obwohl Der Wert der Config z.b. wie oben bei Bit 4 Von 0 auf 16 wechselt muss der Input 0/1 sein..... Versucht man "16" als Value zu senden dann kommt zwar KEINE Fehlermeldung aber er sendet nur "0" ( Offenbar weil 16 nicht möglich ist)
(( Womöglich ein teil des Problems von Avidflyer
https://www.mobiflight.com/forum/topic/514.html ))
2. IF ELSE als Value in Inputs.
Da ja für die IF Condition der Output Value genommen wird ergibt sich ein etwas kurioses Problem.
IF($=0,1,0) Funktioniert ( Wenn Wert 0 dann sende 1, sonst (Wert wäre dann 16 bei Bit4) sende 0
Verwendet man aber umgekehrt IF($=1,0,1) was bei Bytes Boolean ja auch geht hat man hier ein Problem da es den Wert "1" nicht gibt Hier müsste man dann sagen IF($=16,0,1) oder pauschal IF($>0,0,1)
Auch hier für einen Laien etwas strange.... Ein Bit ist ja ebenfalls technisch gesehen Boolean wie auch ein Byte Boolean Offset !
3. Output Wert als Precondition.
Auch hier reicht es nicht wie bei anderen Boolean Werten schlicht "Wenn X=1" zu verwenden, da ja der Wert je nach Bit 1,2,4,8,16,32 usw ist.
Natürlich kann man auch hier pauschal "Größer 0" oder den spezifischen Wert (z.b. 16) verwenden oder schlicht in den Outputs selbst einen Compare ala "Wenn 0 Dann 0 Sonst 1" verwenden.... Aber ebenfalls für den Laien etwas undurchsichtig.
*****
Fazit:
Falls das ganze keinen zu großen Aufwand macht und du darin einen praktischen Nutzen siehst würde ich vorschlagen hier den Code zu ändern.
Sollte das gewollt sein wäre ich dankbar für ne kurze erklärung.
Danke !