/*---------------------------------------------------------------------------* Project: Horizon File: hid_PadReader.h Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo Company Ltd., and are protected by Federal copyright law. They may not be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written consent of Nintendo. $Rev: 36566 $ *---------------------------------------------------------------------------*/ /* Please see man pages for details */ #ifndef NN_HID_CTR_HID_PADREADER_H_ #define NN_HID_CTR_HID_PADREADER_H_ #include #include #include #include #include #include #include #include #include #include namespace nn { namespace hid { namespace CTR { /* Please see man pages for details */ class PadReader : private nn::util::NonCopyable { public: /* Please see man pages for details */ typedef enum { /* Please see man pages for details */ STICK_CLAMP_MODE_CIRCLE = 0, /* Please see man pages for details */ STICK_CLAMP_MODE_CROSS, /* Please see man pages for details */ STICK_CLAMP_MODE_MINIMUM } StickClampMode; /* Please see man pages for details */ PadReader(Pad& pad=GetPad( )); /* Please see man pages for details */ ~PadReader( ) {}; /* Please see man pages for details */ void Read(PadStatus* pBufs, s32* pReadLen, s32 bufLen); /* Please see man pages for details */ bool ReadLatest(PadStatus* pBuf); /* Please see man pages for details */ void SetStickClamp(s16 min, s16 max); /* Please see man pages for details */ void GetStickClamp(s16* pMin, s16* pMax) const; /* Please see man pages for details */ StickClampMode GetStickClampMode( ) const; /* Please see man pages for details */ void SetStickClampMode(StickClampMode mode); /* Please see man pages for details */ f32 NormalizeStick(s16 x); /* Please see man pages for details */ void NormalizeStickWithScale( f32* normalized_x, f32* normalized_y, s16 x, s16 y ); /* Please see man pages for details */ void SetNormalizeStickScaleSettings( f32 scale, s16 threshold ); /* Please see man pages for details */ void GetNormalizeStickScaleSettings( f32* scale, s16* threshold ) const; protected: Pad& m_Pad; s32 m_IndexOfRead; bit32 m_LatestHold; s16 m_MinOfStickClampCircle; s16 m_MinOfStickClampCross; s16 m_MinOfStickClampMinimum; s16 m_MaxOfStickClampCircle; s16 m_MaxOfStickClampCross; s16 m_MaxOfStickClampMinimum; bool m_IsReadLatestFirst; nn::util::SizedEnum1 m_StickClampMode; s16 m_Threshold; f32 m_Scale; f32 m_Stroke; f32 m_StrokeVelocity; f32 m_LastLength; f32 m_LastDiff; s64 m_TickOfRead; }; // inline definitions inline void PadReader::GetStickClamp(s16* pMin, s16* pMax) const { if (m_StickClampMode == STICK_CLAMP_MODE_CIRCLE) { *pMin = m_MinOfStickClampCircle; *pMax = m_MaxOfStickClampCircle; } else if (m_StickClampMode == STICK_CLAMP_MODE_CROSS) { *pMin = m_MinOfStickClampCross; *pMax = m_MaxOfStickClampCross; } else { *pMin = m_MinOfStickClampMinimum; *pMax = m_MaxOfStickClampMinimum; } } inline PadReader::StickClampMode PadReader::GetStickClampMode( ) const { return m_StickClampMode; } inline void PadReader::SetStickClampMode(StickClampMode mode) { m_StickClampMode = mode; } /* Please see man pages for details */ bool EnableSelectButton(); /* Please see man pages for details */ void DisableSelectButton(); } // namespace CTR { } // namespace hid { } // namespace nn { #endif // #ifndef NN_HID_CTR_HID_PADREADER_H_