/***************************************************************************
  *
  * File Name: PAL_OBJ.H
  *
  * Copyright (C) 1993-1996 Hewlett-Packard Company.
  * All rights reserved.
  *
  * 11311 Chinden Blvd.
  * Boise, Idaho  83714
  *
  * This is a part of the HP JetAdmin Printer Utility
  *
  * This source code is only intended as a supplement for support and
  * localization of HP JetAdmin by 3rd party Operating System vendors.
  * Modification of source code cannot be made without the express written
  * consent of Hewlett-Packard.
  *
  *
  * Description:
  *
  * Author:  Name
  *
  *
  * Modification history:
  *
  *     date      initials     change description
  *
  *   mm-dd-yy    MJB
  *
  *   01-23-96    JLH          Unicode changes
  *
  *
  *
  *
  ***************************************************************************/

#ifndef _PAL_OBJ_H
#define _PAL_OBJ_H

#include ".\pal_api.h"


/*  Asynch status codes, Peripheral Status Values */
#define ASYNCH_STATUS_UNKNOWN       0xFFFFFFFF
#define ASYNCH_PRINTER_ERROR        0
#define ASYNCH_DOOR_OPEN            1
#define ASYNCH_WARMUP               2
#define ASYNCH_RESET                3
#define ASYNCH_OUTPUT_BIN_FULL      4           /* yellow condition */
#define ASYNCH_PAPER_JAM            5
#define ASYNCH_TONER_GONE           6
#define ASYNCH_MANUAL_FEED          7
#define ASYNCH_PAPER_OUT            8
#define ASYNCH_PAGE_PUNT            9
#define ASYNCH_MEMORY_OUT           10
#define ASYNCH_OFFLINE              11
#define ASYNCH_INTERVENTION         12
#define ASYNCH_INITIALIZING         13
#define ASYNCH_TONER_LOW            14
#define ASYNCH_PRINTING_TEST_PAGE   15
#define ASYNCH_PRINTING             16
#define ASYNCH_ONLINE               17
#define ASYNCH_BUSY                 18
#define ASYNCH_NOT_CONNECTED        19
#define ASYNCH_STATUS_UNAVAILABLE   20
#define ASYNCH_NETWORK_ERROR        21
#define ASYNCH_COMM_ERROR           22
#define ASYNCH_BLACK_AGENT_EMPTY    23
#define ASYNCH_MAGENTA_AGENT_EMPTY  24
#define ASYNCH_CYAN_AGENT_EMPTY     25
#define ASYNCH_YELLOW_AGENT_EMPTY   26
#define ASYNCH_BLACK_AGENT_MISSING  27
#define ASYNCH_MAGENTA_AGENT_MISSING 28
#define ASYNCH_CYAN_AGENT_MISSING   29
#define ASYNCH_YELLOW_AGENT_MISSING 30
#define ASYNCH_TRAY1_EMPTY          31          /* yellow condition */
#define ASYNCH_TRAY2_EMPTY          32          /* yellow condition */
#define ASYNCH_TRAY3_EMPTY          33          /* yellow condition */
#define ASYNCH_TRAY1_JAM            34
#define ASYNCH_TRAY2_JAM            35
#define ASYNCH_TRAY3_JAM            36
#define ASYNCH_POWERSAVE_MODE       37          /* MAX for generic printer & Arrakis */
#define ASYNCH_ENVL_ERROR           38
#define ASYNCH_HCI_ERROR            39
#define ASYNCH_HCO_ERROR            40
#define ASYNCH_HCI_EMPTY            41          /* yellow condition */
#define ASYNCH_HCI_JAM              42
#define ASYNCH_TRAY1_ADD            43          /* red condition */
#define ASYNCH_TRAY2_ADD            44          /* red condition */
#define ASYNCH_TRAY3_ADD            45          /* red condition */
#define ASYNCH_HCI_ADD              46          /* red condition */
#define ASYNCH_TRAY1_UNKNOWN_MEDIA  47          /* yellow condition */
#define ASYNCH_CLEAR_OUTPUT_BIN     48          /* red condition */
#define ASYNCH_CARRIAGE_STALL             49
#define ASYNCH_COLOR_AGENT_EMPTY          50
#define ASYNCH_COLOR_AGENT_MISSING           51
#define ASYNCH_BLACK_AGENT_INCORRECT         52
#define ASYNCH_MAGENTA_AGENT_INCORRECT       53
#define ASYNCH_CYAN_AGENT_INCORRECT          54
#define ASYNCH_YELLOW_AGENT_INCORRECT        55
#define ASYNCH_COLOR_AGENT_INCORRECT         56
#define ASYNCH_BLACK_AGENT_INCORRECT_INSTALL 57
#define ASYNCH_MAGENTA_AGENT_INCORRECT_INSTALL  58
#define ASYNCH_CYAN_AGENT_INCORRECT_INSTALL     59
#define ASYNCH_YELLOW_AGENT_INCORRECT_INSTALL   60
#define ASYNCH_COLOR_AGENT_INCORRECT_INSTALL 61
#define ASYNCH_BLACK_AGENT_FAILURE           62
#define ASYNCH_MAGENTA_AGENT_FAILURE         63
#define ASYNCH_CYAN_AGENT_FAILURE            64
#define ASYNCH_YELLOW_AGENT_FAILURE          65
#define ASYNCH_COLOR_AGENT_FAILURE           66
#define ASYNCH_TRAY1_MISSING              67
#define ASYNCH_TRAY2_MISSING              68
#define ASYNCH_TRAY3_MISSING              69

//  New for Jonah
#define ASYNCH_STAPLER_EMPTY                 70
#define ASYNCH_STAPLER_JAM                   71
#define ASYNCH_STAPLER_MALFUNCTION           72
#define ASYNCH_STAPLER_ALIGNMENT_ERROR       73
#define ASYNCH_STAPLER_LIMIT                 74

#define ASYNCH_DEVICE_SPECIFIC               75


/* Add new ASYNC status conditions here for new printers */


#define MAX_ASYNCH_STATUS           76          /* MAX for generic printer applet */
#define MAX_ASYNCH_ECLIPSE          49          /* MAX for Eclipse */
#define MAX_ASYNCH_JONAH            76          /* MAX for Jonah */
/* Add new MAX_ASYNC_printer here for new printers */


/* Object Flags
**  Each object ID is OR'ed with this flag to determine what languages can
**  be used to get the information.
*/
#define OBJ_INIFILE                 0x00000000
#define OBJ_SNMP                    0x00010000
#define OBJ_RCFG                    0x00020000
#define OBJ_FILE_SERVER             0x00040000
#define OBJ_PJL                     0x00080000
#define OBJ_RRM                     0x00100000
#define OBJ_PML                     0x00200000
#define  OBJ_SSNET               0x00400000

