Skip to content

Commit

Permalink
Merge pull request #354 from LuxoftSDL/feature/SDL-0255-Enhance-BodyI…
Browse files Browse the repository at this point in the history
…nformation-vehicle-data

[SDL-0255] Enhance BodyInformation vehicle data
  • Loading branch information
renonick87 authored Jan 26, 2021
2 parents 02c0410 + bea495e commit 0c79267
Show file tree
Hide file tree
Showing 11 changed files with 795 additions and 5 deletions.
116 changes: 116 additions & 0 deletions lib/js/src/rpc/enums/DoorStatusType.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
/* eslint-disable camelcase */
/*
* Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following
* disclaimer in the documentation and/or other materials provided with the
* distribution.
*
* Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/

import { Enum } from '../../util/Enum.js';

/**
* @typedef {Enum} DoorStatusType
* @property {Object} _MAP
*/
class DoorStatusType extends Enum {
/**
* Constructor for DoorStatusType.
* @class
* @since SmartDeviceLink 7.1.0
*/
constructor () {
super();
}

/**
* Get the enum value for CLOSED.
* @returns {String} - The enum value.
*/
static get CLOSED () {
return DoorStatusType._MAP.CLOSED;
}

/**
* Get the enum value for LOCKED.
* @returns {String} - The enum value.
*/
static get LOCKED () {
return DoorStatusType._MAP.LOCKED;
}

/**
* Get the enum value for AJAR.
* @returns {String} - The enum value.
*/
static get AJAR () {
return DoorStatusType._MAP.AJAR;
}

/**
* Get the enum value for REMOVED.
* @returns {String} - The enum value.
*/
static get REMOVED () {
return DoorStatusType._MAP.REMOVED;
}

/**
* Get the value for the given enum key
* @param {*} key - A key to find in the map of the subclass
* @returns {*} - Returns a value if found, or null if not found
*/
static valueForKey (key) {
return DoorStatusType._valueForKey(key, DoorStatusType._MAP);
}

/**
* Get the key for the given enum value
* @param {*} value - A primitive value to find the matching key for in the map of the subclass
* @returns {*} - Returns a key if found, or null if not found
*/
static keyForValue (value) {
return DoorStatusType._keyForValue(value, DoorStatusType._MAP);
}

/**
* Retrieve all enumerated values for this class
* @returns {*} - Returns an array of values
*/
static values () {
return Object.values(DoorStatusType._MAP);
}
}

DoorStatusType._MAP = Object.freeze({
'CLOSED': 'CLOSED',
'LOCKED': 'LOCKED',
'AJAR': 'AJAR',
'REMOVED': 'REMOVED',
});

export { DoorStatusType };
85 changes: 81 additions & 4 deletions lib/js/src/rpc/structs/BodyInformation.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,11 @@
* POSSIBILITY OF SUCH DAMAGE.
*/

import { DoorStatus } from './DoorStatus.js';
import { GateStatus } from './GateStatus.js';
import { IgnitionStableStatus } from '../enums/IgnitionStableStatus.js';
import { IgnitionStatus } from '../enums/IgnitionStatus.js';
import { RoofStatus } from './RoofStatus.js';
import { RpcStruct } from '../RpcStruct.js';

