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; }