#define OT_PERIPHERAL_STATUS                       (OBJ_INIFILE |                   OBJ_SNMP | OBJ_RCFG | OBJ_PJL | OBJ_PML |                    0x0000)
#define OT_PERIPHERAL_DETAILS                      (OBJ_INIFILE | OBJ_FILE_SERVER | OBJ_SNMP | OBJ_RCFG | OBJ_PJL | OBJ_PML |                    0x0001)
#define OT_PERIPHERAL_INFO                         (OBJ_INIFILE |                                                                                0x0003)
#define OT_PERIPHERAL_ACCT                         (OBJ_INIFILE |                   OBJ_SNMP |            OBJ_PJL | OBJ_PML |                    0x0011)
#define OT_PERIPHERAL_CAPABILITIES                 (OBJ_INIFILE |                   OBJ_SNMP |            OBJ_PJL | OBJ_PML |                    0x000B)
#define OT_PERIPHERAL_DISK                         (OBJ_INIFILE |                   OBJ_SNMP |            OBJ_PJL | OBJ_PML |                    0x000C)
#define OT_PERIPHERAL_INPUT_TRAYS                  (OBJ_INIFILE |                   OBJ_SNMP |            OBJ_PJL | OBJ_PML |                    0x000D)
#define OT_PERIPHERAL_HCI                          (OBJ_INIFILE |                   OBJ_SNMP |                      OBJ_PML |                    0x0024)
#define OT_PERIPHERAL_HCO                          (OBJ_INIFILE |                   OBJ_SNMP |                      OBJ_PML |                    0x0025)
#define OT_PERIPHERAL_CONFIG_CHANGE                (OBJ_INIFILE |                   OBJ_SNMP |                      OBJ_PML |                    0x0026)
#define OT_PERIPHERAL_INSTALLED_PHD                (OBJ_INIFILE |                   OBJ_SNMP |                      OBJ_PML |                    0x0027)
#define OT_PERIPHERAL_OUTPUT_BINS                  (OBJ_INIFILE |                   OBJ_SNMP |                      OBJ_PML |                    0x0028)
#define OT_PERIPHERAL_ENVL_FEEDER                  (OBJ_INIFILE |                   OBJ_SNMP |                      OBJ_PML |                    0x0029)
#define OT_PERIPHERAL_ENABLED_MEDIA                (OBJ_INIFILE |                   OBJ_SNMP |                      OBJ_PML |                    0x002A)
#define OT_PERIPHERAL_FONT_LIST2                   (OBJ_INIFILE |                                                             OBJ_RRM |          0x0061)
#define OT_PERIPHERAL_DOWNLOAD_PS_FONT             (OBJ_INIFILE |                                                             OBJ_RRM |          0x0062)
#define OT_PERIPHERAL_DELETE_PS_FONT               (OBJ_INIFILE |                                                             OBJ_RRM |          0x0063)
#define OT_PERIPHERAL_FONT_INFO                    (OBJ_INIFILE |                                                             OBJ_RRM |          0x0030)
#define OT_PERIPHERAL_DOWNLOAD_FONT                (OBJ_INIFILE |                                                             OBJ_RRM |          0x0035)
#define OT_PERIPHERAL_DELETE_FONT                  (OBJ_INIFILE |                                                             OBJ_RRM |          0x0036)
#define OT_PERIPHERAL_MS_CHANGE                    (OBJ_INIFILE |                   OBJ_SNMP |                      OBJ_PML |                    0x0037)
#define OT_PERIPHERAL_MASS_STORAGE                 (OBJ_INIFILE |                   OBJ_SNMP |                      OBJ_PML |                    0x0038)
#define OT_PERIPHERAL_RPC_BOUND                    (                                OBJ_SNMP |                                                   0x005A)
#define OT_PERIPHERAL_CAPABILITIES2                (OBJ_INIFILE |                   OBJ_SNMP |            OBJ_PJL | OBJ_PML |                    0x0066)
#define OT_PERIPHERAL_PLOTTER_STATUS               (                                OBJ_SNMP |                      OBJ_PML |                    0x0040)
#define OT_PERIPHERAL_PLOTTER_INPUT_TRAY           (                                OBJ_SNMP |                      OBJ_PML |                    0x0041)
#define OT_PERIPHERAL_CURRENT_PRINT_POSITION       (                                                OBJ_PML |                  0x006E)
#define OT_PERIPHERAL_TOTAL_PREMATURE_PAGE_EJECT      (                                                OBJ_PML |                  0x006F)
#define OT_PERIPHERAL_MEMORY_OVERFLOW              (                                                OBJ_PML |                  0x0070)
#define OT_PERIPHERAL_MARKING_AGENTS_INITIALIZED      (                                                OBJ_PML |                  0x0071)
#define OT_PERIPHERAL_POWER_DOWN_STATE                (                                                OBJ_PML |                  0x0072)
#define OT_PERIPHERAL_NOT_IDLE                     (                                                OBJ_PML |                  0x0073)
#define  OT_SCANNER_CONFIG                      (                            OBJ_SNMP |                                        0x0080)
#define  OT_SCANNER_DETAILS                        (                            OBJ_SNMP |                                        0x0081)
#define  OT_SCANNER_DETAILS_ADVANCED                  (                            OBJ_SNMP |                                        0x0082)
#define  OT_SCANNER_STATUS                      (                            OBJ_SNMP |                                        0x0083)
#define OT_SCANNER_REMOTE_COMMAND                  (                            OBJ_SNMP |                               OBJ_SSNET | 0x0084)
#define  OT_SCANNER_NETWORK_ENVIRONMENTS_CONFIGURED      (                            OBJ_SNMP |                                        0x0085)
#define  OT_SCANNER_PUBLIC_USER_DEST_CONFIGURED       (                            OBJ_SNMP |                                        0x0086)
#define  OT_SCANNER_PRIVATE_USER_DEST_CONFIGURED         (                                                               OBJ_SSNET | 0x0087)
#define  OT_SCANNER_PUBLIC_USER_ACCOUNTING            (                            OBJ_SNMP |                                        0x0088)
#define  OT_SCANNER_PUBLIC_PRINTER_DEST_CONFIGURED    (                            OBJ_SNMP |                                        0x0089)
#define  OT_SCANNER_PRIVATE_PRINTER_DEST_CONFIGURED      (                                                               OBJ_SSNET | 0x008A)
#define  OT_SCANNER_PUBLIC_FAX_DEST_CONFIGURED        (                            OBJ_SNMP |                                        0x008B)
#define  OT_SCANNER_PRIVATE_FAX_DEST_CONFIGURED       (                                                               OBJ_SSNET | 0x008C)
#define  OT_SCANNER_PUBLIC_DLIST_CONFIGURED           (                            OBJ_SNMP |                                        0x008D)
#define  OT_SCANNER_PRIVATE_DLIST_CONFIGURED          (                                                               OBJ_SSNET | 0x008E)
#define  OT_SCANNER_PUBLIC_SCANNING_SETTING_CONFIGURED   (                            OBJ_SNMP |                                        0x008F)
#define  OT_SCANNER_PRIVATE_SCANNING_SETTING_CONFIGURED  (                                                               OBJ_SSNET | 0x0090)
#define  OT_SCANNER_PRIVATE_AUTOFLOW_CONFIGURED       (                                                               OBJ_SSNET | 0x0091)
#define  OT_SCANNER_USER_SCANNING_WORKAREA            (                                                               OBJ_SSNET | 0x0092)
#define  OT_SCANNER_SCANNING_NOTIFICATION          (                                                               OBJ_SSNET | 0x0093)
#define  OT_SCANNER_DOCUMENTS                   (                                                               OBJ_SSNET | 0x0094)
#define  OT_SCANNER_LANFAX_ENVIRONMENTS_CONFIGURED    (                            OBJ_SNMP |                                           0x0095)
#define OT_SCANNER_TCPIP_CONFIG                    (                            OBJ_SNMP |                                        0x0096)
#define OT_SCANNER_TCP_DIAGS                    (                            OBJ_SNMP |                                        0x0097)
#define OT_PERIPHERAL_BIDI_MONITOR                 (                                                                        0x0098)
#define OT_SCANNER_PRINTER_CLASSES_CONFIGURED    (                            OBJ_SNMP |                                        0x0099)
 

/* These are a list of valid objects */
#define PERIPHERAL_BASE             0
#define JETDIRECT_BASE              5000


/* PJL object values begin here */
#define PJL_LONGEDGE                1
#define PJL_SHORTEDGE               2
#define PJL_JOB                     3
#define PJL_AUTO                    4
#define PJL_DANISH                  5
#define PJL_GERMAN                  6
#define PJL_ENGLISH                 7
#define PJL_SPANISH                 8
#define PJL_FRENCH                  9
#define PJL_ITALIAN                 10
#define PJL_DUTCH                   11
#define PJL_NORWEGIAN               12
#define PJL_POLISH                  13
#define PJL_PORTUGUESE              14
#define PJL_FINNISH                 15
#define PJL_SWEDISH                 16
#define PJL_TURKISH                 17
#define PJL_PORTRAIT                18
#define PJL_LANDSCAPE               19
#define PJL_UPPER                   20
#define PJL_LOWER                   21
#define PJL_LETTER                  22
#define PJL_LEGAL                   23
#define PJL_A4                      24
#define PJL_EXECUTIVE               25
#define PJL_COM10                   26
#define PJL_MONARCH                 27
#define PJL_C5                      28
#define PJL_DL                      29
#define PJL_B5                      30
#define PJL_CUSTOM                  31
#define PJL_PCL                     32
#define PJL_POSTSCRIPT              33
#define PJL_LIGHT                   34
#define PJL_MEDIUM                  35
#define PJL_DARK                    36
#define PJL_ON                      37
#define PJL_OFF                     38
#define PJL_ENABLE                  39
#define PJL_DISABLE                 40
#define PJL_15                      41
#define PJL_30                      42
#define PJL_60                      43
#define PJL_120                     44
#define PJL_180                     45
#define PJL_JAPANESE                46
#define PJL_ENGLISH_UK              47
#define PJL_MEXICO                  48
#define PJL_CANADA                  49
#define PJL_11x17                   50
#define PJL_JPOST                   51
#define PJL_JPOSTD                  52
#define PJL_JISB4                   53
#define PJL_JISB5                   54
#define PJL_LEDGER                  55
#define PJL_A3                      56
#define PJL_FIRST                   57
#define PJL_CASSETTE                58
#define PJL_MANUAL                  59
#define PJL_2XPOST                  60     /* 2X Post envelope size for arrakis */
#define PJL_A5                      61
/* ADD NEW PJL OBJECT VALUES HERE */
#define PJL_UNKNOWN                 0xFFFF


/* TrayStruct */
typedef struct {
   DWORD          flags;                        /* use the defines above */
   DWORD          capacity;
   DWORD          mediaLevel;                   /* 0xFFFFFFFF = means not empty */
                                                /* 0          = empty */
                                                /* -2         = unknown */
                                                /* -3         = not empty */
   DWORD          mediaSize;
   DWORD          trayNum;
   TCHAR          mediaTypeName[32];
   TCHAR          trayLabel[32];
   } TrayStruct;


/* BinStruct */
#define SET_OVERRIDE                0x00000001
#define SET_BINNAME                 0x00000002

/* Constants that define the override modes for a full output bin */
#define OVERRIDE_WAIT_FOREVER       1
#define OVERRIDE_CANCEL_JOB         2
#define OVERRIDE_TO_DEFAULT_BIN     3
#define OVERRIDE_IGNORE_ATTENTION   4
#define OVERRIDE_IGNORE_BINDER      5

/* Constants to define the stacking order in an output bin */
#define CORRECT_ORDER_OUT           3
#define REVERSE_ORDER_OUT           4

typedef struct {
   DWORD          flags;                        /* use defines above */
   DWORD          totalCapacity;
   DWORD          remainingCapacity;            /* 0xFFFFFFFF = means not empty */
                                                /* 0          = full */
                                                /* -2         = unknown */
                                                /* -3         = not empty */
   DWORD          stackOrder;
   DWORD          overrideMode;
   DWORD          logicalBinNum;
   TCHAR          binName[32];
   } BinStruct;


/* OT_PERIPHERAL_INFO, these are generally static */
typedef struct {
   TCHAR          name[128];                    /* node name of the peripheral */
   TCHAR          reserved[16];                 /* formerly cardModel -- should now be obtained through OT_CARD_INFO */
   TCHAR          nodeAddress[32];              /* link address of JetDirect card */
   TCHAR          networkNumber[32];            /* network number of JetDirect card */
   HPBOOL         bConfigured;                  /* TRUE if the card is configured, FALSE if set to factory defaults */
   HPBOOL         bDirectMode;                  /* TRUE if direct mode support */
   HPBOOL         bNDS;                         /* NetWare Directory Services supported */
   DWORD          portNumber;                   /* 0 for non-EX multi-port devices */
   TCHAR          IPAddress[32];                /* TCP/IP address of card (if applicable) */
   TCHAR          ipHostName[128];              //  Host name for IP stack
   DWORD          dwConnsSupported;
   DWORD          dwConnsConfigured;
   TCHAR          smashedName[128];             /* When we must have a name, this is it */
   } PeripheralInfo;


/* NOTE:  Whenever a new device is added, please add it to
** the SetDeviceID() member function in periphdb.cpp
*/

/* Printer Device IDs */
#define MIO_HP_DEVICE_BASE          0
#define MIO_HP_DEVICE_BASE_SPEC     9000
#define NON_MIO_HP_DEVICE_BASE      10000
#define NON_HP_DEVICE_BASE          11000

#define PTR_UNDEF                   0

