Exemplo n.º 1
0
BOOL CReadWriteASIC::ReadSlaveIDFromASIC( BYTE *pSlaveID )
{
	LONG lValTmp;
	BYTE value;
	BOOL bRet = FALSE;	
	if(NOERROR == WriteToRegister(KSPROPERTY_CLIENT_PROP_ASICREAD, &lValTmp, 0x10d1, 0, 0))		
	{
		if(NOERROR == ReadFromRegister(KSPROPERTY_CLIENT_PROP_ASICREAD, &lValTmp))	
		{
			value = (BYTE)lValTmp;
			bRet = TRUE;
		}			
	}
	else
	{
		ReadFromASIC(0x10d1, &value);	
		bRet = TRUE;
	}

	*pSlaveID = value;	 // add [3/11/2011 haifeng_liu]

	return bRet;		
}
Exemplo n.º 2
0
BOOL CReadWriteASIC::ReadFromASIC( USHORT Addr, BYTE *pValue )
{
	IKsControl	*pKsControl;
	KSP_NODE	ExtensionProp;
	struct {
		USHORT	Addr;
		USHORT	Value;
	} ExtensionData;
	ULONG		ulBytesReturned;
	HRESULT		hr;

	TRACE0("ReadFromASIC=>\n");
	if(m_pSrcFilter == NULL)	return FALSE;

	hr = m_pSrcFilter->QueryInterface(IID_IKsControl,(LPVOID*)&pKsControl);
	TRACE("QueryInterface(IID_IKsControl):0x%08x\n", hr);
	if (hr != NOERROR)     return FALSE;

	// dummy write for setting address
	ExtensionProp.Property.Set = PROPSETID_VIDCAP_EXTENSION_UNIT;
	ExtensionProp.Property.Id = 1;//KSPROPERTY_EXTENSION_UNIT_INFO;
	ExtensionProp.Property.Flags = KSPROPERTY_TYPE_SET | 
		KSPROPERTY_TYPE_TOPOLOGY;
	ExtensionProp.NodeId = 1;

	ExtensionData.Addr = Addr;
	ExtensionData.Value = 0xFF00;

	hr = pKsControl->KsProperty(
		(PKSPROPERTY) &ExtensionProp,
		sizeof(ExtensionProp),
		(PVOID) &ExtensionData,
		sizeof(ExtensionData),
		&ulBytesReturned);
	TRACE("IKsControl->KsProperty(Set):0x%08x\n", hr);

	if (hr == NOERROR)
	{
		ExtensionProp.Property.Set = PROPSETID_VIDCAP_EXTENSION_UNIT;
		ExtensionProp.Property.Id = 1;//KSPROPERTY_EXTENSION_UNIT_INFO;
		ExtensionProp.Property.Flags = KSPROPERTY_TYPE_GET | 
			KSPROPERTY_TYPE_TOPOLOGY;
		ExtensionProp.NodeId = 1;

		ExtensionData.Addr = Addr;
		ExtensionData.Value = 0xFF00;
		memset(&ExtensionData, 0, sizeof(ExtensionData));

		hr = pKsControl->KsProperty(
			(PKSPROPERTY) &ExtensionProp,
			sizeof(ExtensionProp),
			(PVOID) &ExtensionData,
			sizeof(ExtensionData),
			&ulBytesReturned);
		TRACE("IKsControl->KsProperty(Get):0x%08x\n", hr);

		if (hr == NOERROR)
			*pValue = (BYTE)ExtensionData.Value;
	}
	else
	{
		// james 2007/01/03
		LONG Asic_data = 0;
		LONG Asic_address = Addr;
		if(NOERROR == WriteToRegister (KSPROPERTY_CLIENT_PROP_ASICREAD, &Asic_data, Asic_address, 0, 0))
		{
			if(NOERROR == ReadFromRegister (KSPROPERTY_CLIENT_PROP_ASICREAD, &Asic_data))
			{	
				*pValue = (BYTE)Asic_data;
				TRACE("ReadFromASIC Asic data = %x", Asic_data);
				hr = NOERROR;
			}

		}
		else
			hr = S_FALSE;
	}

	pKsControl->Release();

	return (hr == NOERROR);
}
Exemplo n.º 3
0
int LSM303DLHC::Get_RawOutZ()
{
    unsigned char l = ReadFromRegister(_REG_R_OUT_Z_L_A);
    unsigned char h = ReadFromRegister(_REG_R_OUT_Z_H_A);
    return (short)((h << 8) | l);
}