350 likes | 500 Views
SDKs and Tools - Speed up your Development -. Bob Van Andel President, Allegro Software Bryan Roe Senior Software Engineer, Intel. Overview. SDK and Toolkits overview Intel Development Tools for UPnP ™ technology Allegro SDK presentation Q & A.
E N D
SDKs and Tools - Speed up your Development - Bob Van Andel President, Allegro Software Bryan Roe Senior Software Engineer, Intel
Overview • SDK and Toolkits overview • Intel Development Tools for UPnP™ technology • Allegro SDK presentation • Q & A
SDKs and ToolkitsGetting you to market faster • Available for most processors • Available for most RTOS environments • Saves Building Core Technology • Shared Code Base means • Stronger Interoperability • More Engineering resources available • User Interface • Product Differentiation
General Purpose SDKs • Work with Forum provided templates • Create your own templates • Provide strong foundation • Requires device specific code • Requires some SOAP/XML/HTTP knowledge • Allegro - RomPlug • Intel - Device Builder
Application Specific SDKs • Include “digested” Forum templates • Reduces need for SOAP/XML/HTTP knowledge • Provides Application Specific API above UPnP™ Core • IGD Toolkits • Allegro - RomPlug IGD • Jungo - OpenRG
Application Specific SDKs • AV Toolkits • Allegro - RomPlug IGD • Digital5 - D5 AV • Intel - AV Microstacks • Mediabolic - Mediabolic One • Oregan - Digital Media Platform • Simple Devices - SimpleWare
SDK Vendor Questions • Where is the code base used? • What processors/RTOS are supported? • How do I get support? • Can I get source code? • Monolithic vs. Integrated components • Other vendor products?
UPnP™ Test ToolsMaking sure your product works • UIC Certification Test Tool • Intel Test Tools • Device Spy • Device Sniffer • Device Validator • AV Media Controller • Network Light • etc.
Intel Development Tools for UPnP™ Technology • Device Spy - Universal Control Point • Device Sniffer - SSDP Network Monitor • Device Validator - Device Validation • Device Author - Authoring tool for UPnP Description Documents • Device Relay - Interact with your device from a remote location • Device Builder - Generate custom code for your specific device and/or control point
Allegro Foundation Toolkits • Strong Field-Proven Implementations • Shipping since 1996 • > 200 Customers (Cisco, D-Link, HP, etc.) • > 5,000,000 deployed devices • ANSI-C Source Code • Compact Resource Utilization • Any processor > 16bit addressing • Any RTOS with TCP stack
Allegro Foundation Toolkits • RomPager Web Server Family • RomWebClient HTTP client Family • RomXML - Micro XML Parser/Framer • RomMailer/RomPOP - Email Clients • RomTLS - SSL Server/Client • RomSSH - SSH Server • RomCLI - Telnet and Command Line
UPnP™ Technology • 0 - Automatic Address Assignment • 1 - Discover (SSDP) • 2 - Description (XML/HTTP) • 3 - Control (SOAP/XML/HTTP) • 4 - Eventing (GENA/HTTP) • 5 - Presentation (HTML/HTTP) • 6 - Application (IGD, AV, Printer, HA, etc.)
RomPlug™ General Toolkits • Basic UPnP™ Device • Simple Discovery, Description, Presentation • No SOAP, or XML parsing required • Advanced UPnP™ Device • Full UPnP Implementation • Includes Web Server/Client, XML, SOAP • UPnP™ Control Point • Full UPnP Implementation • Includes Web Server/Client, XML, SOAP
RomPlug Basic Device • Allows Windows Users to Find and Control a device using Internet Explorer • Discovery Services (SSDP) • Description / Presentation w/RomPager • Adds Small Footprint (5Kb) to WebServer • Simple API • Supports UPnP™ Basic Device Description • No Services
RomPlug Advanced Device • Discovery, Description, Presentation • Adds Control and Eventing Services • Hides complexity of underlying protocols • Includes Web Server/ Client and XML • Includes PlugBuilder template compiler • Small Runtime Footprint (<100Kb for IGD) • Sample Templates for devices
PlugBuilder Template Compiler • Used with RomPlug Advanced/Control • Compiles unmodified Forum or other UPnP templates • Uses PlugBuilder.xml to specify • Description value overrides • Service and Event URLs • Service Actions
PlugBuilder.xml Example <a:RomPlug xmlns:a="urn:schemas-allegro-com:romplug-toolkit-1-0"> <Support>Advanced</Support> <DeviceDescription file=”Description.xml”> <device id=”1234”> <serialNumber> <a:GetData Access="Direct" AccessPtr="gDeviceSerialNumber" DataType="String"> </serialNumber> <UDN> <a:GetData Prefix=“uuid:” AccessType="Direct" AccessPtr="gRootDeviceUdn" DataType="String"> </UDN> </device> </DeviceDescription> <ServiceDescription type="urn:schemas-upnp-org:service:serviceType:v” file=”Services.xml” > <action name=”DoSomething” handler=”MyDoSomethingAction” /> <action name=”DoSomethingElse” handler=”MyDoSomethingElseAction” /> </ServiceDescription> </a:RomPlug>
RomPlug Advanced - Action API typedef struct { Unsigned16 fServiceIndex; void * fInArgPtr; /* Argument list for Action */ void * fOutArgPtr; /* Normal Reply Arguments */ upnpErrorBody * fErrorPtr; char * fNamePtr; /* Action Name */ } rpSoapActionArg, *rpSoapActionArgPtr; typedef enum { eSoapCompleteOk, eSoapPending, eSoapCompleteErr } rpSoapResponse; static rpSoapResponse MyDoSomethingAction(void *theTaskDataPtr, rpSoapActionArgPtr theActionArgPtr);
RomPlug Advanced - Eventing API extern Boolean RuPublishUpnpEvent(void *theTaskDataPtr, Unsigned16 theServiceId, Unsigned16 theServiceIndex, char **theVarList, Unsigned16 theVarListLength); • Automatic Subscription Management • Variable values retrieved • Notify message created • Individual Subscribers notified
RomPlug Control • Discovery, Description, Control, Events • Hides complexity of underlying protocols • Includes PlugBuilder compiler • Search/Listen for UPnP™ Devices • Retrieve and Parse Device/Service Description • Control UPnP™ Device with Actions • Subscribe and Receive Events
RomPlug Control - Device Search typedef enum { eCpReportAll, eCpReportRoot, eCpReportDevice, eCpReportUPnPDeviceType, eCpReportDomainDeviceType, } cpFilterType; extern cpSearchStatus CpInitSearch(void * theTaskPointer, cpFilterType theSearchTarget, char * theSearchData, Unsigned8 theXmitCount, Unsigned8 theXmitPeriod, Unsigned8 theTimeToLive, cpSearchCompletionFuncPtr theSearchCompletionPtr, void * theCookie); typedef void (*cpSearchCompletionFuncPtr)(cpSearchStatus theStatus, void * theCookie, cpDiscoveryInfoPtr theDiscoveryInfoPtr);
RomPlug Control - Device Listen void CpRegisterSsdpListener(void *theTaskDataPtr, cpSsdpListenerFuncPtr theListenerFuncPtr); ypedef enum { eCpSsdpAlive, eCpSsdpBye, eCpSsdpExpired } cpSsdpNotifyStatus; typedef void (*cpSsdpListenerFuncPtr)(cpSsdpNotifyStatus theStatus, cpDiscoveryInfoPtr theDiscoveryInfoPtr);
RomPlug Control - Get Description extern cpGetStatus CpGetDeviceDescription(void *theTaskDataPtr, cpDevicePtr theDevicePtr, void * theParsedDataBufferPtr, Unsigned32 theParsedDataBufferSize, CpGetCompletionFuncPtr theCompletionFunctionPtr, void * theCookie); typedef void (*cpGetCompletionFuncPtr)(cpGetStatus theStatus, cpRootDeviceDataPtr theRootDataPtr, Unsigned32 theDataSize, void * theCookie); • Integrated Retrieval • HTTP Client Retrieves Descriptions • XML Parser turns into C structures
RomPlug Control - Actions void CpInvokeAction(void * theTaskDataPtr, cpDeviceDataPtr theDeviceDataPtr, char * theServiceIdPtr, char * theActionName, void * theActionArgsPtr, void * theActionResponsePtr, cpActionCompletionPtr theCompletionFuncPtr, void * theCookie); typedef void (*cpActionCompletionPtr)(cpActionStatus theStatus, void * theCookie, cpActionErrorInfoPtr theErrorInfoPtr); • Application provides Action Arguments • UPnP™ Control builds XML/SOAP request • HTTP Client Sends/Retrieves SOAP request • UPnP™ Control parses XML/SOAP response
RomPlug Control - Event Handling cpSubStatus CpSubscribe(void * theTaskDataPtr, cpDeviceDataPtr theDeviceDataPtr, char * theServiceIdPtr, Unsigned16 theDeviceInstanceIndex, Unsigned16 theServiceInstanceIndex, cpSubNotificationFuncPtr theNotificationFuncPtr, void * theCookie); typedef void (*cpSubNotificationFuncPtr)(cpSubStatus theStatus, void *theSubscription, void *theCookie); • Integrated Event Handling • Application provides Variable Action routines • HTTP Server receives Event Notification • RomXML Parses Event Variables • Variable sent to Variable Action routines
RomPlug Application Toolkits • Built on UPnP Forum Templates • Additional High-Level APIs to simplify device creation • Hides UPnP™ Core APIs (SOAP, XML, etc.) • RomPlug IGD • Configurable Device Types • Grouped Actions (POTS, PPP, DSL, etc.) • Sample SOAP actions for Address Assign, Interface Configuration, Port Mapping, etc.
UPnP™ AV Architecture Media Controller UPnP AV Actions and Events Media Server Media Renderer Digital Media Stream
RomPlug Media Server • High-Level APIs • Content Directory Service • Connection Manager Service • AV Transport Service • DIDL Support • General Database Support • HTTP Streaming Support with dynamic buffer insertion
RomPlug Media Renderer • High-Level APIs • Rendering Control Service • Connection Manager Service • AV Transport Service • HTTP Streaming Support with dynamic buffer retrieval • Trick mode (FF, Skip, etc. ) support
RomPlug Media Controller • High-Level APIs • Content Directory Actions • Rendering Control Actions • Connection Manager Actions • AV Transport Actions • DIDL Support • Event Management • Streaming Control
RomPlug Toolkits • RomPlug Basic Device • RomPlug Advanced Device • RomPlug Control • RomPlug IGD • RomPlug Media Server • RomPlug Media Renderer • RomPlug Media Controller
RomPlug UPnP™ SDKs THANK YOU!