unit uemUser;

interface

uses Windows, SysUtils, Classes, Math, Forms,
     uemTypes, uemBase;

type TEGMUser = class(TEGMBase)
  private

  protected
  public
		constructor create;
		destructor  destroy; //override;

    function  connect_applet(mode: boolean): boolean;
  published
end;

var  egtbuf:             string = ''; //Temporary buffer for encode/decode
     egtidx:             dword;       //Temporary index
     e:                  TEGMUser3rd;
     sw:                 word = 0;
     box_found:          boolean = false;
const kb_device_name          = 'smart-card';
implementation

constructor TEGMUser.create;
begin
  inherited create;
end;

destructor TEGMUser.destroy;
begin
  inherited destroy;
end;

function TEGMUser.connect_applet(mode: boolean): boolean;
begin
  result := false;

  if not self.SysInit then exit;

  if mode then
  begin
    if (not self.connected) then //check for aid1
    begin
      if boolean(self.connect('', self.RequiredCardAID)) then self.apdu_SelectAID(self.RequiredCardAID);
    end;

    if (not self.connected) and (kb_access_module[self.access_module_no].aid1 <> kb_access_module[self.access_module_no].aid2) then //check for aid2
    begin
      self.requiredCardAID := kb_access_module[self.access_module_no].aid2;
      if boolean(self.connect('', self.RequiredCardAID)) then self.apdu_SelectAID(self.RequiredCardAID);
      if self.connected then self.msg(kb_device_name + ': connected to reader #2');
    end;

    result := self.connected;
    if result then
    begin
      self.msg(kb_device_name + ': connected');
      self.Configure;
    end
    else
    begin
      self.msg(kb_device_name + ': can not be found/connected');
    end;
   end
  else
  begin
    self.disconnect;
    result := not self.connected;
    if result then self.msg(kb_device_name + ': disconnected');
  end;
end;

initialization

finalization

end.
