sl@0: //------------------------------------------------------------------------------ sl@0: #include "IdwApi.h" sl@0: #include sl@2: sl@0: //------------------------------------------------------------------------------ sl@0: IdwApi::IdwApi(HINSTANCE hInstance) sl@0: : m_hInstance(hInstance) sl@0: , m_pIdwThread(NULL) sl@0: , m_nInitCount(0) sl@0: { sl@0: } sl@0: //------------------------------------------------------------------------------ sl@0: IdwApi::~IdwApi() sl@0: { sl@0: } sl@0: //------------------------------------------------------------------------------ sl@0: DSPResult IdwApi::Init(IDW_INITRESULT* pInitResult) sl@0: { sl@0: m_mutex.Request(); sl@0: if (m_nInitCount == 0) sl@0: { sl@0: m_pIdwThread = new IdwThread(m_hInstance); sl@0: m_pIdwThread->Start(); sl@0: } sl@0: ++m_nInitCount; sl@0: DSPResult ret = m_pIdwThread->Init(pInitResult); sl@0: m_mutex.Release(); sl@0: return ret; sl@0: } sl@0: //------------------------------------------------------------------------------ sl@0: DSPResult IdwApi::Uninit() sl@0: { sl@0: m_mutex.Request(); sl@0: if (m_nInitCount == 0) sl@0: { sl@0: m_mutex.Release(); sl@0: return DSP_E_NOT_INITED; sl@0: } sl@0: DSPResult ret = m_pIdwThread->Uninit(); sl@0: if (ret == DSP_SUCCEEDED) sl@0: { sl@0: --m_nInitCount; sl@0: if (m_nInitCount == 0) sl@0: { sl@0: m_pIdwThread->Interrupt(); sl@0: m_pIdwThread->Join(); sl@0: delete m_pIdwThread; sl@0: } sl@0: } sl@0: m_mutex.Release(); sl@0: return ret; sl@0: } sl@0: //------------------------------------------------------------------------------ sl@2: DSPResult IdwApi::IsInitialized() sl@0: { sl@0: m_mutex.Request(); sl@0: if (m_nInitCount == 0) sl@0: { sl@0: m_mutex.Release(); sl@0: return DSP_S_NOT_INITED; sl@0: } sl@3: DSPResult ret = m_pIdwThread->IsInitialized(); sl@0: m_mutex.Release(); sl@0: return ret; sl@0: } sl@0: //------------------------------------------------------------------------------ sl@0: DSPResult IdwApi::IsPluginModeEnabled() sl@0: { sl@0: m_mutex.Request(); sl@0: if (m_nInitCount == 0) sl@0: { sl@0: m_mutex.Release(); sl@0: return DSP_S_NOT_IN_PLUGIN_MODE; sl@0: } sl@0: DSPResult ret = m_pIdwThread->IsPluginModeEnabled(); sl@0: m_mutex.Release(); sl@0: return ret; sl@0: } sl@2: sl@2: /** sl@2: Fetch our current status. sl@2: It's actually just the last notification from iMON. sl@2: */ sl@2: DSPResult IdwApi::GetStatus(IDW_STATUS* aStatus) sl@2: { sl@2: m_mutex.Request(); sl@2: if (m_nInitCount == 0) sl@2: { sl@2: m_mutex.Release(); sl@2: return DSP_E_NOT_INITED; sl@2: } sl@2: sl@2: DSPResult ret = m_pIdwThread->GetStatus(aStatus); sl@2: m_mutex.Release(); sl@2: return ret; sl@2: } sl@2: sl@0: //------------------------------------------------------------------------------ sl@0: DSPResult IdwApi::SetVfdText(LPCWSTR lpszLine1, LPCWSTR lpszLine2) sl@0: { sl@0: m_mutex.Request(); sl@0: if (m_nInitCount == 0) sl@0: { sl@0: m_mutex.Release(); sl@0: return DSP_E_NOT_INITED; sl@0: } sl@0: DSPResult ret = m_pIdwThread->SetVfdText(lpszLine1, lpszLine2); sl@0: m_mutex.Release(); sl@0: return ret; sl@0: } sl@0: //------------------------------------------------------------------------------ sl@0: DSPResult IdwApi::SetVfdEqData(PDSPEQDATA pEqData) sl@0: { sl@0: m_mutex.Request(); sl@0: if (m_nInitCount == 0) sl@0: { sl@0: m_mutex.Release(); sl@0: return DSP_E_NOT_INITED; sl@0: } sl@0: DSPResult ret = m_pIdwThread->SetVfdEqData(pEqData); sl@0: m_mutex.Release(); sl@0: return ret; sl@0: } sl@0: //------------------------------------------------------------------------------ sl@0: DSPResult IdwApi::SetLcdText(LPCWSTR lpszLine1) sl@0: { sl@0: m_mutex.Request(); sl@0: if (m_nInitCount == 0) sl@0: { sl@0: m_mutex.Release(); sl@0: return DSP_E_NOT_INITED; sl@0: } sl@0: DSPResult ret = m_pIdwThread->SetLcdText(lpszLine1); sl@0: m_mutex.Release(); sl@0: return ret; sl@0: } sl@0: //------------------------------------------------------------------------------ sl@0: DSPResult IdwApi::SetLcdEqData(PDSPEQDATA pEqDataL, PDSPEQDATA pEqDataR) sl@0: { sl@0: m_mutex.Request(); sl@0: if (m_nInitCount == 0) sl@0: { sl@0: m_mutex.Release(); sl@0: return DSP_E_NOT_INITED; sl@0: } sl@0: DSPResult ret = m_pIdwThread->SetLcdEqData(pEqDataL, pEqDataR); sl@0: m_mutex.Release(); sl@0: return ret; sl@0: } sl@0: //------------------------------------------------------------------------------ sl@0: DSPResult IdwApi::SetLcdAllIcons(BOOL bOn) sl@0: { sl@0: m_mutex.Request(); sl@0: if (m_nInitCount == 0) sl@0: { sl@0: m_mutex.Release(); sl@0: return DSP_E_NOT_INITED; sl@0: } sl@0: DSPResult ret = m_pIdwThread->SetLcdAllIcons(bOn); sl@0: m_mutex.Release(); sl@0: return ret; sl@0: } sl@0: //------------------------------------------------------------------------------ sl@0: DSPResult IdwApi::SetLcdOrangeIcon(BYTE btIconData1, BYTE btIconData2) sl@0: { sl@0: m_mutex.Request(); sl@0: if (m_nInitCount == 0) sl@0: { sl@0: m_mutex.Release(); sl@0: return DSP_E_NOT_INITED; sl@0: } sl@0: DSPResult ret = m_pIdwThread->SetLcdOrangeIcon(btIconData1, btIconData2); sl@0: m_mutex.Release(); sl@0: return ret; sl@0: } sl@0: //------------------------------------------------------------------------------ sl@0: DSPResult IdwApi::SetLcdMediaTypeIcon(BYTE btIconData) sl@0: { sl@0: m_mutex.Request(); sl@0: if (m_nInitCount == 0) sl@0: { sl@0: m_mutex.Release(); sl@0: return DSP_E_NOT_INITED; sl@0: } sl@0: DSPResult ret = m_pIdwThread->SetLcdMediaTypeIcon(btIconData); sl@0: m_mutex.Release(); sl@0: return ret; sl@0: } sl@0: //------------------------------------------------------------------------------ sl@0: DSPResult IdwApi::SetLcdSpeakerIcon(BYTE btIconData1, BYTE btIconData2) sl@0: { sl@0: m_mutex.Request(); sl@0: if (m_nInitCount == 0) sl@0: { sl@0: m_mutex.Release(); sl@0: return DSP_E_NOT_INITED; sl@0: } sl@0: DSPResult ret = m_pIdwThread->SetLcdSpeakerIcon(btIconData1, btIconData2); sl@0: m_mutex.Release(); sl@0: return ret; sl@0: } sl@0: //------------------------------------------------------------------------------ sl@0: DSPResult IdwApi::SetLcdVideoCodecIcon(BYTE btIconData) sl@0: { sl@0: m_mutex.Request(); sl@0: if (m_nInitCount == 0) sl@0: { sl@0: m_mutex.Release(); sl@0: return DSP_E_NOT_INITED; sl@0: } sl@0: DSPResult ret = m_pIdwThread->SetLcdVideoCodecIcon(btIconData); sl@0: m_mutex.Release(); sl@0: return ret; sl@0: } sl@0: //------------------------------------------------------------------------------ sl@0: DSPResult IdwApi::SetLcdAudioCodecIcon(BYTE btIconData) sl@0: { sl@0: m_mutex.Request(); sl@0: if (m_nInitCount == 0) sl@0: { sl@0: m_mutex.Release(); sl@0: return DSP_E_NOT_INITED; sl@0: } sl@0: DSPResult ret = m_pIdwThread->SetLcdAudioCodecIcon(btIconData); sl@0: m_mutex.Release(); sl@0: return ret; sl@0: } sl@0: //------------------------------------------------------------------------------ sl@0: DSPResult IdwApi::SetLcdAspectRatioIcon(BYTE btIconData) sl@0: { sl@0: m_mutex.Request(); sl@0: if (m_nInitCount == 0) sl@0: { sl@0: m_mutex.Release(); sl@0: return DSP_E_NOT_INITED; sl@0: } sl@0: DSPResult ret = m_pIdwThread->SetLcdAspectRatioIcon(btIconData); sl@0: m_mutex.Release(); sl@0: return ret; sl@0: } sl@0: //------------------------------------------------------------------------------ sl@0: DSPResult IdwApi::SetLcdEtcIcon(BYTE btIconData) sl@0: { sl@0: m_mutex.Request(); sl@0: if (m_nInitCount == 0) sl@0: { sl@0: m_mutex.Release(); sl@0: return DSP_E_NOT_INITED; sl@0: } sl@0: DSPResult ret = m_pIdwThread->SetLcdEtcIcon(btIconData); sl@0: m_mutex.Release(); sl@0: return ret; sl@0: } sl@0: //------------------------------------------------------------------------------ sl@0: DSPResult IdwApi::SetLcdProgress(int nCurPos, int nTotal) sl@0: { sl@0: m_mutex.Request(); sl@0: if (m_nInitCount == 0) sl@0: { sl@0: m_mutex.Release(); sl@0: return DSP_E_NOT_INITED; sl@0: } sl@0: DSPResult ret = m_pIdwThread->SetLcdProgress(nCurPos, nTotal); sl@0: m_mutex.Release(); sl@0: return ret; sl@0: } sl@0: //------------------------------------------------------------------------------