Sunday, June 08, 2008

CyberLink for MacOSX : is a wrapper class of CyberLink for C to develop UPnP applications using only Objective-C 2.0. I have uploaded the install package for MacOSX Leopard based on CyberLink for C v2.2

Currently, the framework supports only basic functions of the control point like CyberLink for Perl, but it can get the C instance object using cObject method. Please use the C functions directly if you have to use other methods which are not supported in the framework :-)

Friday, June 06, 2008

CyberLink for C v2.2 : I have released the new package of the latest source codes as v2.2 today.

It will be a last release in the current license condition. From next release, we will remove the patent exclusion clause from the current license based on BSD.

The following are major changes from v2.1. Please check it :-)
2008-05-24  Satoshi Konno
* Added cg_xml_nodelist_getbyname() instead of cg_xml_nodelist_get().
* Added cg_xml_node_getchildnodebyname() instead of cg_xml_node_getchildnode().
* Deprecated cg_xml_nodelist_get() and cg_xml_node_getchildnode().
* Added support to include "expat/expat.h".
* Added a simple sample for UPnP/AV, upnpavdump, to parser the content lists of the media servers.
* Added a simple sample for UPnP/IGD, upnpigddump, to show the status parser of the internet gateway devices.
2008-05-14 Satoshi Konno
* Changed typedef.h about BOOL type using Objective-C for XCode.
* Changed cg_cond_signal() using SetEvent() instead of WaitForSingleObject() for WIN32 platform.
* Fixed cg_xml_parse() not to abort when the data is null or the length less than zero.
* Enabled cg_net_gethostinterfaces() for MacOSX in cinterface_function.c using __APPLE_CC_ macro.
2008-04-22 Satoshi Konno
* Added cg_upnp_controlpoint_getdevice() to get a device by the index.
* Added cg_upnp_device_getnservices() and cg_upnp_device_getservice() to get a device by the index.
2008-03-17 Satoshi Konno
* Changed not to define BOOL type using Objective-C for XCode.
* Added to check IP_PKTINFO into configure.in.
* Changed the following functions using void parameter instead of CgService not to conflict the prototype defines.
cg_upnp_event_notify_request_setpropertysetnode() and cg_upnp_subscriber_notifyall() using GCC v4.0.
* Fixed cg_socket_setid() to disable the IPPROTO_IP option using XCode 3.0.
* Fixed other errors using XCode 3.0.
2007-12-24 Satoshi Konno
* Added CG_UPNP_ST_URN and cg_upnp_st_isurn() to .
* Changed cg_upnp_device_ssdpmessagereceived() using cg_upnp_st_isurn() instead of cg_upnp_st_isurndevice() to find non standard UPnP devices.
* Changed cg_upnp_service_ssdpmessagereceived() using cg_upnp_st_isurn() instead of cg_upnp_st_isurnservice() to find non standard UPnP devices.
* Fixed cg_upnp_device_getservicebycontrolurl() to abort when the service_url is null.
* Fixed cg_string_naddvalue() to comipler using other compilers normally.
* Added cg_upnp_statevariable_setvaluewithoutnotify() not to send the updated value for other devices which subscribe the service of the state variable.
* Deprecated cg_upnp_service_notifyallstatevariables(). Use cg_upnp_service_notifyall which can send the events individually or collectively.
2007-12-13 Aapo Makela
* Multiple patches to fix crashes in out-of-memory situations
* Implemented more efficient reallocation policy in CgString
* Added proper control point locking in control point HTTP server
2007-11-16 Satoshi Konno
* Fixed cg_http_packet_read_body()not to lost data when the response packet is huge.
2007-10-22 Aapo Makela
* Added deb-target to Makefile.am to build Debian packages
* Fixed copyright notices in source files to match the copyright defined in COPYING
* Added NULL check to cg_strtrimwhite()
* Added NULL checks and fixed memory leaks in cg_net_selectaddr() and cg_net_gethostinterfaces()
* Disabled "Expect" HTTP header because it causes IOP issues with some UPnP implementations.
* Added NULL check to cg_xml_node_getchildnode() macro
* Fixed Debian specific files and added debug package building
2007-10-02 Satoshi Konno
* Changed cg_thread_() to return FALSE when the specified object is null.
* Added cg_http_server_lock() and cg_http_server_unlock().
* Fixed cg_http_server_clientthread() to remove the thread from the thread list.
2007-09-13 Satoshi Konno
* Added the following functions to get MAC address.
* cg_net_interface_setmacaddress(), cg_net_interface_getmacaddress()
* Changed cg_net_gethostinterfaces() to get the MAC address using GetAdaptersInfo() as default on Windows platform.
* Changed cg_net_gethostinterfaces() to get the MAC address using ioctl() on Linux platform.
* Changed cg_net_gethostinterfaces() to get the MAC address using getifaddrs() on other UNIX platform.
* Note : Other platforms might not support to get this functions yet.
2007-08-19 Satoshi Konno
* Added the following functions into
cg_file_setpath()
cg_file_setfilename()
2007-07-25 Satoshi Konno
* Added the following macros into
cg_file_isseparatorchar()
cg_file_ispathseparatorchar()
2007-07-18 Satoshi Konno
* Added the following functions to support more raw functions.
cg_file_open()
cg_file_close()
cg_file_write()
cg_file_read()
cg_file_seek()
2007-06-26 Satoshi Konno
* Added CgByte to typedef.h
2007-06-13 Fabrice Fontaine Orange
* Fixed a memory leak in cg_http_request_delete().
* Fixed compilation issue when using DCG_UPNP_NOUSE_CONTROLPOINT flag in cg_upnp_device_updatefromssdppacket().
* Fixed a memory leak in cg_upnp_device_getservicebycontrolurl().
* Fixed cg_thread_start(). Threads used to answer UPnP requests are created
in joinable state but the main thread doesn't call pthread_join on them.
So, they are kept alive until the end of the program. By creating them
in detached state, they are correctly clean up.
* Fixed cg_thread_stop_with_cond() to wait one second for thread termination instead of using pthread_join().
2007-06-06 Satoshi Konno
* Added checking 64 bit support, long long, to the configure.in for GCC.
* Fixed to compile cg_str2longlong() and cg_longlong2str() using GCC.
* Fixed cg_longlong2str() to return the buffer using GCC or ISOC99.
2007-03-20 Satoshi Konno
* Added a parameter, CgString, to return the result safety and the implementation without curl for the following functions.
cg_net_uri_unescapestring() and cg_net_uri_escapestring().
* Added a define, CG_USE_NET_URI_ESCAPESTRING_SKIP,in cg_net_uri_escapestring() and disabled the function not to skip only the first path.
* Changed cg_upnp_device_httprequestrecieved() using the new cg_net_uri_unescapestring().
* Added the following functions.
cg_net_uri_isreservedchar()
cg_net_uri_isunreservedchar()
cg_net_uri_isescapechar()
cg_net_uri_isalphanumchar()
* Fixed cg_net_uri_escapestring() to use curl_escape() instead of curl_unescape().
* Fixed cg_net_uri_unescapestring() to use curl_unescape() instead of curl_escape().
2007-03-18 Satoshi Konno
* Added CgInt64 to
* Changed the following functions to use CgInt64.
cg_longlong2str()
cg_http_packet_setheaderlonglong()
cg_http_packet_getheaderlonglong()
* Disable CG_USE_OPENSSL for Visual Studio projects as default.
2007-03-11 Satoshi Konno
* Added support of OpenSSL to socket functions in csocket.c.
* Added CG_USE_OPENSSL define and --enable-openssl option to disable the SSL functions as default.
* Added cg_https_request_post().
* Changed a compiler flag about file functions from USE_CFILE to CG_USE_CFILE.
* Added a framework of CppUnit.
2007-03-05 Satoshi Konno
* Changed cg_string_setnvalue() to use memcpy instead of strncpy().
* Added a parameter of the string length for cg_string_setpointervalue() and to set a binary data.
* Added a parameter of the string length for the following functions too.
cg_http_packet_setcontentpointer(), cg_http_request_setcontentpointer() and cg_http_response_setcontentpointer().
* Fixed cg_http_packet_read_body() to set the correct content length if the response has a field of the content length.
2007-02-25 Satoshi Konno
* Added cg_xml_attribute_remove().

