|
CCS Modul R_PAM2SERVER |
---------------------------------------------------------- Funktionsbeschreibung:1 PRUEFSCHRITT
GAUDI Pruefschritt
------------------------------2 POSITION
PAV- Position
------------------------------3 METHOD
AUDIWFS4: Senden der PIN und des KEY zum AUDIWFS4 Server
Der Server bucht die Daten in eine Vordatenbank
Von da werden diese über eine Hauptdatenbank zur
die AUDI-FAZIT Datenbank gesendet.
PIN und KEY können mit r_seedkey generiert werden.
------------------------------4 VERSION
Versionsnummer
Für AUDIWFS4 ist zur Zeit nur 01 implementiert
------------------------------5 MODE
Art der Aktion.
SEND: Daten zum Server senden
------------------------------6 PS_STRING1
AUDIWFS4: SN,0 von KUNDDAT
------------------------------7 PS_STRING2
AUDIWFS4: PIN 4 Zeichen Hexstring (2 Bytes)
------------------------------8 PS_STRING3
AUDIWFS3: KEY 14 Zeichen Hexstring (7 Bytes)
------------------------------9 PS_STRING4
AUDIWFS4: Baugruppennummer der Hardware TTNR
------------------------------10 PS_STRING5
AUDIWFS5: Baugruppennummer der Seriennummer
------------------------------11 PS_STRING6
AUDIWFS6: Typteilenummer
------------------------------12 PS_STRING7
AUDIWFS7: Containerkennung
------------------------------13 PS_STRING8
AUDIWFS8: Leer
------------------------------14 PS_STRING9
AUDIWFS9: Leer
------------------------------15 PS_STRING10
AUDIWFS10: Leer
------------------------------16 R_ERGEBNIS
Ergebnis. Kann mit GAUDI-Variable gelesen werden
------------------------------17 ERRORSTRING
Fehlerstring bei Fehler
------------------------------18 ERRORFLAG
:= 0 Kein Fehler
:= 1 Fehler
Input: Zeiger auf den relevanten "Wert" einer Zeile der
expandierten Pruefliste;
Index im entsprechenden Speicherbereich fuer
Moduldaten;
Anzahl der Modulparameter;
Output: none
----------------------------------------------------------
Return Value:
= 0: Successful completion
-1: bei Ueberschreitung der Gesamtlaenge von 80 Zeichen;
----------------------------------------------------------
Beispiel (optional):
<\userdoc>
----------------------------------------------------------
C4
int r_pam2server( shm_stringpointer *zeilen_wert, long index1, long anzahl_parameter )
{
static char ident[] = "@(#)$Id: r_pam2server.C,v 1.6 2003/05/19 08:33:48 sgc3sa Exp $";
const int par_errstring = 16;
const int par_errflag = 17;
Lokale Variablen
char auftrag[80]; // auftrag der ueber Messagequeue versendet wird
char quittung[80]; // Quittung auf Auftrag
unsigned auftrag_len; // Laenge Auftrag String
unsigned quittung_len = 80; // Laenge Quittungsstring
int error; // return von msg_send_wait
long msgstat;
long hispnr;
long schritt;
int revision = 1;
Schrittbetriebshandler
schritt = schrittbetrieb(zeilen_wert,index1);
if (schritt!=1) {
return 0;
}
Modulstatus setzen
Ssp_ss->progs[G_mypnr].status = 1; // Testdatenladen laeuft
Revision bestimmen
revision = 1;
// Fehlerflag abfragen
if ( Ssp_vi->multi[Ssp_vi->test.multiindex].error != 0 ||
Ssp_vi->multi[Ssp_vi->test.multiindex].abbruch != 0 ) {
strcpy(Ssp_ss->progs[G_mypnr].result,JOB_RESULT_GOOD);
if ( *Ssp_expand_wert->ptr[index1+par_errflag] != "-" )
{
*Ssp_expand_wert->ptr[index1+par_errflag] = "0";
}
if ( *Ssp_expand_wert->ptr[index1+par_errstring] != "-" )
{
STRING hilf2 = "Not executed";
*Ssp_expand_wert->ptr[index1+par_errstring] = hilf2;
}
return 0;
}
Message an seedkey
sprintf(auftrag,"INDEX=%d;REVISION=%d;MODUL=PAM2SERVER;", index1, revision );
auftrag_len = strlen (auftrag) + 1;
error = msg_send_wait (SK_SEEDKEY,
auftrag, auftrag_len,-1,200,
quittung, &quittung_len,&msgstat,&hispnr);
Fehlerbehandlung msg_send_wait
if (error!=0) {
Fehlermeldung
// error_message (ERR_ERROR, HEADER, __LINE__, "Fehler Aufruf msg_send_wait" );
error_message (ERR_ERROR, HEADER, __LINE__, "Error calling msg_send_wait" );
return -1;
}
else {
Quittung ausgeben
debug_message(__FILE__,__LINE__,2,"r_pam2server> quittung = %s\n", quittung );
}
Timeout Behandlung
if (msgstat & MSG_R_TIMEOUT) {
Fehlertext
ccl_befehl( Ssp_ss->progs[G_mypnr].result, JOB_RESULT, ERROR, RESULT_MAX );
strcat(Ssp_ss->progs[G_mypnr].result,JOB_ERRSTR);
strcat(Ssp_ss->progs[G_mypnr].result,SEP_GLEICH);
strcat(Ssp_ss->progs[G_mypnr].result,"Timeout-SK");
strcat(Ssp_ss->progs[G_mypnr].result,SEP_SEMIKOLON);
return -1; // Timeout --> Fehler
}
JOB RESULT
if ( strstr(quittung,JOB_RESULT_ERROR) ) {
strcpy(Ssp_ss->progs[G_mypnr].result,JOB_RESULT_ERROR);
strcat(Ssp_ss->progs[G_mypnr].result,JOB_ERRSTR);
strcat(Ssp_ss->progs[G_mypnr].result,SEP_GLEICH);
strcat(Ssp_ss->progs[G_mypnr].result,"SK: ");
char *semi = strchr(quittung,';');
if ( semi ) {
int len = strlen(semi+1);
if ( len + 5 + strlen(Ssp_ss->progs[G_mypnr].result) >= RESULT_MAX ) {
len = RESULT_MAX - strlen(Ssp_ss->progs[G_mypnr].result) - 6;
}
strncat(Ssp_ss->progs[G_mypnr].result, semi+1, len );
}
else {
strcat(Ssp_ss->progs[G_mypnr].result, "unknown" );
}
strcat(Ssp_ss->progs[G_mypnr].result,SEP_SEMIKOLON);
return -1;
}
return 0;
}