static void S9xSoftResetCPU (void) { CPU.Cycles = 182; // Or 188. This is the cycle count just after the jump to the Reset Vector. CPU.PrevCycles = CPU.Cycles; CPU.V_Counter = 0; CPU.Flags = CPU.Flags & (DEBUG_MODE_FLAG | TRACE_FLAG); CPU.PCBase = NULL; CPU.NMILine = FALSE; CPU.IRQLine = FALSE; CPU.IRQTransition = FALSE; CPU.IRQLastState = FALSE; CPU.IRQExternal = FALSE; CPU.IRQPending = Timings.IRQPendCount; CPU.MemSpeed = SLOW_ONE_CYCLE; CPU.MemSpeedx2 = SLOW_ONE_CYCLE * 2; CPU.FastROMSpeed = SLOW_ONE_CYCLE; CPU.InDMA = FALSE; CPU.InHDMA = FALSE; CPU.InDMAorHDMA = FALSE; CPU.InWRAMDMAorHDMA = FALSE; CPU.HDMARanInDMA = 0; CPU.CurrentDMAorHDMAChannel = -1; CPU.WhichEvent = HC_RENDER_EVENT; CPU.NextEvent = Timings.RenderPos; CPU.WaitingForInterrupt = FALSE; CPU.AutoSaveTimer = 0; CPU.SRAMModified = FALSE; Registers.PBPC = 0; Registers.PB = 0; Registers.PCw = S9xGetWord(0xfffc); OpenBus = Registers.PCh; Registers.D.W = 0; Registers.DB = 0; Registers.SH = 1; Registers.SL -= 3; Registers.XH = 0; Registers.YH = 0; ICPU.ShiftedPB = 0; ICPU.ShiftedDB = 0; SetFlags(MemoryFlag | IndexFlag | IRQ | Emulation); ClearFlags(Decimal); Timings.InterlaceField = FALSE; Timings.H_Max = Timings.H_Max_Master; Timings.V_Max = Timings.V_Max_Master; Timings.NMITriggerPos = 0xffff; if (Model->_5A22 == 2) Timings.WRAMRefreshPos = SNES_WRAM_REFRESH_HC_v2; else Timings.WRAMRefreshPos = SNES_WRAM_REFRESH_HC_v1; S9xSetPCBase(Registers.PBPC); ICPU.S9xOpcodes = S9xOpcodesE1; ICPU.S9xOpLengths = S9xOpLengthsM1X1; S9xUnpackStatus(); }
void Registers::Restart() { ClearFlags(); halt = false; ip = 0; totalInstructions = 0; }
EXPORT_C void CLogEvent::CopyL(const CLogEvent& aEvent) /** Makes a copy of the specified log event. @param aEvent The log event to be copied. */ { // Set data first as this is the only function that can leave // If this function fails nothing will be changed SetDataL(aEvent.Data()); SetId(aEvent.Id()); SetEventType(aEvent.EventType()); SetTime(aEvent.Time()); SetDurationType(aEvent.DurationType()); SetDuration(aEvent.Duration()); SetContact(aEvent.Contact()); SetLink(aEvent.Link()); SetDescription(aEvent.Description()); SetRemoteParty(aEvent.RemoteParty()); SetDirection(aEvent.Direction()); SetStatus(aEvent.Status()); SetSubject(aEvent.Subject()); SetNumber(aEvent.Number()); ClearFlags(KLogFlagsMask); SetFlags(aEvent.Flags()); #ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM SetSimId(aEvent.SimId()); #endif }
void SCH_VIEW::HighlightItem( EDA_ITEM *aItem, LIB_PIN* aPin ) { if( !aItem ) { for( auto item : *m_allItems ) { // Not all view items can be highlighted, only EDA_ITEMs // So clear flag of only EDA_ITEMs. auto eitem = dynamic_cast<EDA_ITEM *>( item ); if( eitem ) { eitem->ClearFlags( HIGHLIGHTED ); if( eitem->Type() == SCH_COMPONENT_T ) { // Items inside a component (pins, fields can be highlighted. static_cast<SCH_COMPONENT*>( eitem )->ClearAllHighlightFlags(); } } } } else { if( ( aItem->Type() == SCH_COMPONENT_T ) && aPin ) { static_cast<SCH_COMPONENT*>( aItem )->HighlightPin( aPin ); } else aItem->SetFlags( HIGHLIGHTED ); } // ugly but I guess OK for the moment... UpdateAllItems( ALL ); }
void Object::SetChanged(int flag) { if (flag) { SetFlags(WIDGET_CHANGED); } else { ClearFlags(WIDGET_CHANGED); } }
/// Reinitialize data void CvTacticalAnalysisCell::Clear() { ClearFlags(); m_iDeploymentScore = 0; m_eTargetType = AI_TACTICAL_TARGET_NONE; m_iDominanceZoneID = -1; m_iTargetDistance = INT_MAX; m_bHasLOSToTarget = false; }
void S9xResetCPU () { CPUPack.Registers.PB = 0; CPUPack.Registers.PC = S9xGetWord (0xFFFC); CPUPack.Registers.D.W = 0; CPUPack.Registers.DB = 0; CPUPack.Registers.SH = 1; CPUPack.Registers.SL = 0xFF; CPUPack.Registers.XH = 0; CPUPack.Registers.YH = 0; CPUPack.Registers.P.W = 0; CPUPack.ICPU.ShiftedPB = 0; CPUPack.ICPU.ShiftedDB = 0; SetFlags (MemoryFlag | IndexFlag | IRQ | Emulation); ClearFlags (Decimal); CPUPack.CPU.Flags = CPUPack.CPU.Flags & (DEBUG_MODE_FLAG | TRACE_FLAG); CPUPack.CPU.BranchSkip = FALSE; CPUPack.CPU.NMIActive = FALSE; CPUPack.CPU.IRQActive = FALSE; CPUPack.CPU.WaitingForInterrupt = FALSE; CPUPack.CPU.InDMA = FALSE; CPUPack.CPU.WhichEvent = HBLANK_START_EVENT; S9x_Current_HBlank_Event=S9xDoHBlankProcessing_HBLANK_START_EVENT; CPUPack.CPU.PC = NULL; CPUPack.CPU.PCBase = NULL; CPUPack.CPU.PCAtOpcodeStart = NULL; CPUPack.CPU.WaitAddress = NULL; CPUPack.CPU.WaitCounter = 0; CPUPack.CPU.Cycles = 0; old_cpu_cycles=0; cpu_glob_cycles=0; CPUPack.CPU.NextEvent = Settings.HBlankStart; CPUPack.CPU.V_Counter = 0; CPUPack.CPU.MemSpeed = SLOW_ONE_CYCLE; CPUPack.CPU.MemSpeedx2 = SLOW_ONE_CYCLE * 2; CPUPack.CPU.FastROMSpeed = SLOW_ONE_CYCLE; CPUPack.CPU.AutoSaveTimer = 0; CPUPack.CPU.SRAMModified = FALSE; // CPUPack.CPU.NMITriggerPoint = 4; // Set when ROM image loaded CPUPack.CPU.BRKTriggered = FALSE; //CPUPack.CPU.TriedInterleavedMode2 = FALSE; // Reset when ROM image loaded CPUPack.CPU.NMICycleCount = 0; CPUPack.CPU.IRQCycleCount = 0; S9xSetPCBase (CPUPack.Registers.PC); #ifndef VAR_CYCLES CPUPack.ICPU.Speed = S9xE1M1X1; #endif CPUPack.ICPU.S9xOpcodes = S9xOpcodesM1X1; CPUPack.ICPU.CPUExecuting = TRUE; S9xUnpackStatus(); }
void CLR_RT_HeapBlock_XmlNode::Clear() { CLR_RT_HeapBlock_String* empty = CLR_RT_HeapBlock_String::GetStringEmpty(); SetName ( empty ); SetNamespaceURI( empty ); SetPrefix ( empty ); SetLocalName ( empty ); ClearFlags ( ); }
void ICPClass::NewMode(int mode) { AircraftClass *playerAC = SimDriver.GetPlayerAircraft(); //Clear our Flags ClearFlags(); //Clear our strings ClearStrings(); LastMode = mICPTertiaryMode; mICPTertiaryMode = mode; ResetSubPages(); Manual_Input = FALSE; MadeInput = FALSE; ClearCount = 0; InputsMade = 0; playerAC->FCC->SetStptMode(FireControlComputer::FCCWaypoint); playerAC->FCC->waypointStepCmd = 127; switch (mode) { case COMM1_BUTTON: LeaveCNI(); SetICPFlag(ICPClass::MODE_COMM1); if(VM) VM->SetRadio(0); WhichRadio = 0; ExecCOMM1Mode(); break; case COMM2_BUTTON: LeaveCNI(); SetICPFlag(ICPClass::MODE_COMM2); if(VM) VM->SetRadio(1); WhichRadio = 1; ExecCOMM2Mode(); break; case LIST_BUTTON: LeaveCNI(); SetICPFlag(ICPClass::MODE_LIST); SetICPFlag(ICPClass::EDIT_STPT); ExecLISTMode(); break; case IFF_BUTTON: LeaveCNI(); SetICPFlag(ICPClass::MODE_IFF); ExecIFFMode(); break; default: break; } }
static void S9xResetCPU (void) { S9xSoftResetCPU(); Registers.SL = 0xff; Registers.P.W = 0; Registers.A.W = 0; Registers.X.W = 0; Registers.Y.W = 0; SetFlags(MemoryFlag | IndexFlag | IRQ | Emulation); ClearFlags(Decimal); }
/* Set the option for page 1 * aChoice = 0 if the item has no specific option for page 1 * > 0 if the item is only on page 1 * < 0 if the item is not on page 1 */ void WORKSHEET_DATAITEM::SetPage1Option( int aChoice ) { ClearFlags( PAGE1OPTION ); if( aChoice > 0) SetFlags( PAGE1OPTION_PAGE1ONLY ); else if( aChoice < 0) SetFlags( PAGE1OPTION_NOTONPAGE1 ); }
bool SCH_NO_CONNECT::IsSelectStateChanged( const wxRect& aRect ) { bool previousState = IsSelected(); if( aRect.Contains( m_pos ) ) SetFlags( SELECTED ); else ClearFlags( SELECTED ); return previousState != IsSelected(); }
bool SCH_TEXT::IsSelectStateChanged( const wxRect& aRect ) { bool previousState = IsSelected(); if( aRect.Contains( GetTextPos() ) ) SetFlags( SELECTED ); else ClearFlags( SELECTED ); return previousState != IsSelected(); }
bool SCH_BUS_ENTRY_BASE::IsSelectStateChanged( const wxRect& aRect ) { bool previousState = IsSelected(); // If either end of the bus entry is inside the selection rectangle, the entire // bus entry is selected. Bus entries have a fixed length and angle. if( aRect.Contains( m_pos ) || aRect.Contains( m_End() ) ) SetFlags( SELECTED ); else ClearFlags( SELECTED ); return previousState != IsSelected(); }
bool SCH_SHEET::IsSelectStateChanged( const wxRect& aRect ) { bool previousState = IsSelected(); EDA_RECT boundingBox = GetBoundingBox(); if( aRect.Intersects( boundingBox ) ) SetFlags( SELECTED ); else ClearFlags( SELECTED ); return previousState != IsSelected(); }
int DynamicObject::pset_Flags(Variant value) { char *ptr, *str = value; for (int i = 0; mapFlags[i].name; i ++) { if ((ptr = strstr(str, mapFlags[i].name))) { if (ptr > str && *(ptr-1) == '!') { ClearFlags(mapFlags[i].flags); } else { SetFlags(mapFlags[i].flags); } } } return 0; }
void SCH_FIELD::Place( SCH_EDIT_FRAME* frame, wxDC* DC ) { frame->GetCanvas()->SetMouseCapture( NULL, NULL ); SCH_COMPONENT* component = (SCH_COMPONENT*) GetParent(); // save old cmp in undo list frame->SaveUndoItemInUndoList( component ); Draw( frame->GetCanvas(), DC, wxPoint( 0, 0 ), GR_DEFAULT_DRAWMODE ); ClearFlags(); frame->GetScreen()->SetCurItem( NULL ); frame->OnModify(); }
/// Reinitialize data void CvTacticalAnalysisCell::Clear() { ClearFlags(); m_pEnemyMilitary = NULL; m_pEnemyCivilian = NULL; m_pNeutralMilitary = NULL; m_pNeutralCivilian = NULL; m_pFriendlyMilitary = NULL; m_pFriendlyCivilian = NULL; m_iDefenseModifier = 0; m_iDeploymentScore = 0; m_eTargetType = AI_TACTICAL_TARGET_NONE; m_iDominanceZoneID = -1; }
void S9xResetCPU() { ICPU.Registers.PB = 0; ICPU.Registers.PC = S9xGetWord(0xFFFC); ICPU.Registers.D.W = 0; ICPU.Registers.DB = 0; ICPU.Registers.SH = 1; ICPU.Registers.SL = 0xFF; ICPU.Registers.XH = 0; ICPU.Registers.YH = 0; ICPU.Registers.P.W = 0; ICPU.ShiftedPB = 0; ICPU.ShiftedDB = 0; SetFlags(MemoryFlag | IndexFlag | IRQ | Emulation); ClearFlags(Decimal); CPU.Flags = CPU.Flags & (DEBUG_MODE_FLAG | TRACE_FLAG); CPU.BranchSkip = false; CPU.NMIActive = false; CPU.IRQActive = false; CPU.WaitingForInterrupt = false; CPU.InDMA = false; CPU.WhichEvent = HBLANK_START_EVENT; CPU.PC = NULL; CPU.PCBase = NULL; CPU.PCAtOpcodeStart = NULL; CPU.WaitAddress = NULL; CPU.WaitCounter = 0; CPU.Cycles = 0; CPU.NextEvent = Settings.HBlankStart; CPU.V_Counter = 0; CPU.MemSpeed = SLOW_ONE_CYCLE; CPU.MemSpeedx2 = SLOW_ONE_CYCLE * 2; CPU.FastROMSpeed = SLOW_ONE_CYCLE; CPU.AutoSaveTimer = 0; CPU.SRAMModified = false; // CPU.NMITriggerPoint = 4; // Set when ROM image loaded CPU.BRKTriggered = false; //CPU.TriedInterleavedMode2 = false; // Reset when ROM image loaded CPU.NMICycleCount = 0; CPU.IRQCycleCount = 0; S9xSetPCBase(ICPU.Registers.PC); ICPU.S9xOpcodes = S9xOpcodesE1; ICPU.CPUExecuting = true; S9xUnpackStatus(); }
void Parser::ProcessStatement() { if(IsSet(FLAG_UNOPENED|FLAG_FRIEND)) { int size = mScopes.size(); if(size > 0) { Scope *pScope = mScopes[size-1]; // Most likely this is a pre-declare or a friend declare //printf("Throwing out uninteresting scope: %s\n", pScope->mpName); PopScope(); } } else if(!IsSet(FLAG_PAREN)) { int ssize = mScopes.size(); if(ssize > 0) { Scope *pScope = mScopes[ssize-1]; if(pScope->isClass) { int isize = mIdentifiers.size(); if(isize >= 2) { Identifier *varType = mIdentifiers[isize-2]; Identifier *varName = mIdentifiers[isize-1]; int flags = 0; if(varType->isBracketed && isize > 2) { Identifier *templateType = mIdentifiers[isize-3]; if(!strcmp(templateType->mpName, "std::vector")) { flags |= MacroGenerator::FLAG_ARRAY; } } if(!mIgnore) mpGenerator->AddMember(pScope->mpName, varType->mpName, varName->mpName, varType->starCount, flags); } } } } mIdentifiers.clear(); ClearFlags(); }
UActorComponent* UInheritableComponentHandler::CreateOverridenComponentTemplate(FComponentKey Key) { for (int32 Index = 0; Index < Records.Num(); ++Index) { FComponentOverrideRecord& Record = Records[Index]; if (Record.ComponentKey.Match(Key)) { if (Record.ComponentTemplate) { return Record.ComponentTemplate; } Records.RemoveAtSwap(Index); break; } } auto BestArchetype = FindBestArchetype(Key); if (!BestArchetype) { UE_LOG(LogBlueprint, Warning, TEXT("CreateOverridenComponentTemplate '%s': cannot find archetype for component '%s' from '%s'"), *GetPathNameSafe(this), *Key.GetSCSVariableName().ToString(), *GetPathNameSafe(Key.GetComponentOwner())); return NULL; } ensure(Cast<UBlueprintGeneratedClass>(GetOuter())); auto NewComponentTemplate = NewObject<UActorComponent>( GetOuter(), BestArchetype->GetClass(), BestArchetype->GetFName(), RF_ArchetypeObject | RF_Public | RF_InheritableComponentTemplate, BestArchetype); // HACK: NewObject can return a pre-existing object which will not have been initialized to the archetype. When we remove the old handlers, we mark them pending // kill so we can identify that situation here (see UE-13987/UE-13990) if (NewComponentTemplate->IsPendingKill()) { NewComponentTemplate->ClearFlags(RF_PendingKill); UEngine::FCopyPropertiesForUnrelatedObjectsParams CopyParams; CopyParams.bDoDelta = false; UEngine::CopyPropertiesForUnrelatedObjects(BestArchetype, NewComponentTemplate, CopyParams); } FComponentOverrideRecord NewRecord; NewRecord.ComponentKey = Key; NewRecord.ComponentTemplate = NewComponentTemplate; Records.Add(NewRecord); return NewComponentTemplate; }
void cScenarioBallRL::NewCycleUpdate() { if (EnableTraining()) { // finish recording tuple from previous cycle RecordState(mCurrTuple.mStateEnd); RecordEndFlags(mCurrTuple); mCurrTuple.mReward = CalcReward(mCurrTuple); // do something with the tuple if (!mFirstCycle) { mTupleBuffer[mNumTuples] = mCurrTuple; ++mNumTuples; if (mNumTuples == static_cast<int>(mTupleBuffer.size())) { Train(); double exp_rate = GetExpRate(); double exp_temp = GetExpTemp(); auto& ctrl = mBall.GetController(); ctrl->SetExpRate(exp_rate); ctrl->SetExpTemp(exp_temp); printf("\n"); printf("Exp Rate: %.3f\n", exp_rate); printf("Exp Temp: %.3f\n", exp_temp); } } // start recording new tuple mCurrTuple.mStateBeg = mCurrTuple.mStateEnd; RecordAction(mCurrTuple.mAction); mCurrTuple.mActionLikelihood = GetActionLikelihood(); ClearFlags(mCurrTuple); RecordBegFlags(mCurrTuple); mFirstCycle = false; } }
void ICPClass::ChangeToCNI(void) { AircraftClass *playerAC = SimDriver.GetPlayerAircraft(); ResetSubPages(); if (playerAC && playerAC->FCC) { playerAC->FCC->SetStptMode(FireControlComputer::FCCWaypoint); playerAC->FCC->waypointStepCmd = 127; } ClearFlags(); ClearStrings(); ClearString(); ClearDigits(); ClearCount = 0; InputsMade = 0; SetICPFlag(ICPClass::MODE_CNI); SetICPFlag(ICPClass::EDIT_STPT); LaserLine = 1; }
void UAnimSet::PostLoad() { Super::PostLoad(); #if WITH_EDITORONLY_DATA // Make sure that AnimSets (and sequences) within level packages are not marked as standalone. if(GetOutermost()->ContainsMap() && HasAnyFlags(RF_Standalone)) { ClearFlags(RF_Standalone); for(int32 i=0; i<Sequences.Num(); i++) { UAnimSequence* Seq = Sequences[i]; if(Seq) { Seq->ClearFlags(RF_Standalone); } } } #endif //#if WITH_EDITORONLY_DATA }
/* ** =================================================================== ** Method : WriteWord (bean IntFLASH) ** ** Description : ** This method is internal. It is used by Processor Expert ** only. ** =================================================================== */ static byte WriteWord(dword Addr,word Data16) { EnterCritical(); /* Enter critical section */ ClearFlags(); /* Clear all flags */ if (FSTAT_CBEIF == 0) { /* Is command buffer full ? */ ExitCritical(); /* Exit critical section */ return ERR_BUSY; /* If yes then error */ } *(word *far) Addr = Data16; /* Array address and program data */ FCMD = 32; /* Word program command */ FSTAT = 128; /* Clear flag command buffer empty */ if ((FSTAT_PVIOL == 1)||(FSTAT_ACCERR == 1)) { /* Is protection violation or acces error detected ? */ ExitCritical(); /* Exit critical section */ return ERR_NOTAVAIL; /* If yes then error */ } while (FSTAT_CBEIF == 0); /* Wait to buffer empty */ while (FSTAT_CCIF == 0); /* Wait to command complete */ ExitCritical(); /* Exit critical section */ if (*(word *far) Addr != Data16) /* Was attempt to write data to the given address errorneous? */ return ERR_VALUE; /* If yes then error */ return ERR_OK; /* OK */ }
/************************************************* ミッションテレメトリ初期化関数 *************************************************/ unsigned char InitMissionTelemetry(void) { ClearFlags(flag_misst); return 1; }
int ste_adm_hw_handler_u8500(sqlite3* db_p, hw_handler_dev_next_fp_t dev_next_fp, hw_handler_dev_to_dev_next_fp_t dev_next_d2d_fp, fadeSpeed_t fadeSpeed) { SRV_DBG_ASSERT_IS_NOT_WORKER_THREAD; SRV_DBG_ASSERT_IS_SERIALIZED_REQUEST; const char* name = NULL; char* dev_names = NULL; int ret = 0; int ret_func = STE_ADM_RES_ALSA_ERROR; char *command = NULL; char* data = NULL; int is_input, nDev_combo, idx_data; bool activeFMRx = false; bool activeFMTx = false; bool activeOutputDev = false; bool activeInputDev = false; bool activeInputDev_MIC = false; const char* dev_top = NULL; bool controls_open = false; ALOG_INFO("%s: Enter.", __func__); // Make sure that the settings that is written from ADM is not overwritten // by any sink or source audio_hal_alsa_set_ignore_defaults(true); // Create SQL-statement ClearFlags(); command = malloc(1024 * sizeof(char)); memset(command, 0, 1024); nDev_combo = 0; strcat(command, "SELECT * FROM HW_Settings_Combo WHERE (Codec = '"); strcat(command, codec_name_ab8500_p); strcat(command, "')"); while (dev_next_fp(&name) == 0) { if (strcmp(name, STE_ADM_DEVICE_STRING_FMRX) == 0) { activeFMRx = true; } else if (strcmp(name, STE_ADM_DEVICE_STRING_FMTX) == 0) { activeFMTx = true; } else if (is_asoc_device(name)) { if (adm_db_io_info(name, &is_input) != STE_ADM_RES_OK) { ALOG_INFO("%s: Warning: Device direction not found for device %s!", __func__, name); } else { if (is_input == 1) { activeInputDev = true; if (strcmp(name, STE_ADM_DEVICE_STRING_MIC) == 0) { activeInputDev_MIC = true; } } else { activeOutputDev = true; } } UpdateFlags(name); nDev_combo++; strcat(command, " AND ('"); strcat(command, name); strcat(command, "' IN (Dev1, Dev2, Dev3, Dev4, Dev5, Dev6)) "); } } // Become worker thread before opening ALSA controls (to avoid having the // "normal-thread" lock at the same time as the ALSA lock) srv_become_worker_thread(); if (audio_hal_alsa_open_controls(card_name_p) < 0) { ALOG_ERR("%s: ERROR: Unable to open ALSA-card '%s'!\n", __func__, card_name_p); goto cleanup_worker; } controls_open = true; if (nDev_combo == 0) { strcat(command, " AND (Dev1 ='')"); } strcat(command, " ORDER BY rowid LIMIT 1"); /* Combo-data */ idx_data = GetComboDataIndex(db_p, command); if (idx_data == -1) { ALOG_INFO("%s: WARNING: Data-index not found (idx_data = %d)!", __func__, idx_data); ret_func = STE_ADM_RES_OK; goto cleanup_worker; } data = GetData(db_p, idx_data); if (data == NULL) { ALOG_ERR("%s: ERROR: Failed to get data with index = %d!", __func__, idx_data); goto cleanup_worker; } ALOG_INFO("%s: Write HW-settings from file to ALSA-interface.", __func__); ret = audio_hal_alsa_set_controls_cfg((const char*)data); if (ret < 0) { ALOG_ERR("%s: ERROR: Failed to write HW-settings! ste_adm_hw_handler_alsa_set_controls returned %d.", __func__, ret); goto cleanup_worker; } if (data != NULL) { free(data); data = NULL; } /* Device-data */ while (dev_next_fp(&name) == 0) { if (strlen(name) == 0) continue; ret = adm_db_toplevel_mapping_get(name, &dev_top); if (ret < 0) { ALOG_INFO("%s: ERROR: Unable to find top-level device for '%s'!\n", __func__, name); ret_func = ret; goto cleanup_worker; } ALOG_INFO("%s: '%s' maps to '%s'\n", __func__, name, dev_top); idx_data = GetDeviceDataIndex(db_p, dev_top); if (idx_data == -1) { ALOG_INFO("%s: No top-level device-specific data exists for '%s'!", __func__, dev_top); continue; } if (data != NULL) { free(data); data = NULL; } data = GetData(db_p, idx_data); if (data == NULL) { ALOG_ERR("%s: ERROR: Failed to get data with index = %d!", __func__, idx_data); goto cleanup_worker; } // Set Digital Gain Fade Speed Switch audio_hal_alsa_set_control("Digital Gain Fade Speed Switch", 0, fadeSpeed); ALOG_INFO("%s: Write HW-settings for device '%s'.", __func__, dev_top); ret = audio_hal_alsa_set_controls_cfg((const char*)data); if (ret < 0) { ALOG_ERR("%s: ERROR: Failed to write HW-settings! ste_adm_hw_handler_alsa_set_controls returned %d.", __func__, ret); goto cleanup_worker; } }; /* Appending device to device connections */ AppendD2D(db_p, dev_next_d2d_fp); ExecuteFlags(); /* FM-devices */ if (activeFMRx || activeFMTx) { ALOG_INFO("%s: FM-device active!", __func__); if (activeFMRx) { configure_fm_t config; if (FM_TYPE_DIGITAL == fmrx_type) { ALOG_INFO("%s: FMRx digital active! Setting DA-from-slot and AD-to-slot mapping...", __func__); config.type = AUDIO_HAL_DIGITAL; audio_hal_alsa_set_control("Digital Interface AD 5 Loopback Switch", 0, 1); audio_hal_alsa_set_control("Digital Interface AD 6 Loopback Switch", 0, 1); audio_hal_alsa_set_control("Digital Interface AD To Slot 6 Map", 0, 4); // REG_ADSLOTSELX_AD_OUT5_TO_SLOT_EVEN audio_hal_alsa_set_control("Digital Interface AD To Slot 7 Map", 0, 5); // REG_ADSLOTSELX_AD_OUT6_TO_SLOT_ODD audio_hal_alsa_set_control("Digital Interface DA 7 From Slot Map", 0, 24); // Slot 24 -> DA_IN7 audio_hal_alsa_set_control("Digital Interface DA 8 From Slot Map", 0, 25); // Slot 25 -> DA_IN8 } else { ALOG_INFO("%s: FMRx analog active! Setting DA-from-slot and AD-to-slot mapping...", __func__); config.type = AUDIO_HAL_ANALOG; audio_hal_alsa_set_control("Digital Interface AD 5 Loopback Switch", 0, 0); audio_hal_alsa_set_control("Digital Interface AD 6 Loopback Switch", 0, 0); audio_hal_alsa_set_control("Digital Interface AD To Slot 6 Map", 0, 0); audio_hal_alsa_set_control("Digital Interface AD To Slot 7 Map", 0, 1); audio_hal_alsa_set_control("AD 1 Select Capture Route", 0, 0); audio_hal_alsa_set_control("AD 2 Select Capture Route", 0, 0); audio_hal_alsa_set_control("Mic 2 or LINR Select Capture Route", 0, 1); audio_hal_alsa_set_control("LineIn Left", 0, 1); audio_hal_alsa_set_control("LineIn Right", 0, 1); } audio_hal_configure_channel(AUDIO_HAL_CHANNEL_FMRX, &config); } else if (activeFMTx) { ALOG_INFO("%s: FMTx active! Setting DA-from-slot and AD-to-slot mapping...", __func__); audio_hal_alsa_set_control("Digital Interface AD 5 Loopback Switch", 0, 1); audio_hal_alsa_set_control("Digital Interface AD 6 Loopback Switch", 0, 1); audio_hal_alsa_set_control("Digital Interface AD To Slot 16 Map", 0, 4); // REG_ADSLOTSELX_AD_OUT5_TO_SLOT_EVEN audio_hal_alsa_set_control("Digital Interface AD To Slot 17 Map", 0, 5); // REG_ADSLOTSELX_AD_OUT6_TO_SLOT_ODD audio_hal_alsa_set_control("Digital Interface DA 7 From Slot Map", 0, 14); // Slot 14 -> DA_IN7 audio_hal_alsa_set_control("Digital Interface DA 8 From Slot Map", 0, 15); // Slot 15 -> DA_IN8 } } /* Input-devices */ if (activeInputDev) { int ADSel_slot0 = 2; // REG_ADSLOTSELX_AD_OUT3_TO_SLOT_EVEN int ADSel_slot1 = 1; // REG_ADSLOTSELX_AD_OUT2_TO_SLOT_ODD ALOG_INFO("%s: Input-device active!", __func__); if (activeInputDev_MIC) { int nChannels = GetMICChannelCount(db_p, STE_ADM_DEVICE_STRING_MIC); if (mic_type == MICROPHONE_TYPE_DIGITAL) { ALOG_INFO("%s: Device MIC actice (mic_type = MICROPHONE_TYPE_DIGITAL, nChannels = %d).", __func__, nChannels); ADSel_slot0 = 0; ADSel_slot1 = 1; audio_hal_alsa_set_control("AD 1 Select Capture Route", 0, 1); // DMic 1 if (nChannels > 1) audio_hal_alsa_set_control("AD 2 Select Capture Route", 0, 1); // DMic 2 } else { ALOG_INFO("%s: Device MIC active (mic_type = MICROPHONE_TYPE_ANALOG, nChannels = %d).", __func__, nChannels); audio_hal_alsa_set_control("AD 3 Select Capture Route", 0, 0); // Mic 1 if (nChannels > 1) { audio_hal_alsa_set_control("AD 2 Select Capture Route", 0, 0); // LineIn (Mic 2) audio_hal_alsa_set_control("Mic 2 or LINR Select Capture Route", 0, 0); // Mic 2 } else { // Force dual mono ADSel_slot0 = 2; // REG_ADSLOTSELX_AD_OUT3_TO_SLOT_EVEN ADSel_slot1 = 2; // REG_ADSLOTSELX_AD_OUT3_TO_SLOT_ODD } } audio_hal_alsa_set_control("DMic 1", 0, mic_type == MICROPHONE_TYPE_DIGITAL); audio_hal_alsa_set_control("DMic 2", 0, (mic_type == MICROPHONE_TYPE_DIGITAL) && (nChannels > 1)); audio_hal_alsa_set_control("Mic 1", 0, mic_type != MICROPHONE_TYPE_DIGITAL); audio_hal_alsa_set_control("Mic 2", 0, (mic_type != MICROPHONE_TYPE_DIGITAL) && (nChannels > 1)); } audio_hal_alsa_set_control("Digital Interface AD To Slot 0 Map", 0, ADSel_slot0); audio_hal_alsa_set_control("Digital Interface AD To Slot 1 Map", 0, ADSel_slot1); } /* Output-devices */ if (activeOutputDev) { ALOG_INFO("%s: Output-device active! Setting DA from Slot mapping...", __func__); audio_hal_alsa_set_control("Digital Interface DA 1 From Slot Map", 0, 8); // Slot 8 -> DA_IN1 audio_hal_alsa_set_control("Digital Interface DA 2 From Slot Map", 0, 9); // Slot 9 -> DA_IN2 audio_hal_alsa_set_control("Digital Interface DA 3 From Slot Map", 0, 10); // Slot 10 -> DA_IN3 audio_hal_alsa_set_control("Digital Interface DA 4 From Slot Map", 0, 11); // Slot 11 -> DA_IN4 audio_hal_alsa_set_control("Digital Interface DA 5 From Slot Map", 0, 12); // Slot 12 -> DA_IN5 audio_hal_alsa_set_control("Digital Interface DA 6 From Slot Map", 0, 13); // Slot 13 -> DA_IN6 } ret_func = STE_ADM_RES_OK; cleanup_worker: if (controls_open) { audio_hal_alsa_close_controls(); } srv_become_normal_thread(); if (command != NULL) free(command); if (dev_names != NULL) free(dev_names); if (data != NULL) free(data); ALOG_INFO("%s: Exit (%s).", __func__, (ret_func == STE_ADM_RES_OK) ? "OK" : "ERROR"); return ret_func; }