Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

288 lines
9.9 KiB

/*++
Module Name:
pssframe.c
Abstract:
This module logs the content of DISs and DCSs into PSS log file.
Author:
Jonathan Barner (t-jonb) Mar, 2001
Revision History:
--*/
#include "prep.h"
#include "psslog.h"
#define FILE_ID FILE_ID_PSSFRAME
/*++
Routine Description:
Logs DIS details to PSS log, using the supplied info.
Arguments:
pTG
lpszModulations, bFineRes, b2D, lpszPageWidth, lpszPageLength, lpszMinLineTime - info to log
Return Value:
None
--*/
void LogDISDetails(PThrdGlbl pTG,
LPSTR lpszModulations,
BOOL bFineRes,
BOOL b2D,
LPSTR lpszPageWidth,
LPSTR lpszPageLength,
LPSTR lpszMinLineTime)
{
PSSLogEntry(PSS_MSG, 1, "- Supported Modulations: %s", lpszModulations);
PSSLogEntry(PSS_MSG, 1, "- Ability to use fine resolution: %s", bFineRes ? _T("Yes") : _T("No"));
PSSLogEntry(PSS_MSG, 1, "- Ability to use 2D coding: %s", b2D ? _T("Yes") : _T("No"));
PSSLogEntry(PSS_MSG, 1, "- Supported Page Width: %s", lpszPageWidth);
PSSLogEntry(PSS_MSG, 1, "- Supported Page Length: %s", lpszPageLength);
PSSLogEntry(PSS_MSG, 1, "- Minimum scan line time: %s", lpszMinLineTime);
}
/*++
Routine Description:
Logs DCS details to PSS log, using the supplied info.
Arguments:
pTG
lpszModulations, bFineRes, b2D, lpszPageWidth, lpszPageLength, lpszLineTime - info to log
Return Value:
None
--*/
void LogDCSDetails(PThrdGlbl pTG,
LPSTR lpszModulation,
BOOL bFineRes,
BOOL b2D,
DWORD dwPageWidth,
LPSTR lpszPageLength,
LPSTR lpszLineTime)
{
PSSLogEntry(PSS_MSG, 1, "- Session Modulation is: %s", lpszModulation);
PSSLogEntry(PSS_MSG, 1, "- Use fine resolution: %s", bFineRes ? _T("Yes") : _T("No"));
PSSLogEntry(PSS_MSG, 1, "- Use 2D coding: %s", b2D ? _T("Yes") : _T("No"));
PSSLogEntry(PSS_MSG, 1, "- Page width is %d", dwPageWidth);
PSSLogEntry(PSS_MSG, 1, "- Page length is %s", lpszPageLength);
PSSLogEntry(PSS_MSG, 1, "- Scan line time: %s", lpszLineTime);
}
// This table applies to both DIS and DCS, in both class1 and class2
LPSTR ppszMinLineTime[8] = { // Bits 21-23 (leftmost is 23)
_T("20"), // 000
_T("5"), // 001
_T("10"), // 010
_T("20/10"), // 011
_T("40"), // 100
_T("40/20"), // 101
_T("10/5"), // 110
_T("0") // 111
};
// *************************** CLASS 1 ****************************
/*++
Routine Description:
Logs DIS details to PSS log, using the supplied NPDIS.
Arguments:
pTG
npdis - DIS to log
Return Value:
None
--*/
void LogClass1DISDetails(PThrdGlbl pTG, NPDIS npdis)
{
static LPSTR ppszCapsDesc[16] = { // Bits 11-14 (leftmost is 14)
_T("V.27 ter fallback"), // 0000
_T("V.29"), // 0001
_T("V.27 ter"), // 0010
_T("V.27 ter, V.29"), // 0011
_T(""), // 0100
_T(""), // 0101
_T(""), // 0110
_T("V.27 ter, V.29, V.33"), // 0111
_T(""), // 1000
_T(""), // 1001
_T(""), // 1010
_T("V.27 ter, V.29, V.33, V.17"), // 1011
_T(""), // 1100
_T(""), // 1101
_T(""), // 1110
_T("") // 1111
};
static LPSTR ppszWidthDesc[4] = { // Bits 17-18 (leftmost is 18)
_T("1728"), // 00
_T("1728, 2048"), // 01
_T("1728, 2048, 2432"), // 10
_T("invalid (interpreted as 1728, 2048, 2432)") //11
};
static LPSTR ppszLengthDesc[4] = { // Bits 19-20 (leftmost is 20)
_T("A4"), // 00
_T("A4 and B4"), // 01
_T("Unlimited"), // 10
_T("invalid") // 11
};
if (npdis == NULL)
{
_ASSERT(FALSE);
return;
}
LogDISDetails(pTG,
ppszCapsDesc[npdis->Baud],
(npdis->ResFine_200 == 1),
(npdis->MR_2D == 1),
ppszWidthDesc[npdis->PageWidth],
ppszLengthDesc[npdis->PageLength],
ppszMinLineTime[npdis->MinScanCode]);
}
/*++
Routine Description:
Logs DCS details to PSS log, using the supplied NPDIS.
Arguments:
pTG
npdis - DCS to log
Return Value:
None
--*/
void LogClass1DCSDetails(PThrdGlbl pTG, NPDIS npdis)
{
static LPSTR ppszDesc[16] = { // Bits 11-14 (leftmost is 14)
_T("2400 bps V.27 ter"), // 0000
_T("9600 bps V.29"), // 0001
_T("4800 bps V.27 ter"), // 0010
_T("7200 bps V.29"), // 0011
_T("14400 bps V.33"), // 0100
_T(""), // 0101
_T("12000 bps V.33"), // 0110
_T(""), // 0111
_T("14400 bps V.17"), // 1000
_T("9600 bps V.17"), // 1001
_T("12000 bps V.17"), // 1010
_T("7200 bps V.17"), // 1011
_T(""), // 1100
_T(""), // 1101
_T(""), // 1110
_T("") // 1111
};
static DWORD dwWidthDesc[4] = {
1728, // 00
2048, // 01
2432, // 10
2432 // 11
};
static LPSTR lpszLengthDesc[4] = {
_T("A4"), // 00
_T("B4"), // 01
_T("Unlimited"), // 10
_T("invalid") // 11
};
if (npdis == NULL)
{
_ASSERT(FALSE);
return;
}
LogDCSDetails(pTG,
ppszDesc[npdis->Baud],
(npdis->ResFine_200 == 1),
(npdis->MR_2D == 1),
dwWidthDesc[npdis->PageWidth],
lpszLengthDesc[npdis->PageLength],
ppszMinLineTime[npdis->MinScanCode]);
}
// *************************** CLASS 2 ****************************
#define GET_BOUNDED_ARRAY_ELEMENT(_array_, _val_, _maxval_, _default_) \
(((_val_)>=0 && (_val_)<(_maxval_)) ? _array_[(_val_)] : (_default_))
// These tables belongs to both DIS and DCS
LPSTR ppszCapsDesc[6] = {
_T("2400 bps V.27 ter"), // 0
_T("4800 bps V.27 ter"), // 1
_T("7200 bps V.29 or V.17"), // 2
_T("9600 bps V.29 or V.17"), // 3
_T("12000 bps V.17"), // 4
_T("14400 bps V.17"), // 5
};
LPSTR ppszLengthDesc[3] = {
_T("A4"), // 0
_T("B4"), // 1
_T("Unlimited"), // 2
};
LPSTR szInvalid = _T("Invalid");
/*++
Routine Description:
Logs DIS details to PSS log, using the supplied PCB.
Arguments:
pTG
lpPcb - DIS to log
Return Value:
None
--*/
void LogClass2DISDetails(PThrdGlbl pTG, LPPCB lpPcb)
{
static LPSTR ppszWidthDesc[5] = {
_T("1728"), // 0
_T("1728, 2048"), // 1
_T("1728, 2048, 2432"), // 2
_T("1216"), // 3
_T("864"), // 4
};
if (lpPcb == NULL)
{
_ASSERT(FALSE);
return;
}
LogDISDetails(pTG,
GET_BOUNDED_ARRAY_ELEMENT(ppszCapsDesc, lpPcb->Baud, 6, szInvalid),
lpPcb->Resolution & AWRES_mm080_038,
lpPcb->Encoding & MR_DATA,
GET_BOUNDED_ARRAY_ELEMENT(ppszWidthDesc, lpPcb->PageWidth, 5, szInvalid),
GET_BOUNDED_ARRAY_ELEMENT(ppszLengthDesc, lpPcb->PageLength, 3, szInvalid),
GET_BOUNDED_ARRAY_ELEMENT(ppszMinLineTime, lpPcb->MinScan, 8, szInvalid) );
}
/*++
Routine Description:
Logs DCS details to PSS log, using the supplied PCB.
Arguments:
pTG
lpPcb - DCS to log
Return Value:
None
--*/
void LogClass2DCSDetails(PThrdGlbl pTG, LPPCB lpPcb)
{
static DWORD dwWidthDesc[5] = {
1728, // 0
2048, // 1
2432, // 2
1216, // 3
864 // 4
};
if (lpPcb == NULL)
{
_ASSERT(FALSE);
return;
}
LogDCSDetails(pTG,
GET_BOUNDED_ARRAY_ELEMENT(ppszCapsDesc, lpPcb->Baud, 6, szInvalid),
!(lpPcb->Resolution & AWRES_mm080_038),
lpPcb->Encoding & MR_DATA,
GET_BOUNDED_ARRAY_ELEMENT(dwWidthDesc, lpPcb->PageWidth, 5, 0),
GET_BOUNDED_ARRAY_ELEMENT(ppszLengthDesc, lpPcb->PageLength, 3, szInvalid),
GET_BOUNDED_ARRAY_ELEMENT(ppszMinLineTime, lpPcb->MinScan, 8, szInvalid) );
}