/* hp mio-capable devices */
#define PTR_LJIIISI                 MIO_HP_DEVICE_BASE + 1        /* LaserJet IIISi, eli/helios */
#define PTR_CLJ                     MIO_HP_DEVICE_BASE + 2        /* Color LaserJet, bedrock */
#define PTR_LJ4                     MIO_HP_DEVICE_BASE + 3        /* LaserJet 4/4M */
#define PTR_LJ4M                    PTR_LJ4                       /* LaserJet 4/4M */
#define PTR_DJ                      MIO_HP_DEVICE_BASE + 4        /* DesignJet */
#define PTR_LJ4SI                   MIO_HP_DEVICE_BASE + 5        /* LaserJet 4Si/4Si MX, sawtooth */
#define PTR_LJ4SIMX                 PTR_LJ4SI                     /* LaserJet 4Si/4Si MX, sawtooth */
#define PTR_PJXL300                 MIO_HP_DEVICE_BASE + 6        /* PaintJet XL 300 */
#define PTR_DJ1200C                 MIO_HP_DEVICE_BASE + 7        /* DeskJet 1200C, jason */
#define PTR_DJ650C                  MIO_HP_DEVICE_BASE + 8        /* DesignJet 650C, flamingo */
#define PTR_DJ600                   MIO_HP_DEVICE_BASE + 9        /* DesignJet 600 */
#define PTR_LJ4PLUS                 MIO_HP_DEVICE_BASE + 10       /* LaserJet 4 Plus/4 M Plus, ponderosa */
#define PTR_LJ4MPLUS                PTR_LJ4PLUS                   /* LaserJet 4 Plus/4 M Plus, ponderosa */
#define PTR_LJ5SI                   MIO_HP_DEVICE_BASE + 11       /* LaserJet 5Si, eclipse */
#define PTR_LJ5SIMX                 PTR_LJ5SI                     /* LaserJet 5Si, eclipse */
#define PTR_LJ4V                    MIO_HP_DEVICE_BASE + 12       /* LaserJet 4V, arrakis */
#define PTR_LJ4MV                   PTR_LJ4V                      /* LaserJet 4V, arrakis */
#define PTR_GASCHROMO               MIO_HP_DEVICE_BASE + 13       /* HP gas chromograph, instrument division */
#define PTR_DJ1600C                 MIO_HP_DEVICE_BASE + 14       /* DeskJet 1600C, goldrush */
#define PTR_DJ1600CM                PTR_DJ1600C                   /* DeskJet 1600C, goldrush */
#define PTR_LJ5                     MIO_HP_DEVICE_BASE + 15       /* LaserJet 5, elkhorn */
#define PTR_LJ5M                    PTR_LJ5                       /* LaserJet 5, Thunder */
#define PTR_CLJ5                    MIO_HP_DEVICE_BASE + 16       /* Color LaserJet 5, bedrock mlk */
#define PTR_CLJ5M                   PTR_CLJ5                      /* Color LaserJet 5, bedrock mlk */
#define PTR_DJ750C                  MIO_HP_DEVICE_BASE + 20       /* DesignJet 750C, Loquillo */
#define PTR_DJ755CM                 MIO_HP_DEVICE_BASE + 21       /* DesignJet 755CM, Loquillo, more Memory, PS */
#define PTR_DJ_GENERIC              MIO_HP_DEVICE_BASE + 22       /* The default DesignJet  */


/* hp printers, special mio, but not having unique mio peripheral ids */
#define PTR_CJ                      MIO_HP_DEVICE_BASE_SPEC + 0   /* CopyJet, nike */


/* hp non-mio-capable devices */
#define PTR_LJ2_3                   NON_MIO_HP_DEVICE_BASE + 0    /* LaserJet II or III */
#define PTR_LJII                    NON_MIO_HP_DEVICE_BASE + 1    /* LaserJet II */
#define PTR_LJIID                   NON_MIO_HP_DEVICE_BASE + 2    /* LaserJet II */
#define PTR_LJIIP                   NON_MIO_HP_DEVICE_BASE + 3    /* LaserJet IIP */
#define PTR_LJIII                   NON_MIO_HP_DEVICE_BASE + 4    /* LaserJet III */
#define PTR_LJIIID                  NON_MIO_HP_DEVICE_BASE + 5    /* LaserJet IIID */
#define PTR_LJIIIP                  NON_MIO_HP_DEVICE_BASE + 6    /* LaserJet IIIP */
#define PTR_LJ4L                    NON_MIO_HP_DEVICE_BASE + 7    /* LaserJet 4L */
#define PTR_LJ4ML                   PTR_LJ4L                      /* LaserJet 4ML */
#define PTR_DJ200                   NON_MIO_HP_DEVICE_BASE + 8    /* DesignJet 200 */
#define PTR_LJ4P                    NON_MIO_HP_DEVICE_BASE + 9    /* LaserJet 4P/4MP */
#define PTR_LJ4MP                   PTR_LJ4P                      /* LaserJet 4P/4MP */
#define PTR_PJXL                    NON_MIO_HP_DEVICE_BASE + 10   /* PaintJet */
#define PTR_LJ_IIPPLUS              NON_MIO_HP_DEVICE_BASE + 11   /* LaserJet 2P+ */
#define PTR_LJ4PJ                   NON_MIO_HP_DEVICE_BASE + 12   /* LaserJet 4PJ */
#define PTR_LJ5P                    NON_MIO_HP_DEVICE_BASE + 13   /* LaserJet 5P */
#define PTR_LJ5MP                   PTR_LJ5P                      /* LaserJet 5P */
#define PTR_LJ5L                    NON_MIO_HP_DEVICE_BASE + 14   /* LaserJet 5L */
#define PTR_LJ4LC                   NON_MIO_HP_DEVICE_BASE + 15   /* LaserJet 4LC */
#define PTR_LJ4MLC                  PTR_LJ4LC                     /* LaserJet 4MLC */
#define PTR_LJ4LJPRO                NON_MIO_HP_DEVICE_BASE + 16   /* LaserJet 4LJ Pro */
#define PTR_LJ4MLJPRO               PTR_LJ4LJPRO                  /* LaserJet 4MLJ Pro */
#define PTR_DJ250C                  NON_MIO_HP_DEVICE_BASE + 17   /* DesignJet 250C, parrot */
#define PTR_DJ230                   NON_MIO_HP_DEVICE_BASE + 18   /* DesignJet 230, raven */
#define PTR_DJ220                   NON_MIO_HP_DEVICE_BASE + 19   /* DesignJet 220, clipper */
#define PTR_DJ500                   NON_MIO_HP_DEVICE_BASE + 20   /* DeskJet 500 */
#define PTR_DJ500C                  NON_MIO_HP_DEVICE_BASE + 21   /* DeskJet 500C */
#define PTR_DJ550                   NON_MIO_HP_DEVICE_BASE + 22   /* DeskJet 550 */
#define PTR_DJ550C                  NON_MIO_HP_DEVICE_BASE + 23   /* DeskJet 550C */
#define PTR_DJ520                   NON_MIO_HP_DEVICE_BASE + 24   /* DeskJet 520 */
#define PTR_DJ520C                  NON_MIO_HP_DEVICE_BASE + 25   /* DeskJet 520C */
#define PTR_DJ540                   NON_MIO_HP_DEVICE_BASE + 26   /* DeskJet 540 */
#define PTR_DJ560                   NON_MIO_HP_DEVICE_BASE + 27   /* DeskJet 560 */
#define PTR_DJ560C                  NON_MIO_HP_DEVICE_BASE + 28   /* DeskJet 560 C */
#define PTR_DkJ600                  NON_MIO_HP_DEVICE_BASE + 29   /* DeskJet 600, Voltaire 1PC */
#define PTR_DkJ660C                 NON_MIO_HP_DEVICE_BASE + 30   /* DeskJet 660C, Voltaire 2PC */
#define PTR_DkJ850C                 NON_MIO_HP_DEVICE_BASE + 31   /* Rocky */
#define PTR_LJ6P                    NON_MIO_HP_DEVICE_BASE + 32   /* LaserJet 6P, Alpine */
#define PTR_LJ6MP                   PTR_LJ6P                      /* LaserJet 6MP, Redfish */
#define PTR_DkJ870C                 NON_MIO_HP_DEVICE_BASE + 33   /* DeskJet 870C, Frontier */
#define PTR_SJ4SI                   NON_MIO_HP_DEVICE_BASE + 34   /* ScanJet 4Si, Sienna */
#define PTR_SJ5SI                   NON_MIO_HP_DEVICE_BASE + 35   /* ScanJet 5Si, Volterra */
#define PTR_DkJ680C                 NON_MIO_HP_DEVICE_BASE + 36   /* DeskJet 680C */
#define PTR_LJ6L                    NON_MIO_HP_DEVICE_BASE + 37   /* LaserJet 6L, Summit */


/* Printer Class */
#define PTR_CLASS_UNDEF             0
#define PTR_CLASS_PRINTER           1
#define PTR_CLASS_PLOTTER           2
#define PTR_CLASS_INSTRUMENT        3           /* xstation */
#define PTR_CLASS_SCANNER           4
#define PTR_CLASS_COPIER            5


/* OT_PERIPHERAL_ACCT */
#define SET_ASSETNUM                0x00000001
#define SET_CONTACT                 0x00000002
#define SET_LOCATION                0x00000004

typedef struct {
    DWORD         flags;                        /* use defines above */
    DWORD         enginePageCount;
    TCHAR          assetNumber[16];              /* r/w */
    TCHAR          serialNumber[16];
    TCHAR          systemContact[256];           /* Eclipse: r/w */
    TCHAR          systemLocation[256];          /* Eclipse: r/w */
    } PeripheralAcct;


/* OT_PERIPHERAL_STATUS, these are dynamic */
typedef struct {
   DWORD          peripheralStatus;             /* Status of the printer */
   UINT           statusResID;                  /* resource ID of status message */
   DWORD          severity;                     /* Severity of the status */
   HINSTANCE      hResourceModule;              /* Module with severity icon */
   UINT           severityIcon;                 /* Severity icon */
   DWORD          helpContext;                  /* Context for current status help */
   TCHAR          helpFilename[32];             /* Help file name for status context */
   HINSTANCE      hBitmapModule;                /* Module with printerResID and statusBitmapID */
   UINT           printerResID;                 /* Resource ID of printer bitmap */
   UINT           statusBitmapID;               /* Resource ID of status balloon */
   } PeripheralStatus;