Friday, December 21, 2007




VL-SP880 : I am checking the door phone adaptor based on PLC, Power Line Communications, from last week in my home. I have interested in the adaptor because it can display the camera image into TV over PLC based on TCP/IP.

As a result, I know that the adaptor is based on UPnP :-) For example, the adaptor sends the notify message using GENA when the button of the door phone is pressed.

I will connect the adaptor with the current door phone in my home, I am considering the applications now .....

Thursday, June 07, 2007

BitTorrent : I was developing a library based on BitTorrent to study about the implementation of P2P networking before, but I stopped the development because I have no idea about the application which I want to create.

However I will restart the development project because I would like to create some useful applications which are based on P2P such as Joost.

I have added the current codes into the new project on SourceForge now. The following sample shows how to get the peers of the specified torrent using the current library.
#include <cybergarage/bittorrent/cbittorrent.h>
int main(int argc, char* argv[])
{
CgBittorrentMetainfo *cbm;
CgBittorrentTracker *cbt;
CgBittorrentPeer *cbp;
int n;
if (argc < 2) {
printf("Usage : printpeers <Torrent URL>\n");
return -1;
}
cbm = cg_bittorrent_metainfo_new();
if (cg_bittorrent_metainfo_fetch(cbm, argv[1]) == FALSE) {
printf("Couldn't get the specified torrent file <%s>\n", argv[1]);
return -1;
}

cbt = cg_bittorrent_tracker_new();
cg_bittorrent_tracker_load(
cbt , 
cbm,
(unsigned char *)CDIST_TEST_TRACKER_PEERID,
"",
CDIST_TEST_TRACKER_PORT,
CDIST_TEST_TRACKER_UPLOADED,
CDIST_TEST_TRACKER_DOWNLOADED,
CDIST_TEST_TRACKER_LEFT,
TRUE,
CG_BITTORRENT_TRACKER_EVENT_STARTED,
CDIST_TEST_TRACKER_NUMWANT
);
n = 0;
for (cbp = cg_bittorrent_tracker_getpeers(cbt); cbp; cbp = cg_bittorrent_peer_next(cbp)) {
n++;
printf("[%d] %s:%d\n",
n,
cg_bittorrent_peer_getaddress(cbp),
cg_bittorrent_peer_getport(cbp));
}
cg_bittorrent_tracker_delete(cbt);
cg_bittorrent_metainfo_delete(cbm);
return 0;
}
To compile the sample, you have to install the latest CyberLink for C from the SVN. Please use the following commands to check the simple sample if you want.
$ svn co https://cgbittorrent.svn.sourceforge.net/svnroot/cgbittorrent/trunk 
$ cgbittorrent
$ cd cgbittorrent/
$ ./boostrap
$ ./configure
$ make
$ ./sample/printpeers/unix/printpeers http://torrent.fedoraproject.org/torrents/Zod-dvd-i386.torrent
[1] 80.xx3.x5x.x6:688x
[2] x4.x93.x03.8x:344x3
[3] x9x.x00.x5.x45:x88x
[4] x9.37.xxx.50:407
[5] 59.xx7.x70.x07:448xx
..........
[46] x43.88.x4.x40:x88x
[47] 85.8x.x59.x8x:x88x
[48] xx7.xx.x78.x7:x54xx
[49] 8x.8x.xx0.xx3:x7779
[50] x00.x0x.84.33:x88x
Currently, there are many implementations based on Bittorrent. I will implement the basic functions about the BitTorrent specification at first, then I will develop the uniqueness.

