Mercurial > pt1.oyama
diff src/ushare.h @ 125:e413158cae13
Add ushare project files.
author | naoyan@johnstown.minaminoshima.org |
---|---|
date | Sun, 03 Oct 2010 11:35:19 +0900 |
parents | |
children | 5dcaf3785ebe |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ushare.h Sun Oct 03 11:35:19 2010 +0900 @@ -0,0 +1,136 @@ +/* + * ushare.h : GeeXboX uShare UPnP Media Server header. + * Originally developped for the GeeXboX project. + * Parts of the code are originated from GMediaServer from Oskar Liljeblad. + * Copyright (C) 2005-2007 Benjamin Zores <ben@geexbox.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef _USHARE_H_ +#define _USHARE_H_ + +#include <upnp/upnp.h> +#include <upnp/upnptools.h> +#include <stdbool.h> +#include <pthread.h> + +#ifdef HAVE_DLNA +#include <dlna.h> +#endif /* HAVE_DLNA */ + +#include "content.h" +#include "buffer.h" +#include "redblack.h" + +#define VIRTUAL_DIR "/web" +#define XBOX_MODEL_NAME "Windows Media Connect Compatible" +#define DEFAULT_UUID "898f9738-d930-4db4-a3cf" + +#define STREAM_FILE_NAME "stream.ts" +#define STREAM_LOCATION VIRTUAL_DIR "/" STREAM_FILE_NAME + +#define UPNP_MAX_CONTENT_LENGTH 4096 + +#define STARTING_ENTRY_ID_DEFAULT 0 +#define STARTING_ENTRY_ID_XBOX360 100000 + +#define UPNP_DESCRIPTION \ +"<?xml version=\"1.0\" encoding=\"utf-8\"?>" \ +"<root xmlns=\"urn:schemas-upnp-org:device-1-0\">" \ +" <specVersion>" \ +" <major>1</major>" \ +" <minor>0</minor>" \ +" </specVersion>" \ +" <device>" \ +" <deviceType>urn:schemas-upnp-org:device:MediaServer:1</deviceType>" \ +" <friendlyName>%s: 1</friendlyName>" \ +" <manufacturer>GeeXboX Team</manufacturer>" \ +" <manufacturerURL>http://ushare.geexbox.org/</manufacturerURL>" \ +" <modelDescription>GeeXboX uShare : UPnP Media Server</modelDescription>" \ +" <modelName>%s</modelName>" \ +" <modelNumber>001</modelNumber>" \ +" <modelURL>http://ushare.geexbox.org/</modelURL>" \ +" <serialNumber>GEEXBOX-USHARE-01</serialNumber>" \ +" <UDN>uuid:%s</UDN>" \ +" <serviceList>" \ +" <service>" \ +" <serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>" \ +" <serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>" \ +" <SCPDURL>/web/cms.xml</SCPDURL>" \ +" <controlURL>/web/cms_control</controlURL>" \ +" <eventSubURL>/web/cms_event</eventSubURL>" \ +" </service>" \ +" <service>" \ +" <serviceType>urn:schemas-upnp-org:service:ContentDirectory:1</serviceType>" \ +" <serviceId>urn:upnp-org:serviceId:ContentDirectory</serviceId>" \ +" <SCPDURL>/web/cds.xml</SCPDURL>" \ +" <controlURL>/web/cds_control</controlURL>" \ +" <eventSubURL>/web/cds_event</eventSubURL>" \ +" </service>" \ +" <service>" \ +" <serviceType>urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1</serviceType>\n" \ +" <serviceId>urn:microsoft.com:serviceId:X_MS_MediaReceiverRegistrar</serviceId>\n" \ +" <SCPDURL>/web/msr.xml</SCPDURL>" \ +" <controlURL>/web/msr_control</controlURL>" \ +" <eventSubURL>/web/msr_event</eventSubURL>" \ +" </service>\n" \ +" </serviceList>" \ +" <presentationURL>/web/ushare.html</presentationURL>" \ +" </device>" \ +"</root>" + +struct ushare_t { + char *name; + char *interface; + char *model_name; + content_list *contentlist; + struct rbtree *rb; + struct upnp_entry_t *root_entry; + int nr_entries; + int starting_id; + int init; + UpnpDevice_Handle dev; + char *udn; + char *ip; + unsigned short port; + unsigned short telnet_port; + struct buffer_t *presentation; + bool use_presentation; + bool use_telnet; +#ifdef HAVE_DLNA + bool dlna_enabled; + dlna_t *dlna; + dlna_org_flags_t dlna_flags; +#endif /* HAVE_DLNA */ + bool xbox360; + bool verbose; + bool daemon; + bool override_iconv_err; + char *cfg_file; + pthread_mutex_t termination_mutex; + pthread_cond_t termination_cond; +}; + +struct action_event_t { + struct Upnp_Action_Request *request; + bool status; + struct service_t *service; +}; + +inline void display_headers (void); +void * dlna_startup(void *p); + +#endif /* _USHARE_H_ */