Skip to content
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

Feature/0238 Keyboard Enhancements #10

Open
wants to merge 22 commits into
base: develop
Choose a base branch
from

Conversation

KhrystynaDubovyk
Copy link

Update Structs, Enums;
OnKeyboardInput - update add Notification MUST and NOTE sections in index; add new diagram KeyboardEventInputKeyMask and its source file;
SetGlobalProperties - update index; add new diagram SetGlobalPropertiesCustomizeKeys and its source file

OnKeyboardInput - update add Notification MUST and NOTE sections in index; add new diagram KeyboardEventInputKeyMask and its source file;
SetGlobalProperties - update index; add new diagram SetGlobalPropertiesCustomizeKeys and its source file

4. HMI displays the in-application menu for every active application upon the User's request. It must contain SDL-requested commands (UI.AddCommand) and sub-menus (UI.AddSubMenu). SDL provides the values for the name (`menuTitle` parameter) and for the icon (`menuIcon` parameter) of this in-application menu. The values for in-application menu and touchscreen keyboard are allowed by SDL Core for navigation type of application only.
5. HMI must display the onscreen keyboard upon the User's request within the following condition: all `keyboardProperties` supported by HMI must be embodied in `HMI_capabilities.json file`. In this case SDL Core is able to compare `keyboardProperties` requested by the mobile device with actually supported `keyboardProperties` and send to HMI only those that are supported.
6. HMI must use default `keyboardProperties` parameters, in case SDL Core transfers UI.SetGlobalProperties request with omitted or empty `keyboardProperties` parameters.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@KhrystynaDubovyk
keyboardCapabilities includes in the windowCapabilities that includes in DisplayCapability that includes in systemCapability struct.

  1. SDL can receive systemCapability struct only via OnSystemCapabilityUpdated notification after the app registration.
  2. SDL wouldn't save this data to the cache file, because it specific capabilities for the app. (the same logic as for DisplayCapability)

So I think that points 5. and 6. should be removed.

@dboltovskyi @ychernysheva please advise should we add some specific info related to the customizable keys processing?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

May be just one notice:
In case if HMI does not provide number of customizable keys for some keyboard layout SDL will automatically populate zero for it.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

removed p.5,6 in 09c6fad

@LitvinenkoIra LitvinenkoIra requested review from ychernysheva and removed request for Ypostolov December 11, 2020 11:24
HMI-->SDL:UI.SetGlobalProperties (SUCCESS)
SDL-->App:SetGlobalProperties (SUCCESS)
note over HMI:<align:center>Keyboard layout\ncustomizable keys are:\n**" # "** - customized value\n** " $ "** - customized value
end

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This scenario updates already available character '#' (default one)

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated in 856c2dd

note over SDL:<align:center><customizeKeys> array\nhas more values than\ncustomizable keys allowed
SDL-->App:<align:center>SetGlobalProperties\n(INVALID_DATA: "CustomizeKeys exceeds the number of customizable keys in this Layout")
note over HMI:<align:center>Customizable keys' values\nare not changed
end

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would add an information how HMI lets SDL know about max number of customizable characters.
And that's why we need docs/BasicCommunication/OnSystemCapabilityUpdated/index.md file updated within this PR

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated in 3c734d7

7. HMI allows to customize special characters depending on the keyboard layout restrictions:
* `QWERTY` - 3 customizable keys
* `AZERTY` - 4 customizable keys
* `NUMERIC` - 2 customizable keys

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please notice there 4 layouts available, QWERTZ currently is missing

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and how many customizable buttons allowed for QWERTZ ? three?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added in 09c6fad

* display the complete list of available VR commands (SDL-defined and HMI-defined ones) when the User activates VR.

4. HMI displays the in-application menu for every active application upon the User's request. It must contain SDL-requested commands (UI.AddCommand) and sub-menus (UI.AddSubMenu). SDL provides the values for the name (`menuTitle` parameter) and for the icon (`menuIcon` parameter) of this in-application menu. The values for in-application menu and touchscreen keyboard are allowed by SDL Core for navigation type of application only.
5. HMI must display the onscreen keyboard upon the User's request within the following condition: all `keyboardProperties` supported by HMI must be embodied in `HMI_capabilities.json file`. In this case SDL Core is able to compare `keyboardProperties` requested by the mobile device with actually supported `keyboardProperties` and send to HMI only those that are supported.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please notice currently in hmi_capabilities.jsonthere is no information on KeyboardProperties

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