/* OT_PERIPHERAL_DETAILS, these are generally static */
typedef struct {
   DWORD          deviceID;                     /* device number */
   DWORD          peripheralClass;              /* either printer, plotter, instrument */
   TCHAR          deviceName[80];               /* text name of device */
   } PeripheralDetails;


/* OT_PERIPHERAL_CAPABILITIES */
#define CAPS_INSTALLED_RAM          0x00000001
#define CAPS_DUPLEX                 0x00000002
#define CAPS_POSTSCRIPT             0x00000004
#define CAPS_PCL                    0x00000008
#define CAPS_DISK                   0x00000010
#define CAPS_HCO                    0x00000020
#define CAPS_HCI                    0x00000040
#define CAPS_PML                    0x00000080
#define CAPS_POWERSAVE              0x00000100
#define CAPS_SIR                    0x00000200
#define CAPS_COLOR                  0x00000400
#define CAPS_PPM_MONO               0x00000800
#define CAPS_GRAYSCALE              0x00001000
#define CAPS_11x17                  0x00002000
#define CAPS_HPGL2                  0x00004000
#define CAPS_MEDIA_INFO             0x00008000
#define CAPS_OUTPUT_INFO            0x00010000
#define CAPS_ENVL_FEEDER            0x00020000
#define CAPS_ROLL_FEED              0x00040000
#define CAPS_D_SIZE_PAPER           0x00080000
#define CAPS_E_SIZE_PAPER           0x00100000
#define CAPS_PPM_COLOR              0x00200000
#define CAPS_COLORSMART             0x00400000
#define CAPS_CRET                   0x00800000
#define CAPS_DPI                    0x01000000
#define CAPS_TRAY3                  0x02000000

#define GRAYSCALE_8BIT              0x00000001

typedef struct {
   DWORD          flags;
   DWORD          installedRAM;
   HPBOOL         bDuplex;
   HPBOOL         bPostScript;
   HPBOOL         bPCL;
   HPBOOL         bHPGL2;
   HPBOOL         bDisk;                        /* This means we can get OT_PERIPHERAL_DISK */
   HPBOOL         bHCO;                         /* This means we have one or more HCOs */
   HPBOOL         bHCI;                         /* This means we have one or more HCIs */
   HPBOOL         bPML;
   HPBOOL         bPowerSave;
   HPBOOL         bSIR;
   HPBOOL         bColor;
   DWORD          dwGrayScale;                  /* 0=no support, 1=8 bit grayscale, more in future */
   HPBOOL         b11x17;
   HPBOOL         bMediaInfo;                   /* This means we can get OT_PERIPHERAL_INPUT_TRAYS */
   HPBOOL         bOutputInfo;                  /* This means we can get OT_PERIPHERAL_OUTPUT_BINS */
   HPBOOL         bEnvlFeeder;                  /* This means we have one or more envl feeders */
   DWORD          pagesPerMinute;
   DWORD          pagesPerMinuteColor;
   HPBOOL         bRollFeed;                    /* Plotters only, means that roll feed is available */
   HPBOOL         bDSizePaper;                  /* TRUE for D size paper */
   HPBOOL         bESizePaper;                  /* TRUE for E size paper */
   HPBOOL         bColorSmart;                  /* TRUE for ColorSmart capability */
   HPBOOL         bCREt;                        /* TRUE for CREt capability */
   HPBOOL         bDPI;                         /* TRUE for displaying printer dpi */
   HPBOOL         bTray3;                       /* used for elkhorn */
   } PeripheralCaps, FAR *LPPeripheralCaps;


/* OT_PERIPHERAL_DISK */
#define SET_INITIALIZE              0x00000001
#define SET_PROTECT                 0x00000002
#define WP_READ_WRITE               1
#define WP_READ                     2
#define WP_NO_ACCESS                3

typedef struct {
    DWORD       flags;              /* use defines above */
    DWORD       capacity;           /* bytes */
    DWORD       freeSpace;          /* bytes */
    DWORD       writeProtectStatus;
    HPBOOL      bInitialized;
    TCHAR       modelNumber[80];
    TCHAR       manufactInfo[80];
    } PeripheralDisk, FAR *LPPeripheralDisk;


/* OT_PERIPHERAL_INPUT_TRAYS */
typedef struct {
   DWORD          numTrays;
   TrayStruct     inputTrays[4];
   } PeripheralInputTrays, FAR *LPPeripheralInputTrays;


/* OT_PERIPHERAL_HCI */
typedef struct {
   TCHAR          modelNumber[80];
   TCHAR          manufactInfo[80];
   DWORD          numTrays;
   TrayStruct     inputTrays[4];
   } PeripheralHCI, FAR *LPPeripheralHCI;


/* OT_PERIPHERAL_HCO */
#define SET_MODE                    0x00000001
#define SET_BINS                    0x00000002

/* Constants to define the current mode of the HCO */
#define HCO_STACKERMODE             1
#define HCO_MAILBOXMODE             2
#define HCO_SEPARATORMODE           3
#define HCO_COLLATORMODE            4

/* Constants to define the stacking order in an output bin
** Used in BinStruct
*/
#define CORRECT_ORDER_OUT           3
#define REVERSE_ORDER_OUT           4

typedef struct {
   DWORD          flags;                        /* use defines above */
   TCHAR          modelNumber[80];
   TCHAR          manufactInfo[80];
   DWORD          HCOmode;
   DWORD          numBins;
   BYTE           modeBuf[16];
   BinStruct      outputBins[9];
   } PeripheralHCO, FAR *LPPeripheralHCO;


/* OT_PERIPHERAL_CONFIG_CHANGE */
typedef struct {
   DWORD          changeCount;
   } PeripheralConfigChange;


/* OT_PERIPHERAL_INSTALLED_PHD */
/* Constants to define types of Paper Handling Devices */
#define INPUT_PHD                   10
#define OUTPUT_PHD                  11
#define OUTPUT_BINDING_PHD          13

typedef struct {
   DWORD          PHDtype;
   HCOMPONENT     PHDhandle;
   } PHDtype;

typedef struct {
   DWORD          PHDtype;
   TCHAR          PHDmodel[80];
   HCOMPONENT     PHDhandle;
   } PHDtype_model;

typedef struct {
   DWORD          numPHD;
   PHDtype        installed[6];
   } PeripheralInstalledPHDtype;

typedef struct {
   DWORD          numPHD;
   PHDtype_model  installed[6];
   } PeripheralInstalledPHD;


/* OT_PERIPHERAL_OUTPUT_BINS */
typedef struct {
   DWORD          numBins;
   BinStruct      outputBins[2];
   } PeripheralOutputBins;


/* OT_PERIPHERAL_ENVL_FEEDER */
typedef struct {
   TCHAR          modelNumber[80];
   TCHAR          manufactInfo[80];
   DWORD          numTrays;
   TrayStruct     inputTrays[2];
   } PeripheralEnvl;


/* Media type constants used in OT_PERIPHERAL_ENABLED_MEDIA */
#define MEDIA_PLAIN                 0
#define MEDIA_PREPRINTED            1
#define MEDIA_LETTERHEAD            2
#define MEDIA_TRANSPARENCY          3
#define MEDIA_PREPUNCHED            4
#define MEDIA_LABELS                5
#define MEDIA_BOND                  6
#define MEDIA_RECYCLED              7
#define MEDIA_COLOR                 8
#define MEDIA_CARDSTOCK             9
#define MEDIA_USERTYPE1             10
#define MEDIA_USERTYPE2             11
#define MEDIA_USERTYPE3             12
#define MEDIA_USERTYPE4             13
#define MEDIA_USERTYPE5             14

typedef struct {
   DWORD          mediaID;                      /* mediaID refers to the media type constants in bh.h */
   TCHAR          mediaName[32];
   TCHAR          controlPanelName[16];
   } MediaNameID;

typedef struct {
   DWORD          numNames;
   MediaNameID    names[16];
   } PeripheralEnabledMedia;


/* OT_PERIPHERAL_FONT_INFO */
#define P_F_I_DOWNLOADER_SIZE       32
#define P_F_I_DESCRIPTION_SIZE      128
#define P_F_I_GLOBAL_NAME_SIZE      128
#define P_F_I_FILEPATH_SIZE         128
#define P_F_I_VERSION_SIZE          64
#define P_F_I_APPLICATION_SPECIFIC_SIZE 128

typedef struct {
   HCOMPONENT fontHandle;
   DWORD          size;
   DWORD          location;
   TCHAR          downloader[P_F_I_DOWNLOADER_SIZE];
   TCHAR          description[P_F_I_DESCRIPTION_SIZE];
   TCHAR          globalName[P_F_I_GLOBAL_NAME_SIZE];
   TCHAR          version[P_F_I_VERSION_SIZE];
   TCHAR          applicationSpecificData[P_F_I_APPLICATION_SPECIFIC_SIZE];
   } PeripheralFontInfo;


/* Get a list of all fonts on the disk that includes */
#define MAX_FONTLIST2_CNT           100

typedef struct FONTINFO2 {
    HCOMPONENT  fontHandle;
    TCHAR       globalName[P_F_I_GLOBAL_NAME_SIZE];
    } FontInfo2, FAR *LPFontInfo2;

/* OT_PERIPHERAL_FONT_LIST2 */
typedef struct {
   DWORD          dwSegNum;                     /* 0-based grouping block of fonts */
   DWORD          numFonts;
   FontInfo2      fonts[MAX_FONTLIST2_CNT];
   } PeripheralFontList2;


/* Constants to define Mass Storage Device Types.  Used in
** OT_PERIPHERAL_MASS_STORAGE, OT_PERIPHERAL_DISK, OT_DOWNLOAD_FONT
**/
#define MS_ANY_LOCATION             0
#define MS_DISK                     1


/* OT_PERIPHERAL_DOWNLOAD_FONT */
typedef struct {
   DWORD          location;                     /* use RRM_ANY_LOCATION */
   HCOMPONENT     fontHandle;
   TCHAR          description[P_F_I_DESCRIPTION_SIZE];
   TCHAR          filepath[P_F_I_FILEPATH_SIZE];
   TCHAR          downloader[P_F_I_DOWNLOADER_SIZE];
   TCHAR          applicationSpecificData[P_F_I_APPLICATION_SPECIFIC_SIZE];
   } PeripheralDownloadFont;


/* OT_PERIPHERAL_DELETE_FONT */
typedef struct {
   HCOMPONENT     fontHandle;
   TCHAR          username[32];
   } PeripheralDeleteFont;


