How to stop component being made as executable

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

Hi @yogesh.tyagi,
Original karaoke.adef file and karaoke.adef file with your changes looks same, By mistake it has happened? Anyhow we are looking into it, We will let you know if we find the solution for your request.

Just for you information, Original karaoke.adef file contents are below.
executables:
{
player = ( playerComponent )
selector = ( selectorComponent )
}

processes:
{
run:
{
// Set the configured playback speed to be fast. Unless this is overwritten on the comamnd
// line this fast speed should always be used.
selector = ( selector fast )
}
}

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

faultAction: stopApp

}

bundles:
{
file:
{
[r] dannyBoy /
[r] jingleBells /
[r] deckTheHalls /
}
}

requires:
{
file:
{
// Used to demonstrate the ability to run other utilities from the command line within an
// app.
/bin/ls /bin/ls
/usr/bin/id /bin/id
}
}

bindings:
{
selector.selectorComponent.songs → player.playerComponent.songs
}

start: manual

Regards,
Muralidhara N.