How to stop component being made as executable


#1

Hi,

I was looking at Legato sample apps to take reference for developing my application in Legato AF.

I noticed in karaoke sample app that this sample app is creating two executable named “player” and selector:

executables:
{
player = ( playerComponent )
selector = ( selectorComponent )
}

But my requirement is to make one executable file and rest other modules as components (non-executable) . Is this possible in Legato AF? I could not find any sample application in which an a component exist without an executable being created for it .

Same thing goes for processes. This app is creating two processes. Do I need to create one process for each component or can there be only one process?

How do I modify karaoke.adef to create only one process and one executable but still achieve the same functionality as this app is providing? Can two components talk to each other if one of them is not executable?

Original karaoke.adef file looks like following:
// Sample app that demonstrates the use of interactive apps through an application process’s
// standard streams.

executables:
{
player = ( playerComponent selectorComponent)
}

bindings:
{
player.selectorComponent.songs -> playerComponent.songs
}

processes:
{
run:
{
player = ( player )
}

faultAction: stopApp

}

start: manual

And I have changed it to following :

// Sample app that demonstrates the use of interactive apps through an application process’s
// standard streams.

executables:
{
player = ( playerComponent selectorComponent)
}

bindings:
{
player.selectorComponent.songs -> playerComponent.songs
}

processes:
{
run:
{
player = ( player )
}

faultAction: stopApp

}

start: manual

App is compiling without any issues but when I run this modified app on target, I am getting “Process Karaoke/player has one missing bindings” notification.

Output of “sdir list” on target :

sdir list

  BINDINGS
   .....
    karaoke.LogClient -> <root>.LogClient

WAITING CLIENTS

    [pid  6346] karaoke.player.selectorComponent.songs UNBOUND  (protocol ID = 'a49c5010defef5f81c9c8f65b86e1135')

How can I resolve this missing binding issue? I want to have only one executable “player” in this app.

Thanks,
Yogesh