diff --git a/src/circle_stdlib_app.h b/src/circle_stdlib_app.h
index 170a39d..75cbde2 100644
--- a/src/circle_stdlib_app.h
+++ b/src/circle_stdlib_app.h
@@ -97,6 +97,7 @@ public:
: CStdlibApp (kernel),
mScreenUnbuffered (mOptions.GetWidth (), mOptions.GetHeight ()),
mScreen (&mScreenUnbuffered),
+ mbScreenAvailable (false),
mTimer (&mInterrupt),
mLogger (mOptions.GetLogLevel (), &mTimer)
{
@@ -109,10 +110,7 @@ public:
return false;
}
- if (!mScreenUnbuffered.Initialize ())
- {
- return false;
- }
+ mbScreenAvailable = mScreenUnbuffered.Initialize ();
#if 0
if (!mSerial.Initialize (115200))
{
@@ -138,6 +136,7 @@ protected:
CScreenDevice mScreenUnbuffered;
//CSerialDevice mSerial;
CWriteBufferDevice mScreen;
+ bool mbScreenAvailable;
CTimer mTimer;
CLogger mLogger;
};
@@ -164,7 +163,8 @@ public:
mUSBHCI (&mInterrupt, &mTimer, TRUE),
mEMMC (&mInterrupt, &mTimer, &mActLED),
#if !defined(__aarch64__) || !defined(LEAVE_QEMU_ON_HALT)
- mConsole (&mScreen, TRUE)
+ //mConsole (&mScreen, TRUE)
+ mConsole (&mNullDevice, &mScreen)
#else
mConsole (&mScreen)
#endif
diff --git a/src/kernel.cpp b/src/kernel.cpp
index 84aeba8..c658854 100644
--- a/src/kernel.cpp
+++ b/src/kernel.cpp
@@ -18,10 +18,10 @@
// along with this program. If not, see .
//
#include "kernel.h"
-#include
#include
#include
#include
+#include
LOGMODULE ("kernel");
@@ -75,6 +75,8 @@ bool CKernel::Initialize (void)
m_pDexed = new CMiniDexedPWM (&m_Config, &mInterrupt);
}
+ assert (m_pDexed);
+
if (!m_pDexed->Initialize ())
{
return FALSE;
@@ -85,15 +87,18 @@ bool CKernel::Initialize (void)
CStdlibApp::TShutdownMode CKernel::Run (void)
{
- std::cout << "Hello MiniDexed!\n";
+ assert (m_pDexed);
- while(42==42)
+ while (42 == 42)
{
boolean bUpdated = mUSBHCI.UpdatePlugAndPlay ();
m_pDexed->Process(bUpdated);
- mScreen.Update ();
+ if (mbScreenAvailable)
+ {
+ mScreen.Update ();
+ }
}
return ShutdownHalt;
@@ -103,5 +108,8 @@ void CKernel::PanicHandler (void)
{
EnableIRQs ();
- s_pThis->mScreen.Update (4096);
+ if (s_pThis->mbScreenAvailable)
+ {
+ s_pThis->mScreen.Update (4096);
+ }
}
diff --git a/src/kernel.h b/src/kernel.h
index 6195110..5d626f9 100644
--- a/src/kernel.h
+++ b/src/kernel.h
@@ -47,9 +47,9 @@ private:
private:
// do not change this order
- CConfig m_Config;
- CI2CMaster m_I2CMaster;
- CMiniDexed *m_pDexed;
+ CConfig m_Config;
+ CI2CMaster m_I2CMaster;
+ CMiniDexed *m_pDexed;
static CKernel *s_pThis;
};