Tuesday, May 29, 2007



Wiimote for C++ : I have released the C++ library for Wiimote. I would like to release the library for any platforms such as Linux and MacOSX finally, but I have released it only for WIN32 platforms at the first release.

The package includes the most simple sample which outputs data of a Wiimore to the standard console. The main source code is the following.
#include <stdio.h>
#include <cybergarage/wii/Wiimote.h>
using namespace CyberGarage;
int main( int argc, char *argv[] )
{
 Wiimote *wiimote;
 wiimote = new Wiimote();
 if (wiimote->open() == false) {
  delete wiimote;
  printf("Could not find Wiimote !!");
  return 0;
 }
 do {
  wiimote->read();
  printf("\r%+d %+d %+d %s %s %s %s %s %s %s %s %s %s %s",
   (wiimote->getXMotion()-0x80),
   (wiimote->getYMotion()-0x80),
   (wiimote->getZMotion()-0x80),
   (wiimote->IsAPressed() ? "A" : " "),
   (wiimote->IsBPressed() ? "B" : " "),
   (wiimote->IsOnePressed() ? "1" : " "),
   (wiimote->IsTwoPressed() ? "2" : " "),
   (wiimote->IsUpPressed() ? "U" : " "),
   (wiimote->IsDownPressed() ? "D" : " "),
   (wiimote->IsLeftPressed() ? "L" : " "),
   (wiimote->IsRightPressed() ? "R" : " "),
   (wiimote->IsMinusPressed() ? "-" : " "),
   (wiimote->IsPlusPressed() ? "+" : " "),
   (wiimote->IsHomePressed() ? "H" : " ")
   );
  Sleep(100);
 } while (wiimote->IsHomePressed() == false);
 wiimote->close();
 delete wiimote;
 return 0;
}
Please check the document how to use the library in more detail :-)

