SDKs and Tools - Speed up your Development - Bob Van Andel President, Allegro Software Bryan Roe...
-
Upload
tyler-davidson -
Category
Documents
-
view
218 -
download
1
Transcript of SDKs and Tools - Speed up your Development - Bob Van Andel President, Allegro Software Bryan Roe...
SDKs and Tools- Speed up your Development -
Bob Van AndelPresident, Allegro Software
Bryan RoeSenior 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 UPnP SDKs
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
RomPlug Advanced Process Flow
PlugBuilder UPnP Compiler
Compiler, Linker, etc.
PlugBuild.xml Device.xml Services.xml
Boot Image
SSDP Control Tables Device.c, Device_v.c Services.c Action Templates Event Templates
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
<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>
PlugBuilder.xml Example
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 - Action API
RomPlug Advanced - Eventing API
Automatic Subscription Management Variable values retrieved Notify message created Individual Subscribers notified
extern Boolean RuPublishUpnpEvent(void *theTaskDataPtr, Unsigned16 theServiceId, Unsigned16 theServiceIndex,char **theVarList, Unsigned16 theVarListLength);
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
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 Search
void CpRegisterSsdpListener(void *theTaskDataPtr, cpSsdpListenerFuncPtr theListenerFuncPtr); ypedef enum {
eCpSsdpAlive,eCpSsdpBye,eCpSsdpExpired
} cpSsdpNotifyStatus;
typedef void (*cpSsdpListenerFuncPtr)(cpSsdpNotifyStatus theStatus, cpDiscoveryInfoPtr theDiscoveryInfoPtr);
RomPlug Control - Device Listen
RomPlug Control - Get Description
Integrated Retrieval HTTP Client Retrieves Descriptions XML Parser turns into C structures
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);
RomPlug Control - Actions
Application provides Action Arguments
UPnP™ Control builds XML/SOAP request
HTTP Client Sends/Retrieves SOAP request
UPnP™ Control parses XML/SOAP response
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);
RomPlug Control - Event Handling
Integrated Event Handling Application provides Variable Action
routines HTTP Server receives Event Notification RomXML Parses Event Variables Variable sent to Variable Action routines
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);
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
MediaController
MediaServer
MediaRenderer
UPnP AV Actions and Events
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!
Foundation of the Connected Home