removed this in 09c6fad

* display the complete list of available VR commands (SDL-defined and HMI-defined ones) when the User activates VR.

4. HMI displays the in-application menu for every active application upon the User's request. It must contain SDL-requested commands (UI.AddCommand) and sub-menus (UI.AddSubMenu). SDL provides the values for the name (`menuTitle` parameter) and for the icon (`menuIcon` parameter) of this in-application menu. The values for in-application menu and touchscreen keyboard are allowed by SDL Core for navigation type of application only.
5. HMI must display the onscreen keyboard upon the User's request within the following condition: all `keyboardProperties` supported by HMI must be embodied in `HMI_capabilities.json file`. In this case SDL Core is able to compare `keyboardProperties` requested by the mobile device with actually supported `keyboardProperties` and send to HMI only those that are supported.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In this case SDL Core is able to compare keyboardProperties requested by the mobile device with actually supported keyboardProperties and send to HMI only those that are supported.

I'm not sure is this actually true.
Unfortunately there is no direct mapping between keyboard "capabilities" provided by HMI and keyboard "properties" that app try to set through SetGP.
That's why in current implementation of the proposal we decided to move responsibility to check parameters to HMI.
It means SDL does not "verify" new parameters maskInputCharacters and customizeKeys and pass them to HMI as is (except of the case for number of customizable keys).


4. HMI displays the in-application menu for every active application upon the User's request. It must contain SDL-requested commands (UI.AddCommand) and sub-menus (UI.AddSubMenu). SDL provides the values for the name (`menuTitle` parameter) and for the icon (`menuIcon` parameter) of this in-application menu. The values for in-application menu and touchscreen keyboard are allowed by SDL Core for navigation type of application only.
5. HMI must display the onscreen keyboard upon the User's request within the following condition: all `keyboardProperties` supported by HMI must be embodied in `HMI_capabilities.json file`. In this case SDL Core is able to compare `keyboardProperties` requested by the mobile device with actually supported `keyboardProperties` and send to HMI only those that are supported.
6. HMI must use default `keyboardProperties` parameters, in case SDL Core transfers UI.SetGlobalProperties request with omitted or empty `keyboardProperties` parameters.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

May be just one notice:
In case if HMI does not provide number of customizable keys for some keyboard layout SDL will automatically populate zero for it.


2. In case HMI sends `KeyboardCapabilities` without information about `numConfigurableKeys` within OnSystemCapabilityUpdated notification, SDL would provide `KeyboardCapabilities` to app with `numConfigurableKeys` set to zero.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe, I will be better to highlight, that numConfigurableKeys will be set to zero only for supported layouts (if they are provided in KeyboardCapabilities struct).

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And one more clarification: if KeyboardCapabilities struct doesn't have any information about supported layouts (supportedKeyboardLayouts param is omitted), corresponding requests will use configurableKeys param as is.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dboltovskyi, @ychernysheva
shall I change wording in p.2 like this

  1. In case HMI sends OnSystemCapabilityUpdated notification with KeyboardCapabilities, supportedKeyboardLayouts and without information about numConfigurableKeys , SDL would provide KeyboardCapabilities to app with numConfigurableKeys set to zero.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks Ok for me

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done in 6391778

@@ -18,11 +18,13 @@ Purpose
* `menuName` and `templateTitle` should be included, if they are visible on HMI.
* `mainField1-4`, `statusBar` and `mediaTrack` should not be included if OEM implemented the `WEB_VIEW` template without these text fields.
* `availabletemplates`, `buttonCapabilities` and `imageTypeSupported` should reflect the general capabilities of the window/system.
5. HMI sends `KeyboardCapabilities` and max number of customizable keys within OnSystemCapabilityUpdated notification to SDL.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would say HMI may send KeyboardCapabilities within OnSystemCapabilityUpdated notification which may include maskInputCharactersSupported, supportedKeyboardLayouts and configurableKeys parameters.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done in 66efcf6


2. In case HMI sends `KeyboardCapabilities` without information about `numConfigurableKeys` within OnSystemCapabilityUpdated notification, SDL would provide `KeyboardCapabilities` to app with `numConfigurableKeys` set to zero.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks Ok for me


SDL-->App: RegisterAppInterface (SUCCESS)

SDL->>HMI: BC.OnAppRegistered(appName; appID)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This notification is sent before UI.SetGlobalProperties request

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done in 66efcf6

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants