First Release

Dependencies:   USBDevice

NiseKabuto.h

Committer:
sankichi
Date:
2013-07-27
Revision:
0:e1265f6b3565

File content as of revision 0:e1265f6b3565:

#pragma once
/** Class: In_CyberStick
 *
 * Use CyberStick(CZ-8NJ2) as fake XE-1AP(Kabutogani) MD mode
 * Use CyberStick(CZ-8NJ2) as SS Multi Controller
 * Use CyberStick(CZ-8NJ2) as PC-Engine Analog Controller
 * Use CyberStick(CZ-8NJ2) Digital mode as Famicom controller
 * Use CyberStick(CZ-8NJ2) as PlayStation3 USB Joystick
 *
 * Example:
 *
 */
#include "In_CyberStick.h"
#include "In_MD6B.h"
#include "Out_MD.h"
#include "Out_SSMulCon.h"
#include "Out_PCE.h"
#include "Out_FC.h"
#include "Out_PS3USB.h"
#include "InputStatus.h"

static volatile int _Timer0Counter;

class NiseKabuto
{
public:
    // Public constants
    static const char CONFIG_INMODE_CYBERSTICK_ANALOG  = 0;
    static const char CONFIG_INMODE_CYBERSTICK_DIGITAL = 1;
    static const char CONFIG_INMODE_MD6B               = 2;

    static const char CONFIGPIN_OUTMODE_PS3USB    = 0;
    static const char CONFIGPIN_OUTMODE_SSMULCON  = 1;
    static const char CONFIGPIN_OUTMODE_PCE       = 2;
    static const char CONFIGPIN_OUTMODE_MD        = 3;  // changed!!
    static const char CONFIGPIN_OUTMODE_FC        = 4;
    
    // Public Method/Constructor
    NiseKabuto(PinName inputPins[], PinName outputPins[], PinName configurePins[]);
    void Show(void);

private:
    // Variables
    char                _InputType;
    char                _OutputType;
    In_CyberStick       *_In_CyberStick;
    In_MD6B             *_In_MD6B;
    Out_MD              *_Out_MD;
    Out_SSMulCon        *_Out_SSMulCon;
    Out_PCE             *_Out_PCE;
    Out_FC              *_Out_FC;
    Out_PS3USB          *_Out_PS3USB;
    InputStatus         _InputStatus;
    BusInOut            _ConfigSwitch;

    // Private Method
    void InitInterruptPriority(void);

    void InitInput_CyberStick (PinName inputPins[]);
    void InitInput_MD6B       (PinName inputPins[]);
    void InitOutput_MD        (PinName outputPins[]);
    void InitOutput_SSMulCon  (PinName outputPins[]);
    void InitOutput_PCE       (PinName outputPins[]);
    void InitOutput_FC        (PinName outputPins[]);
    void InitOutput_PS3USB    (void);

public:
    static void WaitUs(uint32_t us);
};