(*
*******************************************************************************
*         Copyright (C) SofCon 2003 All Rights Reserved                       *
*******************************************************************************
*
*    project:     vizualizace
*
*    title:       Loader.pas
*
*******************************************************************************
*
*    description: priklad aplikace podporujici prikazy LOADER -
*                 identifikace aplikace, RESET, start LOADER
*                 (bud poskozenim aplikace nebo nastavenim parametru
*                  pro LOADER gpAppRstDesc^.bParForLdr)
*
*    version:     1.03
*    language:    Borland Pascal
*
*    author:      Hvozdovic
*    history:     date      sign   remark
*                 8.02      hv     zacatek vyvoje
*                11.02      hv     prvni release
*                11.02      hv     zruseni odkazu na ChnPrt, ChnSofs2
*                 9.03      hv     knihovna pouziva rozsirenou
*                                       standardni knihovnu Crc16
*                                  Pozn. Drivejsi verze pouzivala knihovnu ExCrc16
*				   Zruseno konstanta cName
*				   Pridana konstanta cVerNo a cVer upravena
*					do standardizovaneho formatu
*****************************************************************************
*)
{$I sets.inc}

unit Loader;
interface
uses
   Objects             { objekty }
  ,ChnVirt             { virtualni kanal }
  ,ChnSofT             { definice typu pro protokol SofCon }
  ,Xtking_1            { definice typu a konstant pro praci s vizualizaci }
  ,xDesc               { jednotka definujici konstanty a typy pouzivane
                         jak v aplikaci tak v LOADER
                         (castecne definuje rozlozeni pameti) }
  ,AppDesc             { jednotka definujici kompletni rozlozeni pameti
                         v aplikaci, pouziva xDesc
                         Dale v teto jednotce muzou byt aplikacne zavisle
                         struktury a konstanty }
  ,WTLdr;              { objekt s podporujici prikazy LOADER }


type
  { objekt pracujici s prikazy LOADER}
  PLoader = ^TLoader;
  TLoader = object(TWinTickLoader)
    constructor Init;
    destructor Done; virtual;

    procedure fnStartLoader; virtual;
    procedure fnResetApp; virtual;
    procedure fnQueryApp(var LdrAppInfo:TLoaderAppInfo); virtual;
  end;


{ procedura pro zobrazeni stavu - zobrazi se stiskem klavesy "1" }
procedure ShowState;


implementation
uses
 {$ifdef VerMC}
  AtmFlash,
 {$endif}
  Crc16;

{ procedura pro zobrazeni stavu - zobrazi se stiskem klavesy "1" }
procedure ShowState;
begin
end;

constructor TLoader.Init;
begin
  inherited Init;
end;

destructor TLoader.Done;
begin
  inherited Done;
end;

procedure TLoader.fnStartLoader;
var
  theCrc:tCrc16;
begin
 {$ifdef Deb_Crt}
  writeln('Spusteni Loader - poskozeni aplikace');
 {$endif}
 {$ifdef VerMC}
(*
  { prikaz poskozujici aplikaci - v LOADER zpusobi cekani na komunikaci
    pri kazdem startu }
  AtmTotalDestruct(laFlashBase, laAppStart);
*)
  { nastaveni parametru pro LOADER zpusobujici cekani na komunikaci
    pri prvnim uspesnem startu LOADER.
    Tato promenna je nastavena na "0" tesne pred kontrolou vlastnich
    modulu aplikace a ma za nasledek, ze se LOADER pri kazdem spusteni
    nesnazi navazat komunikaci }
  gpLdrDesc^.bParForLdr:=1;
  gpLdrDesc^.wCrc:=theCrc.CalculateCrc(gpLdrDesc, cLdrDescCrcSize, cLdrResidue);
 {$endif}

  { dale by mely byt prikazy ukoncujici komunikaci,
    nastaveni vystupu na definovanou uroven apod.
    Po navratu z teto funkce nasleduje RESET v komunikacnim objektu }
end;

procedure TLoader.fnResetApp;
begin
  { v teto funkci by mely byt prikazy ukoncujici komunikaci,
    nastaveni vystupu na definovanou uroven apod.
    Po navratu z teto funkce nasleduje RESET v komunikacnim objektu }

 {$ifdef Deb_Crt}
  writeln('Reset aplikace - ukonceni aplikace');
 {$endif}
end;

procedure TLoader.fnQueryApp(var LdrAppInfo:TLoaderAppInfo);
begin
  { nastaveni parametru popisujici aplikaci }
  with LdrAppInfo do
  begin
    AppTypeId:=cLoaderAppInfo_UserApp;
    AppInfoStr:=strAppName;
  end;
end;


end.
