Wiki

Clone wiki

fuppes-fork / Architecture

The Architecture of FUPPES

I find that it helps me to conceptualise what a system expects as input and what a system gives as output. So it may help, initially, to understand that FUPPES essentially runs as a HTTP server that understands the UPnP protocol. That means that HTTP messages come in and HTTP messages go out. As you should know the HTTP protocol uses TCP and is therefore reliable.

The output of FUPPES is media content and communication which is also sent over the HTTP protocol.

This communication is caused, in a large part by the way that the UPnP protocol operates. Here is an excerpt from that spec that may help you to understand fuppes:

The technologies leveraged in the UPnP architecture include Internet protocols such as IP,
TCP, UDP, HTTP, and XML. Like the Internet, contracts are based on wire protocols that are 
declarative, expressed in XML, and communicated via HTTP. 

As you can see it just uses a whole bunch of standard HTTP requests and responses to get stuff done. The real trick is the device integration.

As you map appreciate, if you wish to truly understand Fuppes properly then you are going to need to understand the UPnP specification. I consider the specification to be required reading for anybody that wishes to develop on the core of Fuppes and reccomended reading for anybody that wishes to make bug fixes to fuppes. Luckily for you the UPnP Specification is free to download from the internet and it is a pretty light spec to read through and it is also pretty readily understandible. However, make sure that you completely understand the HTTP, TCP, UDP and IP protocols befor you attempt to tackle the spec.

FUPPES Startup and Shutdown Design

FUPPES Running Design

The UPnP specification has the concept of Control Devces and Control Points which roughly translates to Servers and Clients. For example, Fuppes is a UPnP Control Device and an XBox 360 would be a UPnP Control Point. Obviously the pont of fuppes is to be a single Control Device that communicates with many Control Points.

Updated