/* OT_PERIPHERAL_MS_CHANGE */
typedef struct {
   DWORD          mschange;
   } PeripheralMSChange;


/* OT_PERIPHERAL_MASS_STORAGE */
/* Constants to define Mass Storage Device Types.  Used in */
/* OT_PERIPHERAL_MASS_STORAGE, OT_PERIPHERAL_DISK, OT_DOWNLOAD_FONT */
#define MS_ANY_LOCATION             0
#define MS_DISK                     1
#define MS_FLASH                    2

typedef struct {
   DWORD          MStype;                       /* MS_DISK or MS_FLASH in bh.h */
   HCOMPONENT     MShandle;
   } MStype_handle;


typedef struct {
   DWORD          MScount;
   DWORD          MaxFileHandles;
   DWORD          MSConfigChange;
   MStype_handle  installed[6];
   } PeripheralMassStorage;


/* OT_PERIPHERAL_RPC_BOUND */
typedef struct {
   BYTE           buf[40];
   DWORD          bufLen;
   } ProtocolInfo;

typedef struct {
   ProtocolInfo   stacks[4];
   DWORD          numStacks;
   HPBOOL         bSupported;
   } PeripheralRPCBound;

#define MAX_PROTOCOLS               4


/* OT_PERIPHERAL_CAPABILITIES2 */
#define CAPS2_PJL                   0x00000001
#define CAPS2_STAPLER               0x00000002
#define CAPS2_FAX                   0x00000004
#define CAPS2_PROOF_N_HOLD          0x00000008
#define CAPS2_ADF                   0x00000010
#define CAPS2_OPTICAL_RES           0x00000020
#define CAPS2_PJL_COLLATION         0x00000040
#define CAPS2_ENHANCED_RES          0x00000080

typedef struct {

   DWORD          flags;                        /* one bit to enable each DWORD entry in the struct, using the CAPS2_DW_* */

   HPBOOL         bPJL;                         /* TERN_TRUE if PJL supported? */
   HPBOOL         bStapler;                     /* TERN_TRUE if a stapler is present */
   HPBOOL         bFAX;                         /* TERN_TRUE if a fax is present */
   HPBOOL         bProofNHold;                  /* TERN_TRUE if Proof N Hold */
   DWORD          dwADFSpeedSize;               /* If an automatic document feed is present, PPM speed in high word, capacity in low word */
   DWORD          dwOpticalRes;                 /* Optical resolution for scanners */
   DWORD          dwEnhancedRes;                /* Enhanced resolution for scanners */
   HPBOOL         bPJLCollation;                /* TRUE if device is TOPAZ capable (i.e. PJL_COLLATED_ORIGINALS_SUPPORTED is TRUE */
   DWORD          dwReserved[24];               /* -- place-holders for new definitions -- */
   
   } PeripheralCaps2, FAR *LPPeripheralCaps2;


/* OT_PERIPHERAL_PLOTTER_STATUS */
typedef struct {
   DWORD          PlotterErrors;                /* NOT-READY-PRINTER */
   DWORD          PlotterPrintEngineErrors;     /* NOT-READY-DESTINATION-PRINT-ENGINE */
   DWORD          PlotterPrintEngineWarnings;   /* STATUS-DESTINATION-PRINT-ENGINE */
   DWORD          PlotterActivity;              /* NOT-IDLE */
   DWORD          PlotterPrintEngineActivity;   /* NOT-IDLE-DESTINATION-PRINT-ENGINE */
   } PeripheralPlotterStatus;


/* OT_PERIPHERAL_PLOTTER_INPUT_TRAY */
typedef struct {
   DWORD          mediaFormat;                  /* TRAY1-MEDIA-SIZE-LOADED */
   DWORD          mediaLength;                  /* TRAY1-CUSTOM-MEDIA-WIDTH */
   DWORD          mediaWidth;                   /* TRAY1-CUSTOM-MEDIA-LENGTH */
   DWORD          mediaName;                    /* TRAY1-MEDIA-TYPE */
   } PeripheralPlotterInputTray;

/* OT_PERIPHERAL_CURRENT_PRINT_POSITION */
typedef struct {
   DWORD          dwInches;                     /* Inches from top of page */
   } PeripheralCurrentPosition;

   
/* OT_PERIPHERAL_TOTAL_PREMATURE_PAGE_EJECT */
typedef struct {
   DWORD          dwTotal;
   } PeripheralPrematureEject;


/* OT_PERIPHERAL_MARKING_AGENTS_INITIALIZED  */
typedef struct {
   HPBOOL         bAgent1Initialized;
   HPBOOL         bAgent2Initialized;
   HPBOOL         bAgent3Initialized;
   HPBOOL         bAgent4Initialized;
   } PeripheralAgentsInit;


/* OT_PERIPHERAL_POWER_DOWN_STATE */
typedef struct {
   DWORD          dwState;
   } PeripheralPowerDownState;


/* OT_PERIPHERAL_NOT_IDLE */
typedef struct {
   HPBOOL         bSourceIO;
   HPBOOL         bSourceScanner;
   HPBOOL         bSourceFaxReceive;
   HPBOOL         bProcessingPDL;
   HPBOOL         bDestinationPrintEngine;
   HPBOOL         bDestinationFaxSend;
   HPBOOL         bDestinationUpload;
   } PeripheralNotIdle;


/* OT_PERIPHERAL_MEMORY_OVERFLOW */
typedef struct {
   DWORD          dwDataOverflow;
   DWORD          dwResourceOverflow;
   } PeripheralMemoryOverflow;


/* OT_PERIPHERAL_BIDI_MONITOR */
//
// This structure is used to pass a GetPrinterDataFromPort
// request from a port monitor down to COLA to allow an
// applet to respond to it.  This is generally used for
// bidi driver support.
//
typedef struct {
   DWORD          ControlID;  // Control ID (not usually used)
   LPTSTR         pValueName; // Key to retrieve in UNICODE, non-localized format 
   LPTSTR         lpInBuffer; // Input buffer for specifying additional info.
   DWORD          cbInBuffer; // Size of the input buffer.
   LPTSTR         lpOutBuffer;   // Buffer to return the key value info in.
   DWORD          cbOutBuffer;   // Size of the return buffer.
   LPDWORD        lpcbReturned;  // Number of bytes returned in the input buffer or
                        // size needed if return code is RC_BUFFER_OVERFLOW.
} PeripheralBidiMonitor;



// Types for String Manipulation used by scanner objects.

#define SSNET_MAX_DOMAIN_NAME_LENGTH          64
#define SSNET_MAX_SERVER_NAME_LENGTH          64
#define SSNET_MAX_NET_SCANNER_NAME_LENGTH     32
#define SSNET_SAP_STRING_LENGTH               64
#define SSNET_MAX_NET_OBJECT_NAME_LENGTH     128
#define SSNET_MAX_NET_OBJECT_PSWD_LENGTH      32
#define SSNET_MAX_MODEL_NAME_LENGTH           64
#define SSNET_MAX_DESCRIPTION_LENGTH         128
#define SSNET_MAX_VERSION_STRING_LENGTH       32
#define SSNET_MAX_ASSET_NUMBER_LENGTH         32
#define SSNET_MAX_CP_PSWD_LENGTH              32
#define SSNET_MAX_SYMBOLIC_NAME_LENGTH        32
#define SSNET_MAX_TITLE_NAME_LENGTH           32
#define SSNET_MAX_FAX_NUMBER_LENGTH           64
#define SSNET_MAX_VOLUME_NAME_LENGTH          32
#define SSNET_MAX_PATH_NAME_LENGTH           128
#define SSNET_MAX_FILE_NAME_LENGTH            32
#define SSNET_MAX_CONTEXT_LENGTH             256
#define SSNET_MAX_APPLICATION_NAME_LENGTH     96
#define SSNET_MAX_APPLICATION_TAG_LENGTH      96
#define SSNET_MAX_ACCTKEY_LENGTH              32
#define SSNET_NETWORK_ADDRESS_LENGTH          32

// OT_SCANNER_CONFIG (OBJ_SNMP)
typedef struct 
{
   // MIB object:    OID_scanner_scnName
   TCHAR    szScannerName[SSNET_MAX_NET_SCANNER_NAME_LENGTH];
   // MIB object: OID_scanner_scnDescription           
   TCHAR    szDescription[SSNET_MAX_DESCRIPTION_LENGTH];
} ScannerConfig, FAR* LPScannerConfig;

// OT_SCANNER_DETAILS (OBJ_SNMP)

// Network Scanner Model Numbers
#define SSNET_UNKNOWN_MODEL            0x00
#define SSNET_HP_SCANJET4SI_MODEL      0x01
#define SSNET_HP_PAGETAKER_MODEL    0x02

// Network Scanner Localizzation Language Types
#define SSNET_UNKNOWN_LANG          0x00
#define SSNET_ENGLISH_LANG          0x01
#define SSNET_FRENCH_LANG           0x02
#define SSNET_GERMAN_LANG           0x03
#define SSNET_ITALIAN_LANG          0x04
#define SSNET_SPANISH_LANG          0x05
#define SSNET_PORTOGUESE_LANG       0x0B

// Network Scanner Paper Size Types
#define SSNET_UNKNOWN_PAPER            0x00
#define SSNET_LETTER_PAPER          0x01
#define SSNET_A4_PAPER              0x02
#define SSNET_LEGAL_PAPER           0x04

// Network Scanner Protocol Stack Types
#define SSNET_UNKNOWN_STACK            0x00
#define SSNET_NETWARE_NCP_IPX_STACK    0x01
#define SSNET_INTERNET_TCPIP_STACK     0x02

// Network Ethernet Frame Types
#define SSNET_UNKNOWN_FRAME            0x00
#define SSNET_ETH802_2_FRAME        0x01
#define SSNET_ETH802_3_FRAME        0x02
#define SSNET_ETHSNAP_FRAME            0x03
#define SSNET_ETHII_FRAME           0x04

// Network Token-Ring Frame Types
#define SSNET_TKR_FRAME             0x01
#define SSNET_TKRSNAP_FRAME            0x02