Saturday, May 26, 2007

Cyber Media Gate for C : is a tiny protocol stack of UPnP/AV based on CyberLink for C, and I have released the new version as v1.2 today. The major changes are bellow.
* Added installer projects for the WIN32 samples.
* Added the following functions to set attributes of DLNA.
cg_upnp_media_resource_setdlnaattribute()
cg_upnp_media_resource_getdlnaattribute()
cg_upnp_media_resource_getdlnapnfrommimetype()
* Updated cg_upnp_dms_filesys_updatecontentlist() to set the attributes of DLNA.
* Updated cg_upnp_dms_youtube_updaterootcontentlist() to set the attributes of DLNA.
* Added to the device description as default.
* Changed the device description to set a static UDN as default.
* Changed cg_upnp_media_resource_setsize() not to set the attribute when the specified value less than zero.
I have updated the two samples, Cyber Media Gate for YoutTube and Cyber Media Gate for Windows Mobile, using the new library too.

Please check the download site to get the new library and samples.

Thursday, May 17, 2007



Wiimote : I am studying about a remote control of Wii now, and I am developing the prototype driver on WIN32 platform at first. I would like to release the driver for Virtual Reality for any platform such as other my drivers for Java3D.

Please check the current source codes if you want. To run the sample program, you have to install CyberX3D for C++ currently.

Sunday, March 11, 2007


Flash Player for Youtube : I have wrote a simple application that can see video contents of Youtube only by remote control such as Rimo. I would like to optimize the application for Wii, but I don't buy Wii in my home yet X-<

I wrote the client only using Flash 8, and the main source code of ActionScript is the following. You can get the all source codes that includes the flash file and the server side file from the link.
var rssXML = new XML();
rssXML.ignoreWhite = true;

var rssItemNum = 0;
var rssItemTitle = new Array();
var rssItemURL = new Array();
var currtemNum = 0;

function updateItem(xml) {
var channelNode = xml.firstChild.firstChild;
var channelNodesNum = channelNode.childNodes.length;
if (channelNodesNum <= 0)
return;
rssItemNum = 0;
rssItemTitle = new Array();
rssItemURL = new Array();
for(var i = 0; i < channelNodesNum; i ++) {
if(channelNode.childNodes[i].nodeName.toLowerCase() == "item") {
var itemNodesNum = channelNode.childNodes[i].childNodes.length;
var itemName = "";
var itemUrl = "";
for(var j = 0; j < itemNodesNum; j ++) {
if(channelNode.childNodes[i].childNodes[j].nodeName.toLowerCase() == "title") {
itemName = schannelNode.childNodes[i].childNodes[j].firstChild.nodeValue;
}
if(channelNode.childNodes[i].childNodes[j].nodeName.toLowerCase() == "link") {
itemUrl = channelNode.childNodes[i].childNodes[j].firstChild.nodeValue;
}
}
rssItemNum++;
rssItemTitle.push(itemName);
rssItemURL.push(itemUrl);
}
}
}
rssXML.onLoad = function(result) {
if (!result)
return;
updateItem(this);
if (0 < rssItemNum) {
flvMedia.stop();
flvMedia.contentPath = rssItemURL[0];
flvMedia.play(0);
}
}
rssXML.load("http://www.cybergarage.org/flash/youtube.xml");

function updataContentIndex(offset)
{
currtemNum += offset;
if (currtemNum < 0)
currtemNum = rssItemNum-1;
if ((rssItemNum-1) < currtemNum)
currtemNum = 0;
}

var flvPlayListener:Object = new Object();
flvPlayListener.complete = function(){
updataContentIndex(1);
flvMedia.stop();
flvMedia.contentPath = rssItemURL[currtemNum];
flvMedia.play(0);
}
flvMedia.addEventListener("complete",flvPlayListener);

