990 likes | 1.23k Views
OCAP RI Training. Nov 30 – Dec 2, 2010 Presenters: Dave Hooley & Greg Rutz Location: Cox Communications. Schedule. Day 1 – Tue Nov 30 – 9:00am to 5:00pm Introductions Project overview, history and website High-level stack and platform architecture RI Stack directory structure
E N D
OCAP RI Training Nov 30 – Dec 2, 2010 Presenters: Dave Hooley & Greg Rutz Location: Cox Communications
Schedule • Day 1 – Tue Nov 30 – 9:00am to 5:00pm • Introductions • Project overview, history and website • High-level stack and platform architecture • RI Stack directory structure • Build system, stack and PC platform configuration • Running the RI • Day 2 – Wed Dec 1 – 9:00am to 5:00pm • Application Signaling • Channel maps, tuners and headend video service emulation • EYES tool demonstration • Day 3 – Thu Dec 2 – 9:00am to 3:00pm • Troubleshooting the Trio guide app on the RI • CANH emulation • Wrap-up
Project started June 2008 • Core OCAP I16+ compliant • Several ECNs short of 1.0.0 compliance • DVR I03 extension • Several ECNs short of I03 compliance • Front Panel I02 extension • Approx 200 bugs carried over legacy code base • Vision Workbench/Clientsim SDK (Windows only)
RI Release History • 1.1.1 RI on Jun 12, 2009 as part of 1.1.1 Bundle • 1.1.2 RI on Sep 30, 2009 as part of 1.1.2 Bundle • 1.1.3 RI on Dec 17, 2009 as part of 1.1.3 Bundle • 1.1.4 RI on Jun 3, 2010 as part of 1.1.4 Bundle
Stack History • 1.1.4 Bundle Release (RI 1.1.4 Rel-A): June 3, 2010 • Core OCAP 1.1.3 • DVR I06 Extension • Front Panel I04 Extension • Device Settings I03 Extension • Home Networking I05 Extension • Home Networking Protocol I03 • RI maintenance updates to 1.1.4 • Rel-B: Jul 22, 2010 • Rel-C: Sep 9, 2010 • Rel-D: Nov 4, 2010 • Rel-E: Dec 16, 2010 (planned)
History – Other • JVM • Based on Sun open source PhoneME advanced MR2 • Contributed to the PhoneME project Feb 2009 • PC Platform • Initially Windows XP • Integrated with RI stack Dec 2008 • Video decode complete; no audio decode currently • Linux PC support added Dec 2009 • Tru2way SDK • 2008: Clientsim-based (Windows only) • May 21, 2010: Rel-4 of the SDK uses TVT framework; Windows and Linux • Dec 23, 2010: Rel-5 of the SDK (planned)
Why an RI? OCAP Specifications Stubs & DTDs Clarify Test Release Bundle OCAP Tests (CTP) OCAP Reference Implementation Test
OCAP Release Bundle • Components of a bundle are • Specs • Stubs • DTDs • RI • CTP • Cert Wave uses a single bundle • Bundle is released 30 days prior to CW start • ECNs are published no closer than 90 days prior to the CW
OCAP RI Requirements • RI runs on a PC – Windows and Linux • RI and PC IDEmust be available on open-source terms • RI and PC IDE must only include components with licenses compatible with the ODL dual-license plans • Components available only under GPL are not OK • Licenses for all third-party RI components must be reviewed by both CableLabs and the ODL legal teams • RI works with existing CableLabs ATE/CTP tests • RI adheres to current and future OCAP core specs • RI adheres to current and future OCAP extensions specs • To ensure backwards compatibility, MSO guides must run on the RI
Licensing Models • GPL License on java.net • CableLabs OpenCable Project • OCAP Stack, PC Platform, Head-end Emulator • Sun PhoneME Project - JVM • Commercial License • CableLabs Commercial License • Also free • Stack, platform and emulator • RAND IPR commitment • Bug fixes in stack contributed back • Sun or other JVM vendor • Commercial CDC/PBP 1.1 JVMPhoneME JVM
Where Can I Get The RI? • The Reference Implementation Site: • https://ocap-ri.dev.java.net • Part of the greater OpenCable project on java.net • https://opencable.dev.java.net/ • Specifications and Retail Branding • www.opencable.com • www.tru2way.com
What Does This Mean for Me? • Stack Vendor • Opportunity to make your product better • Spec/stack changes (ECRs) will be better • Implemented/tested prior to publishing • Opportunity to offer more porting/integration/optimization services • Value added support services • Device Manufacturer • More assurance that you device is compliant • Potential shorter time to market • More compliant stacks from Stack Vendors • Shorter debug/release cycles • Better products, with a better user experience • Fewer app compatibility issues • Better interoperability (Home Networking)
What Does This Mean for Me? • Application Developer • Ability to test applications against representative stack • IDE/SDK coming • MSO • Path to fewer application compatibility issues (guides etc) • Path to broader selection of interoperable, application compatible tru2way devices • Better consumer experience for interactive Cable TV
How Can I Contribute? • Join the RI project on Java.net • Become a contributor • Sign the CableLabs Contributor Agreement • Contribute: • To the OCAP stack • To the PC Platform • Linux support • Other • To the SDK development • To the wiki • Ask and answer questions • Forum contributors
Project site walk through • Issue Tracker • Forums • Wikis • List of supported features • Contribution Process • Bug fix cutoffs • Release notes • Coding standards
Bug Tracking • Two Bug Tracking Databases • External IssueZilla db on java.net • Internal JIRA-based RI db at CableLabs • Focused on issues related to CTP and spec • Linked to CableLabs Jira-based CTP, Spec dbs • May be merging the 2 RI dbs in the future
RI Wiki Overview • Useful URLs • https://opencable.dev.java.net • Tru2way information, news, events, announcements. • https://ocap-ri.dev.java.net • OpenCable Reverence Implementation development. • Source code, binary release(s), Issue Tracker, Forums, etc. • https://devzone.cablelabs.com/widget/web/ocapri/1/-/wiki • Current CableLabs hosted “Public Facing” Wiki.
opencable.dev.java.net Access to varying information on OpenCable, tru2Way, etc. Developer's Conferences, Interop Events, etc. are announced here...
ocap-ri.dev.java.net Link to CableLabs Wiki
Full Text Searching Links to 'Really Quick Start' and 'Quick Start' URLs for Subversion Repository Wiki Front Page
OCAP RI Branching Strategy • Three principal branches • Trunk/Development Branch • Code implemented by internal RI Dev Team • Code from open source contributors that are vetted by RI Tech Leads • Other working branches get merged back to Mainline periodically • Branded Branch (eg, “1.1.4”) • Fixes and enhancements that are tied to the spec and which have been verified by the CTP • Branded branch is maintained separately from mainline • Changes from branded branch eventually migrate back to mainline development • One branded branch per spec release • Experimental Branch • Open source contributors have write access to this directory • No other restrictions • Merging to Trunk on a case-by-case basis
Platform Summary Full software emulation of STB media decoding and presentation hardware. Majority of the code is 3rd party support libraries. Leverages existing frameworks: GLib – utility library. uPnP – tuner control. GStreamer – media decoding and presentation. wxWidgets – user interface. No OS abstraction APIs.
RI Stack Directory Structure • ri/RI_Stack is the root of the stack ($OCAPROOT) • Formerly OCAP-1.0 • apps • Xlets, Xlets, Xlets • QA Integration Xlets, Watch TV, TuneTest • Some more up-to-date than others • assets • Test root certificates used to when running authenticated CTP tests • Standard fonts • bin • Binary and other runtime products for all ports • Some configuration files
Directory Structure -- continued • docs • Various system documentation • hostconfig • Host (not target) build configuration files • java • “filelist” files and Java build configuration files • src • Java source files, organized by extension • test • JUnit source files, organized by extension • Out of date
Directory Structure -- continued • jni • JNI C source files, organized by extension • jvm • ocap_vmlib • RI Stack/VM integration library Java and JNI source code • phoneME • All source and build files related to the phoneME Advanced VM • Your VM Here
Directory Structure -- continued • mpe • mgr • Function table management • Platform-independent C source • include • MPE API headers • os • Include • MPEOS API headers • Your MPEOS port here • Test • MPE unit tests • Base on CUnit framework • Out of date
Directory Structure -- continued • target • Target-specific build files • thirdparty • Open source (non-GPL) libs used by the stack with extensive modifications • DirectFB, FreeType, Zlib • tools • Unmodified open source (non-GPL) libs used by the stack • JUnit, NanoXML, cybergarage uPnP, Log4J, etc.. • cybergarage is heavily modified and probably should move to “thirdparty”
Java Packages • org.dvb, org.havi, org.davic, org.ocap • Specification defined packages • javax.tv • JavaTV • org.cablelabs.debug • Logging and profiling • org.cablelabs.impl • Java implementation packages
Build Tools • Make • Compiles JNI, MPE, MPEOS, and thirdparty native libraries • Ant • Coordinates the entire build system • Wiki contains a list of top-level build targets • JDK (1.4 or higher) • Used to compile stack and test application sources
Build System – Environment Variables • Easy to work in several different RI code bases at the same time. • OCAPROOT • The absolute path to the ri/RI_Stack directory. • Required for compilation/execution • OCAPHOST • Defines the host build environment • Build system reads host environment configuration files from ($OCAPROOT/hostconfig/$OCAPHOST) • Required for compilation only
Build System – Environment Variables • OCAPTC • The Target Configuration for the build. Basically the port you are working on. • Defines a subdirectory hierarchy where: • build configuration files are found ($OCAPROOT/target/$OCAPTC) • binary intermediate products are built $(OCAPROOT/gen/$OCAPTC) • final binary products are installed and runtime configuration files are kept ($OCAPROOT/bin/$OCAPTC) • Suggested format is: • <org>/<platform>/<os>/[debug|release] • CableLabs/simulator/Linux/debug • Required for compilation/execution
Stack Configuration – Native • mpeenv.ini • Configuration parameters for SI, ObjectCarousel, JVM, and more… • For the RI Platform, mpeenv.ini is located in $OCAPROOT/bin/$OCAPTC/env • For a specific port, it can be located anywhere • Stack boot module must pass the location of this file to one of the MPE managers
Stack Configuration – Java • Java properties files, per extension • Located in $OCAPROOT/java/src/<module>/<module>.properties • Do not modify these files • Modules are organized into a precedence hierarchy defined in $OCAPROOT/java/src/base/org/cablelabs/impl/manager/props.properties • Do not modify this file • Stack can choose to use a single property value based on highest module preference or aggregate the property values for all included modules • Helps with separable extension builds • “final.properties” is the final user-level override file for Java configuration properties. • Must be found in the root of a classpath entry. • Place your user-specific overrides in this file to modify stack behavior. • For PC Platform, located in $OCAPROOT/bin/$OCAPTC/env