typedef struct 
{
   // MIB object : OID_scanner_scnModel
   TCHAR szModelName[SSNET_MAX_MODEL_NAME_LENGTH];
   // MIB object : OID_scanner_scnModelNum
   DWORD dwModelNumber;
   // MIB object :  OID_scanner_scnCPLanguage
   DWORD dwLanguage;
   // MIB object :   OID_scanner_scnPaperSize
   DWORD dwDefaultPaperSize;
   // MIB object :  OID_scanner_scnNetEnvironment_neProtocols
   DWORD dwProtocolStacks;
   // MIB object :  OID_scanner_scnNetEnvironment_neIPXFrameType
   DWORD dwIPXFrameType;
   // MIB object :  OID_scanner_scnNetEnvironment_neIPFrameType
   DWORD dwIPFrameType;
   // MIB object :  
   DWORD dwTokenRingSpeed; 
} ScannerDetails, FAR* LPScannerDetails;

// OT_SCANNER_DETAILS_ADVANCED   (OBJ_SNMP)

typedef struct
{
   // MIB object :    OID_scanner_FWDate
   TCHAR szFWDate[32];
   // MIB object :    OID_scanner_scnFWVer
   TCHAR szFWVersion[32];
   // MIB object : OID_scanner_scnGuest
   DWORD dwScannerGuest;
   // MIB object :   OID_scanner_scnAssetNum
   TCHAR szAssetNumber[SSNET_MAX_ASSET_NUMBER_LENGTH];
   // MIB object :   OID_scanner_scnNetEnvironment_neTimeNetEnvID
   DWORD dwRefTimeNetEnvID;
   // MIB object : OID_scanner_scnNetEnvironment_neSAPString
   TCHAR szSAPString[SSNET_SAP_STRING_LENGTH];
   // MIB object : OID_scanner_scnScannedPages
   DWORD dwScannedPages;
} ScannerDetailsAdvanced, FAR* LPScannerDetailsAdvanced;

// OT_SCANNER_STATUS (OBJ_SNMP)


// define Scanner Status values
#define SSNET_SCANNER_STATUS_UNDEFINED    0x00000000
#define SSNET_SCANNER_STATUS_READY        0x00000001
#define SSNET_SCANNER_STATUS_FEEDING      0x00000002
#define SSNET_SCANNER_STATUS_PROCESSING      0x00000003
#define SSNET_SCANNER_STATUS_FAULT        0x00000004


typedef struct
{
   // MIB object : OID_scanner_scnStatus
   DWORD dwStatus;
}ScannerStatus,FAR* LPScannerStatus;



// Domain Types
#define SSNET_UNKNOWN_NETWORK       0x00
#define SSNET_NW3X_NETWORK          0x01
#define SSNET_NW4X_NETWORK          0x02 

#define SSNET_NT3X_NETWORK          0x03
#define SSNET_LM2X_NETWORK          0x05
#define SSNET_LS3X_NETWORK          0x04
#define SSNET_LS4X_NETWORK          0x04


/****************************************************************************/
// OT_SCANNER_REMOTE_COMMAND (OBJ_SNMP | OBJ_SSNET) 
// only SetObject call on this object
// This object is used to send NSRCI commands to the scanner, see NSRCI1.DOC document

// MIB object: OID_scanner_scnCommand

// defines for command syntax 

#define  SSNET_RCI_HEADER        { 0x42, 0x48, 0x00}

// op Codes
#define SSNET_RCI_ADD            0x01
#define SSNET_RCI_DELETE         0x02
#define SSNET_RCI_DOWNLOAD       0x10
#define SSNET_RCI_UPDATE         0x20
#define SSNET_RCI_REPLACE        0x21
#define SSNET_RCI_CHANGE_PARAMS     0xF0

// SubOp Codes

#define SSNET_RCI_CONFIG_PARAMS     0x00
#define SSNET_RCI_NET_ENV        0x01
#define SSNET_RCI_LANFAX         0x02
#define SSNET_RCI_USER           0x11
#define SSNET_RCI_PRINTER        0x12
#define SSNET_RCI_FAX            0x13
#define SSNET_RCI_DLIST          0x14
#define SSNET_RCI_DLIST_ENTRY    0x15
#define SSNET_RCI_SCANNING_SETTING  0x21
#define SSNET_RCI_ACCOUNTING     0x31
#define SSNET_RCI_ACTIVITIES_LOG 0x41
#define SSNET_RCI_INTERACTIONS_LOG  0x42
#define SSNET_RCI_FIRMWARE       0x51           

#define SSNET_RCI_GUEST_USER     0x01
#define SSNET_RCI_CP_PSWD        0x02
#define SSNET_RCI_CP_STATUS         0x03
#define SSNET_RCI_SCANNED_PAGES     0x04


// Define the buffer size.

#define SSNET_RCI_BUFFER_LENGTH     400

typedef struct
{
   BYTE  buffer[SSNET_RCI_BUFFER_LENGTH];
   BYTE  Reserved[SSNET_RCI_BUFFER_LENGTH];
}ScannerCommand, FAR * LPScannerCommand;

/****************************************************************************/
// OT_SCANNER_NETWORK_ENVIRONMENTS_CONFIGURED (OBJ_SNMP ) 


typedef struct 
   {
      // MIB object :  OID_scanner_scnNetEnvironment_neTable_neType
      DWORD dwNetworkType;
      // MIB object :  OID_scanner_scnNetEnvironment_neTable_neDomain
      TCHAR szDomainName[SSNET_MAX_DOMAIN_NAME_LENGTH];
   } SSNETDomainInfo;

// Network Access
#define SSNET_REDIRECTOR_ACCESS     0x01
#define  SSNET_NSJTP_ACCESS         0x02


typedef struct NETENVINFO
{
   SSNETDomainInfo      Domain;
   // MIB object :  OID_scanner_scnNetEnvironment_neTable_neNodeName
   TCHAR          szNodeName[SSNET_MAX_SERVER_NAME_LENGTH];
   // MIB object :  OID_scanner_scnNetEnvironment_neTable_neNodeAddr
   BYTE           NodeAddress[SSNET_NETWORK_ADDRESS_LENGTH];
   // MIB object :  OID_scanner_scnNetEnvironment_neTable_neContext
   TCHAR          szContext[SSNET_MAX_CONTEXT_LENGTH];
   // MIB object :  OID_scanner_scnNetEnvironment_neTable_neEnvID
   DWORD          dwNetEnvID;
}NetEnvInfo, FAR* LPNetEnvInfo;

typedef struct
{
   DWORD dwCount;
   DWORD dwBufferSize;
   LPNetEnvInfo   lpFirstEnv;
} NetEnvConfigured, FAR * LPNetEnvConfigured;

/****************************************************************************/
// OT_SCANNER_PUBLIC_USER_DEST_CONFIGURED (OBJ_SNMP) 



// define user types Sender/Receiver
#define     SSNET_SENDER         0x01
#define     SSNET_RECEIVER_ONLY     0x02
#define     SSNET_SENDER_TO_ALL     0x03


typedef struct PUBLICUSERDEST
{
   // MIB object :  OID_scanner_scnUsers_usTable_usType
   DWORD          dwUserType;
   // MIB object :  OID_scanner_scnUsers_usTable_usName
   TCHAR          szName[SSNET_MAX_SYMBOLIC_NAME_LENGTH];

   TCHAR          szPswd[SSNET_MAX_CP_PSWD_LENGTH];
   // MIB object :  OID_scanner_scnUsers_usTable_usNetObject
   TCHAR          szObject[SSNET_MAX_NET_OBJECT_NAME_LENGTH];
   // MIB object :  OID_scanner_scnUsers_usTable_usNetEnvID
   DWORD          dwNetEnvID;
} PublicUserDest, FAR* LPPublicUserDest;

// use PublicDestConfigured structure to get the following objects
// OT_SCANNER_PUBLIC_USER_DEST_CONFIGURED
// OT_SCANNER_PUBLIC_PRINTER_DEST_CONFIGURED
// OT_SCANNER_PUBLIC_FAX_DEST_CONFIGURED
// OT_SCANNER_PUBLIC_DLIST_DEST_CONFIGURED
// OT_SCANNER_PUBLIC_SETTINGS_CONFIGURED
// OT_SCANNER_PUBLIC_PRINTER_CLASS_CONFIGURED

#define  SSNET_CHANGE_PWD     0x00000003

typedef struct
{
   DWORD    dwOperation;
   DWORD    dwCount;
   DWORD    dwBufferSize;
   LPVOID      lpFirstEntry;
} PublicDestConfigured, FAR * LPPublicDestConfigured;

/****************************************************************************/
// OT_SCANNER_PRIVATE_USER_DEST_CONFIGURED (OBJ_SSNET) 
// SetObject and GetObject on this object


typedef struct PRIVATEUSERDEST
{
   TCHAR          szName[SSNET_MAX_SYMBOLIC_NAME_LENGTH];
   SSNETDomainInfo      Domain;
   TCHAR          szObjectName[SSNET_MAX_NET_OBJECT_NAME_LENGTH];
   TCHAR          szNodeName[SSNET_MAX_SERVER_NAME_LENGTH];
   BYTE           bNodeAddress[SSNET_NETWORK_ADDRESS_LENGTH];
   DWORD          dwShow;           
   TCHAR          szOrigin[SSNET_MAX_SYMBOLIC_NAME_LENGTH]; 
} PrivateUserDest, FAR* LPPrivateUserDest;


#define SSNET_ADD       0x00000001
#define SSNET_DELETE    0x00000002

// use PrivateDestConfigured structure to get the following objects
// OT_SCANNER_PRIVATE_USER_DEST_CONFIGURED
// OT_SCANNER_PRIVATE_PRINTER_DEST_CONFIGURED
// OT_SCANNER_PRIVATE_FAX_DEST_CONFIGURED
// OT_SCANNER_PRIVATE_DLIST_DEST_CONFIGURED
// OT_SCANNER_PRIVATE_SCANNING_SETTING_CONFIGURED
// OT_SCANNER_PRIVATE_AUTOFLOW_CONFIGURED 

typedef struct
{
   DWORD    dwCount;
   DWORD    dwOperation;         // SSNET_ADD or SSNET_DELETE
   TCHAR    UNC_WA_Path[SSNET_MAX_PATH_NAME_LENGTH];
   DWORD    dwBufferSize;
   LPVOID      lpFirstEntry;
} PrivateDestConfigured, FAR * LPPrivateDestConfigured;

