// // kernel.h // #ifndef _kernel_h #define _kernel_h #include #include #include #include #include #include #include #include #include #include #include #include "pianoleds.h" #include "circlestrip.h" enum TShutdownMode { ShutdownNone, ShutdownHalt, ShutdownReboot }; class CKernel { public: CKernel (void); ~CKernel (void); boolean Initialize (void); TShutdownMode Run (void); private: // Pick up the MIDI device after the host has enumerated us, and again // after every re-enumeration. void UpdateMIDIDevice (void); static void MIDIPacketHandler (unsigned nCable, u8 *pPacket, unsigned nLength, unsigned nDevice, void *pParam); private: // do not change this order CActLED m_ActLED; CKernelOptions m_Options; CDeviceNameService m_DeviceNameService; CSerialDevice m_Serial; CExceptionHandler m_ExceptionHandler; CInterruptSystem m_Interrupt; CTimer m_Timer; CLogger m_Logger; CUSBController *m_pUSB; CUSBMIDIDevice *m_pMIDIDevice; CCircleLEDStrip m_LEDStrip; CPianoLEDs m_PianoLEDs; }; #endif