Exemple #1
0
int _tmain(int argc, _TCHAR* argv[])
{
	UpnpmicroStackChain = ILibCreateChain();
	
	/* TODO: Each device must have a unique device identifier (UDN) */
	UpnpmicroStack = UpnpCreateMicroStack(UpnpmicroStackChain,"MicroDMA","6cace70b-ed87-4648-a6ac-46ee6f5e895c","0000001",1800,0);
	
	/* All evented state variables MUST be initialized before UPnPStart is called. */
	UpnpSetState_ConnectionManager_SourceProtocolInfo(UpnpmicroStack,"Sample String");
	UpnpSetState_ConnectionManager_SinkProtocolInfo(UpnpmicroStack,"Sample String");
	UpnpSetState_ConnectionManager_CurrentConnectionIDs(UpnpmicroStack,"Sample String");
	UpnpSetState_RenderingControl_LastChange(UpnpmicroStack,"Sample String");
	UpnpSetState_AVTransport_LastChange(UpnpmicroStack,"Sample String");
	UpnpSetState_RemoteIO_PeerConnection(UpnpmicroStack,"Sample String");
	UpnpSetState_ChannelManager_RegisteredChannelList(UpnpmicroStack,"Sample String");
	
	printf("Intel MicroStack 1.0 - MicroDMA\r\n\r\n");
	CreateThread(NULL,0,&Run,NULL,0,NULL);
	
	UpnpMonitor = ILibCreateLifeTime(UpnpmicroStackChain);
	UpnpIPAddressLength = ILibGetLocalIPAddressList(&UpnpIPAddressList);
	ILibLifeTime_Add(UpnpMonitor,NULL,4,&UpnpIPAddressMonitor,NULL);
	
	ILibStartChain(UpnpmicroStackChain);
	
	FREE(UpnpIPAddressList);
	return 0;
}
int main(void)
{
	UpnpmicroStackChain = ILibCreateChain();
	
	/* TODO: Each device must have a unique device identifier (UDN) */
	UpnpmicroStack = UpnpCreateMicroStack(UpnpmicroStackChain,"Intel's Micro Media Server","cefd004c-525b-42f9-95cd-6a9c70371e65","0000001",1800,0);
	
	/* All evented state variables MUST be initialized before UPnPStart is called. */
	UpnpSetState_ContentDirectory_SystemUpdateID(UpnpmicroStack,250);
	UpnpSetState_ConnectionManager_SourceProtocolInfo(UpnpmicroStack,"Sample String");
	UpnpSetState_ConnectionManager_SinkProtocolInfo(UpnpmicroStack,"Sample String");
	UpnpSetState_ConnectionManager_CurrentConnectionIDs(UpnpmicroStack,"Sample String");
	
	printf("Intel MicroStack 1.0 - Intel's Micro Media Server\r\n\r\n");
	
	UpnpMonitor = ILibCreateLifeTime(UpnpmicroStackChain);
	UpnpIPAddressLength = ILibGetLocalIPAddressList(&UpnpIPAddressList);
	ILibLifeTime_Add(UpnpMonitor,NULL,4,&UpnpIPAddressMonitor,NULL);
	
	signal(SIGINT,BreakSink);
	ILibStartChain(UpnpmicroStackChain);
	
	FREE(UpnpIPAddressList);
	return 0;
}
/* see header file */
void *MSL_CreateMediaServer(void *chain, void *upnpStack, void* lifetimeMonitor, const char *sinkProtocolInfo, const char *sourceProtocolInfo, const char *sortFields, const char *searchFields)
{
	struct MSL_MediaServerObject *mslObj;
	int size;

	mslObj = NULL;
	if (MSL_TheMslObj == NULL)
	{
		mslObj = MSL_TheMslObj = (struct MSL_MediaServerObject*) MSL_MALLOC(sizeof(struct MSL_MediaServerObject));
		memset(mslObj, 0, sizeof(struct MSL_MediaServerObject));
		
		mslObj->UpnpStack = upnpStack;
		mslObj->Destroy = MSL_DestroyMediaServer;
		mslObj->LifeTimeMonitor = lifetimeMonitor;
		sem_init(&(mslObj->Lock), 0, 1);

		UpnpSetState_ContentDirectory_SystemUpdateID(upnpStack, mslObj->SystemUpdateID);
		UpnpSetState_ContentDirectory_ContainerUpdateIDs(upnpStack, "");

		/* set initial sourceProtocolInfo */
		size = (int) strlen(sourceProtocolInfo)+1;
		mslObj->SourceProtocolInfo = (char*) malloc(size);
		memcpy(mslObj->SourceProtocolInfo, sourceProtocolInfo, size);
		UpnpSetState_ConnectionManager_SourceProtocolInfo(upnpStack, mslObj->SourceProtocolInfo);

		/* set initial sinkProtocolInfo */
		size = (int) strlen(sinkProtocolInfo)+1;
		mslObj->SinkProtocolInfo = (char*) malloc(size);
		memcpy(mslObj->SinkProtocolInfo, sinkProtocolInfo, size);
		UpnpSetState_ConnectionManager_SinkProtocolInfo(upnpStack,mslObj->SinkProtocolInfo);

		/* no connections */
		UpnpSetState_ConnectionManager_CurrentConnectionIDs(upnpStack, "");

		/* set sort capabilities */
		size = (int) strlen(sortFields)+1;
		MSL_TheMslObj->SortCapabilitiesString = (char*) MSL_MALLOC(size);
		memcpy(MSL_TheMslObj->SortCapabilitiesString , sortFields, size);

		/* set search cabilities */
		size = (int) strlen(searchFields)+1;
		MSL_TheMslObj->SearchCapabilitiesString = (char*) MSL_MALLOC(size);
		memcpy(MSL_TheMslObj->SearchCapabilitiesString, searchFields, size);

		ILibAddToChain(chain, mslObj);
	}

	return mslObj;
}