Technical Use Cases

 In
Wikis > Technical Use Cases

Overview

This page captures a number of key technical use cases, and shows how the various platform services and client application components interact to realise these.

Launch Experience

# https://www.websequencediagrams.com/
Title Launch and Start Experience (Intrahome TV + Comp)
# v0p01 19-May-2016 jawalke2(Replace this parenthesis with the @ sign)cisco.com
participant Origin/CDN as CDN
participant Timeline
participant Layout
participant TV Client as TV
participant Companion as comp
note over TV: HbbTV app is running
note over TV: Service endpoints discovered via service registry
TV->+Layout: CreateContext (deviceId, caps)
Layout-->-TV: contextId
note over comp: CSA is running
note over comp: Service endpoints discovered via service registry
note over comp,TV: DIAL Device discovery, app2app enabled...
comp->+TV: getContext()
TV-->-comp: contextId
comp->Layout: JoinContext(contextId, deviceId, caps)
TV->+Layout: LoadDMApp (contextId, DMAppSpec)
Layout->Layout: loadLayoutReqs(url)
Layout->Timeline: createTimeline (contextId)
Layout->+Timeline: loadDMAppTimeline(contextId, DMAppSpec)
Timeline->-Timeline: loadTimelineDoc(url)
Timeline-->Layout: dmappId
Layout-->TV: dmappId
Layout-->-comp: dmappId
note over Layout,TV: Client initiates websocket connection...
note over Layout,comp: Client initiates websocket connection...
note left of CDN
    Assume DMApp has media dmapc(s) defined for t=0 (e.g. video players)
end note
loop foreach dmapc
    Timeline-->+Layout: initComponent(contextId, dmappId, componentId, initParams)
end
Layout->Layout: evaluateLayout()
Layout->+comp: layoutUpdate(dmapcLayoutList)
Layout->+TV: layoutUpdate(dmapcLayoutList)
TV<->CDN: Fetch dmapc(s) + media objects
TV->TV: Instantiate Video Player dmapc
TV->TV: createMediaSynchroniser()
TV->TV: initMediaSynchroniser(dmap mediaObject, timelineSelector)
TV->TV: enableInterDeviceSync(callback)
TV->-Layout: dmapcStatus(contextId, dmappId, componentId, status)
Layout->Timeline: dmapcStatus(contextId, dmappId, componentId, status)
comp<->CDN: Fetch dmapc(s) + media objects
comp->comp: Instantiate Media Player dmapc
comp->comp: initSyncServiceClient(css_cii_url, dmapc mediaObjectList, correlations...)
comp->comp: enableSynchronisation(callbacks...)
comp->-Layout: dmapcStatus(contextId, dmappId, componentId, status)
Layout->-Timeline: dmapcStatus(contextId, dmappId, componentId, status)
note left of CDN
    dmapc(s) report status back to Layout/Timeline 
    (critical / non-critcal error management) 
end note
note over Timeline: when all dmapc ready, play from t=0
loop foreach dmapc
    Timeline-->+Layout: startComponent(contextId, dmappId, componentId, presTime)
end
Layout->comp: layoutUpdate(dmapcLayoutList)
Layout->-TV: layoutUpdate(dmapcLayoutList)
# https://www.websequencediagrams.com/
Title Launch and Start Experience (Intrahome TV only)
# v0p01 28-June-2016 jawalke2(Replace this parenthesis with the @ sign)cisco.com
participant Origin/CDN as CDN
participant Timeline
participant Layout
participant TV Client as TV
note over TV: HbbTV app is running
note over TV: Service endpoints discovered via service registry
TV->+Layout: CreateContext (deviceId, caps)
Layout-->-TV: contextId
TV->+Layout: LoadDMApp (contextId, DMAppSpec)
Layout->Layout: loadLayoutReqs(url)
Layout->Timeline: createTimeline (contextId)
Layout->+Timeline: loadDMAppTimeline(contextId, DMAppSpec)
Timeline->-Timeline: loadTimelineDoc(url)
Timeline-->Layout: dmappId
Layout-->-TV: dmappId
note over Layout,TV: Client initiates websocket connection...
note left of CDN
    Assume DMApp has media dmapc(s) defined for t=0 (e.g. video players)
