bmw-advanced-tools/app/EC-APPS/INPA/SGDAT/MO01_INP.SRC

476 lines
19 KiB
Plaintext
Raw Normal View History

2021-09-18 17:45:57 +02:00
//**********************************************************************
//*
//* 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<65>gt
//* 16.01.2001 GA V0.04 3dB Absenkung aller Lichtwellenleiter eingef<65>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<73>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<65> ***
// *** -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<65>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<75>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<65>scht!@",4,0,0,5);
ftextout("< F1 > @Absenkung von diesem zum n<>chsten Steuerger<65>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<75>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<6F>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 <20>ber Gruppendateien angesprochen.
//Infospeicher wird vorher gel<65>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<53>s
string zaehler1_text; // Anzahl gefundener SG's
string zaehler2_text; // Anzahl der nicht gefundenen SG<53>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<53>s
int zaehler1=0; // Anzahl gefundener SG's
int zaehler2=0; // Anzahl der nicht gefundenen SG<53>s
int zeile=4; // Startzeile
int anzahl_sg=15; // Anzahl der Steuerger<65>te
bool fehlerflag;
string job_status="???";// f<>r Job_Statuskontrolle
//Tempor<6F>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<6D> 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<73>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<66>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<73>hren
INP1apiResultText(fehlerflag,job_status,"JOB_STATUS",1,"");
//Nur wenn Test ausgef<65>hrt, soll auch Infospeicher gelesen werden.
//Sicherheitshalber da Buskommunikation nicht immer stabil ist (Nov. 2000)
//Sonst w<>re dies <20>berfl<66>ssig!
if (fehlerflag == FALSE)
{
INP1apiErrorText(err_txt);
zaehler2 = zaehler2+1;
//zeile = zeile - 2;
}
else
{
//ACHTUNG: Falls es ein englisches INPA gibt, mu<6D> engl. <20>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<65>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<74>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<53>s nicht gefunden@ ", 28,60,0,0);
//zeile = zeile+2;
}
if (zaehler1 == 0)
{
ftextout("@SG<53>s nicht gefunden@", 28,52,0,0);
fileopen( "mo_erg.tmp", "a");
filewrite("@SG<53>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<65> 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<75>ck@")
{
viewclose();
setscreen( s_steuern ,TRUE);
setmenu( m_steuern );
}
ITEM( 20 ,"@Exit@")
{
viewclose();
exit();
}
}
// -- EOF --