class BodyInformation extends RpcStruct {
Expand Down Expand Up @@ -104,7 +107,9 @@ class BodyInformation extends RpcStruct {

/**
* Set the DriverDoorAjar
* @param {Boolean} ajar - References signal "DrStatDrv_B_Actl". - The desired DriverDoorAjar.
* @since SmartDeviceLink 2.0.0
* @deprecated in SmartDeviceLink 7.1.0
* @param {Boolean} ajar - References signal "DrStatDrv_B_Actl". Deprecated starting with RPC Spec 7.1.0. - The desired DriverDoorAjar.
* @returns {BodyInformation} - The class instance for method chaining.
*/
setDriverDoorAjar (ajar) {
Expand All @@ -122,7 +127,9 @@ class BodyInformation extends RpcStruct {

/**
* Set the PassengerDoorAjar
* @param {Boolean} ajar - References signal "DrStatPsngr_B_Actl". - The desired PassengerDoorAjar.
* @since SmartDeviceLink 2.0.0
* @deprecated in SmartDeviceLink 7.1.0
* @param {Boolean} ajar - References signal "DrStatPsngr_B_Actl". Deprecated starting with RPC Spec 7.1.0. - The desired PassengerDoorAjar.
* @returns {BodyInformation} - The class instance for method chaining.
*/
setPassengerDoorAjar (ajar) {
Expand All @@ -140,7 +147,9 @@ class BodyInformation extends RpcStruct {

/**
* Set the RearLeftDoorAjar
* @param {Boolean} ajar - References signal "DrStatRl_B_Actl". - The desired RearLeftDoorAjar.
* @since SmartDeviceLink 2.0.0
* @deprecated in SmartDeviceLink 7.1.0
* @param {Boolean} ajar - References signal "DrStatRl_B_Actl". Deprecated starting with RPC Spec 7.1.0. - The desired RearLeftDoorAjar.
* @returns {BodyInformation} - The class instance for method chaining.
*/
setRearLeftDoorAjar (ajar) {
Expand All @@ -158,7 +167,9 @@ class BodyInformation extends RpcStruct {

/**
* Set the RearRightDoorAjar
* @param {Boolean} ajar - References signal "DrStatRr_B_Actl". - The desired RearRightDoorAjar.
* @since SmartDeviceLink 2.0.0
* @deprecated in SmartDeviceLink 7.1.0
* @param {Boolean} ajar - References signal "DrStatRr_B_Actl". Deprecated starting with RPC Spec 7.1.0. - The desired RearRightDoorAjar.
* @returns {BodyInformation} - The class instance for method chaining.
*/
setRearRightDoorAjar (ajar) {
Expand All @@ -173,6 +184,69 @@ class BodyInformation extends RpcStruct {
getRearRightDoorAjar () {
return this.getParameter(BodyInformation.KEY_REAR_RIGHT_DOOR_AJAR);
}

/**
* Set the DoorStatuses
* @since SmartDeviceLink 7.1.0
* @param {DoorStatus[]} statuses - Provides status for doors if Ajar/Closed/Locked - The desired DoorStatuses.
* {'array_min_size': 0, 'array_max_size': 100}
* @returns {BodyInformation} - The class instance for method chaining.
*/
setDoorStatuses (statuses) {
this._validateType(DoorStatus, statuses, true);
this.setParameter(BodyInformation.KEY_DOOR_STATUSES, statuses);
return this;
}

/**
* Get the DoorStatuses
* @returns {DoorStatus[]} - the KEY_DOOR_STATUSES value
*/
getDoorStatuses () {
return this.getObject(DoorStatus, BodyInformation.KEY_DOOR_STATUSES);
}

/**
* Set the GateStatuses
* @since SmartDeviceLink 7.1.0
* @param {GateStatus[]} statuses - Provides status for trunk/hood/etc. if Ajar/Closed/Locked - The desired GateStatuses.
* {'array_min_size': 0, 'array_max_size': 100}
* @returns {BodyInformation} - The class instance for method chaining.
*/
setGateStatuses (statuses) {
this._validateType(GateStatus, statuses, true);
this.setParameter(BodyInformation.KEY_GATE_STATUSES, statuses);
return this;
}

/**
* Get the GateStatuses
* @returns {GateStatus[]} - the KEY_GATE_STATUSES value
*/
getGateStatuses () {
return this.getObject(GateStatus, BodyInformation.KEY_GATE_STATUSES);
}

/**
* Set the RoofStatuses
* @since SmartDeviceLink 7.1.0
* @param {RoofStatus[]} statuses - Provides status for roof/convertible roof/sunroof/moonroof etc., if Closed/Ajar/Removed etc. - The desired RoofStatuses.
* {'array_min_size': 0, 'array_max_size': 100}
* @returns {BodyInformation} - The class instance for method chaining.
*/
setRoofStatuses (statuses) {
this._validateType(RoofStatus, statuses, true);
this.setParameter(BodyInformation.KEY_ROOF_STATUSES, statuses);
return this;
}

/**
* Get the RoofStatuses
* @returns {RoofStatus[]} - the KEY_ROOF_STATUSES value
*/
getRoofStatuses () {
return this.getObject(RoofStatus, BodyInformation.KEY_ROOF_STATUSES);
}
}

BodyInformation.KEY_PARK_BRAKE_ACTIVE = 'parkBrakeActive';
Expand All @@ -182,5 +256,8 @@ BodyInformation.KEY_DRIVER_DOOR_AJAR = 'driverDoorAjar';
BodyInformation.KEY_PASSENGER_DOOR_AJAR = 'passengerDoorAjar';
BodyInformation.KEY_REAR_LEFT_DOOR_AJAR = 'rearLeftDoorAjar';
BodyInformation.KEY_REAR_RIGHT_DOOR_AJAR = 'rearRightDoorAjar';
BodyInformation.KEY_DOOR_STATUSES = 'doorStatuses';
BodyInformation.KEY_GATE_STATUSES = 'gateStatuses';
BodyInformation.KEY_ROOF_STATUSES = 'roofStatuses';

export { BodyInformation };
94 changes: 94 additions & 0 deletions lib/js/src/rpc/structs/DoorStatus.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
/* eslint-disable camelcase */
/*
* Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following
* disclaimer in the documentation and/or other materials provided with the
* distribution.
*
* Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/

import { DoorStatusType } from '../enums/DoorStatusType.js';
import { Grid } from './Grid.js';
import { RpcStruct } from '../RpcStruct.js';

/**
* Describes the status of a parameter of door.
*/
class DoorStatus extends RpcStruct {
/**
* Initalizes an instance of DoorStatus.
* @class
* @param {object} parameters - An object map of parameters.
* @since SmartDeviceLink 7.1.0
*/
constructor (parameters) {
super(parameters);
}

/**
* Set the Location
* @param {Grid} location - Describes a location (origin coordinates and span) of a vehicle component. - The desired Location.
* @returns {DoorStatus} - The class instance for method chaining.
*/
setLocation (location) {
this._validateType(Grid, location);
this.setParameter(DoorStatus.KEY_LOCATION, location);
return this;
}

/**
* Get the Location
* @returns {Grid} - the KEY_LOCATION value
*/
getLocation () {
return this.getObject(Grid, DoorStatus.KEY_LOCATION);
}

/**
* Set the Status
* @param {DoorStatusType} status - The desired Status.
* @returns {DoorStatus} - The class instance for method chaining.
*/
setStatus (status) {
this._validateType(DoorStatusType, status);
this.setParameter(DoorStatus.KEY_STATUS, status);
return this;
}

/**
* Get the Status
* @returns {DoorStatusType} - the KEY_STATUS value
*/
getStatus () {
return this.getObject(DoorStatusType, DoorStatus.KEY_STATUS);
}
}

DoorStatus.KEY_LOCATION = 'location';
DoorStatus.KEY_STATUS = 'status';

export { DoorStatus };
Loading

0 comments on commit 0c79267

Please sign in to comment.