Freitag, 20. Januar 2012

yab - FireWire- Schnittstelle erkennen

Das neue Jahr hat begonnen und ich möchte Euch gleich zu Beginn ein klein wenig mehr Quelltext schenken. Da Haiku ja auch die FireWire- Schnittstelle unterstützt, möchte ich Euch heute zeigen wie man erkennen kann ob eine solche Schnittstelle im System vorhanden ist bzw. ob diese auch von Haiku erkannt wurde.
Um dies zu erledigen, benutzen wir den Kommandozeilen. Befehl "fwcontrol". Dieser gibt Auskunft darüber ob eine FireWire- Schnittstelle im System vorhanden ist bzw. unterstützt wird.

Gibt man nun im "Terminal" den Befehl "fwcontrol" ein, erhält man bei vorhandener FireWire- Schnittstelle folgende Ausgabe.




Es ist deutlich zu erkennen das hier eine FireWire- Schnittstelle gefunden wurde ("1 devices"). Ebenso wird der "extended unique identifier" (EUI64) im 64- bit- Format ausgegeben.

Ist keine FireWire- Schnittstelle im System vorhanden oder wird diese nicht unterstützt, sieht die Ausgabe wie folgt aus.




Mit Hilfe dieser Informationen kann das Vorhandensein der genannten Schnittstelle recht gut unterschieden bzw. nachgewiesen werden. Die verschiedenen Kommentare innerhalb des Quelltextes sollten die verschiedenen Schritte ausreichend dokumentieren.


export sub _GetFireWire()

  // lokale Variablen Definition
  local SystemInfo$
  local NumberOfTokens
  local FireWireCount

  dim Line$(1)

  // den Befehl "fwcontrol" aufrufen und Ergebnis in
  // SystemInfo$ speichern
  SystemInfo$ = system$("fwcontrol")

  // Prüfen ob SystemInfo$ Daten enthält ...
  if SystemInfo$ <> "" then

    // ... wenn ja,
    // das Ergebnis in einzelne Zeilen zerlegen
    NumberOfTokens = split(SystemInfo$, Line$(), "\n")

    // in der ersten Zeile nach dem String "devices"
    // suchen
    if instr(Line$(1), "devices") then

      // wenn in der ersten Zeile der String "devices"
      // enthalten ist, SystemInfo$ nach Leerzeichen
      // neu zerlegen
      NumberOfTokens = split(SystemInfo$, Line$(), " ")

      // an der ersten Stelle steht nun die Anzahl der
      // im System vorhandenen FireWire- Schnittstellen
      FireWireCount = val(Line$(1))

    else

      // wenn der String "devices" nicht in der ersten
      // Zeile vohanden ist, ist entweder keine FireWire-
      // Schnittstelle vorhanden oder sie wird nicht
      // unterstützt
      FireWireCount = 0

    end if

  else

    // ... wenn nein,
    // dann keine FireWire- Schnittstelle(n) verfügbar
    FireWireCount = 0

  end if

  // Ergebnis zurückgeben
  return FireWireCount
 
end sub


Der Aufruf der Sub- Routine kann dann z.B. in folgender Form geschehen.


FW = _GetFireWire()
print "Anzahl der FireWire- Schnittstellen im System: ", FW


Als Ergebnis wird entweder "0", wenn keine FireWire- Schnittstelle vorhanden ist, oder die Anzahl der vorhandenen FireWire- Schnittstellen zurückgegeben.


(getestet mit Haiku R1 Alpha 3 und yab 1.5)

Keine Kommentare:

Kommentar veröffentlichen