/****************************************************************************/
// OT_SCANNER_PUBLIC_USER_ACCOUNTING (OBJ_SNMP)
// only GetObject on this object

typedef struct USERACCT
{
   // MIB object :  OID_scanner_scnUsers_usTable_usName
   TCHAR    szName[SSNET_MAX_SYMBOLIC_NAME_LENGTH];
   // MIB object :  OID_scanner_scnUsers_usTable_usType
   DWORD    dwUserType;
   // MIB object :  OID_scanner_scnUsers_usTable_usNetObject
   TCHAR    szObject[SSNET_MAX_NET_OBJECT_NAME_LENGTH];
   // MIB object :  OID_scanner_scnUsers_usTable_usNetEnvID
   DWORD    dwNetEnvID;
   // MIB object :  OID_scanner_scnUsers_usTable_usDistDocs
   DWORD    dwDistributedDocs;
   // MIB object :  OID_scanner_scnUsers_usTable_usDistPages
   DWORD    dwDistributedPages;
   // MIB object :  OID_scanner_scnUsers_usTable_usScannedDocs
   DWORD    dwScannedDocs;    
   // MIB object :  OID_scanner_scnUsers_usTable_usScannedPages
   DWORD    dwScannedPages;
   // MIB object :  OID_scanner_scnUsers_usTable_usCopiedDocs
   DWORD    dwCopiedDocs;     
   // MIB object :  OID_scanner_scnUsers_usTable_usCopiedPages
   DWORD    dwCopiedPages;
   // MIB object :  OID_scanner_scnUsers_usTable_usFaxedDocs
   DWORD    dwFaxedDocs;      
   // MIB object :  OID_scanner_scnUsers_usTable_usFaxedPages
   DWORD    dwFaxedPages;
   // MIB object :  OID_scanner_scnUsers_usTable_usLastAccess
   DWORD    dwLastAccess;
} UserAcct, FAR* LPUserAcct;



/****************************************************************************/
// OT_SCANNER_PUBLIC_PRINTER_DEST_CONFIGURED (OBJ_SNMP) 


// Network Printer Access Types


#define SSNET_LPR_ACCESS            0x10
#define SSNET_PORT9100_ACCESS       0x11

typedef struct PUBLICPRINTERDEST
   {     
      // MIB object :  OID_scanner_scnPrinters_prTable_prName
      TCHAR          szName[SSNET_MAX_SYMBOLIC_NAME_LENGTH];
      // MIB object :  OID_scanner_scnPrinters_prTable_prClass
      TCHAR          szPrinterClass[SSNET_MAX_SYMBOLIC_NAME_LENGTH];
      // MIB object :  OID_scanner_scnPrinters_prTable_prNetEnvID
      DWORD          dwNetEnvID;
      // MIB object :  OID_scanner_scnPrinters_prTable_prNetObject
      TCHAR          szNetObject[SSNET_MAX_NET_OBJECT_NAME_LENGTH];
      // MIB object :  OID_scanner_scnPrinters_prTable_prNetNode
      TCHAR          szNodeName[SSNET_MAX_SERVER_NAME_LENGTH];
      // MIB object :  OID_scanner_scnPrinters_prTable_prNetAddress
      BYTE           bNodeAddress[SSNET_NETWORK_ADDRESS_LENGTH];
      // MIB object :  OID_scanner_scnPrinters_prTable_prNetAccess
      DWORD          dwNetAccess;      
   } PublicPrinterDest, FAR* LPPublicPrinterDest;

/****************************************************************************/
// OT_SCANNER_PRIVATE_PRINTER_DEST_CONFIGURED (OBJ_SSNET) 
// SetObject and GetObject on this object


typedef struct PRIVATEPRINTERDEST
   {
      TCHAR          szName[SSNET_MAX_SYMBOLIC_NAME_LENGTH];
      TCHAR          szClass[SSNET_MAX_SYMBOLIC_NAME_LENGTH];
      SSNETDomainInfo      strDomain;
      TCHAR          szObjectName[SSNET_MAX_NET_OBJECT_NAME_LENGTH];
      TCHAR          szNodeName[SSNET_MAX_SERVER_NAME_LENGTH];
      BYTE           bNodeAddress[SSNET_NETWORK_ADDRESS_LENGTH];
      DWORD          dwNetAccess;
      DWORD          dwShow;           
      TCHAR          szOrigin[SSNET_MAX_SYMBOLIC_NAME_LENGTH]; 

   } PrivatePrinterDest, FAR* LPPrivatePrinterDest;


/****************************************************************************/

// OT_SCANNER_PUBLIC_FAX_DEST_CONFIGURED (OBJ_SNMP) 
// only SetObject on this object
typedef struct PUBLICFAXDEST
   {
      // MIB object :  OID_scanner_scnFaxes_faxTable_faxName
      TCHAR          szName[SSNET_MAX_SYMBOLIC_NAME_LENGTH];
      // MIB object :  OID_scanner_scnFaxes_faxTable_faxPhoneNum
      TCHAR          szNumber[SSNET_MAX_FAX_NUMBER_LENGTH +1];
      // MIB object :  OID_scanner_scnFaxes_faxTable_faxRetry
      DWORD          dwRetry;
      // MIB object :
      TCHAR          szFaxAccountingKey[SSNET_MAX_ACCTKEY_LENGTH +1];
   } PublicFaxDest,FAR * LPPublicFaxDest;


/****************************************************************************/
// OT_SCANNER_PRIVATE_FAX_DEST_CONFIGURED (OBJ_SSNET) 
// SetObject and GetObject on this object

typedef struct PRIVATEFAXDEST
   {
      TCHAR          szName[SSNET_MAX_SYMBOLIC_NAME_LENGTH];
      TCHAR          szNumber[SSNET_MAX_FAX_NUMBER_LENGTH];
      DWORD          dwRetry;
      TCHAR          szFaxAccountingKey[SSNET_MAX_ACCTKEY_LENGTH];
      DWORD          dwShow;
      TCHAR          szOrigin[SSNET_MAX_SYMBOLIC_NAME_LENGTH];
   } PrivateFaxDest,FAR * LPPrivateFaxDest;


/****************************************************************************/

// OT_SCANNER_PUBLIC_DLIST_CONFIGURED (OBJ_SNMP) 

typedef struct PUBLICDLISTINFO
{
   // MIB object :  OID_scanner_scnDLs_dlTable_dlName
   TCHAR       szName[SSNET_MAX_SYMBOLIC_NAME_LENGTH];
   // MIB object :  OID_scanner_scnDLs_dlTable_dlDestinationsNumber
   DWORD       dwDestinationsCount; //number of destinations in d. list
} DListInfo, FAR* LPDListInfo;

// Distribution List Entry type

#define SSNET_DLIST_USER_ENTRY         0x01
#define SSNET_DLIST_PRINTER_ENTRY      0x02
#define SSNET_DLIST_FAX_ENTRY       0x03

typedef struct DLISTENTRY
{
   // MIB object :  OID_scanner_scnDLs_dlTable_dlDestName
   TCHAR szName[SSNET_MAX_SYMBOLIC_NAME_LENGTH];
} DListEntry, FAR* LPDListEntry;

typedef struct 
{
   DWORD       dwDLsCount;
   DWORD       dwDestsCount;
   DWORD       dwDLsBufferSize;
   DWORD       dwDestsBufferSize;
   LPDListInfo    lpFirstEntry;
   LPDListEntry   lpFirstDest;
} PublicDListConfigured, FAR * LPPublicDListConfigured;



/****************************************************************************/

// OT_SCANNER_PRIVATE_DLIST_CONFIGURED  (OBJ_SSNET)  



typedef struct 
{
   DWORD       dwDLsCount;
   DWORD       dwDestsCount;
   DWORD       dwDLsBufferSize;
   DWORD       dwDestsBufferSize;
   DWORD       dwOperation;
   TCHAR       UNC_WA_Path[SSNET_MAX_PATH_NAME_LENGTH];
   LPDListInfo    lpFirstEntry;
   LPDListEntry   lpFirstDest;
} PrivateDListConfigured, FAR * LPPrivateDListConfigured;



/****************************************************************************/
// OT_SCANNER_PRINTER_CLASSES_CONFIGURED

typedef struct
{
   // MIB object :  OID_scanner_scnPrinterClasses_pcTable_pcName
   TCHAR    szName[SSNET_MAX_SYMBOLIC_NAME_LENGTH];
   DWORD    dwResolution;
   BYTE     ToneMap[256];
}ScannerPrinterClasses, FAR * LPScannerPrinterClasses;


typedef struct
{
   DWORD    dwCount;
   DWORD    dwBufferSize;
   LPVOID      lpFirstEntry;
} PrinterClassesConfigured, FAR * LPPrinterClassesConfigured;

/****************************************************************************/
// OT_SCANNER_PRIVATE_SCANNING_SETTING_CONFIGURED (OBJ_SSNET)
// OT_SCANNER_PUBLIC_SCANNING_SETTING_CONFIGURED  (OBJ_SNMP)

// Network Scanning Setting Types
#define SSNET_USER_SCANNING_SETTING       0x01
#define SSNET_PRINTER_SCANNING_SETTING    0x02
#define SSNET_FAX_SCANNING_SETTING        0x04

// Compression types
#define  SSNET_NO_COMPRESSION       0x00
#define SSNET_PACKBITS_COMPRESSION     0x01
#define  SSNET_G3_COMPRESSION       0x02
#define  SSNET_G4_COMPRESSION       0x03

// format types
#define  SSNET_TIFF_SINGLEPAGE         0x01
#define  SSNET_TIFF_MULTIPAGE       0x02
#define  SSNET_VISIONEER_MAX           0x03
#define  SSNET_PCL5                 0x04
#define  SSNET_PCX                  0x06


