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.
MiniDexed/src/kernel.cpp

74 lines
1.2 KiB

//
// kernel.cpp
//
#include "kernel.h"
#include <iostream>
#include <string.h>
#include <circle/logger.h>
#include "voices.c"
LOGMODULE ("kernel");
CKernel::CKernel (void)
: CStdlibAppStdio ("minidexed"),
m_I2CMaster (CMachineInfo::Get ()->GetDevice (DeviceI2CMaster), TRUE),
m_pDexed (0)
{
// mActLED.Blink (5); // show we are alive
}
CKernel::~CKernel(void)
{
}
bool CKernel::Initialize (void)
{
if (!CStdlibAppStdio::Initialize ())
{
return FALSE;
}
// select the sound device
const char *pSoundDevice = mOptions.GetSoundDevice ();
if (strcmp (pSoundDevice, "sndi2s") == 0)
{
LOGNOTE ("I2S mode");
m_pDexed = new CMiniDexedI2S (16, SAMPLE_RATE, &mInterrupt, &m_I2CMaster);
}
else if (strcmp (pSoundDevice, "sndhdmi") == 0)
{
LOGNOTE ("HDMI mode");
m_pDexed = new CMiniDexedHDMI (16, SAMPLE_RATE, &mInterrupt);
}
else
{
LOGNOTE ("PWM mode");
m_pDexed = new CMiniDexedPWM (16, SAMPLE_RATE, &mInterrupt);
}
if (!m_pDexed->Initialize ())
{
return FALSE;
}
return TRUE;
}
CStdlibApp::TShutdownMode CKernel::Run (void)
{
std::cout << "Hello MiniDexed!\n";
while(42==42)
{
boolean bUpdated = mUSBHCI.UpdatePlugAndPlay ();
m_pDexed->Process(bUpdated);
mScreen.Update ();
}
return ShutdownHalt;
}