Opened 11 years ago

Closed 11 years ago

#47 closed Aufgabe (fixed)

EVar-Überwachung bei XVars

Reported by: Melanie Hermann Owned by:
Priority: kurzfristig Milestone:
Component: Gesamtsystem Version:
Severity: Zu prüfen Keywords:
Cc:

Description

Wie funktioniert EVar-Überwachung (CRC), wenn ein EVar in den XVars enthalten ist?

Change History (9)

comment:1 by Melanie Hermann, 11 years ago

Priority: mittelfristiglangfristig

comment:2 by Melanie Hermann, 11 years ago

Priority: langfristigmittelfristig

comment:3 by Melanie Hermann, 11 years ago

Priority: mittelfristigkurzfristig

comment:4 by Melanie Hermann, 11 years ago

Änderungen:

  • gcvars.h, gcvars.cpp:
    • WriteVars(): Funktion hat zusätzlichen Parameter checkEVarsCRC erhalten. Gibt an ob CRC überprüft werden soll oder nicht. Denn bei den XVars gibt es Variablen, die in einer Variante vom Typ eVar sind. Wenn das der Fall ist muss der CRC überprüft werden.
    • SaveXVars(): Berechnung und Schreiben des CRCs eingebaut. (Wie bei SaveEVars().) An Funktion WriteVars() den Parameter checkEVarsCRC = true übergeben.
    • SaveEVars(): An Funktion WriteVars() den Parameter checkEVarsCRC = true übergeben.
  • gcwert.cpp:
    • SaveWert(): An Funktion WriteVars() den Parameter checkEVarsCRC = true übergeben, wenn gerade ein eVar oder ein xVar, der in einer Variante vom Typ eVar ist, gespeichert wird.
  • GcApp.cpp:
    • SetValuesForGatewayMode(): Alle Aufrufe von Save...Vars() entfernt.
  • InOut.cpp:
    • GeneriereCRC16ForAllEVars(): Neue Funktion zum Berechnen des CRCs. Hier wird der CRC über alle Variablen gerechnet, die in einer Variante vom Typ eVar sind.
Last edited 11 years ago by Melanie Hermann (previous) (diff)

comment:5 by Melanie Hermann, 11 years ago

TODO:
Es kommt bei jedem Neustart ein EVARS-Fehler !!!

comment:6 by Melanie Hermann, 11 years ago

Änderungen:

  • InOut.cpp:
    • GeneriereCRC16ForAllEVars(): Der Crc wird nicht mehr über alle Variablen gerechnet, die in einer der beiden Varianten (Controller oder Gateway) ein eVar sind. Der Crc wird nun über alle Variablen gerechnet, die in der aktuellen Variante ein eVar sind. Das bedeutet, dass die beiden Varianten unterschiedliche Crc berechnen.
  • GcApp.cpp:
    • InitInstance(): Bevor der GC richtig startet werden alle Variablen, die nach dem Applikationsstart gesetzt werden, abgespeichert mit SaveBVars(), SaveEVars() und SaveXVars().
  • gcwert.cpp:
    • SetWert(): CRC-Berechnung wird gemacht, wenn die Variable in der aktuellen Variante ein eVar ist.
    • SaveWert(): Aufruf der Funktion WriteVars() bekommt den Parameter checkEVarsCRC == true, wenn die Variable in der aktuellen Variante ein eVar ist.
Version 0, edited 11 years ago by Melanie Hermann (next)

comment:7 by Melanie Hermann, 11 years ago

TODO: Testen

comment:8 by Melanie Hermann, 11 years ago

Kommentar:

  • Ablauf bei Wertänderung:
    Wertänderung (per Display)
    SetWert()
    GeneriereCRC16ForAllEVars() für SDCard-CRC
    SaveWert()
    WriteVars()
    Schreiben des Wertes auf SDKarte
    FerroLeseIndex(FERRO_IDX_CRC_EVARS)
    Ferro-CRC aus Ferroram auslesen
    Vergleich von SDCard-CRC und Ferro-CRC
    GeneriereCRC16ForAllEvars() für SDCard und Ferro

comment:9 by Melanie Hermann, 11 years ago

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.