void CLCDOutput::EnumerateDevices() { lgLcdDeviceDescEx descEx; if (LGLCD_INVALID_CONNECTION == m_hConnection) { if (ERROR_SUCCESS == lgLcdConnectEx(&m_lcdConnectCtxEx)) { // make sure we don't work with a stale device handle m_hConnection = m_lcdConnectCtxEx.connection; m_hDevice = LGLCD_INVALID_CONNECTION; } else { return; } } // close the lcd device before we open up another if (LGLCD_INVALID_DEVICE != m_hDevice) { lgLcdClose(m_hDevice); m_hDevice = LGLCD_INVALID_DEVICE; } // Setup the device family to use next time lgLcdSetDeviceFamiliesToUse(m_hConnection, m_dwDeviceFamiliesSupported, m_dwDeviceFamiliesSupportedReserved1); ZeroMemory(&descEx, sizeof(lgLcdDeviceDescEx)); DWORD res = ERROR_SUCCESS; res = lgLcdEnumerateEx(m_hConnection, 0, &descEx); if (ERROR_SUCCESS != res) { if(ERROR_NO_MORE_ITEMS != res) { // something happened. Let's close this. CloseAndDisconnect(); } return; } // ERROR_NO_MORE_ITEMS lgLcdOpenContext open_ctx; ZeroMemory(&open_ctx, sizeof(open_ctx)); open_ctx.connection = m_hConnection; open_ctx.index = 0; res = lgLcdOpen(&open_ctx); if (ERROR_SUCCESS != res) return; m_hDevice = open_ctx.device; m_dwButtonState = 0; // restores SetAsForeground(m_bSetAsForeground); }
void CLCDOutput::Shutdown(void) { CloseAndDisconnect(); if(0 == InterlockedDecrement(&lInitCount)) { lgLcdDeInit(); } LCDUIASSERT(lInitCount >= 0); }
void CLCDOutput::EnumerateDevices() { lgLcdDeviceDesc desc; if (LGLCD_INVALID_CONNECTION == m_hConnection) { if (ERROR_SUCCESS == lgLcdConnect(&m_lcdConnectCtx)) { // make sure we don't work with a stale device handle m_hConnection = m_lcdConnectCtx.connection; m_hDevice = LGLCD_INVALID_CONNECTION; } else { return; } } // close the lcd device before we open up another if (LGLCD_INVALID_DEVICE != m_hDevice) { lgLcdClose(m_hDevice); m_hDevice = LGLCD_INVALID_DEVICE; } ZeroMemory(&desc, sizeof(desc)); DWORD res = ERROR_SUCCESS; res = lgLcdEnumerate(m_hConnection, 0, &desc); if (ERROR_SUCCESS != res) { if(ERROR_NO_MORE_ITEMS != res) { // something happened. Let's close this. CloseAndDisconnect(); } return; } lgLcdOpenContext open_ctx; ZeroMemory(&open_ctx, sizeof(open_ctx)); open_ctx.connection = m_hConnection; open_ctx.index = 0; res = lgLcdOpen(&open_ctx); if (ERROR_SUCCESS != res) return; m_hDevice = open_ctx.device; m_dwButtonState = 0; }
BOOL CLCDOutput::AnyDeviceOfThisFamilyPresent(DWORD dwDeviceFamilyWanted, DWORD dwReserved1) { lgLcdDeviceDescEx descEx; if (LGLCD_INVALID_CONNECTION == m_hConnection) { if (ERROR_SUCCESS == lgLcdConnectEx(&m_lcdConnectCtxEx)) { // make sure we don't work with a stale device handle m_hConnection = m_lcdConnectCtxEx.connection; m_hDevice = LGLCD_INVALID_CONNECTION; } else { return FALSE; } } // Setup the device family to use next time lgLcdSetDeviceFamiliesToUse(m_hConnection, dwDeviceFamilyWanted, dwReserved1); ZeroMemory(&descEx, sizeof(lgLcdDeviceDescEx)); DWORD res = ERROR_SUCCESS; res = lgLcdEnumerateEx(m_hConnection, 0, &descEx); if (ERROR_SUCCESS != res) { if(ERROR_NO_MORE_ITEMS != res) { // something happened. Let's close this. CloseAndDisconnect(); return FALSE; } // Go back to the previous device family we were using lgLcdSetDeviceFamiliesToUse(m_hConnection, m_dwDeviceFamiliesSupported, m_dwDeviceFamiliesSupportedReserved1); return FALSE; } // Go back to what was being used lgLcdSetDeviceFamiliesToUse(m_hConnection, m_dwDeviceFamiliesSupported, m_dwDeviceFamiliesSupportedReserved1); return TRUE; }