IdwApi.cpp
author sl
Sun, 16 Mar 2014 09:11:39 +0100
changeset 0 523a7dc3469f
child 2 558712318e1b
permissions -rw-r--r--
First contribution.
     1 //------------------------------------------------------------------------------
     2 #include "IdwApi.h"
     3 #include <windows.h>
     4 //------------------------------------------------------------------------------
     5 IdwApi::IdwApi(HINSTANCE hInstance)
     6 : m_hInstance(hInstance)
     7 , m_pIdwThread(NULL)
     8 , m_nInitCount(0)
     9 {
    10 }
    11 //------------------------------------------------------------------------------
    12 IdwApi::~IdwApi()
    13 {
    14 }
    15 //------------------------------------------------------------------------------
    16 DSPResult IdwApi::Init(IDW_INITRESULT* pInitResult)
    17 {
    18   m_mutex.Request();
    19   if (m_nInitCount == 0)
    20   {
    21     m_pIdwThread = new IdwThread(m_hInstance);
    22     m_pIdwThread->Start();
    23   }
    24   ++m_nInitCount;
    25   DSPResult ret = m_pIdwThread->Init(pInitResult);
    26   m_mutex.Release();
    27   return ret;
    28 }
    29 //------------------------------------------------------------------------------
    30 DSPResult IdwApi::Uninit()
    31 {
    32   m_mutex.Request();
    33   if (m_nInitCount == 0)
    34   {
    35     m_mutex.Release();
    36     return DSP_E_NOT_INITED;
    37   }
    38   DSPResult ret = m_pIdwThread->Uninit();
    39   if (ret == DSP_SUCCEEDED)
    40   {
    41     --m_nInitCount;
    42     if (m_nInitCount == 0)
    43     {
    44       m_pIdwThread->Interrupt();
    45       m_pIdwThread->Join();
    46       delete m_pIdwThread;
    47     }
    48   }
    49   m_mutex.Release();
    50   return ret;
    51 }
    52 //------------------------------------------------------------------------------
    53 DSPResult IdwApi::IsInited()
    54 {
    55   m_mutex.Request();
    56   if (m_nInitCount == 0)
    57   {
    58     m_mutex.Release();
    59     return DSP_S_NOT_INITED;
    60   }
    61   DSPResult ret = m_pIdwThread->IsInited();
    62   m_mutex.Release();
    63   return ret;
    64 }
    65 //------------------------------------------------------------------------------
    66 DSPResult IdwApi::IsPluginModeEnabled()
    67 {
    68   m_mutex.Request();
    69   if (m_nInitCount == 0)
    70   {
    71     m_mutex.Release();
    72     return DSP_S_NOT_IN_PLUGIN_MODE;
    73   }
    74   DSPResult ret = m_pIdwThread->IsPluginModeEnabled();
    75   m_mutex.Release();
    76   return ret;
    77 }
    78 //------------------------------------------------------------------------------
    79 DSPResult IdwApi::SetVfdText(LPCWSTR lpszLine1, LPCWSTR lpszLine2)
    80 {
    81   m_mutex.Request();
    82   if (m_nInitCount == 0)
    83   {
    84     m_mutex.Release();
    85     return DSP_E_NOT_INITED;
    86   }
    87   DSPResult ret = m_pIdwThread->SetVfdText(lpszLine1, lpszLine2);
    88   m_mutex.Release();
    89   return ret;
    90 }
    91 //------------------------------------------------------------------------------
    92 DSPResult IdwApi::SetVfdEqData(PDSPEQDATA pEqData)
    93 {
    94   m_mutex.Request();
    95   if (m_nInitCount == 0)
    96   {
    97     m_mutex.Release();
    98     return DSP_E_NOT_INITED;
    99   }
   100   DSPResult ret = m_pIdwThread->SetVfdEqData(pEqData);
   101   m_mutex.Release();
   102   return ret;
   103 }
   104 //------------------------------------------------------------------------------
   105 DSPResult IdwApi::SetLcdText(LPCWSTR lpszLine1)
   106 {
   107   m_mutex.Request();
   108   if (m_nInitCount == 0)
   109   {
   110     m_mutex.Release();
   111     return DSP_E_NOT_INITED;
   112   }
   113   DSPResult ret = m_pIdwThread->SetLcdText(lpszLine1);
   114   m_mutex.Release();
   115   return ret;
   116 }
   117 //------------------------------------------------------------------------------
   118 DSPResult IdwApi::SetLcdEqData(PDSPEQDATA pEqDataL, PDSPEQDATA pEqDataR)
   119 {
   120   m_mutex.Request();
   121   if (m_nInitCount == 0)
   122   {
   123     m_mutex.Release();
   124     return DSP_E_NOT_INITED;
   125   }
   126   DSPResult ret = m_pIdwThread->SetLcdEqData(pEqDataL, pEqDataR);
   127   m_mutex.Release();
   128   return ret;
   129 }
   130 //------------------------------------------------------------------------------
   131 DSPResult IdwApi::SetLcdAllIcons(BOOL bOn)
   132 {
   133   m_mutex.Request();
   134   if (m_nInitCount == 0)
   135   {
   136     m_mutex.Release();
   137     return DSP_E_NOT_INITED;
   138   }
   139   DSPResult ret = m_pIdwThread->SetLcdAllIcons(bOn);
   140   m_mutex.Release();
   141   return ret;
   142 }
   143 //------------------------------------------------------------------------------
   144 DSPResult IdwApi::SetLcdOrangeIcon(BYTE btIconData1, BYTE btIconData2)
   145 {
   146   m_mutex.Request();
   147   if (m_nInitCount == 0)
   148   {
   149     m_mutex.Release();
   150     return DSP_E_NOT_INITED;
   151   }
   152   DSPResult ret = m_pIdwThread->SetLcdOrangeIcon(btIconData1, btIconData2);
   153   m_mutex.Release();
   154   return ret;
   155 }
   156 //------------------------------------------------------------------------------
   157 DSPResult IdwApi::SetLcdMediaTypeIcon(BYTE btIconData)
   158 {
   159   m_mutex.Request();
   160   if (m_nInitCount == 0)
   161   {
   162     m_mutex.Release();
   163     return DSP_E_NOT_INITED;
   164   }
   165   DSPResult ret = m_pIdwThread->SetLcdMediaTypeIcon(btIconData);
   166   m_mutex.Release();
   167   return ret;
   168 }
   169 //------------------------------------------------------------------------------
   170 DSPResult IdwApi::SetLcdSpeakerIcon(BYTE btIconData1, BYTE btIconData2)
   171 {
   172   m_mutex.Request();
   173   if (m_nInitCount == 0)
   174   {
   175     m_mutex.Release();
   176     return DSP_E_NOT_INITED;
   177   }
   178   DSPResult ret = m_pIdwThread->SetLcdSpeakerIcon(btIconData1, btIconData2);
   179   m_mutex.Release();
   180   return ret;
   181 }
   182 //------------------------------------------------------------------------------
   183 DSPResult IdwApi::SetLcdVideoCodecIcon(BYTE btIconData)
   184 {
   185   m_mutex.Request();
   186   if (m_nInitCount == 0)
   187   {
   188     m_mutex.Release();
   189     return DSP_E_NOT_INITED;
   190   }
   191   DSPResult ret = m_pIdwThread->SetLcdVideoCodecIcon(btIconData);
   192   m_mutex.Release();
   193   return ret;
   194 }
   195 //------------------------------------------------------------------------------
   196 DSPResult IdwApi::SetLcdAudioCodecIcon(BYTE btIconData)
   197 {
   198   m_mutex.Request();
   199   if (m_nInitCount == 0)
   200   {
   201     m_mutex.Release();
   202     return DSP_E_NOT_INITED;
   203   }
   204   DSPResult ret = m_pIdwThread->SetLcdAudioCodecIcon(btIconData);
   205   m_mutex.Release();
   206   return ret;
   207 }
   208 //------------------------------------------------------------------------------
   209 DSPResult IdwApi::SetLcdAspectRatioIcon(BYTE btIconData)
   210 {
   211   m_mutex.Request();
   212   if (m_nInitCount == 0)
   213   {
   214     m_mutex.Release();
   215     return DSP_E_NOT_INITED;
   216   }
   217   DSPResult ret = m_pIdwThread->SetLcdAspectRatioIcon(btIconData);
   218   m_mutex.Release();
   219   return ret;
   220 }
   221 //------------------------------------------------------------------------------
   222 DSPResult IdwApi::SetLcdEtcIcon(BYTE btIconData)
   223 {
   224   m_mutex.Request();
   225   if (m_nInitCount == 0)
   226   {
   227     m_mutex.Release();
   228     return DSP_E_NOT_INITED;
   229   }
   230   DSPResult ret = m_pIdwThread->SetLcdEtcIcon(btIconData);
   231   m_mutex.Release();
   232   return ret;
   233 }
   234 //------------------------------------------------------------------------------
   235 DSPResult IdwApi::SetLcdProgress(int nCurPos, int nTotal)
   236 {
   237   m_mutex.Request();
   238   if (m_nInitCount == 0)
   239   {
   240     m_mutex.Release();
   241     return DSP_E_NOT_INITED;
   242   }
   243   DSPResult ret = m_pIdwThread->SetLcdProgress(nCurPos, nTotal);
   244   m_mutex.Release();
   245   return ret;
   246 }
   247 //------------------------------------------------------------------------------