first commit

This commit is contained in:
Dan Peori
2010-10-18 12:54:49 -03:00
commit 8a3bef9012
612 changed files with 74685 additions and 0 deletions

View File

@@ -0,0 +1,12 @@
PSPSDK = $(shell psp-config --pspsdk-path)
PSPLIBSDIR = $(PSPSDK)/..
TARGET = powersample
OBJS = main.o
LIBS = -lpsppower
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
include $(PSPSDK)/lib/build.mak

190
src/samples/power/main.c Normal file
View File

@@ -0,0 +1,190 @@
/*
* PSP Software Development Kit - http://www.pspdev.org
* -----------------------------------------------------------------------
* Licensed under the BSD license, see LICENSE in PSPSDK root for details.
*
* main.c - Sample to demonstrate proper use of the power library
*
* Copyright (c) 2005 John Kelley <ps2dev@kelley.ca>
*
* $Id: main.c 1869 2006-04-09 14:21:59Z tyranid $
*/
#include <pspkernel.h>
#include <pspdebug.h>
#include <pspctrl.h>
#include <pspdisplay.h>
#include <stdio.h>
#include <pspmoduleinfo.h>
#include <psppower.h>
/* Define the module info section */
PSP_MODULE_INFO("PowerTest", 0, 0, 71);
char powerCBMessage[256];
/* Define printf, just to make typing easier */
#define printf pspDebugScreenPrintf
/* Exit callback */
int exit_callback(int arg1, int arg2, void *common)
{
sceKernelExitGame();
return 0;
}
/* Power Callback */
int power_callback(int unknown, int pwrflags, void *common)
{
/* check for power switch and suspending as one is manual and the other automatic */
if (pwrflags & PSP_POWER_CB_POWER_SWITCH || pwrflags & PSP_POWER_CB_SUSPENDING) {
sprintf(powerCBMessage,
"first arg: 0x%08X, flags: 0x%08X: suspending\n", unknown, pwrflags);
} else if (pwrflags & PSP_POWER_CB_RESUMING) {
sprintf(powerCBMessage,
"first arg: 0x%08X, flags: 0x%08X: resuming from suspend mode\n",
unknown, pwrflags);
} else if (pwrflags & PSP_POWER_CB_RESUME_COMPLETE) {
sprintf(powerCBMessage,
"first arg: 0x%08X, flags: 0x%08X: resume complete\n", unknown, pwrflags);
} else if (pwrflags & PSP_POWER_CB_STANDBY) {
sprintf(powerCBMessage,
"first arg: 0x%08X, flags: 0x%08X: entering standby mode\n", unknown, pwrflags);
} else {
sprintf(powerCBMessage, "first arg: 0x%08X, flags: 0x%08X: Unhandled power event\n", unknown, pwrflags);
}
sceDisplayWaitVblankStart();
return 0;
}
/* Callback thread */
int CallbackThread(SceSize args, void *argp)
{
int cbid;
cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);
cbid = sceKernelCreateCallback("Power Callback", power_callback, NULL);
scePowerRegisterCallback(0, cbid);
sceKernelSleepThreadCB();
return 0;
}
/* Sets up the callback thread and returns its thread id */
int SetupCallbacks(void)
{
int thid = 0;
thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
if (thid >= 0)
sceKernelStartThread(thid, 0, 0);
return thid;
}
/* main routine */
int main(int argc, char *argv[])
{
SceCtrlData pad;
int i = 0;
int powerLocked = 0;
int powerTicks = 0;
u32 oldButtons = 0;
int batteryLifeTime = 0;
//init screen and callbacks
pspDebugScreenInit();
pspDebugScreenClear();
SetupCallbacks();
// Setup Pad
sceCtrlSetSamplingCycle(0);
sceCtrlSetSamplingMode(0);
//fetch and print out power and battery information
for (;;) {
/* fix so the screen lines up right if the battery disappears */
if (!scePowerIsBatteryExist()) {
pspDebugScreenClear();
}
pspDebugScreenSetXY(0, 0);
printf("PSP Power Sample v1.0 by John_K\n\n");
sceCtrlReadBufferPositive(&pad, 1);
printf("External Power: %s\n", scePowerIsPowerOnline()? "yes" : "no ");
printf("%-14s: %s\n", "Battery", scePowerIsBatteryExist()? "present" : "absent ");
if (scePowerIsBatteryExist()) {
printf("%-14s: %s\n", "Low Charge", scePowerIsLowBattery()? "yes" : "no ");
printf("%-14s: %s\n", "Charging", scePowerIsBatteryCharging()? "yes" : "no ");
batteryLifeTime = scePowerGetBatteryLifeTime();
printf("%-14s: %d%% (%02dh%02dm) \n", "Charge",
scePowerGetBatteryLifePercent(), batteryLifeTime/60, batteryLifeTime-(batteryLifeTime/60*60));
printf("%-14s: %0.3fV\n", "Volts", (float) scePowerGetBatteryVolt() / 1000.0);
printf("%-14s: %d deg C\n", "Battery Temp", scePowerGetBatteryTemp());
} else
printf("Battery stats unavailable\n");
printf("%-14s: %d mHz\n", "CPU Speed", scePowerGetCpuClockFrequency());
printf("%-14s: %d mHz\n", "Bus Speed", scePowerGetBusClockFrequency());
printf("%-14s: %s \n", "Power Switch", powerLocked == 0 ? "unlocked" : "locked");
printf("%-14s: %s \n", "Send Ticks", powerTicks == 1 ? "yes" : "no");
printf("\nPress X to switch CPU between 333 and 222 mHz\n");
printf("Press O to toggle power switch lock\n");
printf("Press [] to toggle sending power ticks\n");
//send powerTicks if enabled
if (powerTicks == 1)
if (scePowerTick(0) != 0)
printf("Error calling scePowerTick(0)\n");
//only check buttons if they've changed since last frame
if (oldButtons != pad.Buttons) {
//check to see if the user pressed X to toggle CPU speed
if (pad.Buttons & PSP_CTRL_CROSS) {
if (i == 0) {
i = scePowerSetClockFrequency(333, 333, 166);
if (i == 0) {
i = 1;
} else {
printf("\nCould not set CPU to 333mHz (0x%08X)\n", i);
i = 0;
}
} else {
i = scePowerSetClockFrequency(222, 222, 111);
if (i != 0) {
printf("\nCould not set CPU to 222mHz (0x%08X)\n", i);
i = 1;
}
}
}
//check to see if the user pressed O to toggle power locking
if (pad.Buttons & PSP_CTRL_CIRCLE) {
if (powerLocked == 0) {
if (scePowerLock(0) == 0)
powerLocked = 1;
else
printf("Error locking power switch\n");
} else {
if (scePowerUnlock(0) == 0)
powerLocked = 0;
else
printf("Error unlocking power switch\n");
}
}
//check to see if the user pressed [] to toggle PowerTicks
if (pad.Buttons & PSP_CTRL_SQUARE)
powerTicks = powerTicks == 1 ? 0 : 1;
}
pspDebugScreenSetXY(0, 30);
printf("Power callback messages appear below:\n%s\n", powerCBMessage);
oldButtons = pad.Buttons;
sceDisplayWaitVblankStart();
}
sceKernelSleepThread();
sceKernelExitGame();
return 0;
}