ushare-/appl/ushare.h

133 lines
4.2 KiB
C

/*
* 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 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;
};
void display_headers (void);
#endif /* _USHARE_H_ */