static DWORD DRV_SetBusTuner( void * handle, Word busId, Word tunerId ) { DWORD dwError = Error_NO_ERROR; DWORD version = 0; PDEVICE_CONTEXT pdc = (PDEVICE_CONTEXT)handle; deb_data("- Enter %s Function -",__FUNCTION__); deb_data("busId = 0x%x, tunerId =0x%x\n", busId, tunerId); if ((pdc->UsbMode==0x0110) && (busId==Bus_USB)) { busId=Bus_USB11; } dwError = Demodulator_setBusTuner ((Demodulator*) &pdc->Demodulator, busId, tunerId); if (dwError) {deb_data("Demodulator_setBusTuner error\n");return dwError;} dwError = Demodulator_getFirmwareVersion ((Demodulator*) &pdc->Demodulator, Processor_LINK, &version); if (version != 0) { pdc->Demodulator.booted = True; } else { pdc->Demodulator.booted = False; } return(dwError); }
void Example_monitorVersion (Demodulator *demod) { Dword error = Error_NO_ERROR; Dword version = 0; printk("API Version = %04x.%08x.%02x\n", Version_NUMBER, Version_DATE, Version_BUILD); error = Demodulator_getFirmwareVersion (demod, Processor_LINK, &version); if (error) { printk("Demodulator_getFirmwareVersion(LINK) failed! Error = 0x%08x\n", error); return; } else { printk("LINK FW Version = 0x%08x\n", version); } error = Demodulator_getFirmwareVersion (demod, Processor_OFDM, &version); if (error) { printk("Demodulator_getFirmwareVersion(OFDM) failed! Error = 0x%08x\n", error); return; } else { printk("OFDM FW Version = 0x%08x\n", version); } }
static DWORD DRV_Initialize( void * handle ) { DWORD error = Error_NO_ERROR; PDEVICE_CONTEXT pdc = (PDEVICE_CONTEXT)handle; DWORD fileVersion, cmdVersion = 0; deb_data("- Enter %s Function -\n",__FUNCTION__); if(pdc->Demodulator.booted) //from Standard_setBusTuner() > Standard_getFirmwareVersion() { //use "#define version" to get fw version (from firmware.h title) error = DRV_getFirmwareVersionFromFile(Processor_OFDM, &fileVersion); //use "Command_QUERYINFO" to get fw version error = Demodulator_getFirmwareVersion((Demodulator*) &pdc->Demodulator, Processor_OFDM, &cmdVersion); if(error) deb_data("DRV_Initialize : Demodulator_getFirmwareVersion : error = 0x%08x\n", error); if(cmdVersion != fileVersion) { deb_data("Reboot: Outside Fw = 0x%X, Inside Fw = 0x%X", fileVersion, cmdVersion); error = Demodulator_reboot((Demodulator*) &pdc->Demodulator); pdc->bBootCode = true; if(error) { deb_data("Demodulator_reboot : error = 0x%08x\n", error); return error; } else { return Error_NOT_READY; } } else { deb_data(" Fw version is the same!\n"); error = Error_NO_ERROR; } }//pdc->Demodulator.booted ReInit: //Patch for NIM fail or disappear, Maggie error = Demodulator_initialize ((Demodulator*) &pdc->Demodulator, pdc->Demodulator.chipNumber , 8000, pdc->StreamType, pdc->architecture); if (error) { deb_data("Device initialize fail : 0x%08x\n", error); if( ((error&Error_FIRMWARE_STATUS) && (error&0x10)) && (pdc->Demodulator.chipNumber>1) ) { pdc->Demodulator.cmdDescription->sendCommand ((Demodulator*) &pdc->Demodulator, Command_FW_DOWNLOAD_END, 0, Processor_LINK, 0, NULL, 0, NULL); deb_data(" Retry to download FW with Single TS\n"); pdc->Demodulator.chipNumber = 1; pdc->bDualTs = false; error = Demodulator_writeRegister ((Demodulator*) &pdc->Demodulator, 0, Processor_LINK, 0x417F, 0); goto ReInit; } } else { deb_data(" Device initialize Ok!!\n"); } error = Demodulator_writeRegisterBits ((Demodulator*) &pdc->Demodulator, 0, Processor_LINK, p_reg_usb_min_len, reg_usb_min_len_pos, reg_usb_min_len_len, 1); Demodulator_getFirmwareVersion ((Demodulator*) &pdc->Demodulator, Processor_OFDM, &cmdVersion); deb_data(" FwVer OFDM = 0x%X, ", cmdVersion); Demodulator_getFirmwareVersion ((Demodulator*) &pdc->Demodulator, Processor_LINK, &cmdVersion); deb_data("FwVer LINK = 0x%X\n", cmdVersion); return error; }