source: branches/branch-1-0/src/helpers/acpih.c@ 368

Last change on this file since 368 was 327, checked in by pr, 19 years ago

Fix warnings

  • Property svn:eol-style set to CRLF
  • Property svn:keywords set to Author Date Id Revision
File size: 3.6 KB
Line 
1
2/*
3 *@@sourcefile apcih.c:
4 * contains helpers for accessing ACPI.
5 *
6 * Usage: All OS/2 programs.
7 *
8 * Function prefixes:
9 * -- acpih* ACPI helper functions
10 *
11 * Note: Version numbering in this file relates to XWorkplace version
12 * numbering.
13 *
14 *@@header "helpers\acpih.h"
15 *@@added V1.0.5 (2006-06-26) [pr]
16 */
17
18/*
19 * Copyright (C) 2006 Paul Ratcliffe.
20 * This file is part of the "XWorkplace helpers" source package.
21 * This is free software; you can redistribute it and/or modify
22 * it under the terms of the GNU General Public License as published
23 * by the Free Software Foundation, in version 2 as it comes in the
24 * "COPYING" file of the XWorkplace main distribution.
25 * This program is distributed in the hope that it will be useful,
26 * but WITHOUT ANY WARRANTY; without even the implied warranty of
27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28 * GNU General Public License for more details.
29 */
30
31#define OS2EMX_PLAIN_CHAR
32 // this is needed for "os2emx.h"; if this is defined,
33 // emx will define PSZ as _signed_ char, otherwise
34 // as unsigned char
35
36#define INCL_DOSMODULEMGR
37#define INCL_DOSERRORS
38#include <os2.h>
39
40#include "setup.h" // code generation and debugging options
41
42#include "helpers\acpih.h"
43#include "helpers\standards.h"
44
45/* ******************************************************************
46 *
47 * Globals
48 *
49 ********************************************************************/
50
51HMODULE hmodACPI = NULLHANDLE;
52
53ACPISTARTAPI *pAcpiStartApi = NULL;
54ACPIENDAPI *pAcpiEndApi = NULL;
55ACPIGOTOSLEEP *pAcpiGoToSleep = NULL;
56
57/*
58 *@@category: Helpers\Control program helpers\ACPI
59 * See acpih.c.
60 */
61
62/*
63 *@@ acpihOpen:
64 * resolves the ACPI entrypoints and loads the ACPI DLL.
65 */
66
67APIRET acpihOpen(ACPI_API_HANDLE *phACPI)
68{
69 APIRET arc = NO_ERROR;
70
71 if (!hmodACPI)
72 if (!(arc = DosLoadModule(NULL,
73 0,
74 "ACPI32",
75 &hmodACPI)))
76 {
77 arc = DosQueryProcAddr(hmodACPI,
78 ORD_ACPISTARTAPI,
79 NULL,
80 (PFN *) &pAcpiStartApi);
81 if (!arc)
82 arc = DosQueryProcAddr(hmodACPI,
83 ORD_ACPIENDAPI,
84 NULL,
85 (PFN *) &pAcpiEndApi);
86
87 if (!arc)
88 arc = DosQueryProcAddr(hmodACPI,
89 ORD_ACPIGOTOSLEEP,
90 NULL,
91 (PFN *) &pAcpiGoToSleep);
92 if (arc)
93 {
94 DosFreeModule(hmodACPI);
95 hmodACPI = NULLHANDLE;
96 pAcpiStartApi = NULL;
97 pAcpiEndApi = NULL;
98 pAcpiGoToSleep = NULL;
99 return(arc);
100 }
101 }
102
103 if (arc)
104 return(arc);
105 else
106 return(pAcpiStartApi(phACPI));
107}
108
109/*
110 *@@ acpihClose:
111 * unloads the ACPI DLL.
112 */
113
114VOID acpihClose(ACPI_API_HANDLE *phACPI)
115{
116 if (pAcpiEndApi)
117 pAcpiEndApi(phACPI);
118}
119
120/*
121 *@@ acpihGoToSleep:
122 * changes the Power State.
123 */
124
125APIRET acpihGoToSleep(ACPI_API_HANDLE *phACPI, UCHAR ucState)
126{
127 if (pAcpiGoToSleep)
128 return(pAcpiGoToSleep(phACPI, ucState));
129 else
130 return(ERROR_PROTECTION_VIOLATION);
131}
132
Note: See TracBrowser for help on using the repository browser.