typedef struct SCANNINGSETTINGINFO
   {
      // MIB object :  OID_scanner_scnSettings_ssTable_ssType
      DWORD          dwType;
      // MIB object :  OID_scanner_scnSettings_ssTable_ssName
      TCHAR          szName[SSNET_MAX_SYMBOLIC_NAME_LENGTH];
      // MIB object :  OID_scanner_scnSettings_ssTable_ssResolution
      DWORD          dwResolution;
      // MIB object :  OID_scanner_scnSettings_ssTable_ssScaling
      DWORD          dwScaling;
      // MIB object :  OID_scanner_scnSettings_ssTable_ssOutputDataType
      DWORD          dwOutputDataType;
      // MIB object :  OID_scanner_scnSettings_ssTable_ssDitherPattern
      DWORD          dwDitherPattern;
      // MIB object :  OID_scanner_scnSettings_ssTable_ssIntensity
      DWORD          dwIntensity;
      // MIB object :  OID_scanner_scnSettings_ssTable_ssContrast
      DWORD          dwContrast;
      // MIB object :  OID_scanner_scnSettings_ssTable_ssBgControl
      DWORD          dwBackgroundControl;
      // MIB object :  OID_scanner_scnSettings_ssTable_ssScanHeight
      DWORD          dwScanHeight;
      // MIB object :  OID_scanner_scnSettings_ssTable_ssScanWidth
      DWORD          dwScanWidth;
      // MIB object :  OID_scanner_scnSettings_ssTable_ssClass
      TCHAR          Class[SSNET_MAX_SYMBOLIC_NAME_LENGTH];
      // MIB object :  OID_scanner_scnSettings_ssTable_ssCompression
      DWORD          dwCompression;
      // MIB object :  OID_scanner_scnSettings_ssTable_ssFormat
      DWORD          dwFormat;
   } ScanningSettingInfo, FAR * LPScannerSettingsInfo;

/****************************************************************************/
// OT_SCANNER_PRIVATE_AUTOFLOW_CONFIGURED (OBJ_SSNET)

#define SSNET_AUTOFLOW_SYSTEM_SETTING  0x01
#define SSNET_AUTOFLOW_PRIVATE_SETTING 0x02

typedef struct AUTOFLOWINFO
   {
      TCHAR          szName[SSNET_MAX_SYMBOLIC_NAME_LENGTH];
      TCHAR          szScanningSettingName[SSNET_MAX_SYMBOLIC_NAME_LENGTH];
      DWORD          dwScanningSettingType;
      TCHAR          szApplicationName[SSNET_MAX_APPLICATION_NAME_LENGTH];
      TCHAR          szApplicationTag[SSNET_MAX_APPLICATION_TAG_LENGTH];
      DWORD          dwShow;
   } AutoflowDestInfo, FAR* LPAutoflowDestInfo;

/****************************************************************************/
// OT_SCANNER_USER_SCANNING_WORKAREA (OBJ_SSNET)

#define SSNET_WA_DELETE_COND           0x00000001
#define SSNET_WA_CREATE                0x00000002
#define SSNET_WA_CLEAR_ACTIVITY_LOG       0x00000003
#define  SSNET_WORKAREA_STATUS_UNLOCKED      0x00000004
#define  SSNET_WORKAREA_STATUS_LOCKED     0x00000005
#define SSNET_FAX_WORKAREA_CREATE         0x00000006
#define SSNET_WA_DELETE_UNCOND            0x00000007


typedef struct 
{
   DWORD       dwOperation;                  
   DWORD       dwNetworkType;
   TCHAR       szDomain[SSNET_MAX_DOMAIN_NAME_LENGTH];
   TCHAR       szOwner[SSNET_MAX_NET_OBJECT_NAME_LENGTH];   
   TCHAR       UNC_WA_Path[SSNET_MAX_PATH_NAME_LENGTH];  
}WorkAreaPath, FAR * LPWorkAreaPath;

/****************************************************************************/
// OT_SCANNER_SCANNING_NOTIFICATION (OBJ_SSNET)

typedef struct
{
   DWORD       dwLastAccess;
   DWORD       dwMask;
   TCHAR       UNC_WA_Path[SSNET_MAX_PATH_NAME_LENGTH];
   DWORD       dwNotification;

} ScanningNotification, FAR* LPScanningNotification;


/****************************************************************************/
// OT_SCANNER_DOCUMENTS (OBJ_SSNET)



typedef struct 
{
   TCHAR          szPath[SSNET_MAX_PATH_NAME_LENGTH];
   TCHAR          szScanner[SSNET_MAX_NET_SCANNER_NAME_LENGTH];
   TCHAR          szScannerModel [SSNET_MAX_MODEL_NAME_LENGTH];
   TCHAR          szSender[SSNET_MAX_SYMBOLIC_NAME_LENGTH];
   TCHAR          szReceiver[SSNET_MAX_SYMBOLIC_NAME_LENGTH];
   TCHAR          szTitle[SSNET_MAX_TITLE_NAME_LENGTH];
   DWORD          dwScanningSettingType;  
   TCHAR          szScanningSettingName[SSNET_MAX_SYMBOLIC_NAME_LENGTH];
   DWORD          dwCompression;
   DWORD          dwFormat;
   DWORD          dwDuplex;
   TCHAR          szApplicationName[SSNET_MAX_APPLICATION_NAME_LENGTH];
   TCHAR          szApplicationTag[SSNET_MAX_APPLICATION_TAG_LENGTH];
} DocumentInfo, FAR* LPDocumentInfo;
   
typedef struct
{
   DWORD       dwDocsCount;      // number of docs in WA
   DWORD       dwPagesCount;     // number of pages
   DWORD       dwOperation;         // SSNET_DELETE
   TCHAR       UNC_WA_Path[SSNET_MAX_PATH_NAME_LENGTH];  //(IN)
   DWORD       dwDocsBuffSize;      // size of buffer for doc file names
   DWORD       dwPagesBuffSize;  // size of buffer for page file names
   LPDocumentInfo lpFirstEntry;     // pointer to first DocumentInfo struct
   LPSTR       lpFirstPage;      // pointer to first string 
} Documents, FAR* LPDocuments;
   

/****************************************************************************/
// OT_SCANNER_LANFAX_ENVIRONMENTS_CONFIGURED (OBJ_SNMP)


// LAN FAX status
#define SSNET_LANFAX_UNCONFIGURED      0x00000000
#define SSNET_LANFAX_DISABLED       0x00000001
#define SSNET_LANFAX_ENABLED        0x00000002

// resolution
#define SSNET_FAX_FINE              0x00000001
#define SSNET_FAX_SUPER_FINE        0x00000002


// Fax formats
#define  SSNET_FAX_TIFF_UNCOMPRESSED         0x01
#define  SSNET_FAX_TIFF_PACKBITS          0x02
#define  SSNET_FAX_TIFF_G3             0x03
#define  SSNET_FAX_TIFF_G4             0x04
#define  SSNET_FAX_PCL5                   0x05
#define SSNET_FAX_PCX                  0x06
#define SSNET_FAX_DCX                  0x07

// fax speeds
#define SSNET_FAX_4800                 0x01
#define SSNET_FAX_7200                 0x02
#define SSNET_FAX_9600                 0x03
#define SSNET_FAX_12200                0x04
#define SSNET_FAX_14400                0x05
#define SSNET_FAX_28800                0x06
#define SSNET_FAX_38400                0x07

typedef struct LANFAXENVINFO
{  
   // MIB object :  OID_scanner_scnLanNetEnvironment_faxScannerID
   BYTE           bReserved[20];
   // MIB object :  OID_scanner_scnLanNetEnvironment_faxVendor
   DWORD          dwFaxVendor;
   // MIB object :  OID_scanner_scnLanNetEnvironment_faxStatus
   DWORD          dwFaxStatus;
   // MIB object :  OID_scanner_scnLanNetEnvironment_faxNetEnvID
   DWORD          dwNetEnvID;
   // MIB object :  OID_scanner_scnLanNetEnvironment_faxResolution
   DWORD          dwResolution;
   // MIB object :  OID_scanner_scnLanNetEnvironment_faxFormatType
   DWORD          dwFormatType;
   // MIB object :  OID_scanner_scnLanNetEnvironment_faxMaxTXSpeed
   DWORD          dwMaxTXSpeed;
   // MIB object :  OID_scanner_scnLanNetEnvironment_faxECM
   DWORD          dwErrorCorrectingMode;
   // MIB object :  OID_scanner_scnLanNetEnvironment_faxDefaultRetry
   DWORD          dwDefaultRetry;
   // MIB object :  OID_scanner_scnLanNetEnvironment_faxRetryInterval
   DWORD          dwInterval;
   // MIB object :  OID_scanner_scnLanNetEnvironment_faxfaxPrinter
   TCHAR          szPrinterName[SSNET_MAX_SYMBOLIC_NAME_LENGTH];
   // MIB object :  OID_scanner_scnLanNetEnvironment_faxAccountingKey
   TCHAR          szFaxAccountingKey[SSNET_MAX_ACCTKEY_LENGTH];
}LanFaxEnvConfigured, FAR* LPLanFaxEnvInfo;

/****************************************************************************/
//OT_SCANNER_TCPIP_CONFIG                 (OBJ_SNMP)
typedef struct {
   BYTE           ipAddr[4];
   BYTE           mask[4];
   BYTE           gateway[4];
   } ScannerTCPIPConfig;


/****************************************************************************/
//OT_SCANNER_TCP_DIAGS                 (OBJ_SNMP)
typedef struct {
   TCHAR           ipAddr[16];
   TCHAR           mask[16];
   TCHAR           nextHop[16];
   DWORD          cok;
   DWORD          cden;
   DWORD          cab;
   DWORD          ckill;
   DWORD          brec;
   DWORD          bsnt;
   DWORD          tbrec;
   DWORD          tbsnt;
   DWORD          srec;
   DWORD          serr;
   DWORD          siord;
   DWORD          soord;
   DWORD          probes;
   DWORD          sdisc;
   DWORD          ssent;
   DWORD          drec;
   DWORD          ddisc;
   DWORD          ddisc2;
   DWORD          dsent;
   DWORD          drec2;
   DWORD          iper;
   DWORD          ader;
   DWORD          uner;
   DWORD          dxmt;
   DWORD          dres;
   DWORD          drot;
   DWORD          dval;
   DWORD          ic01;
   DWORD          ic02;
   DWORD          ic03;
   DWORD          ic04;
   DWORD          ic05;
   DWORD          ic06;
   DWORD          ic07;
   DWORD          ic08;
   DWORD          ic09;
   DWORD          ic10;
   DWORD          ic11;
   DWORD          sn01;
   DWORD          sn02;
   DWORD          sn03;
   DWORD          sn04;
   DWORD          sn05;
   DWORD          sn06;
   DWORD          sn07;
   DWORD          sn08;
   } ScannerTCPIPDiags;


#endif /* _PAL_OBJ_H */