476 lines
19 KiB
Plaintext
Executable File
476 lines
19 KiB
Plaintext
Executable File
//**********************************************************************
|
||
//*
|
||
//* Includedatei für E-65 INPA
|
||
//*
|
||
//* MO01_INP.SRC für alle Mostkompenenten ab E65
|
||
//*
|
||
//*
|
||
//* ACHTUNG: ||||->Versionsnummer bei s_steuern_3dB_absenkung()
|
||
//* in erster ftextout() eintragen!!!!!!!!!!!!!!!!!!
|
||
//**********************************************************************
|
||
//* History :
|
||
//* 25.09.2000 rg V0.01 Ersterstellung Grundumfang
|
||
//* 17.10.2000 GA V0.02 INPAapiFsMode_neu(0x1FF... -> (0xFF...
|
||
//* 12.12.2000 mm V0.03 WakeUp Screen und Menu hinzugefügt
|
||
//* 16.01.2001 GA V0.04 3dB Absenkung aller Lichtwellenleiter eingefügt
|
||
//* 21.02.2001 GA V0.05 von FS_LESEN/LOESCHEN auf IS_ umgestellt
|
||
//* 05.03.2001 GA V0.06 Umbau s_steuern_3dB_alle: erst an alle -3dB nach-
|
||
//* GA V0.06 einander absetzen, 5Sek. später IS_LESEN
|
||
//* 13.03.2003 fw V0.07 Erweiterung des Ringtestes auf E6X, E8X, E9X
|
||
//* 17.04.2003 fw V0.08 Ruecksprung ins Steuern-Menue (anstatt Hauptmenue)
|
||
//* 16.02.2004 rd V1.00 Umstellung auf 32-Bit Version
|
||
//**********************************************************************
|
||
|
||
// **********************
|
||
// *** Steuernmenü ***
|
||
// *** -3db Absenkung ***
|
||
// **********************
|
||
MENU m_steuern_3dB_absenkung()
|
||
{
|
||
string fehler_file;
|
||
int InputState = 2;
|
||
|
||
INIT {
|
||
setmenutitle("@Steuern@");
|
||
}
|
||
ITEM( 1 ,"@Einzeltest@") {
|
||
viewclose();
|
||
setscreen( s_steuern_3dB_einzel,FALSE); //Nur Absenkung zum nächsten Steuergerät
|
||
}
|
||
ITEM( 2 ,"@Alle@") {
|
||
viewclose();
|
||
setscreen( s_steuern_3dB_alle,FALSE); //Alle Lichtwellenl. werden im Ring einzeln abgesenkt.
|
||
}
|
||
ITEM( 3 ,"") {
|
||
viewclose();
|
||
setscreen( s_steuern_3dB_absenkung,TRUE);
|
||
}
|
||
ITEM( 4 ,"") {
|
||
viewclose();
|
||
setscreen( s_steuern_3dB_absenkung,TRUE);
|
||
}
|
||
ITEM( 5 ,"") {
|
||
viewclose();
|
||
setscreen( s_steuern_3dB_absenkung,TRUE);
|
||
}
|
||
ITEM( 6 ,"") {
|
||
viewclose();
|
||
setscreen( s_steuern_3dB_absenkung,TRUE);
|
||
}
|
||
ITEM( 7 ,"") {
|
||
viewclose();
|
||
setscreen( s_steuern_3dB_absenkung,TRUE);
|
||
}
|
||
ITEM( 8 ,"") {
|
||
viewclose();
|
||
setscreen( s_steuern_3dB_absenkung,TRUE);
|
||
}
|
||
ITEM( 9 ,"@Druck@") {
|
||
printscreen();
|
||
}
|
||
ITEM( 10 ,"@Zurück@") {
|
||
viewclose();
|
||
setscreen( s_steuern ,TRUE);
|
||
setmenu( m_steuern );
|
||
}
|
||
ITEM( 20 ,"@Exit@") {
|
||
viewclose();
|
||
exit();
|
||
}
|
||
}
|
||
|
||
// **************************
|
||
// *** Steuernscreen ***
|
||
// **************************
|
||
SCREEN s_steuern_3dB_absenkung()
|
||
{
|
||
ftextout("@Ansteuern@ @-3dB Absenkung im MOST-Ring@ Version 1.00",1,0,1,0);
|
||
ftextout("",3,0,0,0);
|
||
ftextout("@ACHTUNG: Infospeicher werden zuvor gelöscht!@",4,0,0,5);
|
||
ftextout("< F1 > @Absenkung von diesem zum nächsten Steuergerät@" , 7, 5,0,1);
|
||
ftextout("< F2 > @Absenkung aller Lichtwellenleiter im Ring@" , 9, 5,0,1);
|
||
//ftextout("< F3 > " , 8, 5,0,1);
|
||
//ftextout("< F4 > " ,10, 5,0,1);
|
||
//ftextout("< F5 > " ,12, 5,0,1);
|
||
//ftextout("< F6 > " ,14, 5,0,1);
|
||
//ftextout("< F7 > " ,16, 5,0,1);
|
||
//ftextout("< F8 > ,18, 5,0,1);
|
||
ftextout("< F9 > @Bildschirmdruck@" ,20, 5,0,1);
|
||
ftextout("< F10> @Zurück@" ,22, 5,0,1);
|
||
ftextout("<Shift> + < F10> @Exit@" ,22,45,0,1);
|
||
}
|
||
|
||
// **********************************
|
||
// *** Steuern3dB_AbsenkungScreen ***
|
||
// **********************************
|
||
SCREEN s_steuern_3dB_einzel()
|
||
{
|
||
int err_code;
|
||
string text_var2 = " ";
|
||
|
||
userboxclose(1); // IS loeschen
|
||
viewclose();
|
||
//Temporäre Datei löschen, falls bei Kommunikation was schief lief, somit wird kein alter Infospeicher angezeigt
|
||
filedelete("mo_1.tmp",err_code);
|
||
|
||
INPAapiJob(sgbd,"IS_LOESCHEN","","");
|
||
INPAapiCheckJobStatus("OKAY");
|
||
userboxopen(1,13,20,2,45,"@Status -3 dB Test@","");
|
||
|
||
userboxclear(1);
|
||
INPAapiJob(sgbd,"STATUS_MOST_3DB","","");
|
||
INPAapiCheckJobStatus("OKAY");
|
||
INPAapiResultText(text_var,"STAT_MOST_3DB",1,"");
|
||
userboxftextout(1,text_var,0,0,0,0);
|
||
|
||
|
||
INPAapiJob(sgbd,"STEUERN_MOST_3DB","","");
|
||
INPAapiCheckJobStatus("OKAY");
|
||
INPAapiJob(sgbd,"STATUS_MOST_3DB","","");
|
||
INPAapiCheckJobStatus("OKAY");
|
||
INPAapiResultText(text_var,"STAT_MOST_3DB",1,"");
|
||
delay(3000);
|
||
userboxclear(1);
|
||
userboxftextout(1,text_var,0,0,0,0);
|
||
delay(5000);
|
||
|
||
INPAapiResultText(text_var,"STAT_MOST_3DB",1,"");
|
||
userboxftextout(1,text_var,0,0,0,0);
|
||
delay(1000);
|
||
|
||
|
||
viewclose();
|
||
userboxclear(1);
|
||
userboxftextout(1,"@Der Infospeicher wird gelesen!@ @... bitte warten@",0,0,0,0);
|
||
|
||
INPAapiFsMode_neu(0x1FF,"w","","","IS_LESEN"); // alles Anzeigen
|
||
INPAapiFsLesen_neu(sgbd,"mo_1.tmp");
|
||
|
||
userboxclose(1);
|
||
viewopen("mo_1.tmp","@Infospeicher lesen@");
|
||
}
|
||
|
||
// ***************************************
|
||
// *** Steuern3dB_AbsenkungScreen-Alle ***
|
||
// ***************************************
|
||
//Alle Lichtwellenl. werden im Ring einzeln abgesenkt.
|
||
//SGBDen werden über Gruppendateien angesprochen.
|
||
//Infospeicher wird vorher gelöscht!
|
||
//Status jeder SGBD wird ausgegeben. IS_LESEN einzelner SGBD kann angzeigt werden.
|
||
|
||
SCREEN s_steuern_3dB_alle()
|
||
{
|
||
|
||
string gruppe;
|
||
string sgbd;
|
||
string zahl_text;
|
||
string JOB_STATUS;
|
||
string VARIANTE;
|
||
string status_3db_text;
|
||
string zaehler_text; // Kein Fehler in den SG´s
|
||
string zaehler1_text; // Anzahl gefundener SG's
|
||
string zaehler2_text; // Anzahl der nicht gefundenen SG´s
|
||
string err_txt;
|
||
|
||
int startzeit, stopzeit, laufzeit, minuten, timeout;//in Sekunden
|
||
int err_code;
|
||
int state;
|
||
int SETS;
|
||
int ganz_zahl1;
|
||
int zaehler=0; // Kein Fehler in den SG´s
|
||
int zaehler1=0; // Anzahl gefundener SG's
|
||
int zaehler2=0; // Anzahl der nicht gefundenen SG´s
|
||
int zeile=4; // Startzeile
|
||
int anzahl_sg=15; // Anzahl der Steuergeräte
|
||
|
||
bool fehlerflag;
|
||
string job_status="???";// für Job_Statuskontrolle
|
||
|
||
|
||
//Temporäre Dateien löschen, falls bei Kommunikation was schief lief, somit wird kein alter Infospeicher angezeigt
|
||
filedelete("mo_1.tmp",err_code);
|
||
filedelete("mo_2.tmp",err_code);
|
||
filedelete("mo_3.tmp",err_code);
|
||
filedelete("mo_4.tmp",err_code);
|
||
filedelete("mo_5.tmp",err_code);
|
||
filedelete("mo_6.tmp",err_code);
|
||
filedelete("mo_7.tmp",err_code);
|
||
filedelete("mo_8.tmp",err_code);
|
||
filedelete("mo_9.tmp",err_code);
|
||
filedelete("mo_10.tmp",err_code);
|
||
filedelete("mo_11.tmp",err_code);
|
||
filedelete("mo_12.tmp",err_code);
|
||
filedelete("mo_13.tmp",err_code);
|
||
filedelete("mo_14.tmp",err_code);
|
||
filedelete("mo_15.tmp",err_code);
|
||
filedelete("mo_erg.tmp",err_code);
|
||
|
||
viewclose();
|
||
|
||
fileopen( "mo_erg.tmp", "w");
|
||
ftextout("Most -3 dB Test",0,0,1,1);
|
||
filewrite("Most -3 dB Test");
|
||
filewrite("------------------------------------------------------------------");
|
||
filewrite("");
|
||
fileclose();
|
||
|
||
ganz_zahl = 1;
|
||
while(ganz_zahl <= anzahl_sg)
|
||
{
|
||
|
||
// Reihenfolge muß bei "LINE" wie hier sein. Sonst werden falsche Infospeicher angezeigt
|
||
if (ganz_zahl == 1) gruppe = "D_ASK"; // Audio System Kontroller Kassette, CD, Mini Disc
|
||
else if (ganz_zahl == 2) gruppe = "D_KOMBI"; // Intrumentenkombi
|
||
else if (ganz_zahl == 3) gruppe = "D_MOSTGW"; // MOST/CAN-Gateway (im MMI)
|
||
else if (ganz_zahl == 4) gruppe = "D_CDC"; // Audio CD-Changer
|
||
else if (ganz_zahl == 5) gruppe = "D_ANTTU"; // Antennentuner 1, Antennentuner 2
|
||
else if (ganz_zahl == 6) gruppe = "D_AMP"; // Top HIFI Verstärker
|
||
else if (ganz_zahl == 7) gruppe = "D_SVS"; // Sprachverarbeitungssystem
|
||
else if (ganz_zahl == 8) gruppe = "D_NAV"; // Navigation
|
||
else if (ganz_zahl == 9) gruppe = "D_VIDEO"; // Videomodul
|
||
else if (ganz_zahl == 10) gruppe = "D_MMC"; // Multimedia Changer
|
||
else if (ganz_zahl == 11) gruppe = "D_FBI"; // Flexible Bus Interface (für Japan Telefon und Navj (vom E38))
|
||
else if (ganz_zahl == 12) gruppe = "D_KHI"; // Kopfhöhrer Interface
|
||
else if (ganz_zahl == 13) gruppe = "D_TEL"; // Telefon ECE Variante oder US Variante, fehlt, wenn Japantelefon verbaut
|
||
else if (ganz_zahl == 14) gruppe = "D_HUD"; // Headup Display
|
||
else if (ganz_zahl == 15) gruppe = "D_RADIO"; // Digital radio
|
||
|
||
INPAapiJob(gruppe,"INITIALISIERUNG","",""); // Init.=kürzeste Job
|
||
INP1apiResultText(fehlerflag,sgbd,"VARIANTE",0,""); // SGBD-Namen aus Satz 0 auslesen
|
||
// (Nebeninfo: In allen Jobs wird u.a. VARIANTE mitgeliefert)
|
||
if(sgbd != "")
|
||
{
|
||
INP1apiJob(sgbd,"IS_LOESCHEN","",""); // Nicht rausnehmen! Sonst werden alle SGBD als
|
||
INP1apiJob(sgbd,"STEUERN_MOST_3DB","",""); // 3dB Test ausführen
|
||
INP1apiResultText(fehlerflag,job_status,"JOB_STATUS",1,"");
|
||
|
||
//Nur wenn Test ausgeführt, soll auch Infospeicher gelesen werden.
|
||
//Sicherheitshalber da Buskommunikation nicht immer stabil ist (Nov. 2000)
|
||
//Sonst wäre dies überflüssig!
|
||
if (fehlerflag == FALSE)
|
||
{
|
||
INP1apiErrorText(err_txt);
|
||
zaehler2 = zaehler2+1;
|
||
//zeile = zeile - 2;
|
||
}
|
||
else
|
||
{
|
||
//ACHTUNG: Falls es ein englisches INPA gibt, muß engl. Übersetzung wie in der engl. SGBD sein!
|
||
//Sonst wird die Schleife nur 1 Mal durchgegangen und IO ausgegeben nur weil der Job noch nicht
|
||
//abgearbeitet ist.
|
||
status_3db_text="@Lichtleistung abgesenkt@"; // Most-Status auslesen
|
||
logik_var=FALSE;
|
||
timeout=8;// in Sekunden
|
||
laufzeit=0;
|
||
ftextout(sgbd+" ",zeile,0,0,0);
|
||
ftextout("- - - ",zeile,45,0,0); //Anzeige das noch was kommt, IO/NIO oder ??? für des Tests.
|
||
|
||
gettime(text_var);
|
||
zahl_text="";
|
||
midstr(zahl_text,text_var,3,2);
|
||
stringtoint(zahl_text,minuten);
|
||
minuten = minuten*60;
|
||
midstr(zahl_text,text_var,6,2);
|
||
stringtoint(zahl_text,startzeit);
|
||
startzeit = minuten+startzeit;
|
||
|
||
while((status_3db_text == "@Lichtleistung abgesenkt@") && (logik_var==FALSE)) // Test endet mit "Volle Lichtleistung"
|
||
{
|
||
INP1apiJob(sgbd,"STATUS_MOST_3DB","","");
|
||
INPAapiResultText(status_3db_text,"STAT_MOST_3DB",1,"");
|
||
ftextout(status_3db_text+" ",zeile,25,0,0);
|
||
|
||
gettime(text_var);
|
||
zahl_text="";
|
||
midstr(zahl_text,text_var,3,2); //Minuten auslesen
|
||
stringtoint(zahl_text,minuten);
|
||
minuten = minuten*60;
|
||
midstr(zahl_text,text_var,6,2); //Sekunden auslesen
|
||
stringtoint(zahl_text,stopzeit);
|
||
stopzeit = minuten + stopzeit; //Zeit in Sek.
|
||
|
||
laufzeit = stopzeit - startzeit;
|
||
if ((laufzeit >= timeout) || (timeout <= (-laufzeit))) logik_var=TRUE;
|
||
|
||
inttostring(timeout-laufzeit,zahl_text);
|
||
ftextout(zahl_text+" ",zeile,75,0,0);
|
||
//Zur weiteren Sicherheit damit kein IO (da IS vorher gelöscht) bei NIO kommt:
|
||
//Falls Kommunikation in while nicht klappt und while sofort verlassen wird, erfolt NIO statt IO.
|
||
//Test soll angeblich 5 Sekunde dauern.
|
||
//Infospeichereintrag erfolgt, wenn Status wieder "Volle Lichtleistung" ausgibt.
|
||
}
|
||
|
||
if (logik_var==TRUE) ftextout("@Timeout-Abbruch@ ",zeile,25,0,0);
|
||
ftextout(" ",zeile,75,0,0); //Abgelaufene Zeit wieder löschen
|
||
|
||
delay(2000); // Für sicheren IS-Eintrag (Vorschlag S.Heckmann)
|
||
|
||
INP1apiResultText(fehlerflag,job_status,"JOB_STATUS",1,"");
|
||
//Nachträglich eingebaut, da manche SGBDen nicht auf aktuellen Stand sind und somit Fehler produzieren.
|
||
if (fehlerflag == FALSE)
|
||
{
|
||
ftextout("??? ",zeile,45,0,0);
|
||
fileopen( "mo_erg.tmp", "a");
|
||
filewrite(sgbd+": ???");
|
||
filewrite("");
|
||
fileclose();
|
||
}
|
||
else
|
||
{
|
||
zaehler1 = zaehler1 + 1;
|
||
INP1apiJob(sgbd,"IS_LESEN","",""); // Erst lesen, wenn "Volle Lichtleistung"
|
||
// nach test ausgelesen wurde.
|
||
INPAapiResultSets(SETS); // Anzahl der Sätze auslesen
|
||
INPAapiResultText(JOB_STATUS,"JOB_STATUS",SETS,""); // JOB_STATUS steht im letzten Satz!
|
||
|
||
INPAapiFsMode_neu(0x1FF,"w","","","IS_LESEN"); // IS_LESEN konfigurieren, w=alles Anzeigen
|
||
inttostring(ganz_zahl1,zahl_text);
|
||
INPAapiFsLesen_neu(sgbd,"mo_"+zahl_text+".tmp"); // Infospeicher lesen und abspeichern
|
||
if (SETS == 1) // nur ein Satz: Kein Fehler!
|
||
{ // ACHTUNG: Wegen TEL_ECE,TEL_US werden die
|
||
ftextout("@IO@ ",zeile,45,0,0); // Dateien durchnummeriert
|
||
fileopen( "mo_erg.tmp", "a");
|
||
filewrite(sgbd+": @IO@");
|
||
filewrite("");
|
||
fileclose();
|
||
}
|
||
else
|
||
{
|
||
zaehler = zaehler+1;
|
||
ftextout("@NIO@ ",zeile,45,0,0);
|
||
fileopen( "mo_erg.tmp", "a");
|
||
filewrite(sgbd+": @NIO@");
|
||
filewrite("");
|
||
fileclose();
|
||
}
|
||
}
|
||
|
||
ganz_zahl1 = ganz_zahl1+1;
|
||
}//fehlerflag == FALSE
|
||
}//sgbd != ""
|
||
else
|
||
{
|
||
zaehler2 = zaehler2+1;
|
||
//zeile = zeile - 2;
|
||
}
|
||
ganz_zahl = ganz_zahl+1;
|
||
inttostring(zaehler, zaehler_text);
|
||
inttostring(zaehler1, zaehler1_text);
|
||
//inttostring(zaehler2, zaehler2_text);
|
||
ftextout(zaehler_text+" @Fehler@", 28,52,0,0);
|
||
//ftextout(zaehler2_text+" @SG´s nicht gefunden@ ", 28,60,0,0);
|
||
//zeile = zeile+2;
|
||
}
|
||
if (zaehler1 == 0)
|
||
{
|
||
ftextout("@SG´s nicht gefunden@", 28,52,0,0);
|
||
fileopen( "mo_erg.tmp", "a");
|
||
filewrite("@SG´s nicht gefunden@");
|
||
fileclose();
|
||
}
|
||
else
|
||
{
|
||
fileopen( "mo_erg.tmp", "a");
|
||
filewrite(zaehler_text+" @Fehler@");
|
||
fileclose();
|
||
}
|
||
|
||
fileclose();
|
||
viewopen("mo_erg.tmp","Most -3 dB Test");
|
||
|
||
LINE("D_ASK" , "mo_1.tmp" ) {}
|
||
|
||
LINE("D_KOMBI" , "mo_2.tmp" ) {}
|
||
|
||
LINE("D_MOSTGW" , "mo_3.tmp" ) {}
|
||
|
||
LINE("D_CDC" , "mo_4.tmp" ) {}
|
||
|
||
LINE("D_ANTTU" , "mo_5.tmp" ) {}
|
||
|
||
LINE("D_AMP" , "mo_6.tmp" ) {}
|
||
|
||
LINE("D_SVS" , "mo_7.tmp" ) {}
|
||
|
||
LINE("D_NAV" , "mo_8.tmp" ) {}
|
||
|
||
LINE("D_VIDEO" , "mo_9.tmp" ) {}
|
||
|
||
LINE("D_MMC" , "mo_10.tmp" ) {}
|
||
|
||
LINE("D_FBI" , "mo_11.tmp" ) {}
|
||
|
||
LINE("D_KHI" , "mo_12.tmp" ) {}
|
||
|
||
LINE("D_TEL" , "mo_13.tmp" ) {}
|
||
|
||
LINE("D_HUD" , "mo_14.tmp" ) {}
|
||
|
||
LINE("D_RADIO" , "mo_13.tmp" ) {}
|
||
|
||
}
|
||
// ACHTUNG: Wegen VID, VIDJ und TEL_ECE, TEL_US werden die Dateien durchnummeriert.
|
||
|
||
|
||
// *********************************************
|
||
// *** Screen: Steuern des Most WakeUp Modus ***
|
||
// *********************************************
|
||
SCREEN s_steuern_wakeup_ability()
|
||
{
|
||
ftextout("@Ansteuerung@ @Most@ WakeUp-@Funktion@",1,0,1,0);
|
||
ftextout("",3,0,0,0);
|
||
|
||
LINE("@Most@ WakeUp-@Modus@","")
|
||
{
|
||
INPAapiJob(sgbd,"STATUS_ABILITY_TO_WAKE","","");
|
||
INPAapiCheckJobStatus("OKAY");
|
||
INPAapiResultText(text_var,"STAT_ABILITY_TO_WAKE",1,"");
|
||
ftextout("WakeUp @Funktion@: "+text_var,3,0,1,0);
|
||
}
|
||
}
|
||
|
||
// ********************************
|
||
// *** Steuernmenü WakeUp Modus ***
|
||
// ********************************
|
||
MENU m_steuern_wakeup_ability()
|
||
{
|
||
INIT
|
||
{
|
||
setmenutitle("@Steuern@ WakeUp-@Modus@");
|
||
}
|
||
ITEM( 1 ,"@Modus@")
|
||
{
|
||
inputdigital(logik_var,"WakeUp @Modus@","@Modus@:","OFF","ON");
|
||
getinputstate(input_state);
|
||
if (input_state==0)
|
||
{
|
||
if (logik_var==FALSE) // Modus: OFF
|
||
{
|
||
INPAapiJob(sgbd,"STEUERN_ABILITY_TO_WAKE","off","");
|
||
INPAapiCheckJobStatus("OKAY");
|
||
}
|
||
else // Modus: ON
|
||
{
|
||
INPAapiJob(sgbd,"STEUERN_ABILITY_TO_WAKE","on","");
|
||
INPAapiCheckJobStatus("OKAY");
|
||
}
|
||
}
|
||
}
|
||
ITEM( 9 ,"@Druck@")
|
||
{
|
||
printscreen();
|
||
}
|
||
ITEM( 10 ,"@Zurück@")
|
||
{
|
||
viewclose();
|
||
setscreen( s_steuern ,TRUE);
|
||
setmenu( m_steuern );
|
||
}
|
||
ITEM( 20 ,"@Exit@")
|
||
{
|
||
viewclose();
|
||
exit();
|
||
}
|
||
}
|
||
// -- EOF --
|