end note
loop foreach dmapc
    Timeline-->+Layout: initComponent(contextId, dmappId, componentId, initParams)
end
Layout->Layout: evaluateLayout()
Layout->+TV: layoutUpdate(dmapcLayoutList)
TV<->CDN: Fetch dmapc(s) + media objects
TV->TV: Instantiate Video Player dmapc
TV->TV: createMediaSynchroniser()
TV->TV: initMediaSynchroniser(dmap mediaObject, timelineSelector)
TV->TV: enableInterDeviceSync(callback)
TV->-Layout: dmapcStatus(contextId, dmappId, componentId, status)
Layout->-Timeline: dmapcStatus(contextId, dmappId, componentId, status)
note left of CDN
    dmapc(s) report status back to Layout/Timeline 
    (critical / non-critcal error management) 
end note
note over Timeline: when all dmapc ready, play from t=0
loop foreach dmapc
    Timeline-->+Layout: startComponent(contextId, dmappId, componentId, presTime)
end
Layout->-TV: layoutUpdate(dmapcLayoutList)

Add Companion Device

# https://www.websequencediagrams.com/
Title Add Companion Device (Intrahome TV only)
# v0p01 19-May-2016 jawalke2(Replace this parenthesis with the @ sign)cisco.com
participant Origin/CDN as CDN
participant Timeline
participant Layout
participant TV Client as TV
participant Companion as comp
note over TV,comp: HbbTV app and CSA are running
note over TV,comp: Service endpoints discovered via service registry
note over comp,TV: DIAL Device discovery, app2app enabled...
note over Timeline,comp: DMApp is running (see 'Launch and Start Experience (Intrahome TV only)')
comp->+TV: getContext()
TV-->-comp: contextId
comp->Layout: JoinContext(contextId, deviceId, caps)
Layout->Layout: evaluateLayout()
note over Layout: some dmapc's migrate to CSA...

Layout->+TV: layoutUpdate(dmapcLayoutList)
TV->Layout: saveDmapcState(contextId, dmappId, componentId)
note over Layout,TV: Tear down timeline sync...
TV->TV: remove Dmapc
TV->-Layout: dmapcStatus(contextId, dmappId, componentId, status)
Layout->Timeline: dmapcStatus(contextId, dmappId, componentId, status)

Layout->+comp: layoutUpdate(dmapcLayoutList)
comp<->CDN: Fetch dmapc(s) + media objects
comp->comp: Instantiate dmapc
comp->Layout: restoreDmapcState(contextId, dmappId, componentId)
Layout->comp: dmapcState
note over Layout,comp: Re-establish timeline sync...
comp->-Layout: dmapcStatus(contextId, dmappId, componentId, status)
Layout->-Timeline: dmapcStatus(contextId, dmappId, componentId, status)

User Initiates Layout Change

# https://www.websequencediagrams.com/
Title User Initiates Layout Change (Intrahome TV + Comp)
# v0p01 29-June-2016 jawalke2(Replace this parenthesis with the @ sign)cisco.com
participant Origin/CDN as CDN
participant Timeline
participant Layout
participant TV Client as TV
participant Companion as comp
note over TV,comp: HbbTV app and CSA are running
note over TV,comp: Service endpoints discovered via service registry
note over Timeline,comp: DMApp is running (see 'Launch and Start Experience')

note over Layout,comp: Move component from TV to companion...
comp-->+Layout: moveComponent(contextId, dmappId, componentId, targetDeviceId)
Layout->Layout: evaluateLayout()

Layout->+TV: layoutUpdate(dmapcLayoutList)
TV->Layout: saveDmapcState(contextId, dmappId, componentId)
note over Layout,TV: Tear down timeline sync...
TV->TV: remove Dmapc
TV->-Layout: dmapcStatus(contextId, dmappId, componentId, status)
Layout->Timeline: dmapcStatus(contextId, dmappId, componentId, status)

Layout->+comp: layoutUpdate(dmapcLayoutList)
comp<->CDN: Fetch dmapc(s) + media objects
comp->comp: Instantiate dmapc
comp->Layout: restoreDmapcState(contextId, dmappId, componentId)
Layout->comp: dmapcState
note over Layout,comp: Re-establish timeline sync...
comp->-Layout: dmapcStatus(contextId, dmappId, componentId, status)
Layout->-Timeline: dmapcStatus(contextId, dmappId, componentId, status)

