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