home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / aspio02.zip / ascii.c next >
C/C++ Source or Header  |  1999-08-17  |  3KB  |  154 lines

  1. /*
  2.  * $Source: r:/source/aspi/RCS/ascii.c,v $
  3.  * $Revision: 1.3 $
  4.  * $Date: 1999/08/18 00:17:03 $
  5.  * $Locker:  $
  6.  *
  7.  *    Translate some SCSI related values to ASCIIZ.
  8.  *
  9.  * $Log: ascii.c,v $
  10.  * Revision 1.3  1999/08/18 00:17:03  vitus
  11.  * - updated location of defines.h (moved)
  12.  * - changed function comments to new layout
  13.  *
  14.  * Revision 1.2  1997/09/22 02:23:18  vitus
  15.  * documented
  16.  *
  17.  * Revision 1.1  1997/09/21 03:53:43  vitus
  18.  * Initial revision
  19.  * ----------------------------------------
  20.  * Sample code to demonstrate use of ASPI Interface.
  21.  */
  22. static char const id[]="$Id: ascii.c,v 1.3 1999/08/18 00:17:03 vitus Exp $";
  23.  
  24. #include <stdio.h>
  25.  
  26. #define INCL_DOS
  27. #include <os2.h>
  28.  
  29. #include "../lib/defines.h"
  30. #include "scsi.h"
  31. #include "srb.h"
  32. #include "aspio.h"
  33.  
  34.  
  35.  
  36. PRIVATE char *apszDevType[] = {
  37.     "direct-access device",
  38.     "sequential-access device",
  39.     "printer device",
  40.     "processor device",
  41.     "write-once device",
  42.     "CD-ROM device",
  43.     "scanner device",
  44.     "optical memory device",
  45.     "medium changer device",
  46.     "communication device"
  47. };
  48.  
  49. PRIVATE char *apszDevQual[] = {
  50.     "connected",
  51.     "not connected",
  52.     "???",
  53.     "can't connect anything"
  54. };
  55.  
  56.  
  57.  
  58.  
  59.  
  60. /*# ----------------------------------------------------------------------
  61.  * AHInquiryType(type)
  62.  *
  63.  * PARAMETER
  64.  *    type        from INQUIRY data
  65.  *
  66.  * RETURNS
  67.  *    pointer to const string
  68.  *
  69.  * GLOBAL
  70.  *    apszDevType[]
  71.  *
  72.  * DESPRIPTION
  73.  *    Translates SCSI type to ASCII description.
  74.  *
  75.  * REMARKS
  76.  */
  77. PUBLIC char const *
  78. AHInquiryType(UCHAR type)
  79. {
  80.     type &= 0x1F;
  81.     if( type < sizeof(apszDevType) / sizeof(apszDevType[0]) )
  82.     return apszDevType[type];
  83.     else if( type == 0x1F )
  84.     return "no device";
  85.     return "???";
  86. }
  87.  
  88.  
  89.  
  90.  
  91. /*# ----------------------------------------------------------------------
  92.  * AHInquiryType(type)
  93.  *
  94.  * PARAMETER
  95.  *    type        from INQUIRY data
  96.  *
  97.  * RETURNS
  98.  *    pointer to const string
  99.  *
  100.  * GLOBAL
  101.  *    apszDevQual[]
  102.  *
  103.  * DESPRIPTION
  104.  *    Translates SCSI type qualifier to ASCII description.
  105.  *
  106.  * REMARKS
  107.  */
  108. PUBLIC char const *
  109. AHInquiryQual(UCHAR qual)
  110. {
  111.     qual = (qual >> 5) & 0x07;
  112.     if( qual < sizeof(apszDevQual) / sizeof(apszDevQual[0]) )
  113.     return apszDevQual[qual];
  114.     return "???";
  115. }
  116.  
  117.  
  118.  
  119.  
  120. /*# ----------------------------------------------------------------------
  121.  * AHSense(buffer,sense)
  122.  *
  123.  * PARAMETER
  124.  *    buffer        to fill
  125.  *    sense        sense data
  126.  *
  127.  * RETURNS
  128.  *    (nothing)
  129.  *
  130.  * GLOBAL
  131.  *    (none)
  132.  *
  133.  * DESPRIPTION
  134.  *    Translates REQSENSE data to ASCII.  Multiline.
  135.  *
  136.  * REMARKS
  137.  */
  138. PUBLIC void
  139. AHSense(char * const buffer,PSCSI_REQSENSE_DATA const sense)
  140. {
  141.     sprintf(buffer,
  142.         "error code %02x\n"
  143.         "sense key %02x, ILI %d, EOM %d, FM %d\n"
  144.         "additional sense code %02x\n"
  145.         "additional sense code qualifier %02x\n",
  146.         (sense->ErrCode_Valid & SCSI_ERRCODE_MASK),
  147.         (sense->SenseKey & SCSI_SENSEKEY_MASK),
  148.         (sense->SenseKey & SCSI_INCORRECT_LEN) ? 1 : 0,
  149.         (sense->SenseKey & SCSI_SENSE_ENDOFMEDIUM) ? 1 : 0,
  150.         (sense->SenseKey & SCSI_SENSE_FM) ? 1 : 0,
  151.         sense->AddSenseCode,
  152.         sense->AddSenseCodeQual);
  153. }
  154.