var keyListener = new Object();
keyListener.onKeyDown = function() {
if (Key.getCode() == Key.RIGHT) {
updataContentIndex(1);
flvMedia.stop();
flvMedia.contentPath = rssItemURL[currtemNum];
flvMedia.play(0);
}
if (Key.getCode() == Key.LEFT) {
updataContentIndex(-1);
flvMedia.stop();
flvMedia.contentPath = rssItemURL[currtemNum];
flvMedia.play(0);
}
}

Key.addListener(keyListener);
I wrote a php file for the client to output a RSS format of YouTube :: Recently Featured that includes URLs of the FLV files directly. To run this sample of PHP, you might have to add the following patch into HTTP.php because the head function might ignore query strings of the specified URL.
# diff HTTP.120.php HTTP.php
153a154,155
> if (0 < @strlen($purl['query']))
> $path = $purl['path'] . "?" . $purl['query'];
Please check it :-)

Friday, February 23, 2007

CyberLink for C v2.1 : I have released the new version today. The major changes are bellow.
* Changed cg_http_request_post() to add a user agent, CyberGarage-HTTP/1.0, as default.
* Changed CG_HTTP_USERAGENT to CG_HTTP_USERAGENT_DEFAULT to add CG_HTTP_USERAGENT as the normal header define.
* Changed cg_http_packet_sethost() not to the port string for lighttpd when the port number is 80.
* Fixed cg_str2*() to return 0 when the parameter is null.
* Fixed cg_http_request_post() not to hung up when the request method is HEAD.
* Added a onlyHeader parameter to cg_http_response_read() and cg_http_response_packet().
* Added CG_HTTP_USERAGENT when CyberLink doesn't use CURL.
* Fixed to compile normally on the release mode for Windows Mobile.
* Added USE_CFILE define and --enable-cfile option to disable the file functions as default.
* Disabled cg_file*() as default.
* Disabled cg_upnp_device_loaddescriptionfile() as default.
* Added cg_filelist_*().
* Added cg_file_listfiles().
* Fixed to compile normally for WindowsCE platforms using Visual Studio 2005 and Windows Mobile 5.0 Pocket PC SDK.
* Changed WindowsCE flags from _WIN32_WCE to WINCE.
* Added time() and localtime() in src/cybergarage/util/ctime_win32.c only for WINCE platforms.
* Changed cg_log_print() for WIN32 platforms.
* Changed to use cg_strdup() instead of strdup() in clog.c.
* Added cg_http_request_settimeout() and cg_http_request_gettimeout().
* Added cg_http_response_settimeout() and cg_http_response_gettimeout().
* Added cg_http_server_settimeout() and cg_http_server_gettimeout().
I have released the protocol stack of UPnP/AV using SVN too. The package includes some samples about the implementation of the media server such as Youtube and Windows Mobile.

Please check it :-)

Wednesday, January 31, 2007



Cyber Media Gate for Windows Mobile : I have released a new UPnP/AV media server based on CyberLink for C today.

The media server is builded as an application of Windows Mobile 5.0.

The media server publishes the all photo images in the photo directory, My Pictures, using UPnP/AV protocols, so you can see the all photo images on TV easily using UPnP/AV players such as DLNA media players.

You can use the application as a digital photo frame because the media server shows the photo images by rotation.

I installed the application into W-ZERO3[es] which has the WiFi card, IMSW-822, so I can see the photo images on TV using VGP-MR100 in my home :-)

Saturday, January 13, 2007



Cyber Media Gate for YoutTube : I have released a new UPnP/AV media server based on CyberLink for C today. The media server is builded as a WIN32 application.

Using the media server, you can select the RSS feeds of YouTube such as Most Viewed Videos Today, see the video contents using standard UPnP/AV media players such as DLNA media players. The media server transcodes the video files from FLV format into MPEG1 format using FFMPEG.

I can see the RSS feeds of YouTube using VGP-MR100 in my home :-)






Friday, December 08, 2006

I have released the new package of CyberLink for C as v2.0 today.

For the new release, Nokia's developers and Theo Beisch joined the open source project as the core developers and they contributed to add many useful patches. Thanks. Please check the ChangeLog to know the improvements in more detail.

The release has no significant changes functionally, but many patches are added for the stabilization by the developers and other contributors.

Note : I had to change the license from this release. The new license is based on BSD license basically, but some sentences are added such as literary property.

