1 / 99

OCAP RI Training

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

mingan
Download Presentation

OCAP RI Training

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OCAP RI Training Nov 30 – Dec 2, 2010 Presenters: Dave Hooley & Greg Rutz Location: Cox Communications

  2. 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

  3. Project Overview and History

  4. 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)

  5. 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

  6. 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)

  7. 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)

  8. Why an RI? OCAP Specifications Stubs & DTDs Clarify Test Release Bundle OCAP Tests (CTP) OCAP Reference Implementation Test

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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)

  14. 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

  15. 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

  16. Project site walk through • Issue Tracker • Forums • Wikis • List of supported features • Contribution Process • Bug fix cutoffs • Release notes • Coding standards

  17. 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

  18. 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.

  19. opencable.dev.java.net Access to varying information on OpenCable, tru2Way, etc. Developer's Conferences, Interop Events, etc. are announced here...

  20. ocap-ri.dev.java.net Link to CableLabs Wiki

  21. Full Text Searching Links to 'Really Quick Start' and 'Quick Start' URLs for Subversion Repository Wiki Front Page

  22. Quick Start (Building the RI)

  23. Really Quick Start (Binary)

  24. 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

  25. PC Environment Requirements

  26. Architectural Overview

  27. Host Operating System

  28. Platform Support Libraries

  29. Platform Implementation

  30. Platform API

  31. 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.

  32. OCAP Porting API

  33. OCAP Native Library

  34. OCAP JVM

  35. OCAP Java Implementation

  36. OCAP API

  37. Directory Structure & Java Package Descriptions

  38. 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

  39. 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

  40. 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

  41. 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

  42. 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”

  43. 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

  44. Build System

  45. 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

  46. 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

  47. 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

  48. Stack and Platform Configuration

  49. 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

  50. 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

More Related