CyberLink for C++

Overview

CyberLink for C++ is a development package for UPnP™ developers. CyberLink controls these protocols automatically, and supports to create your devices and control points quickly.

UPnP™ * architecture is an open network to enable discovery and control of networked devices and services, such as media servers and players at home.

UPnP™ * protocols are based on many standard, such as GENA, SSDP, SOAP, HTTPU and HTTP. Therefore you have to understand and implement these protocols to create your devices of UPnP™.

upnpapp.png

* UPnP ™ is a certification mark of the UPnP™ Implementers Corporation.

Repositories

The project is hosted on the following site. To use the CyberLink after v2.0, you have to install HttpEngineForCC which is a HTTP server framework too.

Programming Guide http://www.cybergarage.org/pdfdoc/clinkccproguide.pdf
Doxygen http://www.cybergarage.org/doxygen/clinkcc/
GitHub https://github.com/cybergarage/CyberLink4CC

ChangeLog

  • 2013-10-25 Satoshi Konno <skonno@cybergarage.org>
      • v.2.0
      • Changed to use uHTTP for C++ v0.6.
      • Changed to use boost::testunit instead of cppunit.
      • Removed header and source files for UPnP/AV
      • Removed WIN32 and T-Engine projects.
      • Removed Node::toUnicodeString() and XML::Local2Unicode().
      • Fixed Node::setAttribute() to set the specified value when the attribute is null.
      • Fixed Service::getSCPDNode() to return null when the URLBase and the Location are null.
      • Changed libxml2 parser using the latest functions.
      • Fixed a bug convertToCLinkFormat of libxml2 parser.
      • Improved Socket::connect() to ignore SIGPIPE on MacOSX 10.7.
      • Added Device::hasDeviceData().
      • Fixed Device::getLeaseTime() not to abort when the device data is null.
  • 2012-05-16 Satoshi Konno <skonno@cybergarage.org>
      • v.1.7.2
  • 2012-05-10 Satoshi Konno <skonno@cybergarage.org>
      • Added a library project for XCode on MacOSX.
      • Disabled XML::Local2Unicode on MacOSX because the iconv library has some problem.
      • Fixed some compile errors using GCC v4.2 on MacOSX v10.7 and Ubuntu v10.4.
      • Changed library name as libclink++ on Unix platform.
      • Fixed a bug to use --enable-libxml2 normally.
      • Changed configure not to install header files in cybergarage/upnp/media.
  • 2012-04-10 Satoshi Konno <skonno@cybergarage.org>
      • Thanks for Ricardo Rivldo
      • Fixed CyberNet::GetHostAddresses() for some reason, vmware and virtualbox \"virtual\" interfaces does not return ifa_addr.
  • 2010-02-22 Satoshi Konno <skonno@cybergarage.org>
      • Fixed some errors to compile normally using GCC v4.4.1 on Ubuntu 9.10.
  • 2009-06-09 Satoshi Konno <skonno@cybergarage.org>
      • Fixed some misspelt methods such as Device::*Manufacturer() and *ManufacturerURL() .
  • 2005-12-31 Satoshi Konno <skonno@cybergarage.org>
      • Added String2LongLong(), LongLong2String() and LongLong2HexString().
      • Changed cg_net_gethostinterfaces() not to bind the MAC address interface on QNX platform.
      • Disabled POSIX library checking in the configure script.
      • Fixed to ignore 64 bit functions on Cygwin or MigGW platforms.
      • Changed MediaServer to load the description from the memory data instead of the file.
      • Changed httpRequestRecieved() not to ignore HEAD requests.
      • Added File::save().
      • Fixed include/Makefile.am to install cybergarage/io/Reader.h normally.
      • Added MediaGate::setName() and getName(). These are instances for the freindly name.
      • Added getNode(name, value) to Node and NodeList class for iTunes Library.
      • Added Node::isValue() for iTunes Library.
  • 2005-10-13 Satoshi Konno <skonno@cybergarage.org>
      • v.1.7.1
      • Changed HTTPRequest::post() to add a HOST headedr before the posting.
      • Changed HTTPSocket::post() to add a Date headedr to the HTTPResponse before the posting.
      • Fixed HTTPPacket::set() to parse the chunk size as a hex string.
      • Fixed HTTPPacket::post() to output the chunk size as a hex string.
      • Fixed HTTPSocket::post() to output the chunk size as a hex string.
      • Fixed a bug of Device::getParentDevice() to return the parent device normally.
      • Changed XML::EscapeXMLChars() to process the '&' character at first for libxml2.
      • Changed DatagramSocket::bind() to set the specified address and port whether the binding is failed.
      • Fixed some bugs to parser the name spaces using libxml2.
      • Changed the configure to run 'make install' normally.
  • 2005-05-27 Satoshi Konno <skonno@cybergarage.org>
      • v.1.7
      • Changed some headers to compile normally on cygwin and mingw.
      • Added support for Expat XML parser.
      • Added support for HTTP chunked stream to CyberHTTP.
      • Fixed StateVariable::setValue() to set blank value when a null value is specified.
      • Fixed XML::EscapeXMLChars() to convert from "'" to "'" instead of "\".
      • Changed Socket::send() to retry when the packet is not sent normally.
      • Changed StateVariable::getAllowedValueList() and AllowedValueList::getAllowedValue() to use AllowedValue instead of std::string as the member.
      • Fixed Device::getNotifyDeviceNT() to return the UDN when the device is not root device.
      • Changed httpPostRequestRecieved() to return the bad request when the post request isn't the SOAP action.
      • Added Device::loadDescription(const char *) to load the description from memory.
      • Added Service::loadSCPD() to load the description from memory.
      • Added a exclusive access control to Device::getDescriptionData().
      • Removed Service::setDescriptionURL() and Service::getDescriptionURL().
      • Changed httpGetRequestRecieved() to return the description stream using Device::getDescriptionData() and Service::getSCPDData() at first.
      • Changed Thread::start() and stop() to virtual method for overriding in the sub class.
      • Changed Device::deviceSearchResponse() answer with USN:UDN::<device-type> when request ST is device type.
      • Changed Device::getDescriptionData() and Service::getSCPDData() to add a XML declaration at first line.
      • Added a new Device::setActionListener() and serQueryListner() to include the sub devices.
      • Changed ActionRequest::getActionName() to return when the delimiter is not found.
      • Added support for gcc 4.0.
  • 2004-11-13 Satoshi Konno <skonno@cybergarage.org>
      • v.1.6
      • Added support HTTP v1.1 connection.
      • Added HEAD and Content-Range headers for HTTP connection.
      • Fixed ControlPoint::removeExpiredDevices() to remove using the device array.
      • Fixed HTTPRequest::getHeader() and getHTTPVersion() no to return "HTTP/HTTP/version".
      • Added HTTPRequest::isHeadRequest().* Added HTTPPacket::setContentRange() and getContentRange().
      • Changed HTTPRequest::post(HTTPResponse*) not to close the connection.
      • Changed HTTPRequest::post(const char *, int) to add a connection header to close.
      • Added a isOnlyHeader parameter to HTTPSocket::post().
      • Added a updateWithContentLength parameter to HTTPPacket::setContent().
      • Changed to HTTPPacket::set() not to change the header of Content-Length.
      • Changed HTTPServer::accept() to set a default timeout, HTTP.DEFAULT_TIMEOUT, to the socket.
      • Added SocketImp::setTimeout().* Added HTTPPacket::init() and read().
      • Added HTTPRequest::isKeepAlive().
      • Added skip() to IntputStream, SocketInputStrean and FileInputStream.
      • Added HTTPStatus::isSuccessful() and HTTPRequest::isSuccessfule().
      • Added some patches for FreeBSD.* Removed a SOAP header from DIDLite::output().
      • Added support for Range header to HTTPPacket::getContentRange().
      • Added a MYNAME header to SSDP messages.
      • Changed socket functions to ignore SIGPIPE signal.
      • Added a fix to HTTPRequest::post() when the last position of Content-Range header is 0.
      • Added a Content-Range header to the response in HTTPRequest::post().
      • Changed the status code for the Content-Range request in HTTPRequest::post().
      • Added to check the range of Content-Range request in HTTPRequest::post().
      • Added support the intinite time and fixed a bug in Subscriber::isExpired().
      • Fixed a bug when Service::notify() removes the expired devices().
      • Fixed SSDPPacket::isRootDevice() to check the ST header.
      • Added Device::getStateVariable(serviceType, name).
      • Changed XML::output() to use short notation when the tag value is null.
      • Changed SSDP message to set the TTL as four.* Changed StateVariable::setValue() to update and send the event when the value is not equal to the current value.
  • 2004-08-10 Satoshi Konno <skonno@cybergarage.org>
      • v.1.5
      • Added support for Intel NMPR.
      • Added Device::setNMPRMode() and isNMPRMode().
      • Changed to advertise every 25%-50% of the periodic notification cycle for NMPR.
      • Added Device::setWirelessMode() and isWirelessMode().
      • Changed Device::start() to send a bye-bye before the announce for NMPR.
      • Changed Device::annouce(), byebye() and deviceSearchReceived() to send the SSDP messsage four times when the NMPR and the Wireless mode are true.
      • Fixed Device::announce() and byebye() to send the upnp::rootdevice message despite embedded devices.
      • Fixed Device::getRootNode() to return the root node when the device is embedded.
      • Fixed Service::announce() to set the root device URL to the LOCATION field.
      • Added ControlPoint::renewSubscriberService().
      • Changed ControlPoint::start() to create renew subscriber thread when the NMPR mode is true.
      • Changed Action::postControlAction() to set the status code to the UPnPStatus.
      • Changed StateVariable::postQuerylAction() to set the status code to the UPnPStatus.
      • Added Device::getParentDevice();
      • Changed Service::notify() to remove the expired subscribers and not to remove the invalid response subscribers for NMPR.
  • 2004-06-13 Satoshi Konno <skonno@cybergarage.org>
      • v.1.4.1
      • Added a sample for AV MediaServer, CyberMediaGate.
      • Changed HTTPRequest::post(HTTPResponse *) to close the socket stream from the server.
      • Changed HTTPPacket::getHeader() to compare using string::equals().
      • Added I18N support for SORPRequest and SOAPResponse classes.
      • Fixed invalide SERVER field of SSDP and HTTP response on Unix Plathome.
      • Changed SubscriptionRequest::setServie() to get the host address from the SSDP Location field when the URLBase is null.
  • 2004-05-12 Satoshi Konno <skonno@cybergarage.org>
      • v1.4
      • Fixed to set HTTP v1.1 to SSDPRequest and SSDPResponse class.
      • Fixed setRequestHost() for Sony's UPnP stack when the URLBase has the path.
      • Changed to update the UDN only when the field is null.
      • Fixed Service::getDeviceList() to public method.
      • Fixed URI::getProtocol() to retuen the name without "://".
      • Added some methods for StateVariable to get the AlloedValueList and the AllowedValueRange.
      • Changed the upnpdump sample to pring all descovered devices.
      • Fixed Praser::parse() to read under the buffer size.
      • Fixed Subscription::GetTimeout() to return the valid value.
      • Fixed Subscription::toTimeoutHeaderString() to set the valid value instead of the invalid URL value.
      • Fixed to initialize members of ActionData such as the action listener and the control response.
      • Added start(const char *target, int mx) and start(const char *target) to ControlPoint.
      • Added Device::isDeviceType().
      • Fixed Argument::initArgumentList() to share a argument node in three Argument when the argument lists are initialized.
      • Fixed Argument::getArgument(name) to return the valid pointer.
      • Added StateVariable::hasAllowedValueList() and hasAllowedValueRange().
  • 2004-03-11 Satoshi Konno <skonno@cybergarage.org>
      • v1.3.2
      • Fixed a HTTP server bug to return v1.1 instead of v1.0.
      • Added a null line to SSDP messages for Intel UPnP tools.
      • Added a header of xml version to setConetent() in SOAPRequest and SOPAResponse.
      • Changed to use the control URL when it is absolute.
      • Changed to get URLBase from the SSDP packet when the URLBase is null and the control URL is not absolute.
      • Fixed a interval time of the advertiser on Unix Platform.
      • Added Xcode projects on MacOSX.
  • 2004-01-13 Satoshi Konno <skonno@cybergarage.org>
      • v1.3
      • Improved the HTTP server using multithreading.
      • Updated a udn field by a generated uuid automatically.
      • Added Device::setActionListener() and Device::setQueryListener().
      • Added Service::setActionListener().
      • Added a Content-Length header to subscription responces.
      • Added Action::setAgumentValue(String name, int value).
      • Added Agument::setValue(int value).
      • Added Action::getAgumentIntegerValue().
      • Added Agument::getIntegerValue().
      • Added automatic device advertiser
      • Added automatic device disposer that remove expired devices from the control point.
      • Changed action listener and query listener to return user error messages.
  • 2003-10-02 Satoshi Konno <skonno@cybergarage.org> * The first release.
Topic attachments
I Attachment Action Size Date Who Comment
PNGpng upnpapp.png manage 218.5 K 2010-01-18 - 14:21 SatoshiKonno  
Topic revision: r12 - 2014-03-11 - SatoshiKonno
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2014 by Satoshi Konno Powerd by TWiki logoTWiki.