bool HelloWorldUpdate() { if(s3eKeyboardGetState(s3eKeyBack) & S3E_KEY_STATE_RELEASED) { s3eDebugTraceLine("back check"); std::hash_map<char*, char*>::iterator ihashMap; if(hashMap.size() > 1) { ihashMap = hashMap.find("ShowAt"); if(ihashMap->second == "both"){ vservManagerFetchingAdData(); }else if(ihashMap->second == "end") { vservManagerFetchingAdData(); } else if(ihashMap->second == "start"){ s3eDeviceExit(); return false; } } } if(CheckButtonStatus("Exit") & S3E_KEY_STATE_RELEASED) /*S3E_KEY_STATE_PRESSED)*/ { s3eDebugTraceLine("Exit check"); HelloWorldShutDown(); return false; } return true; }
WIAMICRO_API HRESULT MicroEntry(LONG lCommand, _Inout_ PVAL pValue) { HRESULT hr = E_NOTIMPL; INT index = 0; //#define _DEBUG_COMMANDS #ifdef _DEBUG_COMMANDS if(lCommand != CMD_STI_GETSTATUS) Trace(TEXT("Command Value (%d)"),lCommand); #endif if( !pValue || !(pValue->pScanInfo)) { return E_INVALIDARG; } switch(lCommand) { case CMD_INITIALIZE: hr = S_OK; // // create any DeviceIO handles needed, use index (1 - MAX_IO_HANDLES) to store these handles. // Index '0' is reserved by the WIA flatbed driver. The CreateFile Name is stored in the szVal // member of the VAL structure. // // pValue->pScanInfo->DeviceIOHandles[1] = CreateFileA( pValue->szVal, // GENERIC_READ | GENERIC_WRITE, // Access mask // 0, // Share mode // NULL, // SA // OPEN_EXISTING, // Create disposition // FILE_ATTRIBUTE_SYSTEM | FILE_FLAG_OVERLAPPED, // Attributes // NULL ); // // if your device supports buttons, create the BUTTON name information here.. // if (!g_bButtonNamesCreated) { for(index = 0; index < MAX_BUTTONS; index++) { g_ButtonNames[index] = (WCHAR*)CoTaskMemAlloc(MAX_BUTTON_NAME); if (!g_ButtonNames[index]) { hr = E_OUTOFMEMORY; break; } } if(SUCCEEDED(hr)) { hr = GetOLESTRResourceString(IDS_SCAN_BUTTON_NAME,&g_ButtonNames[0],TRUE); } if(SUCCEEDED(hr)) { g_bButtonNamesCreated = TRUE; } else { for(index = 0; index < MAX_BUTTONS; index++) { if (g_ButtonNames[index]) { CoTaskMemFree(g_ButtonNames[index]); g_ButtonNames[index] = NULL; } } } } // // Initialize the scanner's default settings // InitScannerDefaults(pValue->pScanInfo); break; case CMD_UNINITIALIZE: // // close any open handles created by the Micro driver // if(pValue->pScanInfo->DeviceIOHandles[1] != NULL) { CloseHandle(pValue->pScanInfo->DeviceIOHandles[1]); } // // if your device supports buttons, free/destroy the BUTTON name information here.. // if(g_bButtonNamesCreated) { g_bButtonNamesCreated = FALSE; for(index = 0; index < MAX_BUTTONS; index++) { if (g_ButtonNames[index]) { CoTaskMemFree(g_ButtonNames[index]); g_ButtonNames[index] = NULL; } } } // // close/unload libraries // hr = S_OK; break; case CMD_RESETSCANNER: // // reset scanner // hr = S_OK; break; case CMD_STI_DIAGNOSTIC: case CMD_STI_DEVICERESET: // // reset device // hr = S_OK; break; case CMD_STI_GETSTATUS: // // set status flag to ON-LINE // pValue->lVal = MCRO_STATUS_OK; pValue->pGuid = (GUID*) &GUID_NULL; // // button polling support // #ifdef BUTTON_SUPPORT CheckButtonStatus(pValue); #endif hr = S_OK; break; case CMD_SETXRESOLUTION: pValue->pScanInfo->Xresolution = pValue->lVal; hr = S_OK; break; case CMD_SETYRESOLUTION: pValue->pScanInfo->Yresolution = pValue->lVal; hr = S_OK; break; case CMD_SETCONTRAST: pValue->pScanInfo->Contrast = pValue->lVal; hr = S_OK; break; case CMD_SETINTENSITY: pValue->pScanInfo->Intensity = pValue->lVal; hr = S_OK; break; case CMD_SETDATATYPE: pValue->pScanInfo->DataType = pValue->lVal; hr = S_OK; break; case CMD_SETNEGATIVE: pValue->pScanInfo->Negative = pValue->lVal; hr = S_OK; break; case CMD_GETADFSTATUS: case CMD_GETADFHASPAPER: // pValue->lVal = MCRO_ERROR_PAPER_EMPTY; // hr = S_OK; break; case CMD_GET_INTERRUPT_EVENT: hr = GetInterruptEvent(pValue); break; case CMD_GETCAPABILITIES: pValue->lVal = 0; pValue->pGuid = NULL; pValue->ppButtonNames = NULL; hr = S_OK; break; case CMD_SETSCANMODE: hr = S_OK; switch(pValue->lVal) { case SCANMODE_FINALSCAN: Trace(TEXT("Final Scan")); break; case SCANMODE_PREVIEWSCAN: Trace(TEXT("Preview Scan")); break; default: Trace(TEXT("Unknown Scan Mode (%d)"),pValue->lVal); hr = E_FAIL; break; } break; case CMD_SETSTIDEVICEHKEY: ReadRegistryInformation(pValue); break; #ifdef _USE_EXTENDED_FORMAT_LIST // note: MEMORYBMP, and BMP file will be added by wiafbdrv host driver. // do not include them in your extended list. // case CMD_GETSUPPORTEDFILEFORMATS: g_SupportedFileFormats[0] = WiaImgFmt_JPEG; pValue->lVal = NUM_SUPPORTED_FILEFORMATS; pValue->pGuid = g_SupportedFileFormats; hr = S_OK; break; case CMD_GETSUPPORTEDMEMORYFORMATS: g_SupportedMemoryFormats[0] = WiaImgFmt_TIFF; g_SupportedMemoryFormats[1] = WiaImgFmt_MYNEWFORMAT; pValue->lVal = NUM_SUPPORTED_MEMORYFORMATS; pValue->pGuid = g_SupportedMemoryFormats; hr = S_OK; break; #endif default: Trace(TEXT("Unknown Command (%d)"),lCommand); break; } return hr; }