Changeset 410 for branches/branch-1-0/src/helpers/acpih.c
- Timestamp:
- Mar 1, 2012, 8:47:20 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/branch-1-0/src/helpers/acpih.c
r409 r410 17 17 18 18 /* 19 * Copyright (C) 2006-20 09Paul Ratcliffe.19 * Copyright (C) 2006-2012 Paul Ratcliffe. 20 20 * This file is part of the "XWorkplace helpers" source package. 21 21 * This is free software; you can redistribute it and/or modify … … 96 96 if (!arc) 97 97 arc = DosQueryProcAddr(G_hmodACPI, 98 ORD_ACPIENDAPI,99 NULL,100 (PFN *) &pAcpiEndApi);98 ORD_ACPIENDAPI, 99 NULL, 100 (PFN *) &pAcpiEndApi); 101 101 102 102 if (!arc) 103 103 arc = DosQueryProcAddr(G_hmodACPI, 104 ORD_ACPIGOTOSLEEP,105 NULL,106 (PFN *) &pAcpiGoToSleep);104 ORD_ACPIGOTOSLEEP, 105 NULL, 106 (PFN *) &pAcpiGoToSleep); 107 107 if (arc) 108 108 { … … 116 116 117 117 // @@added V1.0.9 (2012-02-20) [slevine]: additional ACPI support, code from David Azarewicz 118 DosQueryProcAddr(G_hmodACPI, ORD_ACPITKGETOBJECTINFOALLOC, NULL, (PFN *) &pAcpiTkGetObjectInfoAlloc); 119 DosQueryProcAddr(G_hmodACPI, ORD_ACPITKGETHANDLE, NULL, (PFN *) &pAcpiTkGetHandle); 120 DosQueryProcAddr(G_hmodACPI, ORD_ACPITKOSFREE, NULL, (PFN *) &pAcpiTkOsFree); 121 DosQueryProcAddr(G_hmodACPI, ORD_ACPITKWALKNAMESPACE, NULL, (PFN *) &pAcpiTkWalkNamespace); 122 DosQueryProcAddr(G_hmodACPI, ORD_ACPITKEVALUATEOBJECT, NULL, (PFN *) &pAcpiTkEvaluateObject); 118 DosQueryProcAddr(G_hmodACPI, ORD_ACPITKGETOBJECTINFOALLOC, 119 NULL, (PFN *) &pAcpiTkGetObjectInfoAlloc); 120 DosQueryProcAddr(G_hmodACPI, ORD_ACPITKGETHANDLE, 121 NULL, (PFN *) &pAcpiTkGetHandle); 122 DosQueryProcAddr(G_hmodACPI, ORD_ACPITKOSFREE, 123 NULL, (PFN *) &pAcpiTkOsFree); 124 DosQueryProcAddr(G_hmodACPI, ORD_ACPITKWALKNAMESPACE, 125 NULL, (PFN *) &pAcpiTkWalkNamespace); 126 DosQueryProcAddr(G_hmodACPI, ORD_ACPITKEVALUATEOBJECT, 127 NULL, (PFN *) &pAcpiTkEvaluateObject); 123 128 } 124 129 } … … 148 153 cTmp = *(((volatile char *)pAcpiGoToSleep) + 4096); /* Ensure paged in */ 149 154 } 155 150 156 return(pAcpiStartApi(phACPI)); 151 157 } … … 200 206 ACPI_STATUS AcpiCallbackWidget( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue ) 201 207 { 202 ACPI_STATUS Status; 203 ACPI_DEVICE_INFO *pDevInfo; 204 205 pDevInfo = NULL; 206 Status = pAcpiTkGetObjectInfoAlloc( ObjHandle, &pDevInfo ); 208 ACPI_DEVICE_INFO *pDevInfo = NULL; 209 ACPI_STATUS Status = pAcpiTkGetObjectInfoAlloc(ObjHandle, &pDevInfo); 207 210 208 211 if (Status == AE_OK) 209 212 { 210 if (pDevInfo->Type != ACPI_TYPE_DEVICE) return AE_DEPTH; 211 if (!(pDevInfo->Valid & ACPI_VALID_HID)) return AE_DEPTH; 212 if (!pDevInfo->HardwareId.String ) return AE_DEPTH; 213 214 if (strncmp(pDevInfo->HardwareId.String, "ACPI0003", 8)==0) 213 if (pDevInfo->Type != ACPI_TYPE_DEVICE) 214 return AE_DEPTH; 215 216 if (!(pDevInfo->Valid & ACPI_VALID_HID)) 217 return AE_DEPTH; 218 219 if (!pDevInfo->HardwareId.String) 220 return AE_DEPTH; 221 222 if (strncmp(pDevInfo->HardwareId.String, "ACPI0003", 8) == 0) 215 223 { /* AC Power */ 216 224 Status = pAcpiTkGetHandle(ObjHandle, "_PSR", &G_ahAC); 217 if (Status) G_ahAC = 0; 225 if (Status) 226 G_ahAC = 0; 227 218 228 return AE_DEPTH; 219 229 } 220 230 221 if (strncmp(pDevInfo->HardwareId.String, "PNP0C0A", 7) ==0)231 if (strncmp(pDevInfo->HardwareId.String, "PNP0C0A", 7) == 0) 222 232 { /* Smart battery */ 223 if (G_uiBatteryCount >= MAX_BATTERY_COUNT) return AE_DEPTH;224 G_ahBat[G_uiBatteryCount] = ObjHandle;225 G_uiBatteryCount++; 233 if (G_uiBatteryCount < MAX_BATTERY_COUNT) 234 G_ahBat[G_uiBatteryCount++] = ObjHandle; 235 226 236 return AE_DEPTH; 227 237 } 228 238 } 229 239 230 if (pDevInfo) pAcpiTkOsFree(pDevInfo); 240 if (pDevInfo) 241 pAcpiTkOsFree(pDevInfo); 231 242 232 243 return AE_OK; … … 249 260 BOOL fChanged; 250 261 251 if (pAcpiTkWalkNamespace==NULL) return 1; 252 if (pApm==NULL) return 1; 262 if (pAcpiTkWalkNamespace == NULL) 263 return 1; 264 265 if (pApm == NULL) 266 return 1; 253 267 254 268 if (!G_uiAlreadyWalked) 255 269 { 256 Status = pAcpiTkWalkNamespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, AcpiCallbackWidget, pApm, NULL); 270 Status = pAcpiTkWalkNamespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, 271 ACPI_UINT32_MAX, AcpiCallbackWidget, 272 pApm, NULL); 257 273 G_uiAlreadyWalked = 1; 258 274 } … … 261 277 262 278 // VAC 3.08 long long compatibility support 263 # 264 # 265 # 266 # 267 # 268 # 269 # 279 #ifdef INCL_LONGLONG // VAC 3.6.5 - compiler supports long long 280 #define OBJECT_VALUE(index) (Object[index].Integer.Value) 281 #define OBJ_VALUE(index) (Obj[index].Integer.Value) 282 #else // VAC 3.08 - compiler does not support long long 283 #define OBJECT_VALUE(index) (Object[index].Integer.Value.ulLo) 284 #define OBJ_VALUE(index) (Obj[index].Integer.Value.ulLo) 285 #endif 270 286 271 287 if (G_ahAC) … … 277 293 if (Status != AE_OK) 278 294 ulTmp = 2; 279 else if (Object[0].Type != ACPI_TYPE_INTEGER)280 ulTmp = 2;281 295 else 282 ulTmp = (UINT32)OBJECT_VALUE(0); 283 if (pApm->fUsingAC != (BYTE)ulTmp) 284 { 285 pApm->fUsingAC = (BYTE)ulTmp; 296 if (Object[0].Type != ACPI_TYPE_INTEGER) 297 ulTmp = 2; 298 else 299 ulTmp = (UINT32)OBJECT_VALUE(0); 300 301 if (pApm->fUsingAC != (BYTE) ulTmp) 302 { 303 pApm->fUsingAC = (BYTE) ulTmp; 286 304 fChanged = TRUE; 287 305 } 288 306 } 289 307 290 for (uiI=0; uiI<G_uiBatteryCount; uiI++) 291 { 292 if (G_ahBat[uiI] == 0) continue; 308 for (uiI=0; uiI < G_uiBatteryCount; uiI++) 309 { 310 if (G_ahBat[uiI] == 0) 311 continue; 293 312 294 313 Result.Length = sizeof(Object); … … 348 367 } 349 368 350 ulTmp = (BRemaining*100)/LastFull; 351 if (ulTmp > 100) ulTmp = 100; 369 ulTmp = (BRemaining*100) / LastFull; 370 if (ulTmp > 100) 371 ulTmp = 100; 372 352 373 if (pApm->bBatteryLife != ulTmp) 353 374 { 354 pApm->bBatteryLife = (BYTE) ulTmp;375 pApm->bBatteryLife = (BYTE) ulTmp; 355 376 fChanged = TRUE; 356 377 } 357 378 } 358 379 359 if (pfChanged) *pfChanged = fChanged; 380 if (pfChanged) 381 *pfChanged = fChanged; 382 360 383 pApm->fAlreadyRead = FALSE; 361 362 384 return 0; 363 385 364 # 365 # 386 #undef OBJECT_VALUE 387 #undef OBJ_VALUE 366 388 } 367 389 … … 383 405 { 384 406 Apm.bBatteryStatus = 0xff; 385 if (!acpihGetPowerStatus(&Apm, NULL)) brc = (Apm.bBatteryStatus != 0xFF); 407 if (!acpihGetPowerStatus(&Apm, NULL)) 408 brc = (Apm.bBatteryStatus != 0xFF); 409 386 410 acpihClose(&hACPI); 387 411 } … … 389 413 return brc; 390 414 } 415
Note:
See TracChangeset
for help on using the changeset viewer.