Changeset 4 for trunk/UKernel.pas


Ignore:
Timestamp:
Nov 23, 2014, 12:56:33 AM (9 years ago)
Author:
chronos
Message:
  • Added: Now applications can write text to serial device which is displayed on form.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/UKernel.pas

    r3 r4  
    66
    77uses
    8   Classes, SysUtils, UList, Contnrs, UFileSystem, UAPI;
     8  Classes, SysUtils, UList, Contnrs, UFileSystem, UMemory;
    99
    1010type
    11   TEvent = procedure of object;
     11  TBasicEvent = procedure of object;
    1212
    1313  TTaskState = (tsStopped, tsRunning, tsSuspended);
     
    1818    Name: string;
    1919    State: TTaskState;
    20     EntryPoint: TEvent;
     20    EntryPoint: TBasicEvent;
    2121    constructor Create; virtual;
    2222  end;
     
    3131    Running: Boolean;
    3232    procedure Start; virtual;
    33     procedure Stop;
    34     function AddTask(Name: string; EntryPoint: TEvent): TTask; virtual;
     33    procedure Stop; virtual;
     34    function AddTask(Name: string; EntryPoint: TBasicEvent): TTask; virtual;
    3535    constructor Create; virtual;
    3636    destructor Destroy; override;
     
    4343  end;
    4444
     45  { TDevice }
     46
     47  TDevice = class(TNamedObject)
     48    ClassName: string;
     49    constructor Create; virtual;
     50    procedure Service(Index: Integer; DataIn, DataOut: TMemory); virtual;
     51  end;
     52
    4553  { TKernel }
    4654
     
    5159    SchedulerClass: TSchedulerClass;
    5260    FileSystemClass: TFileSystemClass;
     61    Devices: TNamedObjectList; // TList<TDevice>
    5362    procedure AppExecute(AFile: TFile);
    5463    procedure Init;
     
    5968
    6069implementation
     70
     71uses
     72  UApp;
     73
     74{ TDevice }
     75
     76constructor TDevice.Create;
     77begin
     78  inherited Create;
     79end;
     80
     81procedure TDevice.Service(Index: Integer; DataIn, DataOut: TMemory);
     82begin
     83
     84end;
    6185
    6286{ TTask }
     
    79103end;
    80104
    81 function TScheduler.AddTask(Name: string; EntryPoint: TEvent): TTask;
     105function TScheduler.AddTask(Name: string; EntryPoint: TBasicEvent): TTask;
    82106var
    83107  NewTask: TTask;
     
    111135  App := TApp(Apps.FindByName(AFile.Name));
    112136  if Assigned(App) then begin
     137    App.API.Kernel := Self;
    113138    Scheduler.AddTask(App.Name, App.Run);
    114139  end else raise Exception.Create('Application ''' + AFile.Name + ''' no found');
     
    152177constructor TKernel.Create;
    153178begin
     179  Devices := TNamedObjectList.Create;
    154180  Drives := TNamedObjectList.Create;
    155181  Apps := TNamedObjectList.Create;
     
    162188  Apps.Free;
    163189  Drives.Free;
     190  Devices.Free;
    164191  inherited Destroy;
    165192end;
Note: See TracChangeset for help on using the changeset viewer.