void CInputDeviceDesc::ToString(CChars* psz)
{
	SSetIterator				sIter;
	CInputSourceDesc*			pcInputSourceDesc;

	psz->Append(" --- CInputDeviceDesc ---\n");
	psz->Append("ID: ");
	psz->Append(mszID.Text());
	psz->AppendNewLine();
	psz->Append("Name: ");
	psz->Append(mszFriendlyName.Text());
	psz->AppendNewLine();
	psz->Append("Category: ");
	psz->Append(mpcCategory->GetCategoryName());
	psz->AppendNewLine();
	psz->Append("Comment: ");
	psz->Append(mszComment.Text());
	psz->AppendNewLine();
//	CInputDataFormat*					mpcDataFormat;

	psz->Append(" - CInputSourceDesc : mlcInputs -\n");
	pcInputSourceDesc = mlcInputs.StartIteration(&sIter);
	while (pcInputSourceDesc)
	{
		pcInputSourceDesc->ToString(psz);
		pcInputSourceDesc = mlcInputs.Iterate(&sIter);
	}
}
void CInputDeviceState::UpdateRestEvents(CInputDeviceValues* pcEvents, unsigned int uiSequence)
{
	int					i;
	SInputSourceState*	psState;
	CInputSourceDesc*	pcSourceDesc;
	BOOL				bNewValue;
	float				fValue;

	for (i = 0; i < macSourceStates.NumElements(); i++)
	{
		psState = macSourceStates.Get(i);
		pcSourceDesc = psState->pcDesc;
		if (!(psState->iFlags & SOURCE_STATE_EMITTED_EVENT))
		{
			if (psState->pcDesc->GetEmitRestEvent())
			{
				fValue = pcSourceDesc->GetRestValue();
				bNewValue = SetValue(psState, fValue);
				if (bNewValue)
				{
					pcEvents->Add(mpcDevice, pcSourceDesc, fValue, uiSequence, TRUE, 0);
				}
			}
		}

		if (psState->fValue == pcSourceDesc->GetRestValue())
		{
			psState->iFlags |= SOURCE_STATE_RESTING;
		}
	}
}
CInputSourceDesc* CInputDeviceDesc::AddInput(EInputSourceType eType, char* szFriendlyName)
{
	CInputSourceDesc*	pcSource;

	pcSource = mlcInputs.Add();
	pcSource->Init(this, eType, szFriendlyName, mlcInputs.NumElements()-1);
	return pcSource;
}
Ejemplo n.º 4
0
void CInputDevice::Process(void* pvInput, unsigned int uiSequence)
{
	CInputSourceDesc*	pcSourceDesc;
	SSetIterator		sIter;

	pcSourceDesc = mpcDesc->StartInputsIteration(&sIter);
	while (pcSourceDesc)
	{
		pcSourceDesc->Process(pvInput, &mcState, &mcInputValues, uiSequence);
		pcSourceDesc = mpcDesc->IterateInputs(&sIter);
	}
}
Ejemplo n.º 5
0
void CInputDevice::GetSources(CArrayInputSourceDescPtr* pcSources, CInputCategoryGeneric* pcGeneric)
{
	CInputSourceDesc*	pcSource;
	SSetIterator		sIter;

	pcSource = mpcDesc->StartInputsIteration(&sIter);
	while (pcSource)
	{
		if (pcSource->GetGenerics()->Contains(&pcGeneric))
		{
			pcSources->Add(&pcSource);
		}
		pcSource = mpcDesc->IterateInputs(&sIter);
	}
}
void CInputDeviceDesc::GetSources(CArrayIntAndPointer* apcDest, CInputCategoryGeneric* pcGeneric)
{
	SSetIterator		sIter;
	CInputSourceDesc*	pcSourceDesc;

	pcSourceDesc = mlcInputs.StartIteration(&sIter);
	while (pcSourceDesc)
	{
		if (pcSourceDesc->GetGenerics()->Contains(&pcGeneric))
		{
			apcDest->AddIfUnique(pcSourceDesc, -1);
		}
		pcSourceDesc = mlcInputs.Iterate(&sIter);
	}
}
CInputSourceDesc* CInputDeviceDesc::GetSource(char* szFriendlyName)
{
	CInputSourceDesc*	pcSource;
	SSetIterator		sIter;

	pcSource = mlcInputs.StartIteration(&sIter);
	while (pcSource)
	{
		if (pcSource->Is(szFriendlyName))
		{
			return pcSource;
		}
		pcSource = mlcInputs.Iterate(&sIter);
	}
	return pcSource;
}
BOOL CInputDeviceDesc::RenameSource(char* szOldName, char* szNewName)
{
	CInputSourceDesc*	pcSource;
	SSetIterator		sIter;

	pcSource = mlcInputs.StartIteration(&sIter);
	while (pcSource)
	{
		if (pcSource->Is(szOldName))
		{
			pcSource->SetFriendlyName(szNewName);
			return TRUE;
		}
		pcSource = mlcInputs.Iterate(&sIter);
	}
	return FALSE;
}
void CInputDeviceDesc::CopySources(CInputDeviceCopyContext* pcContext)
{
	CInputSourceDesc*	pcInputSourceDesc;
	CInputSourceDesc*	pcInputDestDesc;
	int					iNumInputs;
	SSetIterator		sIter;

	iNumInputs = mlcInputs.NumElements();
	pcInputSourceDesc = pcContext->mpcSourceDeviceDesc->mlcInputs.StartIteration(&sIter);
	while (pcInputSourceDesc)
	{
		pcInputDestDesc = mlcInputs.Add();
		pcInputDestDesc->Init(this, pcInputSourceDesc->GetType(), pcInputSourceDesc->GetFriendlyName(), pcInputSourceDesc->GetStateIndex() + iNumInputs);
		pcInputDestDesc->SetRest(pcInputSourceDesc->GetRestValue(), pcInputSourceDesc->GetEmitRestEvent(), pcInputSourceDesc->HasRestValue());
		pcInputDestDesc->CopyValues(pcInputSourceDesc);
		pcInputDestDesc->CopyActions(pcInputSourceDesc);
		pcContext->mmppSources.Put(pcInputSourceDesc, pcInputDestDesc);
		pcInputSourceDesc = pcContext->mpcSourceDeviceDesc->mlcInputs.Iterate(&sIter);
	}
}
BOOL CInputDeviceState::Rest(CInputDevice* pcDevice)
{
	int					i;
	CInputSourceDesc*	pcSourceDesc;
	SInputSourceState*	psSourceState;
	SSetIterator		sIter;

	mpcDevice = pcDevice;
	macSourceStates.Kill();
	macSourceStates.Allocate(&gcSystemAllocator, pcDevice->GetDesc()->NumInputs());
	pcSourceDesc = pcDevice->GetDesc()->StartInputsIteration(&sIter);
	i = 0;
	while (pcSourceDesc)
	{
		psSourceState = macSourceStates.Get(i);
		psSourceState->pcDesc = pcSourceDesc;
		if (psSourceState->pcDesc->HasRestValue())
		{
			psSourceState->iFlags = SOURCE_STATE_RESTING | SOURCE_STATE_VALID;
			psSourceState->fValue = pcSourceDesc->GetRestValue();
		}
		else
		{
			psSourceState->iFlags = 0;
			psSourceState->fValue = 0.0f;
		}

		if (pcSourceDesc->GetStateIndex() != i)
		{
			return FALSE;
		}

		pcSourceDesc = pcDevice->GetDesc()->IterateInputs(&sIter);
		i++;
	}
	return TRUE;
}