MaJaProL:LED Algorithmus

Aus II-Wiki
(Weitergeleitet von MaJaProL:Server)
Wechseln zu: Navigation, Suche

Belegungsvektor = Vektor pro Client, welche LEDs setzbar sind.

Statusvektor = Vektor pro Client, welche LEDs grade an sein sollen

Prioritätenverwaltung

Da jeder Client sich seine Belegung der LEDs selbst aussuchen kann, kann es zu Überschneidungen kommen. Um dann noch entscheiden zu können, ob die LED nun an oder aus gehört, werden Prioritäten eingeführt.

Die Prioritäten werden durch die Reihenfolge der Clients in einem Vektor/Array bestimmt.

Um aus den initialen Belegungsvektoren die aktuell gültigen zu berechnen, genügt folgender Algorithmus:

for(int i = MAX_INDEX; i >= 0; i--) {
   zZbelegung[i] = initialbelegung[i];
   for(int j = i - 1; j >= 0; j--) {
      zZbelegung[i] = ~initialbelegung[j] & zZbelegung[i];
   }
}

Wer's nicht glaubt, fragt mich. Ich erklär das nochmal.

-Peddersen

aktuelle Ausgangsbelegung

Die aktuelle Ausgangsbelegung ergibt sich aus den aktuellen Belegungsvektoren und den aktuellen Statusvektoren.

Der Algorithmus dazu:

ausgangsbelegung=0;
for(int i = 0; i <= MAX_INDEX; i++) {
      ausgangsbelegung = ausgangsbelegung | (zZbelegung[i] & zZstatus[i]);
}