Counter Strike : Global Offensive Source Code
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.
 
 
 
 
 
 

105 lines
2.7 KiB

//===== Copyright 1996-2005, Valve Corporation, All rights reserved. ======//
//
// Purpose: Access to the cuter features of the PS3
// devkit, like the front LEDs.
//
// $NoKeywords: $
//
//===========================================================================//
#ifndef PS3_FRONTPANELLED_H
#define PS3_FRONTPANELLED_H
#ifdef _WIN32
#pragma once
#endif
/// encapsulates the DECR-1000's front panel LEDs, dip switches, and foot pedal
/// the system only lets you set a subset of the LEDs; there are FOUR LIGHTS.
/// (really. you can set LEDs 0..3)
namespace CPS3FrontPanelLED
{
// sets the on/off state of the LEDs on the front panel.
// you simply specify them as a bitmask -- ie, LED0 | LED 2 would light the zeroth and twoth LED and darken the other two.
inline bool SetLEDs( uint64 lights );
// you can use this to eg set LED1 while leaving the rest undisturbed. a 1 bit in the mask means the corresponding
// bit in value will be written to the hardware.
inline bool SetLEDsMasked( uint64 mask, uint64 lights );
// gets the on/off state of the LEDs on the front panel
inline uint64 GetLEDs();
// gets the on/off state of the switches on the front panel
inline uint64 GetSwitches();
// you will notice there is no function to set the state of the DIP switches from software.
// you don't actually need to use these, but just to be obvious:
enum eLEDIndex_t
{
kPS3LED0 = 1,
kPS3LED1 = 2,
kPS3LED2 = 4,
kPS3LED3 = 8
};
enum eSwitchIndex_t
{
kPS3SWITCH0 = 1,
kPS3SWITCH1 = 2,
kPS3SWITCH2 = 4,
kPS3SWITCH3 = 8
};
};
#if !defined(_PS3)
inline bool CPS3FrontPanelLED::SetLEDs( uint64 lights ) {return false;}
inline bool CPS3FrontPanelLED::SetLEDsMasked( uint64 mask, uint64 lights ) {return false;}
inline uint64 CPS3FrontPanelLED::GetLEDs() {return 0;}
inline uint64 CPS3FrontPanelLED::GetSwitches() {return 0;}
#else
#include <sys/gpio.h>
inline bool CPS3FrontPanelLED::SetLEDs( uint64 lights )
{
return sys_gpio_set( SYS_GPIO_LED_DEVICE_ID, SYS_GPIO_LED_USER_AVAILABLE_BITS, lights ) == CELL_OK;
}
inline bool CPS3FrontPanelLED::SetLEDsMasked( uint64 mask, uint64 lights )
{
return sys_gpio_set( SYS_GPIO_LED_DEVICE_ID, SYS_GPIO_LED_USER_AVAILABLE_BITS & mask, SYS_GPIO_LED_USER_AVAILABLE_BITS & lights ) == CELL_OK;
}
inline uint64 CPS3FrontPanelLED::GetLEDs()
{
uint64 val;
if ( sys_gpio_get( SYS_GPIO_LED_DEVICE_ID, &val ) == CELL_OK )
{
return val & SYS_GPIO_LED_USER_AVAILABLE_BITS;
}
else
{
return 0;
}
}
inline uint64 CPS3FrontPanelLED::GetSwitches()
{
uint64 val;
if ( sys_gpio_get( SYS_GPIO_DIP_SWITCH_DEVICE_ID, &val ) == CELL_OK )
{
return val & SYS_GPIO_DIP_SWITCH_USER_AVAILABLE_BITS;
}
else
{
return 0;
}
}
#endif
#endif // PS3_FRONTPANELLED_H