view dstep/coreservices/osservices/Power.d @ 11:07194b026fa4

Added bindings to a couple of frameworks, new license + some other things
author Jacob Carlborg <doob@me.com>
date Sat, 01 Aug 2009 15:03:28 +0200
parents
children
line wrap: on
line source

/**
 * Copyright: Copyright (c) 2009 Jacob Carlborg.
 * Authors: Jacob Carlborg
 * Version: Initial created: Jul 22, 2009 
 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
 */
module dstep.coreservices.osservices.Power;

//import dstep.AvailabilityMacros;
import dstep.coreservices.carboncore.MacErrors;
import dstep.coreservices.carboncore.MacTypes;
import dstep.coreservices.carboncore.MixedMode;
import dstep.coreservices.carboncore.Multiprocessing;
import dstep.internal.Types;
import dstep.internal.Version;

alias SleepQRec* SleepQRecPtr;
alias SleepQProcPtr SleepQUPP;
alias uint RegEntryID;
alias PowerHandlerProcPtr PowerHandlerUPP;
alias HDSpindownProcPtr HDSpindownUPP;
alias PMgrStateChangeProcPtr PMgrStateChangeUPP;

enum
{
	kSleepRequest = 1,
	kSleepDemand = 2,
	kSleepWakeUp = 3,
	kSleepRevoke = 4,
	kSleepUnlock = 4,
	kSleepDeny = 5,
	kSleepNow = 6,
	kDozeDemand = 7,
	kDozeWakeUp = 8,
	kDozeRequest = 9,
	kEnterStandby = 10,
	kEnterRun = 11,
	kSuspendRequest = 12,
	kSuspendDemand = 13,
	kSuspendRevoke = 14,
	kSuspendWakeUp = 15,
	kGetPowerLevel = 16,
	kSetPowerLevel = 17,
	kDeviceInitiatedWake = 18,
	kWakeToDoze = 19,
	kDozeToFullWakeUp = 20,
	kGetPowerInfo = 21,
	kGetWakeOnNetInfo = 22,
	kSuspendWakeToDoze = 23,
	kEnterIdle = 24,
	kStillIdle = 25,
	kExitIdle = 26
}

enum
{
	noCalls = 1,
	noRequest = 2,
	slpQType = 16,
	sleepQType = 16
}

enum
{
	OverallAct = 0,
	UsrActivity = 1,
	NetActivity = 2,
	HDActivity = 3,
	IdleActivity = 4
}

struct SleepQRec
{
	SleepQRecPtr sleepQLink;
	short sleepQType;
	SleepQUPP sleepQProc;
	short sleepQFlags;
}

static if (!D_LP64)
{
	struct HDQueueElement
	{
		HDQueueElement* hdQLink;
		short hdQType;
		short hdFlags;
		HDSpindownUPP hdProc;
		c_long hdUser;
	}
	
	struct PMgrQueueElement
	{
		PMgrQueueElement* pmQLink;
		short pmQType;
		short pmFlags;
		c_long pmNotifyBits;
		PMgrStateChangeUPP pmProc;
		c_long pmUser;
	}
	
	struct BatteryTimeRec
	{
		c_ulong expectedBatteryTime;
		c_ulong minimumBatteryTime;
		c_ulong maximumBatteryTime;
		c_ulong timeUntilCharged;
	}
	
	struct WakeupTime
	{
		c_ulong wakeTime;
		bool wakeEnabled;
		byte filler;
	}
	
	struct StartupTime
	{
		c_ulong startTime;
		bool startEnabled;
		byte filler;
	}
	
	/++
	
	
	
	+/
}

extern (C)
{
	alias int function (int, SleepQRecPtr) SleepQProcPtr;
	alias void function (HDQueueElement*) HDSpindownProcPtr;
	alias int function (uint, void*, uint, RegEntryID*) PowerHandlerProcPtr;
	alias void function (PMgrQueueElement*, int) PMgrStateChangeProcPtr;
}

extern (C)
{
	SleepQUPP NewSleepQUPP (SleepQProcPtr userRoutine);
	void DisposeSleepQUPP (SleepQUPP userUPP);
	int InvokeSleepQUPP (int message, SleepQRecPtr qRecPtr, SleepQUPP userUPP);
	int GetCPUSpeed ();
	void SleepQInstall (SleepQRecPtr qRecPtr);
	void SleepQRemove (SleepQRecPtr qRecPtr);
	short MaximumProcessorSpeed ();
	short MinimumProcessorSpeed ();
	short CurrentProcessorSpeed ();
	short BatteryCount ();
	short UpdateSystemActivity (ubyte activity);
	HDSpindownUPP NewHDSpindownUPP (HDSpindownProcPtr userRoutine);
	PMgrStateChangeUPP NewPMgrStateChangeUPP (PMgrStateChangeProcPtr userRoutine);
	void DisposeHDSpindownUPP (HDSpindownUPP userUPP);
	void DisposePMgrStateChangeUPP (PMgrStateChangeUPP userUPP);
	void InvokeHDSpindownUPP (HDQueueElement* theElement, HDSpindownUPP userUPP);
	void InvokePMgrStateChangeUPP (PMgrQueueElement* theElement, int stateBits, PMgrStateChangeUPP userUPP);
}