Timeline Event

# https://www.websequencediagrams.com/
Title Timeline Events (Intrahome TV + Comp)
# v0p01 19-May-2016 jawalke2(Replace this parenthesis with the @ sign)cisco.com
participant Origin/CDN as CDN
participant Timeline
participant Layout
participant TV Client as TV
participant Companion as comp
note over TV,comp: HbbTV app and CSA are running
note over TV,comp: Service endpoints discovered via service registry
note over Timeline,comp: DMApp is running (see 'Launch and Start Experience')
loop foreach timeline event
    note left of CDN
        Event adds additional media dmapc(s)...
    end note
    Timeline-->+Layout: initComponent(contextId, dmappId, componentId, initParams)
    Layout->Layout: evaluateLayout()
    Layout->+comp: layoutUpdate(dmapcLayoutList)
    Layout->+TV: layoutUpdate(dmapcLayoutList)
    TV<->CDN: Fetch dmapc(s) + media objects
    TV->TV: Instantiate Media Player dmapc
    TV->TV: addMediaObject(new dmapc mediaObject, timelineSelector, correlerationTimestamp)
    TV->-Layout: dmapcStatus(contextId, dmappId, componentId, status)
    Layout->Timeline: dmapcStatus(contextId, dmappId, componentId, status)
    Timeline-->Layout: startComponent(contextId, dmappId, componentId, presTime)
    Layout->TV: layoutUpdate(dmapcLayoutList)
    
    comp<->CDN: Fetch dmapc(s) + media objects
    comp->comp: Instantiate Media Player dmapc
    comp->comp: addMediaObject(new dmapc mediaObject, timelineSelector, correlerationTimestamp)
    comp->-Layout: dmapcStatus(contextId, dmappId, componentId, status)
    Layout->-Timeline: dmapcStatus(contextId, dmappId, componentId, status)
    Timeline-->Layout: startComponent(componentId, presTime)
    Layout->comp: layoutUpdate(dmapcLayoutList)
end

Tear Down Experience

# https://www.websequencediagrams.com/
Title Tear Down Experience (Intrahome TV + Comp)
# v0p01 19-May-2016 jawalke2(Replace this parenthesis with the @ sign)cisco.com
participant Origin/CDN as CDN
participant Timeline
participant Layout
participant TV Client as TV
participant Companion as comp
note over TV,comp: HbbTV app and CSA are running
note over TV,comp: Service endpoints discovered via service registry
note over Timeline,comp: DMApp is running (see 'Launch and Start Experience')
note left of CDN
    optionally stop
end note
TV->Timeline: play(DMAppId, 0)

note left of CDN
    Tear down...
end note
TV->Layout: UnloadDMApp(dmappId, contextId)
Layout->+Timeline: UnloadDMAppTimeline(dmappId, contextId)
loop foreach dmapc
    Timeline-->+Layout: stopComponent(contextId, dmappId, componentId, presTime)
end
Layout->Layout: evaluateLayout()
Layout->+comp: layoutUpdate(empty)
Layout->+TV: layoutUpdate(empty)
loop foreach removed dmapc
    TV->TV: removeMediaObject(dmapc mediaObject)
    TV->Layout: dmapcStatus(contextId, dmappId, componentId, status)
    Layout->Timeline: dmapcStatus(contextId, dmappId, componentId, status)
end
TV->-TV: disableInterDeviceSync(callback)
loop foreach removed dmapc
    comp->comp: removeMediaObject(dmapc mediaObject)
    comp->Layout: dmapcStatus(contextId, dmappId, componentId, status)
    Layout->Timeline: dmapcStatus(contextId, dmappId, componentId, status)
end
comp->-comp: disableSynchronisation(callbacks)
TV->Layout: DestroyContext(contextId)
Layout->Timeline: DestroyTimeline(contextId)
Recent Posts
Contact Us

We're not around right now. But you can send us an email and we'll get back to you, asap.

Not readable? Change text. captcha txt

Start typing and press Enter to search