home *** CD-ROM | disk | FTP | other *** search
/ Chip 2005 July / CHIP_CD_2005-07.iso / software / att / attsetup.exe / plugins / api / readme.txt
Text File  |  2004-09-17  |  4KB  |  107 lines

  1. ***************************************************
  2.     Plug-ins API for ATI Tray Tools v1.0
  3.     API Version 1.1
  4.     (c) 2004 Ray Adams
  5.     All right reserved.
  6. ***************************************************
  7. ATI Tray Tools = ATT
  8.  
  9. What you have for plug-ins? 
  10. 1. Full access to low level driver
  11. 2. Working with ports, in/out
  12. 3. Map frame buffer from physical address space to linear
  13. 4. Reading and setting clocks
  14.  
  15. In next release of API:
  16. New kind of plug-ins. Runtime plugins. All runtime plug-ins will be loaded with 
  17. ATT and all of them, which will have PL_SUSP_RUN flag, 
  18. will be loaded each time after restoring from suspend/sleep/hibernate modes.
  19.  
  20. If you have your own plug-ins, please email me with information 
  21. about it and if it will be useful for users, 
  22. I will put it in installation package.
  23.  
  24. ---------------------------------------------------------
  25. Non run-time plugins. These plugins only start when you select it from menu.
  26.  
  27. All plug-ins must export two functions
  28. 1. get_plug_inf - return information about plug-in
  29.     This function must fill structure TPlugInfo (look in header files
  30.     for your programing laguage)
  31. 2. exec_plugin - return true if success.
  32.  
  33.  
  34. *** Get_Plug_Inf ***
  35. As parameter take structure TPlugInfo
  36.  
  37. Delphi:
  38.     TGet_Plug_Info=procedure (var Info:TPlugInfo);stdcall;
  39.  
  40.     type TPlugInfo=packed record
  41.          Sign:array[0..3] of char;//std 4 chars to identofy itself as a ATT plugin
  42.          Menu_Text:array[0..50] of char; // text for menu
  43.          PuginType:byte; //type of plugin reserved must be PL_STD
  44.     end;
  45.  
  46. C++:
  47. typedef struct tagTPlugInfo {
  48.          char Sign[3];    //std 4 chars to identofy itself as a ATT plug-in
  49.          char Menu_Text[50] of char; // text for menu
  50.          char PluginType; //type of plug-in reserved must be PL_STD
  51. } TPlugInfo, *PPlugInfo;
  52. typedef void (STDAPICALLTYPE*  lppget_plug_info)(PPlugInfo Data);
  53.  
  54. *** Exec_Plugin ***
  55.  
  56. Delphi:
  57. TExec_Plugin=procedure(Win_Handle:integer;ATT_Proc:Pointer):stdcall;
  58. Win_Handle - handle of ATT main window 
  59. ATT_Proc - pointer to main function to work with ATT
  60.  
  61.  
  62. C++:
  63. typedef void (STDAPICALLTYPE*  lppexec_plugin)(uint Win_Handle; void* ATT_Proc);
  64. Win_Handle - handle of ATT main window 
  65. ATT_Proc - pointer to main function to work with ATT
  66. ===========================================================
  67.     Run-Time plugins
  68. ===========================================================
  69. Run time plugins starts together with ATT. If enabled in "Run-Time plugins" configuration box.
  70. All runtime plugins must export some additional fucntions.
  71. //////////////////////////////////
  72. //ATT Will execute this function before terminate.
  73. //////////////////////////////////
  74. typedef void (STDAPICALLTYPE*  lppdone_plugin)();
  75.  
  76. //////////////////////////////////
  77. //ATT will execute this function after resuming from suspend/hibernate mode
  78. //Plug-In must decide waht to do at this time.
  79. //if you don't need any actions just create dummy procedure
  80. //////////////////////////////////
  81. typedef void (STDAPICALLTYPE*  lppsuspend_restore)();
  82.  
  83. //////////////////////////////////
  84. //Run Configuration for plugin
  85. //////////////////////////////////
  86. typedef void (STDAPICALLTYPE*  lppconfig_plugin)();
  87.  
  88. Look for an example in plugins\example folder. CPU Load Meter Plugin.
  89. A few words about how CPU Load Metter plugin work.
  90. When this plugin executed, its create an invisible window and create Timer function for this window.
  91. After window creating, plugin put and icon in system tray. Then each 1 second, plugins update 
  92. icon in system tray to show current CPU Usage.
  93. In resources, plugin stores 15 small icons which will be displayed while measuring CPU Usage.
  94.  
  95. How to create run time plugins? Its up to you how :). It can be depended on what this plugin
  96. should do. For example, PCI Register Set is run time plugin. But this plugin doesn't create
  97. any window while executed. When ATI Tray Tools execute "PCI Register Set" plugin, using exec_plugin,
  98. plugin run procedure to program all selected registers and stop execution. Its differ from CPU Load 
  99. plugins because its do nothing after execution.
  100.  
  101. Information about commands you can find in include files for your language.
  102. plugins.pas - Delphi version
  103. plugins.h   - C++ version
  104.  
  105. ===========================================================
  106. Some example plugins can be found in delphi and vc++ folders.
  107.