home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Misc / Vector18.lha / ParNetExample / unit_ctl.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-12-18  |  1.7 KB  |  96 lines

  1. /*
  2.  * This code was originally written by Matthew Dillon and put into Public Domain
  3.  *
  4.  * All changes concerning the adaption of Matt's original code to the
  5.  * Vector Connection I/O board are © 1991-1993 by Henning Schmiedehausen
  6.  * All rights for this changes are reserved. The original code is Public Domain
  7.  *
  8.  * This code is distributed with the expressed written permission of Matthew
  9.  * Dillon (Thank you very much, Matt)
  10.  *
  11.  */
  12.  
  13. /*
  14.  *  UNIT_CTL.C
  15.  *
  16.  *  Control Unit.  Used for global control, sink null as far as
  17.  *           read & write goes.
  18.  */
  19.  
  20. #include "defs.h"
  21.  
  22. void CtlBeginIO();
  23. void CtlAbortIO();
  24. void CtlClose();
  25. void CtlData();
  26.  
  27. static short   CtlRefs = 0;
  28.  
  29. void
  30. UnitControlOpen(iob, unitnum, flags)
  31. Iob *iob;
  32. long unitnum;
  33. long flags;
  34. {
  35.     Unit *unit = AllocUnit(iob, CtlBeginIO, CtlAbortIO, CtlData, CtlClose);
  36.  
  37.     ++CtlRefs;
  38.  
  39.     iob->io_Unit = unit;
  40.     iob->io_Port = 0;
  41.     iob->io_Addr = 0;
  42. }
  43.  
  44. void
  45. CtlData(cmd, unit, packet)
  46. Unit *unit;
  47. Packet *packet;
  48. {
  49.     FreeParPacket(packet);
  50. }
  51.  
  52.  
  53. void
  54. CtlClose(iob)
  55. Iob *iob;
  56. {
  57.     FreeUnit(iob->io_Unit);
  58.  
  59.     --CtlRefs;
  60.  
  61.     iob->io_Unit = NULL;
  62. }
  63.  
  64. void
  65. CtlBeginIO(iob)
  66. Iob *iob;
  67. {
  68.     iob->io_Error = 0;
  69.     iob->io_Actual = 0;
  70.     iob->io_Message.mn_Node.ln_Type = NT_MESSAGE;
  71.  
  72.     switch(iob->io_Command) {
  73.     case PPD_SETADDR:    /*  set network address     */
  74.     ParAddress(iob->io_Addr);
  75.     DevBase->ParAddress = iob->io_Addr;
  76.     WriteConfig();
  77.     break;
  78.     case PPD_SETTO:    /*  set network timeout     */
  79.     ParLLTimeout = iob->io_Offset;
  80.     WriteConfig();
  81.     break;
  82.     default:
  83.     iob->io_Error = IOERR_NOCMD;
  84.     break;
  85.     }
  86.     if ((iob->io_Flags & IOF_QUICK) == 0)
  87.     ReplyMsg(&iob->io_Message);
  88. }
  89.  
  90. void
  91. CtlAbortIO(iob)
  92. Iob *iob;
  93. {
  94. }
  95.  
  96.