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.
117 lines
2.7 KiB
117 lines
2.7 KiB
/*
|
|
* ACPISI.C - ACPI OS Independent System Indicator Routines
|
|
*
|
|
* Notes:
|
|
*
|
|
* This file provides OS independent functions for managing system indicators
|
|
*
|
|
*/
|
|
|
|
#include "pch.h"
|
|
|
|
#ifdef ALLOC_PRAGMA
|
|
#pragma alloc_text(PAGE, SetSystemIndicator)
|
|
#endif
|
|
|
|
|
|
BOOLEAN
|
|
SetSystemIndicator (
|
|
SYSTEM_INDICATORS SystemIndicators,
|
|
ULONG Value
|
|
)
|
|
{
|
|
PNSOBJ pns = NULL, pnssi = NULL;
|
|
OBJDATA Arg0,data;
|
|
char IndicatorName []= "_SST";
|
|
|
|
PAGED_CODE();
|
|
|
|
|
|
switch (SystemIndicators) {
|
|
|
|
case SystemStatus:
|
|
// StrCpy (IndicatorName, "_SST",sizeof(IndicatorName));
|
|
|
|
// init arg0 for the control method
|
|
|
|
ACPIPrint( (
|
|
ACPI_PRINT_POWER,
|
|
"System Status Value = %x\n",
|
|
Value
|
|
) );
|
|
|
|
Arg0.dwfData = 0;
|
|
Arg0.uipDataValue = Value;
|
|
Arg0.dwDataType = OBJTYPE_INTDATA;
|
|
Arg0.dwDataLen = 0;
|
|
Arg0.pbDataBuff = NULL;
|
|
|
|
break;
|
|
|
|
case MessageWaiting:
|
|
StrCpy (IndicatorName, "_MSG",sizeof(IndicatorName));
|
|
|
|
// init arg0 for the control method
|
|
|
|
ACPIPrint( (
|
|
ACPI_PRINT_POWER,
|
|
"Message Waiting Value = %x\n",
|
|
Value
|
|
) );
|
|
|
|
Arg0.dwfData = 0;
|
|
Arg0.uipDataValue = Value;
|
|
Arg0.dwDataType = OBJTYPE_INTDATA;
|
|
Arg0.dwDataLen = 0;
|
|
Arg0.pbDataBuff = NULL;
|
|
|
|
break;
|
|
|
|
default:
|
|
ACPIPrint( (
|
|
ACPI_PRINT_FAILURE,
|
|
"SetSystemIndicator: Unknown Indicator\n"
|
|
) );
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
if ( AMLIERR(AMLIGetNameSpaceObject ("\\_SI",NULL, &pnssi,0)) != AMLIERR_NONE ) {
|
|
|
|
ACPIPrint( (
|
|
ACPI_PRINT_FAILURE,
|
|
"Could not GET \\_SI\n"
|
|
) );
|
|
|
|
ACPIBreakPoint ();
|
|
return FALSE;
|
|
}
|
|
|
|
if ( AMLIERR(AMLIGetNameSpaceObject (IndicatorName, pnssi, &pns,NSF_LOCAL_SCOPE)) == AMLIERR_NONE ) {
|
|
|
|
if ( AMLIERR(AMLIEvalNameSpaceObject (pns,&data, 1, &Arg0)) == AMLIERR_NONE ) {
|
|
|
|
AMLIFreeDataBuffs (&data,1);
|
|
|
|
} else {
|
|
|
|
ACPIPrint( (
|
|
ACPI_PRINT_FAILURE,
|
|
"Attempt to Eval %s %x failed using objdata %x\n",
|
|
IndicatorName,pns,&Arg0
|
|
) );
|
|
ACPIBreakPoint ();
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
ACPIPrint( (
|
|
ACPI_PRINT_FAILURE,
|
|
"Attempt to GET %s failed\n",
|
|
IndicatorName,pns,&Arg0
|
|
) );
|
|
|
|
}
|
|
return (TRUE);
|
|
}
|