-
Notifications
You must be signed in to change notification settings - Fork 121
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 0255 - Enhance BodyInformation vehicle data #847
Comments
1. I don't think 2. The original struct uses Driver|Passenger for front modules while using location for rear ones. The author's addition use only the locations. This seems like it will be a strong point of confusion for developers. Will Driver|Passenger by dynamic per vehicle to correlated with their actual respective locations for that version of car or just static of left or right as defined in the spec? 3. The author uses the terminology of (Right\Left)(Front|Rear) when describing door locations. I do not agree with this approach since we have created the grid system for identifying module positions in the car. The solution added here will only be applicable to 1-4 door vehicles. I'm not sure if we want to mix the functionality from RC into Vehicle data though and will welcome more conversation on the topic. 4. Speaking more to point 2, would it ever be useable to allow these modules to be controlled via RC? locking/unlocking doors seems standard, even opening the doors is possible on some vehicle makes. 5. More clarification is necessary for a few of the params. Is a hatchback hatch considered a trunk? Is the truck bed tailgate considered the trunk? |
|
I think that ideally we would go with grids again here, but that would be a lot of work / change. I don't have a recommendation here, but I think that using driver / passenger without a way to specify their locations is a significant deficiency. I also believe that the current setup is unsustainable. We need a more extensible API for doors / front / rear liftgates. |
In general i agree that grids implementation would make this tricky. But take a look at proposal for SeatOccupancy which is NOT in review yet but would definitely have similar discussions. I believe it makes sense to discuss both of these together and collectively decide on grid implementation for Vehicle Data. |
As the 2019-10-22 Steering Committee meeting did not reach a quorum, a vote could not take place on this proposal. The proposal will remain in review until the next meeting on 2019-10-29. |
There was discussion about keeping the proposal for SeatOccupancy in mind when reviewing this proposal, with regards to implementing a grid system for doors. The Project Maintainer agreed that whichever approach (grid or otherwise) is determined best for Enhance BodyInformation should be applied to SeatOccupancy and other vehicle data proposals as well. The Steering Committee voted to keep this proposal in review to allow members and the Project Maintainer additional time to discuss. |
If we wanted to implement this proposal as a grid, here is an initial suggestion for what the mobile api could look like.
I am unsure if DoorType is necessary, but I thought it would help make the door struct more descriptive. I am open to suggestions for this type of implementation. |
I was writing this as well, here is what i came up with: Below are the potential changes for grid implementation for New Struct <struct name="gridItemStatus">
<description>Describes the Status of a parameter of grid item.</description>
<param name="itemLocation" type="Grid" mandatory="true">
<param name="conditionActive" type="Boolean" mandatory="true">
</param>
</struct> Then <struct name="BodyInformation" since="2.0">
<param name="parkBrakeActive" type="Boolean" mandatory="true">
<description>References signal "PrkBrkActv_B_Actl".</description>
</param>
<param name="ignitionStableStatus" type="IgnitionStableStatus" mandatory="true">
<description>References signal "Ignition_Switch_Stable". See IgnitionStableStatus.</description>
</param>
<param name="ignitionStatus" type="IgnitionStatus" mandatory="true">
<description>References signal "Ignition_status". See IgnitionStatus.</description>
</param>
<param name="driverDoorAjar" type="Boolean" mandatory="false" deprecated="true" since="X.x">
<description>References signal "DrStatDrv_B_Actl".</description>
</param>
<param name="passengerDoorAjar" type="Boolean" mandatory="false" deprecated="true" since="X.x">
<description>References signal "DrStatPsngr_B_Actl".</description>
</param>
<param name="rearLeftDoorAjar" type="Boolean" mandatory="false" deprecated="true" since="X.x">
<description>References signal "DrStatRl_B_Actl".</description>
</param>
<param name="rearRightDoorAjar" type="Boolean" mandatory="false" deprecated="true" since="X.x">
<description>References signal "DrStatRr_B_Actl".</description>
</param>
+ <param name="doorAjar" type="gridItemStatus" array="true" minsize=0 maxsize=100 mandatory="false" since="X.x">
+ <description>Provides status for doors if Ajar or not. true if locked</description>
+ </param>
+ <param name="trunkAjar" type="Boolean" mandatory="false" since="X.x">
+ <description>true if vehicle trunk is ajar, else false</description>
+ </param>
+ <param name="hoodAjar" type="Boolean" mandatory="false" since="X.x">
+ <description>true if vehicle hood is ajar, else false</description>
+ </param>
+ <param name="doorLocked" type="gridItemStatus" array="true" minsize=0 maxsize=100 mandatory="false" since="X.x">
+ <description>Provides status for doors if Locked or not. true if locked</description>
+ </param>
+ <param name="trunkLocked" type="Boolean" mandatory="false" since="X.x">
+ <description>true if trunk is locked, else false</description>
+ </param>
</struct> |
@JackLivio -
I do like that you have consolidated Door Lock/Ajar status in to one and it does make sense as if Door is Ajar then it can't be locked. But if i incorporate that then i can't reuse New Struct <struct name="DoorsStatus">
<description>Describes the Status of a parameter of grid item.</description>
<param name="itemLocation" type="Grid" mandatory="true">
<param name="doorStatus" type="DoorStatus" mandatory="true">
</param>
</struct> New enum <enum name="DoorStatus" since="x.x">
<element name="CLOSED"/>
<element name="LOCKED"/>
<element name="AJAR"/>
</enum> Then <struct name="BodyInformation" since="2.0">
<param name="parkBrakeActive" type="Boolean" mandatory="true">
<description>References signal "PrkBrkActv_B_Actl".</description>
</param>
<param name="ignitionStableStatus" type="IgnitionStableStatus" mandatory="true">
<description>References signal "Ignition_Switch_Stable". See IgnitionStableStatus.</description>
</param>
<param name="ignitionStatus" type="IgnitionStatus" mandatory="true">
<description>References signal "Ignition_status". See IgnitionStatus.</description>
</param>
<param name="driverDoorAjar" type="Boolean" mandatory="false" deprecated="true" since="X.x">
<description>References signal "DrStatDrv_B_Actl".</description>
</param>
<param name="passengerDoorAjar" type="Boolean" mandatory="false" deprecated="true" since="X.x">
<description>References signal "DrStatPsngr_B_Actl".</description>
</param>
<param name="rearLeftDoorAjar" type="Boolean" mandatory="false" deprecated="true" since="X.x">
<description>References signal "DrStatRl_B_Actl".</description>
</param>
<param name="rearRightDoorAjar" type="Boolean" mandatory="false" deprecated="true" since="X.x">
<description>References signal "DrStatRr_B_Actl".</description>
</param>
+ <param name="doorsStatus" type="doorsStatus" array="true" minsize=0 maxsize=100 mandatory="false" since="X.x">
+ <description>Provides status for doors if Ajar or not. true if locked</description>
+ </param>
+ <param name="trunkAjar" type="Boolean" mandatory="false" since="X.x">
+ <description>true if vehicle trunk is ajar, else false</description>
+ </param>
+ <param name="hoodAjar" type="Boolean" mandatory="false" since="X.x">
+ <description>true if vehicle hood is ajar, else false</description>
+ </param>
+ <param name="trunkLocked" type="Boolean" mandatory="false" since="X.x">
+ <description>true if trunk is locked, else false</description>
+ </param>
</struct> |
I think the last proposal is the closest, but I still don't like the |
@joeljfischer For app's perspective, It does not matter if it is a hood or a trunk, Though at some places semantics do matter but most of People still call EV's front trunk a hood. And there are some new body types which have a side trunk as well(Rivian). We can consolidate these however to a single param as: New Struct <struct name="DoorsStatus">
<description>Describes the Status of a parameter of door.</description>
<param name="doorLocation" type="Grid" mandatory="true"/>
<param name="doorStatus" type="DoorStatus" mandatory="true"/>
</struct> New enum <enum name="DoorStatus" since="x.x">
<element name="CLOSED"/>
<element name="LOCKED"/>
<element name="AJAR"/>
</enum> New Struct <struct name="GatesStatus">
<description>Describes the Status of a parameter of trunk/hood/etc.</description>
<param name="gateType" type="GateType" mandatory="true"/>
<param name="gateStatus" type="DoorStatus" mandatory="true"/>
</struct> New enum <enum name="GateType" since="x.x">
<element name="FRONT"/>
<element name="BACK"/>
<element name="RIGHT"/>
<element name="LEFT"/>
</enum> Then <struct name="BodyInformation" since="2.0">
<param name="parkBrakeActive" type="Boolean" mandatory="true">
<description>References signal "PrkBrkActv_B_Actl".</description>
</param>
<param name="ignitionStableStatus" type="IgnitionStableStatus" mandatory="true">
<description>References signal "Ignition_Switch_Stable". See IgnitionStableStatus.</description>
</param>
<param name="ignitionStatus" type="IgnitionStatus" mandatory="true">
<description>References signal "Ignition_status". See IgnitionStatus.</description>
</param>
<param name="driverDoorAjar" type="Boolean" mandatory="false" deprecated="true" since="X.x">
<description>References signal "DrStatDrv_B_Actl".</description>
</param>
<param name="passengerDoorAjar" type="Boolean" mandatory="false" deprecated="true" since="X.x">
<description>References signal "DrStatPsngr_B_Actl".</description>
</param>
<param name="rearLeftDoorAjar" type="Boolean" mandatory="false" deprecated="true" since="X.x">
<description>References signal "DrStatRl_B_Actl".</description>
</param>
<param name="rearRightDoorAjar" type="Boolean" mandatory="false" deprecated="true" since="X.x">
<description>References signal "DrStatRr_B_Actl".</description>
</param>
+ <param name="doorsStatus" type="doorsStatus" array="true" minsize=0 maxsize=100 mandatory="false" since="X.x">
+ <description>Provides status for doors if Ajar/Closed/Locked</description>
+ </param>
+ <param name="gatesStatus" type="GatesStatus" array="true" minsize=0 maxsize=100 mandatory="false" since="X.x">
+ <description>Provides status for trunk/hood/etc if Ajar/Closed/Locked</description>
+ </param>
</struct> |
That's better. The only scaling niggle that I could have with it is |
My suggestion would be to rename structs "DoorsStatus" to"Door" or "Doors", and "GatesStatus" to "Gate" or "Gates". Having two structs named so closely such as DoorStatus and DoorsStatus is not great for readability in my opinion. |
I felt the same, so my suggestion:
Just saying |
Would DoorsStatus be renamed DoorStatus? The struct should represent a single instance of an item. On the param definition line where the struct is listed as an array, the param name could be called doorsStatus.
|
The Steering Committee voted to return this proposal for revisions. The revisions will include implementing the proposal as a grid, and rename |
The author has made Steering Committee-requested changes, and the revised proposal will now be under review until our next meeting on 2019-11-19. |
I have a few notes on the updated proposal: 1. I don't believe that the parameter names on the 2. It's odd that 3. |
Even though unlikely, if we still want to consider that some vehicle might have multiple side storages(say a bus), i'd recommend to extend the enum with such possibilities. If we still want to use grid for this, that'd be something like: <struct name="GateStatus" since="X.x">
<description>Describes the status of a parameter of trunk/hood/etc.</description>
<param name="gateType" type="Common.GateType" mandatory="true"/>
<param name="gateLocation" type="Common.Grid" mandatory="true"/>
<param name="status" type="Common.DoorStatusType" mandatory="true"/>
</struct>
|
The Steering Committee voted to accept this proposal with the revisions suggested in this comment from the Project Maintainer. It was also noted that a future proposal could be submitted to add a Vehicle Data Manager to assist developers with retrieving vehicle data. |
@atiwari9 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! |
Revisions made on 2019-11-22 and implementation issues entered: |
JavaScript Suite Issue: smartdevicelink/sdl_javascript_suite#338 |
Hello SDL community,
The review of "SDL 0255 - Enhance BodyInformation vehicle data" begins now and runs through October 22, 2019. The proposal is available here:
https://github.com/smartdevicelink/sdl_evolution/blob/master/proposals/0255-Enhance-BodyInformation-vehicle-data.md
Reviews are an important part of the SDL evolution process. All reviews should be sent to the associated Github issue at:
#847
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: