Skip to content

Commit 3b62d8f

Browse files
Merge pull request #5 from AKalinich-Luxoft/feature/getinteriorvehicledata_impl
Implementation of Getinteriorvehicledata
2 parents a19080c + b7d893c commit 3b62d8f

File tree

5 files changed

+99
-76
lines changed

5 files changed

+99
-76
lines changed

app/controller/sdl/RController.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ SDL.RController = SDL.SDLController.extend(
5353
FFW.RC.onInteriorVehicleDataNotification(
5454
'RADIO',
5555
null,
56-
SDL.RadioModel.get('radioControlData')
56+
SDL.RadioModel.getRadioControlData()
5757
);
5858
} else {
5959
FFW.RC.sendError(
@@ -410,6 +410,15 @@ SDL.RController = SDL.SDLController.extend(
410410
SDL.SDLModel.data.climateFirstConsentedApp = null;
411411
}
412412
},
413+
getTemperatureStruct: function(type, value) {
414+
var t = value * 9 / 5 + 32;
415+
var result = {
416+
unit: type,
417+
valueC: value,
418+
valueF: t.toFixed(1)
419+
}
420+
return result;
421+
},
413422
correctTemp: function(data, type) {
414423
var d = SDL.deepCopy(data);
415424
if (type === 'get') {

app/model/ClimateControlModel.js

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ SDL.ClimateControlModel = Em.Object.create({
3131

3232
getClimateControlCapabilities: function() {
3333
var result = {
34-
name: 'Climate Control Module',
34+
name: this.getModuleName(),
3535
fanSpeedAvailable: true,
3636
desiredTemperatureAvailable: true,
3737
acEnableAvailable: true,
@@ -48,6 +48,33 @@ SDL.ClimateControlModel = Em.Object.create({
4848
return result;
4949
},
5050

51+
getClimateControlData: function() {
52+
var result = {
53+
fanSpeed: this.climateControlData.fanSpeed,
54+
currentTemperature: SDL.SDLController.getTemperatureStruct(
55+
this.climateControlData.temperatureUnit,
56+
this.climateControlData.currentTemp
57+
),
58+
desiredTemperature: SDL.SDLController.getTemperatureStruct(
59+
this.climateControlData.temperatureUnit,
60+
this.climateControlData.desiredTemp
61+
),
62+
acEnable: this.climateControlData.acEnable,
63+
circulateAirEnable: this.climateControlData.circulateAirEnable,
64+
autoModeEnable: this.climateControlData.autoModeEnable,
65+
defrostZone: this.climateControlData.defrostZone,
66+
dualModeEnable: this.climateControlData.dualModeEnable,
67+
acMaxEnable: this.climateControlData.acMaxEnable,
68+
ventilationMode: this.climateControlData.currentVentilationMode
69+
};
70+
71+
return result;
72+
},
73+
74+
getModuleName: function() {
75+
return 'Climate Control Module';
76+
},
77+
5178
setClimateData: function(data) {
5279

5380
if (data.fanSpeed) {

app/model/media/RadioModel.js

Lines changed: 29 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -189,9 +189,13 @@ SDL.RadioModel = Em.Object.create({
189189
state: 'MULTICAST'
190190
},
191191

192+
getModuleName: function() {
193+
return 'Radio Control Module';
194+
},
195+
192196
getRadioControlCapabilities: function() {
193197
var result = {
194-
name: 'Radio Control Module',
198+
name: this.getModuleName(),
195199
radioEnableAvailable: true,
196200
radioBandAvailable: true,
197201
radioFrequencyAvailable: true,
@@ -206,59 +210,33 @@ SDL.RadioModel = Em.Object.create({
206210
return result;
207211
},
208212

209-
radioControlData: function() {
210-
213+
getRadioControlData: function() {
211214
var result = {
212-
frequencyInteger: SDL.RadioModel.radioControlStruct.frequencyInteger,
213-
frequencyFraction: SDL.RadioModel.radioControlStruct.frequencyFraction,
214-
band: SDL.RadioModel.radioControlStruct.band,
215+
frequencyInteger: this.radioControlStruct.frequencyInteger,
216+
frequencyFraction: this.radioControlStruct.frequencyFraction,
217+
band: this.radioControlStruct.band,
215218
rdsData: {
216-
PS: SDL.RadioModel.radioControlStruct.rdsData.PS,
217-
RT: SDL.RadioModel.radioControlStruct.rdsData.RT,
218-
CT: SDL.RadioModel.radioControlStruct.rdsData.CT,
219-
PI: SDL.RadioModel.radioControlStruct.rdsData.PI,
220-
PTY: parseInt(SDL.RadioModel.radioControlStruct.rdsData.PTY),
221-
TP: SDL.RadioModel.radioControlStruct.rdsData.TP,
222-
TA: SDL.RadioModel.radioControlStruct.rdsData.TA,
223-
REG: SDL.RadioModel.radioControlStruct.rdsData.REG
219+
PS: this.radioControlStruct.rdsData.PS,
220+
RT: this.radioControlStruct.rdsData.RT,
221+
CT: this.radioControlStruct.rdsData.CT,
222+
PI: this.radioControlStruct.rdsData.PI,
223+
PTY: parseInt(this.radioControlStruct.rdsData.PTY),
224+
TP: this.radioControlStruct.rdsData.TP,
225+
TA: this.radioControlStruct.rdsData.TA,
226+
REG: this.radioControlStruct.rdsData.REG
224227
},
225-
availableHDs: parseInt(SDL.RadioModel.radioControlStruct.availableHDs),
226-
hdChannel: parseInt(SDL.RadioModel.radioControlStruct.hdChannel),
227-
signalStrength: parseInt(SDL.RadioModel.radioControlStruct.signalStrength
228-
),
228+
availableHDs: this.radioControlStruct.availableHDs,
229+
hdChannel: this.radioControlStruct.hdChannel,
230+
signalStrength: parseInt(this.radioControlStruct.signalStrength),
229231
signalChangeThreshold: parseInt(
230-
SDL.RadioModel.radioControlStruct.signalChangeThreshold
232+
this.radioControlStruct.signalChangeThreshold
231233
),
232-
radioEnable: SDL.RadioModel.radioControlStruct.radioEnable,
233-
state: SDL.RadioModel.radioControlStruct.state
234+
radioEnable: this.radioControlStruct.radioEnable,
235+
state: this.radioControlStruct.state
234236
};
235237

236-
this.set('station',
237-
result.frequencyInteger + '.' + result.frequencyFraction
238-
);
239-
240238
return result;
241-
}.property(
242-
'SDL.RadioModel.radioControlStruct.frequencyInteger',
243-
'SDL.RadioModel.radioControlStruct.frequencyFraction',
244-
'SDL.RadioModel.radioControlStruct.band',
245-
'SDL.RadioModel.radioControlStruct.rdsData.PS',
246-
'SDL.RadioModel.radioControlStruct.rdsData.RT',
247-
'SDL.RadioModel.radioControlStruct.rdsData.CT',
248-
'SDL.RadioModel.radioControlStruct.rdsData.PI',
249-
'SDL.RadioModel.radioControlStruct.rdsData.PTY',
250-
'SDL.RadioModel.radioControlStruct.rdsData.TP',
251-
'SDL.RadioModel.radioControlStruct.rdsData.TA',
252-
'SDL.RadioModel.radioControlStruct.rdsData.REG',
253-
'SDL.RadioModel.radioControlStruct.availableHDs',
254-
'SDL.RadioModel.radioControlStruct.hdChannel',
255-
'SDL.RadioModel.radioControlStruct.signalStrength',
256-
'SDL.RadioModel.radioControlStruct.signalChangeThreshold',
257-
'SDL.RadioModel.radioControlStruct.radioEnable',
258-
'SDL.RadioModel.radioControlStruct.state',
259-
'SDL.RadioModel.radioDetails.radioStation.availableHDs',
260-
'SDL.RadioModel.radioDetails.radioStation.currentHD'
261-
),
239+
},
262240

263241
radioZone: {
264242
'col': 0,
@@ -472,7 +450,7 @@ SDL.RadioModel = Em.Object.create({
472450
}
473451

474452
FFW.RC.onInteriorVehicleDataNotification('RADIO', null,
475-
this.get('radioControlData')
453+
this.getRadioControlData()
476454
);
477455
},
478456

@@ -606,7 +584,7 @@ SDL.RadioModel = Em.Object.create({
606584
parseInt(SDL.RadioModel.station.slice(-1))
607585
);
608586
FFW.RC.onInteriorVehicleDataNotification('RADIO', null,
609-
this.get('radioControlData')
587+
this.getRadioControlData()
610588
);
611589

612590
SDL.SDLModel.resetControl();
@@ -640,7 +618,7 @@ SDL.RadioModel = Em.Object.create({
640618
this.findStationPresets();
641619

642620
FFW.RC.onInteriorVehicleDataNotification('RADIO', null,
643-
this.get('radioControlData')
621+
this.getRadioControlData()
644622
);
645623

646624
SDL.SDLModel.resetControl();
@@ -804,12 +782,12 @@ SDL.RadioModel = Em.Object.create({
804782
this.updateSongInfo(this.stationsData[data].songInfo);
805783

806784
FFW.RC.onInteriorVehicleDataNotification('RADIO', null,
807-
this.get('radioControlData')
785+
this.getRadioControlData()
808786
);
809787
} else {
810788

811789
FFW.RC.onInteriorVehicleDataNotification('RADIO', null,
812-
this.get('radioControlData')
790+
this.getRadioControlData()
813791
);
814792
}
815793
},

app/view/media/player/radioView.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ SDL.RadioView = Em.ContainerView
338338
onDown: false,
339339
action: function() {
340340
FFW.RC.onInteriorVehicleDataNotification(
341-
'RADIO', null, SDL.RadioModel.get('radioControlData')
341+
'RADIO', null, SDL.RadioModel.getRadioControlData()
342342
);
343343
SDL.RadioModel.toggleProperty('optionsEnabled');
344344
}

ffw/RCRPC.js

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -222,54 +222,63 @@ FFW.RC = FFW.RPCObserver.create(
222222
case 'RC.GetInteriorVehicleData':
223223
{
224224
Em.Logger.log('FFW.' + request.method + 'Response');
225-
if (!this.conssetAppCheck(request)) {
226-
return;
225+
if (request.params.appID == undefined) {
226+
this.sendError(
227+
SDL.SDLModel.data.resultCode.INVALID_DATA, request.id,
228+
request.method, 'appID parameter missing!'
229+
);
230+
return;
227231
}
228-
if (request.params.moduleDescription == undefined) {
229-
this.sendError(
230-
SDL.SDLModel.data.resultCode.REJECTED, request.id,
231-
request.method, 'ModuleDescription parameter missing!'
232-
);
232+
if (!this.conssetAppCheck(request)) {
233233
return;
234234
}
235-
var radioControlData = null;
235+
236+
var moduleType = request.params.moduleDescription.moduleType;
237+
var moduleName = null;
236238
var climateControlData = null;
239+
var radioControlData = null;
240+
237241
var app = SDL.SDLController.getApplicationModel(
238242
request.params.appID
239243
);
240-
app.moduleSubscriptions[request.params.moduleDescription.moduleType].subscription
241-
= request.params.subscribe;
242-
if (request.params.moduleDescription.moduleType === 'CLIMATE') {
243-
climateControlData = SDL.ClimateController.model.climateControlData;
244-
} else if (request.params.moduleDescription.moduleType ===
245-
'RADIO') {
246-
radioControlData = SDL.RadioModel.get('radioControlData');
244+
if (request.params.subscribe !== undefined) {
245+
app.moduleSubscriptions[moduleType].subscription =
246+
request.params.subscribe;
247247
}
248-
// send repsonse
248+
if (moduleType === 'CLIMATE') {
249+
moduleName = SDL.ClimateController.model.getModuleName();
250+
climateControlData = SDL.ClimateController.model.getClimateControlData();
251+
} else if (moduleType === 'RADIO') {
252+
moduleName = SDL.RadioModel.getModuleName();
253+
radioControlData = SDL.RadioModel.getRadioControlData();
254+
}
255+
249256
var JSONMessage = {
250257
'jsonrpc': '2.0',
251258
'id': request.id,
252259
'result': {
253260
'code': SDL.SDLModel.data.resultCode.SUCCESS,
254261
'method': request.method,
255262
'moduleData': {
256-
'moduleType': request.params.moduleDescription.moduleType
263+
'moduleType': moduleType,
264+
'moduleName': moduleName
257265
}
258266
}
259267
};
268+
260269
if (radioControlData) {
261-
JSONMessage.result.moduleData.radioControlData = radioControlData;
270+
JSONMessage.result.moduleData.radioControlData =
271+
radioControlData;
262272
}
263273
if (climateControlData) {
264-
climateControlData = SDL.SDLController.correctTemp(
265-
climateControlData, 'get'
266-
);
267274
JSONMessage.result.moduleData.climateControlData
268275
= climateControlData;
269276
}
270277
if (request.params.subscribe !== undefined) {
271-
JSONMessage.result.isSubscribed = request.params.subscribe;
278+
JSONMessage.result.isSubscribed =
279+
app.moduleSubscriptions[moduleType].subscription;
272280
}
281+
273282
this.client.send(JSONMessage);
274283
break;
275284
}

0 commit comments

Comments
 (0)