Hello SDL community,
The review of "CloseApplication RPC" begins now and runs through November 28, 2017. The proposal is available here:
https://github.com/smartdevicelink/sdl_evolution/blob/master/proposals/0115-close-application.md
Reviews are an important part of the SDL evolution process. All reviews should be sent to the associated Github issue at:
https://github.com/smartdevicelink/sdl_evolution/issues/351
What goes into a review?
The goal of the review process is to improve the proposal under review through constructive criticism and, eventually, determine the direction of SDL. When writing your review, here are some questions you might want to answer in your review:
More information about the SDL evolution process is available at
https://github.com/smartdevicelink/sdl_evolution/blob/master/process.md
Thank you,
Theresa Lech
Program Manager - Livio
[email protected]
I have a few questions about the purpose of this proposed RPC. The motivation states:
In order to close an app the driver can enter the apps menu on the head unit and select "Exit {AppName}". This is working without any issues for template based apps. Users are able to get back control of an app which was started before. Projection apps like mobile-navigation apps are going to add their own menu which follows their own design guideline instead of using AddCommand. This leads into a problem of how those apps are closed. Once started on the head unit user won't be able to get back control of the app as Core is auto-resuming apps.
This seems perhaps to conflict in usefulness with a second in-progress proposal: In-Progress RPC. If the app can just open the menu, then they wouldn't need their own menu, and they wouldn't need the ability to close their app.
Second, is this something that will be enforced that apps must add to their menu? If not, I can't see very many apps actually adding a button that exits their app. I think it could be enforced, but I think the other way of solving this problem (enforcing that apps have a button to show the menu as seen in the other proposal) is a better way to solve the problem.
I think this proposal is is similar to SDL 0116 - Open Menu RPC and that both cases could be solved by the use of a single RPC instead of each case having their own.
We could maybe create an RPC called SetHMIStatus and use enums already defined in Core
<function name="SetHMIStatus" functionID="OnHMIStatusID" messagetype="request">
<param name="hmiLevel" type="HMILevel" mandatory="false">
<description>Enumeration that describes current levels of HMI</description>
</param>
<param name="systemContext" type="SystemContext" mandatory="false">
<description>Enumeration that describes possible contexts an app's HMI might be in. Communicated to whichever app is in HMI FULL, except Alert.</description>
</param>
</function>
To Close app
Proxy -> Core
SetHMIStatus : {
appID : 1234,
hmiLevel: NONE,
systemContext : MAIN
}
To Show app menu
Proxy -> Core
SetHMIStatus : {
appID : 1234,
hmiLevel: FULL,
systemContext : MENU
}
I like @JackLivio's suggestion quite a bit.
Many of the hmiLevel and systemContext values don't make sense as settable values by a connected app; providing this much flexibility when only a couple of permutations are actually valid seems like it could be confusing.
Although I like the idea of using already defined API I agree to @NickFromAmazon. It might be confusing and cause more effort in checks for invalid values. At the end it looks much more complex to be implemented.
Changing the HMI level is a sensitive task. Apps might want to be abel to move to HMI_FULL with this API. We at Ford talked about it and agreed to only accept the move to HMI_NONE. Those apps who want to get into HMI_FULL should use Alert with STEAL_FOCUS soft button.
Second, is this something that will be enforced that apps must add to their menu? If not, I can't see very many apps actually adding a button that exits their app. I think it could be enforced, but I think the other way of solving this problem (enforcing that apps have a button to show the menu as seen in the other proposal) is a better way to solve the problem.
CloseApplication should be part of the certification process for nav apps who don't want to use the built-in menu.
Generally this proposal does not conflict with OpenMenu RPC. Both proposals could coexist and solve problems with apps who want to use the built-in menu and those who don't (we have both kinds of apps).
CloseApplication is for nav apps who don't want to use the built-in menuOpenMenu is supposed to be used for nav apps using AddCommandThe Steering Committee voted to accept this proposal.
Most helpful comment
Although I like the idea of using already defined API I agree to @NickFromAmazon. It might be confusing and cause more effort in checks for invalid values. At the end it looks much more complex to be implemented.
Changing the HMI level is a sensitive task. Apps might want to be abel to move to
HMI_FULLwith this API. We at Ford talked about it and agreed to only accept the move toHMI_NONE. Those apps who want to get into HMI_FULL should useAlertwithSTEAL_FOCUSsoft button.CloseApplicationshould be part of the certification process for nav apps who don't want to use the built-in menu.Generally this proposal does not conflict with OpenMenu RPC. Both proposals could coexist and solve problems with apps who want to use the built-in menu and those who don't (we have both kinds of apps).
CloseApplicationis for nav apps who don't want to use the built-in menuOpenMenuis supposed to be used for nav apps usingAddCommand