Please check the documentation or the COPYING included the source codes to know the new license in more detail.

From this release, the CVS repository is deprecated. Please use the new SVN repository to get the latest source codes.

Tuesday, October 03, 2006


W-ZERO3[es] : I bought the new mobile phone to develop some mobile applications. I have a old WindowsCE computer, HPW-650PA, but the programming tools and environments are many changed. Platform Builder isn't released now, It seems that the development tools are integrated to Visual Studio.

For my study of the developing on new WindowsCE platforms, I will create the photo media server of UPnP/AV at first. I will add some minor changes to the current framework for UPnP/AV more simple and tiny such as the embedded devices.

Thursday, September 21, 2006




Media Streamer : Nokia released the UPnP AV Control point for Nokia 770. The control point is created based on CyberLink for C with their patches.

I installed the control point in my home, I searched UPnP/AV media servers. I could not find Sony's Cocoon today, but I am very surprised that it is has the very good and simple graphical user interface.

You can install it using your Application manager. Here are the instructions:
1. Make sure you have the latest firmware in your 770, i.e. OS2006 edition. 
If not, upgrade your 770 SW. You can download it e.g. from http://europe.nokia.com/A4144790.
If you prefer linux environment, get the flashing
tool from http://www.maemo.org/downloads/releases.html
2. Make sure your 770 is connected to the Internet
3. Open Application Manager in your 770 (with OS2006 edition)
4. Add the maemo application catalogue to your list of catalogues:
- menu -> Tools -> Application catalogue
- Create new catalogue with following parameters:
URL: http://repository.maemo.org/extras
Distribution: mistral
Components: free non-free
5. Refresh the package list (Tools -> Refresh package list)
6. Select "Install new applications" from Application manager main view.
7. Select category "All" and you should see "mediastreamer" package. Install it and you
are ready.


MythTV 0.20 : I knew that the new version is released, and it supports UPnP/AV media server based on CyberMedia Gate for C++ currently.

According to the release note, their term want to rewrite the media server codes based on other GPL licenced because their licence is GPL v2. However, I have no plan to release the source codes as GPL licence now X-<

Friday, July 21, 2006


AKI H8/3069F : I bought the H8 based board to make a prototype for the new project.

I have created the development environment using GCC and Redboot this week, and I wrote the test code using the LEDs and the LCD display.

I will check the network chip and start to write the prototype codes as the next step, but it will be a long term project because I want to develop other projects shortly.

Saturday, May 20, 2006

ESPer2006 : I went to the programmer's meeting to announce my recent activity after the project at Shibuya this weekend.

In the near future, I think that many home networked devices will support some peer to peer systems such as UPnP. I will focus my development to support such environment in home.

I put the presentation document here. The document is Japanese but, please check it if you have any interesting :-)

Wednesday, May 10, 2006

UPnP Proxy : I am developing a gateway for UPnP devices from last week to control the remote devices over the Internet.

I have started to write the code directly, but I am considering about the system structure because I am on business trip this week and I have no powerful PCs to develop.

Basically, I will develop two proxy modules for SSDP and HTTP including SOAP. To transfer the HTTP request, I have to change the request data which are related to the IP and the port such as the HOST header. I am considering how to complete the change more easily now.

Tuesday, April 25, 2006


Flash : I have merged a XML server for Flash that I have created for the testing last year, into a package of CyberLink for Java to control UPnP devices by remote or create the user interface by Flash.

I have created some user interfaces using Swing or native user interfaces such as Carbon and Gtk, but Flash might be a good solution to crate the user interface on any platforms.

I would like to create the UPnP/AV media server for iTunes. I want to study Objective-C and Cocoa because I know only the old development style, Carbon. However I might create the user interface using Flash.

Tuesday, April 18, 2006


Retemo UI : To read XRT Protocol v2.2 in more detail, I noticed that I have to send the REQUEST command at first when the XRT connection is established, and the connection is disconnected when the connection takes more than 5 seconds.

To follow the specification, I could connect my RemoteUI Client with a sample RemoteUI server of Intel Authoring Tools for UPnP Technologies (Build 1825) normally :-)

I have created a initial framework of the RemoteUI server and client, but I have to decide the concept what image I want to display to the RemoteUI clients in the near future. I would like to use the framework to control remote devices by mobile or home devices, but it might not be good solution ....

This page is powered by Blogger. Isn't yours?