-
Notifications
You must be signed in to change notification settings - Fork 122
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Accepted with Revisions] SDL 0250 - Next RPC Indication for the HMI #827
Comments
@MichaelCrimando Are you familiar with this accepted but not yet implemented proposal: The additional submenus proposal allows for deeper submenus so the developer doesn't have to simulate menu depth by using multiple perform interactions. Also there is a proposal that is implemented in SDLCore 6.0.0 that allows for in app menu tiles views. I believe the pictured flow in the proposal could be accomplished using additional submenu depth and menu tiles without the need for the HMI anticipating future RPCs. Also the performance of using submenus over perform interactions would be much better and not require any loading screen. |
Hey @JackLivio That is a great proposal and very similar but executed in a different way. That is great for apps that want to PRE load all their choice sets. The proposal that I've created is great for apps that want to POST load all their choice sets. Plus the proposal here also applies to things like softbuttons given from a |
So reading the proposal the only use case that is really given is for a "Loading" screen to be displayed while waiting to receive an RPC of a certain function ID. First to Jack's point, submenus do not have to be PRE loaded. They can be added at any time and I would expect that some of them are added POST load because of the new proposal. PRE loading all those choices will take forever if VR synonyms are attached, so it is likely that the sub menus are added as a skeleton and apps add to the menus as they are selected which mimics the chaining of choice set functionality. The choice set chaning that happens was an apps way to get around a lot of initial driver distraction requirements and the flow itself is very clunky. Obviously this doesn't address the soft buttons or Regarding the solution itself, I think it still needs some work. The next function ID check works in best case scenarios, but what if multiple Shows are sent. For example, the manager layer will check if an image will need to be uploaded to Core before a Show is sent with that image name. If it does, it sends a Show without the image field to start, then once the file is uploaded, sends another show. Is it acceptable for the loading screen or wait dialog to be dismissed on the first show? Has the author through about other information that could be included for a more precise check? For example, message ID, correlation ID, etc? For alternatives, what about being more accurate with the use case given of showing a loading screen? Possibly a new RPC that triggers a loading screen, and then uses the dismiss ability recently introduced. I really want to make sure we understand the use case to craft the right solution. Because another alternative could be to include the full RPC to process in sort of a Furthermore, has the author looked into the implications this will have on the manager layer for the mobile libraries? Changes should be included in this proposal so it can be agreed upon if the proposal is accepted. |
In addition to what joey said, there are multiple places in the managers (file, soft button, text and graphic, menu, and especially choice set) that have asynchronous calls and that will pre-load menus for example without images, then automatically resend when the images are uploaded. Just something to keep in mind that RPCs may be sent asynchronously and automatically without the developer ever knowing. |
Hey @joeygrover, Those are some great points. Going along with that, if you post load everything, you dont get the indicators (usually arrows) that something is next. Now if I understand what @BrettyWhite is saying, that could maybe be handled by Core where it knows something is coming next show it shows the indicator but doesn't bother to load anything yet. Plus this functionality enables specfic loading screens that can be popupluated as the items load in. If Core wanted to get fancy, it could potentially load in only the first 10 items really fast, and work on the next items in the background. This is similar to how iPhone apps load long lists while keeping performance great. Further, we have a need for the HMI to start pre-exposing things in the HMI before the user actually interacts with anything. If the HMI knows what comes next, and it's the type of RPC it's looking for, it can know what to expect and simulate the user pressing a certain button on the screen in order to get the required info from the app. Now a benefit that the additional Submenus proposal can provide is that it can improve performance in going back and forth in menu structures. However, apps would have to take the time to reorganize their menu structure from PerformInteraction style to Menu style. In addition, |
The motivation of this proposal is trying to address three issues that exist today:
I think the motivation of this proposal is that head units are slow especially with voice and that user interaction can only start once all the content is loaded. Knowing that the use case continues with a choice/menu conmand is very helpful to improve the experience. The proposal says that the HMI could show some loading indication. It's very helpful for the proposal understanding but I want to note that it'll be the SDL integrator responsibility on how the HMI should do this and that it should be out of scope. For instance when I tap on a choice which has a next RPC indication I could think of the HMI to make the choice change to show a "loading circle" as the choice image... again this is the decision of the HMI. @MichaelCrimando already mentioned background loading which I believe is where we should have some focus. As of right now apps don't know what menu level or what menu entries are visible (except the root level with The same could be done for PerformInteraction which would already start and show only choices and choice images that are visible. I believe this would require a larger API change. Regarding the parameter |
Currently this is not possible. There is no callback when a submenu is pressed; therefore, the entire menu structure has to be preloaded IIRC. This is a major deficiency of the current menu setup.
I don't think that either
This already exists within
This could be added to
This is not currently possible given the scheme of
This is unclear to me, could you elaborate? The diagram is unclear.
This is true. We should expand
I think you're missing the point here. The fact that submenus are locked out while driving doesn't mean that developers should circumvent that lock out by using
Agreed, I've had a task sitting in my backlog for a few months now to think about this. Your ideas here are pretty good. I think that this task (of making menus load more dynamically) is more worthwhile than this proposal in general. I think that the only functionality this proposal offers is two-fold: First, to "disable" some soft buttons when driver distraction says that those buttons' effects will be locked out. This is a decent improvement, but I'm not sure that it's worth the effort. Second, to show "better" loading screens, i.e. instead of an |
@joeljfischer just to elaborate on a couple of points Currently with Tidal, the in-app menu lists "My Mix, My Albums, My Playlists, My Tracks, and Explore" So what the HMI on a future headunit with a larger screen size could do with this proposal is look at the in-app menu and see that the first menu item will lead to a Just a side note I have: you could use a bool flag for this functionality, however the proposal give you that same information (is a RPC next?) and more (WHICH RPC is next?). Submenu is locked out completely on MY16-19 on SYNC vehicles which makes it pretty useless in the car vs PerformInteraction is page limited. I actually did the proper work to make sure that submenu is page limited like PerformInteraction is so apps can actually use it. |
A major point of discussion during the Steering Committee meeting with regards to this proposal was that it suggests using Ultimately, the Steering Committee voted to defer this proposal, and keep it in review until our next meeting. SDLC Members and the Project Maintainer can continue discussion on the review issue, focusing on the motivations for the proposal outside of menu replacement items. |
I believe I addressed all the main comments with PR #843 |
@MichaelCrimando thanks! As this proposal is currently [In Review], we'll need to let the Steering Committee continue to review until our meeting next week. If during the meeting, they agree to return for revisions, we will document what those revisions need to be, and can then bring your revised proposal (PR 843) in for review the following week once we've ensured those revisions are incorporated. |
@theresalech ah ok! |
The Steering Committee voted to return this proposal for revisions. The author will update the proposal to update the documentation and motivation specifying that add command/sub menu structure is the main structure for apps. |
The author has revised this proposal based on the Steering Committee's feedback, and the revised proposal is now in review until 2019-11-05. |
@MichaelCrimando I think the revision puts the use cases for the feature in a much better context. I have a comment regarding the HMI API implementation. The HMI does not have or use a record of mobile function IDs. When an HMI receives an RPC it receives it as "InterfaceName.RPCType" ie (BasicCommunication.UpdateAppList) I think nextFunctionID should be renamed to nextRPC and changed to type string in the HMI API. HMI_API.xml:
Core will be able to take an integer function ID and convert it into the correct HMI RPC String. |
Thanks for the info @JackLivio
|
The Steering Committee voted to return this proposal for revisions. The author will revise the proposal to include the manager-level implementation as discussed in the comments on this review issue with the Project Maintainer. |
The author has revised this proposal to incorporate the requested revisions from the Steering Committee. The revised proposal is now in review and will be voted upon during the 2020-01-14 meeting. |
Apologies if i missed this in the conversation but the enum type "FunctionID" does not exist in the HMI API. We could add FunctionID to the HMI to fix this issue but that needs to be mentioned in the proposal. Alternatively if we do not add that enum to the hmi api, |
If it is not those Functions that are assigned to the menu but screen transitions, how should NextFunction be set? |
@Shohei-Kawano I'm going to number your questions. 1. |
Hey @JackLivio |
@MichaelCrimando Since on the HMI side since there isnt really a concept of function IDs, I believe the alternate I suggested to be a better option (using strings). All rpcs communicated between core and HMI already use strings for the rpc message type. Here is an example rpc GetVehicleData Request, see method: |
@JackLivio
|
From today's call @JackLivio how about I add
|
I’m sorry that I couldn't respond at the Steering Committee due to my lack of English. @joeljfischer -san
|
@Shohei-Kawano -san I can answer for Joel:
|
The Steering Committee voted to accept this proposal with revisions. The author will revise the proposal to specify that the HMI API doesn't use function IDs so SDL Core would communicate the next function ID through the existing RPC interface strings in the format of |
@MichaelCrimando Please advise when a new PR has been entered to update the proposal to reflect the agreed upon revisions. I'll then merge the PR so the proposal is up to date, and enter issues in the respective repositories for implementation. Thanks! |
The author has updated this proposal to reflect the agreed upon revisions, and implementation issues have been entered: |
Hello SDL community,
The review of the revised proposal "SDL 0250 - Next RPC Indication for the HMI" begins now and runs through January 14, 2020. Previous reviews of the proposal took place October 2 - 15, 2019 and October 30 - November 19, 2019. The original review of this proposal took place October 2 - 15, 2019. The proposal is available here:
https://github.com/smartdevicelink/sdl_evolution/blob/master/proposals/0250-NextRpcIndication.md
Reviews are an important part of the SDL evolution process. All reviews should be sent to the associated Github issue at:
#827
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:
Please state explicitly whether you believe that the proposal should be accepted into SDL.
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
theresa@livio.io
The text was updated successfully, but these errors were encountered: