NetDevices.ob07 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. (*
  2. Copyright 2017 Anton Krotov
  3. This program is free software: you can redistribute it and/or modify
  4. it under the terms of the GNU Lesser General Public License as published by
  5. the Free Software Foundation, either version 3 of the License, or
  6. (at your option) any later version.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU Lesser General Public License for more details.
  11. You should have received a copy of the GNU Lesser General Public License
  12. along with this program. If not, see <http://www.gnu.org/licenses/>.
  13. *)
  14. MODULE NetDevices;
  15. IMPORT sys := SYSTEM, K := KOSAPI;
  16. CONST
  17. //net devices types
  18. LOOPBACK* = 0;
  19. ETH* = 1;
  20. SLIP* = 2;
  21. //Link status
  22. LINK_DOWN* = 0;
  23. LINK_UNKNOWN* = 1;
  24. LINK_FD* = 2; //full duplex flag
  25. LINK_10M* = 4;
  26. LINK_100M* = 8;
  27. LINK_1G* = 12;
  28. TYPE
  29. DEVICENAME* = ARRAY 64 OF CHAR;
  30. PROCEDURE Number* (): INTEGER;
  31. RETURN K.sysfunc2(74, -1)
  32. END Number;
  33. PROCEDURE Type* (num: INTEGER): INTEGER;
  34. RETURN K.sysfunc2(74, num * 256)
  35. END Type;
  36. PROCEDURE Name* (num: INTEGER; VAR name: DEVICENAME): BOOLEAN;
  37. VAR err: BOOLEAN;
  38. BEGIN
  39. err := K.sysfunc3(74, num * 256 + 1, sys.ADR(name[0])) = -1;
  40. IF err THEN
  41. name := ""
  42. END
  43. RETURN ~err
  44. END Name;
  45. PROCEDURE Reset* (num: INTEGER): BOOLEAN;
  46. RETURN K.sysfunc2(74, num * 256 + 2) # -1
  47. END Reset;
  48. PROCEDURE Stop* (num: INTEGER): BOOLEAN;
  49. RETURN K.sysfunc2(74, num * 256 + 3) # -1
  50. END Stop;
  51. PROCEDURE Pointer* (num: INTEGER): INTEGER;
  52. RETURN K.sysfunc2(74, num * 256 + 4)
  53. END Pointer;
  54. PROCEDURE SentPackets* (num: INTEGER): INTEGER;
  55. RETURN K.sysfunc2(74, num * 256 + 6)
  56. END SentPackets;
  57. PROCEDURE ReceivedPackets* (num: INTEGER): INTEGER;
  58. RETURN K.sysfunc2(74, num * 256 + 7)
  59. END ReceivedPackets;
  60. PROCEDURE SentBytes* (num: INTEGER; VAR hValue: INTEGER): INTEGER;
  61. RETURN K.sysfunc22(74, num * 256 + 8, hValue)
  62. END SentBytes;
  63. PROCEDURE ReceivedBytes* (num: INTEGER; VAR hValue: INTEGER): INTEGER;
  64. RETURN K.sysfunc22(74, num * 256 + 9, hValue)
  65. END ReceivedBytes;
  66. PROCEDURE LinkStatus* (num: INTEGER): INTEGER;
  67. RETURN K.sysfunc2(74, num * 256 + 10)
  68. END LinkStatus;
  69. END NetDevices.