summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Grover <joeygrover@gmail.com>2017-09-18 14:02:30 -0400
committerJoey Grover <joeygrover@gmail.com>2017-09-18 14:02:30 -0400
commit9cee29f3742e723e32a2ce54e784c456fe0c7a19 (patch)
tree324b6a640298fd38e64993a393e4c14ed5d266c2
parent7f204e85663430bfeab1076c74dbfdd817636c22 (diff)
parent96eb784b5b39b93a37a60323f028327802671a53 (diff)
downloadsdl_android-9cee29f3742e723e32a2ce54e784c456fe0c7a19.tar.gz
Merge branch 'develop' of https://github.com/smartdevicelink/sdl_android into feature/issue_469_update
# Conflicts: # sdl_android/build.gradle
-rw-r--r--.github/CONTRIBUTING.md (renamed from CONTRIBUTING.md)0
-rw-r--r--.github/ISSUE_TEMPLATE.md23
-rw-r--r--.github/PULL_REQUEST_TEMPLATE.md33
-rw-r--r--.travis.yml23
-rw-r--r--CHANGELOG.md41
-rw-r--r--README.md7
-rw-r--r--sdl_android/bintray.gradle71
-rw-r--r--sdl_android/bintray.properties8
-rw-r--r--sdl_android/build.gradle23
-rw-r--r--sdl_android/src/androidTest/assets/json/DeleteInteractionChoiceSet.json2
-rw-r--r--sdl_android/src/androidTest/assets/json/DeleteSubMenu.json2
-rw-r--r--sdl_android/src/androidTest/assets/json/DialNumber.json13
-rw-r--r--sdl_android/src/androidTest/assets/json/GetSystemCapability.json18
-rw-r--r--sdl_android/src/androidTest/assets/json/GetWayPoints.json18
-rw-r--r--sdl_android/src/androidTest/assets/json/PerformInteraction.json2
-rw-r--r--sdl_android/src/androidTest/assets/json/PutFile.json2
-rw-r--r--sdl_android/src/androidTest/assets/json/RegisterAppInterface.json2
-rw-r--r--sdl_android/src/androidTest/assets/json/SendHapticData.json22
-rw-r--r--sdl_android/src/androidTest/assets/json/SendLocation.json2
-rw-r--r--sdl_android/src/androidTest/assets/json/SetGlobalProperties.json2
-rw-r--r--sdl_android/src/androidTest/assets/json/ShowConstantTBT.json2
-rw-r--r--sdl_android/src/androidTest/assets/json/Slider.json2
-rw-r--r--sdl_android/src/androidTest/assets/json/StreamRPC.json10
-rw-r--r--sdl_android/src/androidTest/assets/json/SubscribeWayPoints.json10
-rw-r--r--sdl_android/src/androidTest/assets/json/UnsubscribeWayPoints.json10
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/SdlConnection/SdlConnectionTest.java18
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/protocol/WiProProtocolTests.java58
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/SdlConnection/SdlSessionTests.java50
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/Test.java104
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/Validator.java109
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/RPCMessageTests.java141
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/RPCStructTests.java158
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/SdlProxyBaseTests.java460
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/CoordinateTests.java73
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/DateTimeTests.java109
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/HMICapabilitiesTests.java74
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/HapticRectTests.java73
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/LocationDetailsTests.java113
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/MetadataTagsTests.java110
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/OasisAddressTests.java95
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/RectangleTests.java79
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SdlMsgVersionTest.java9
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SystemCapabilityTests.java61
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/VideoStreamingCapabilityTests.java96
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/VideoStreamingFormatTests.java70
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/AppHmiTypeTests.java8
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/DisplayTypeTests.java36
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/LanguageTests.java62
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/MetadataTypeTests.java114
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/TouchTypeTests.java17
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/VideoStreamingCodecTests.java79
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/VideoStreamingProtocolTests.java82
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/notifications/OnSdlChoiceChosenTests.java8
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/notifications/OnStreamRPCTests.java76
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/notifications/OnWayPointChangeTests.java86
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/DialNumberTests.java97
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/GetSystemCapabilityTests.java95
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/GetWayPointsTests.java96
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/SendHapticDataTests.java86
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/ShowTests.java35
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/SubscribeWayPointsTests.java73
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/UnsubscribeWayPointsTests.java73
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/DialNumberResponseTests.java74
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/GetSystemCapabilityResponseTests.java97
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/GetWayPointsResponseTests.java123
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/ShowResponseTest.java2
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/StreamRPCResponseTests.java89
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/SubscribeWaypointsResponseTests.java73
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/UnsubscribeWayPointsResponseTests.java73
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/streaming/AbstractPacketizerTests.java28
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/streaming/StreamPacketizerTests.java10
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/streaming/StreamRPCPacketizerTests.java9
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/trace/DiagLevelTests.java2
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/transport/MultiplexBluetoothTransportTest.java55
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/util/BitConverterTests.java10
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/util/DeviceUtil.java17
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/util/SdlDataTypeConverterTests.java2
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/util/VersionTest.java31
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/transport/MultiplexTransportTest.java14
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/transport/RSVTestCase.java145
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/transport/RegisteredAppTests.java51
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/transport/SdlRouterServiceTests.java132
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/transport/TransportBrokerTest.java74
-rw-r--r--sdl_android/src/main/AndroidManifest.xml1
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/SdlConnection/SdlSession.java81
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/protocol/BinaryFrameHeader.java2
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/protocol/SdlPacket.java34
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/protocol/WiProProtocol.java231
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/protocol/enums/ControlFrameTags.java85
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/protocol/enums/FunctionID.java2
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/LockScreenManager.java14
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/RPCMessage.java55
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/RPCStruct.java142
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java71
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/interfaces/IProxyListenerBase.java8
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/interfaces/ISdlServiceListener.java11
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddCommand.java69
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddSubMenu.java28
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AirbagStatus.java116
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Alert.java107
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AlertManeuver.java57
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AlertResponse.java12
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AudioPassThruCapabilities.java49
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/BeltStatus.java216
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/BodyInformation.java78
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ButtonCapabilities.java38
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ChangeRegistration.java94
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Choice.java92
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ClusterModeStatus.java53
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Coordinate.java16
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/CreateInteractionChoiceSet.java38
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DIDResult.java30
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DTC.java20
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DateTime.java72
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteCommand.java12
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteFile.java12
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteFileResponse.java12
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteInteractionChoiceSet.java12
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteSubMenu.java12
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeviceInfo.java49
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeviceStatus.java110
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DiagnosticMessage.java38
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DiagnosticMessageResponse.java22
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DialNumber.java10
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DisplayCapabilities.java153
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ECallInfo.java48
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/EmergencyEvent.java69
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GPSData.java161
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetDTCs.java20
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetDTCsResponse.java33
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetSystemCapability.java48
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetSystemCapabilityResponse.java48
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetVehicleData.java211
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetVehicleDataResponse.java347
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetWayPoints.java14
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetWayPointsResponse.java24
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HMICapabilities.java38
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HMIPermissions.java60
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HapticRect.java82
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HeadLampStatus.java30
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Headers.java86
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Image.java26
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ImageField.java74
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ImageResolution.java16
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/KeyboardProperties.java87
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ListFilesResponse.java31
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/LocationDetails.java97
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MenuParams.java28
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MetadataTags.java116
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MyKey.java14
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/NavigationCapability.java35
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OasisAddress.java72
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnAppInterfaceUnregistered.java18
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnButtonEvent.java40
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnButtonPress.java40
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnCommand.java26
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnDriverDistraction.java18
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnHMIStatus.java47
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnHashChange.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnKeyboardInput.java26
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnLanguageChange.java32
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnLockScreenStatus.java37
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnPermissionsChange.java28
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnSdlChoiceChosen.java28
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnStreamRPC.java24
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnSystemRequest.java90
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnTBTClientState.java18
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnTouchEvent.java44
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnVehicleData.java345
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnWayPointChange.java24
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ParameterPermissions.java38
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformAudioPassThru.java104
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformInteraction.java162
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformInteractionResponse.java34
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PermissionItem.java45
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PhoneCapability.java27
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PresetBankCapabilities.java12
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PutFile.java60
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PutFileResponse.java12
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ReadDID.java31
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ReadDIDResponse.java30
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Rectangle.java109
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RegisterAppInterface.java170
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RegisterAppInterfaceResponse.java318
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ResetGlobalProperties.java35
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScreenParams.java45
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScrollableMessage.java46
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SdlMsgVersion.java45
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SendHapticData.java86
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SendHapticDataResponse.java54
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SendLocation.java135
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetAppIcon.java14
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetDisplayLayout.java12
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetDisplayLayoutResponse.java81
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetGlobalProperties.java128
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimer.java47
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Show.java180
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ShowConstantTbt.java133
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SingleTireStatus.java18
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Slider.java55
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SliderResponse.java12
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SoftButton.java70
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SoftButtonCapabilities.java36
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Speak.java30
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/StartTime.java28
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/StreamRPCResponse.java20
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeButton.java19
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeVehicleData.java196
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeVehicleDataResponse.java433
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemCapability.java57
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemRequest.java46
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TTSChunk.java26
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TextField.java46
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TireStatus.java130
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchCoord.java16
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchEvent.java46
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchEventCapabilities.java24
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Turn.java28
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeButton.java18
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeVehicleData.java192
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeVehicleDataResponse.java430
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UpdateTurnList.java57
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VehicleDataResult.java28
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VehicleType.java36
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VideoStreamingCapability.java52
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VideoStreamingFormat.java35
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VrHelpItem.java34
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/AppHMIType.java4
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/Language.java89
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/MetadataType.java96
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/SystemCapabilityType.java21
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/TouchType.java6
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/VideoStreamingCodec.java50
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/VideoStreamingProtocol.java44
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/streaming/AbstractPacketizer.java34
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/streaming/StreamPacketizer.java9
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/streaming/VideoStreamingParams.java99
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/trace/DiagLevel.java33
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/trace/Mime.java71
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java168
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexTransport.java1
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/transport/RouterServiceValidator.java7
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java3
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/transport/SdlPsm.java2
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java97
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/transport/TransportConstants.java4
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/util/BitConverter.java34
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/util/Version.java47
248 files changed, 8091 insertions, 7058 deletions
diff --git a/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 8c8821977..8c8821977 100644
--- a/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
new file mode 100644
index 000000000..c8cc89515
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE.md
@@ -0,0 +1,23 @@
+[Delete any non-applicable sections, but we may ask for more information.]
+
+### Bug Report
+[Summary]
+
+##### Reproduction Steps
+1. [Step 1]
+2. [Step 2]
+3. [Step 3]
+
+##### Expected Behavior
+[Some expected behavior]
+
+##### Observed Behavior
+[Some observed behavior]
+
+##### OS & Version Information
+* Android Version: [What version of Android are you using when the bug occurred]
+* SDL Android Version: [What version of the library has this bug been seen on]
+* Testing Against: [What you tested with to observe this behavior]
+
+##### Test Case, Sample Code, and / or Example App
+[Paste a link to a PR, gist, or other code that exemplifies this behavior]
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 000000000..8581b12e8
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,33 @@
+[Things to note: Pull Requests **must** fix an issue. Discussion about the feature / bug takes place in the issue, discussion of the implementation takes place in the PR. Please also see the [Contributing Guide](https://github.com/smartdevicelink/sdl_android/blob/master/.github/CONTRIBUTING.md) for information on branch naming and the CLA.
+
+Delete the above section when you've read it.]
+
+Fixes #[issue number]
+
+This PR is **[ready / not ready]** for review.
+
+### Risk
+This PR makes **[no / minor / major]** API changes.
+
+### Testing Plan
+[Describe how you plan to unit test the changes in this PR]
+
+### Summary
+[Summary of PR changes]
+
+### Changelog
+##### Breaking Changes
+* [Breaking change info]
+
+##### Enhancements
+* [Enhancement info]
+
+##### Bug Fixes
+* [Bug Fix Info]
+
+### Tasks Remaining:
+- [ ] [Task 1]
+- [ ] [Task 2]
+
+### CLA
+- [ ] I have signed [the CLA](https://docs.google.com/forms/d/e/1FAIpQLSdsgJY33VByaX482zHzi-xUm49JNnmuJOyAM6uegPQ2LXYVfA/viewform) \ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
index b35079b14..5df5d6198 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,19 +4,30 @@ sudo: false
android:
components:
# use the latest revision of Android SDK Tools
+ - tools
- platform-tools
- tools
+ - ndk-bundle
# The BuildTools version used by your project
- build-tools-25.0.2
# The SDK version used to compile your project
- - android-19
+ - android-22
# Specify at least one system image,
# if you need to run emulator(s) during your tests
- - sys-img-armeabi-v7a-android-21
+ - sys-img-armeabi-v7a-android-22
# - sys-img-x86-android-17
+ # Android Support Repos
+ - extra-android-m2repository
+ - extra-google-m2repository
+
+licenses:
+ - 'android-sdk-preview-license-.+'
+ - 'android-sdk-license-.+'
+ - 'google-gdk-license-.+'
+
env:
global:
# install timeout in minutes (2 minutes by default)
@@ -24,7 +35,7 @@ env:
# Emulator Management: Create, Start and Wait
before_script:
- - echo no | android create avd --force -n test -t android-21 --abi armeabi-v7a
+ - echo no | android create avd --force -n test -t android-22 --abi armeabi-v7a
- emulator -avd test -no-skin -no-audio -no-window &
- android-wait-for-emulator
- adb shell input keyevent 82 &
@@ -32,3 +43,9 @@ before_script:
script:
- android list target
- ./gradlew connectedAndroidTest
+
+before_install:
+ - pip install --user codecov #Install codecov
+
+after_success:
+ - codecov #Run codecov
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5639fb9aa..fe1aee747 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,16 +1,37 @@
-# 4.1.0 Release Notes
+# 4.3.0 Release Notes
### API New Features & Breaking Changes
-* Added multiplexing transport that gives the ability to share a single bluetooth RCOMM channel with many clients.
-* Added external security framework that allows OEM's to provide custom security libraries.
-* ProxyALM constructors have changed and old signatures been deprecated.
-* Changed TouchEvent method names to be more intuitive.
+* The library has now moved to Android Studio as its default IDE. All files and folders have been moved to align with proper Android Studio project structure.
+* The target API level is now `19` instead of `18`. Apps will also need to target this version or higher to continue using this library.
+* `Java 7` is now used to compile the library and its features can be used moving forward.
### Enhancements
-* Multiplexing will now be the default mode of transport
+* Multiplexing bluetooth, legacy bluetooth, and TCP transport has been improved in performance by switching to buffer reads vs single byte read from transport.
+* Trusted router service checking feature is now adjustable by developers.
+* More unit tests were created.
+* Router service will now check to make sure the app that propagated it has permissions to use bluetooth.
+* Packet streaming classes will now use the agreed upon MTU instead of the hardcoded 1024 when the stream is not encrypted.
+* App IDs sent between the client apps and the router service are now Strings instead of Longs to support longer IDs.
### Bug Fixes
-* Fixed issue with sending a stop session with an incorrect hash id
-* Fixed the library throwing away hybrid packets
-* Fixed http onSystemRequests to actually function correctly
-* Fixed a class cast exception in the BTTransport class
+* Fixed issue with AOA transport not clearing old accessory reference after disconnect
+* Fixed missing setting of error state in multiplexing bluetooth transport
+* Fixed potential OOMs when corrupted packets are recieved in:
+ * `SdlPsm`
+ * `WiProProtocol`
+ * `BinaryFrameHeader`
+* Fixed possible NPEs in:
+ * `SdlRouterService` when checking for correct process
+ * `MultiplexingBluetoothTransport` during reads and writes
+ * `SdlConnection` during session registration
+ * `SdlProxyBase` when clearing RPC response and notification listeners during close
+ * `TransportBroker` when sending a message to router service
+ * `SdlBroadcastReceiver` during check for running router service
+ * `HttpRequestTask` that happens when a server can't be reached
+ * `SdlSecurityBase` when a security lib would become initialized after the base has been reset.
+* Added synchronization to a cancel call in the `MultiplexTransport`
+* Refactor code in `SdlBroadcastReceiver` to protect against a potential SecurityException
+* Added try/catch around bluetooth system calls that can fail in Android classes
+* Added try/catch when attempting to build `LocalRouterService` object from parcel when parcel could be corrupt
+* Fixed version checking flow in the router service to be cleaner and correctly synched
+
diff --git a/README.md b/README.md
index 0cfead7f5..1af436d8f 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,7 @@
+[![Build Status](https://travis-ci.org/smartdevicelink/sdl_android.svg?branch=master)](https://travis-ci.org/smartdevicelink/sdl_android)
+[![codecov](https://codecov.io/gh/smartdevicelink/sdl_android/branch/master/graph/badge.svg)](https://codecov.io/gh/smartdevicelink/sdl_android)
[![Slack Status](http://sdlslack.herokuapp.com/badge.svg)](http://slack.smartdevicelink.com)
+[ ![Download](https://api.bintray.com/packages/smartdevicelink/sdl_android/sdl_android/images/download.svg) ](https://bintray.com/smartdevicelink/sdl_android/sdl_android/_latestVersion)
# SmartDeviceLink (SDL)
SmartDeviceLink (SDL) is a standard set of protocols and messages that connect applications on a smartphone to a vehicle head unit. This messaging enables a consumer to interact with their application using common in-vehicle interfaces such as a touch screen display, embedded voice recognition, steering wheel controls and various vehicle knobs and buttons. There are three main components that make up the SDL ecosystem.
@@ -19,6 +22,8 @@ The mobile library component of SDL is meant to run on the end user’s smart-de
## SmartDeviceLink Android
-We're still working on creating documentation for each of these individual repositories, but in the meantime, you can find more information about SmartDeviceLink [here](https://github.com/smartdevicelink/sdl_core/blob/master/README.md) and [here](http://projects.genivi.org/smartdevicelink/about).
+We're still working on creating documentation for each of these individual repositories, but in the meantime, you can find more information about SmartDeviceLink [here](https://smartdevicelink.com)
You can also find some branches that have yet to be merged into this GitHub project on the GENIVI page [here](http://git.projects.genivi.org/?p=smartdevicelink_android.git;a=summary).
+
+For easy integration of SmartDeviceLink Android into your project using Gradle, Maven or Ivy please grab a snippet from [Bintray](https://bintray.com/smartdevicelink/sdl_android/sdl_android)
diff --git a/sdl_android/bintray.gradle b/sdl_android/bintray.gradle
new file mode 100644
index 000000000..ebbf65599
--- /dev/null
+++ b/sdl_android/bintray.gradle
@@ -0,0 +1,71 @@
+apply plugin: "com.jfrog.bintray"
+apply plugin: 'com.github.dcendents.android-maven'
+apply plugin: 'maven-publish'
+
+def siteUrl = 'https://github.com/smartdevicelink/sdl_android' // Homepage URL of the library
+def gitUrl = 'https://github.com/smartdevicelink/sdl_android.git' // Git repository URL
+group = "com.smartdevicelink" // Maven Group ID for the artifact
+def libDescription = 'SmartDeviceLink mobile library for Android'
+
+install {
+ repositories.mavenInstaller {
+ pom {
+ project {
+ packaging 'aar'
+
+ // Add your description here
+ name 'com.smartdevicelink:sdl_android'
+ description = libDescription
+ url siteUrl
+
+ // Set your license
+ licenses {
+ license {
+ name 'BSD 3-Clause'
+ url 'https://opensource.org/licenses/BSD-3-Clause'
+ }
+ }
+ scm {
+ connection gitUrl
+ developerConnection gitUrl
+ url siteUrl
+ }
+ }
+ }
+ }
+}
+
+task sourcesJar(type: Jar) {
+ from android.sourceSets.main.java.srcDirs
+ classifier = 'sources'
+}
+
+artifacts {
+ archives sourcesJar
+}
+
+bintray {
+ Properties props = new Properties()
+ props.load(new FileInputStream("$projectDir/bintray.properties"))
+
+ // Authorization
+ user = props.getProperty("bintray.user")
+ key = props.getProperty("bintray.key")
+
+ configurations = ['archives']
+ pkg {
+ repo = props.getProperty("bintray.repo")
+ name = props.getProperty("bintray.artifact")
+ websiteUrl = siteUrl
+ vcsUrl = gitUrl
+ userOrg = props.getProperty("bintray.userorg")
+ licenses = ["BSD 3-Clause"]
+ publish = props.getProperty("bintray.publish") // Will upload to jCenter
+ version {
+ name = props.getProperty("bintray.version") // Change to release version
+ desc = libDescription
+ released = new Date() // Will be the current date & time
+ vcsTag = props.getProperty("bintray.vcs") // Should match git tag
+ }
+ }
+} \ No newline at end of file
diff --git a/sdl_android/bintray.properties b/sdl_android/bintray.properties
new file mode 100644
index 000000000..760f99904
--- /dev/null
+++ b/sdl_android/bintray.properties
@@ -0,0 +1,8 @@
+bintray.user=username
+bintray.key=apikey
+bintray.repo=sdl_android
+bintray.artifact=sdl_android
+bintray.userorg=smartdevicelink
+bintray.publish=true
+bintray.version=X.X.X
+bintray.vcs=X.X.X \ No newline at end of file
diff --git a/sdl_android/build.gradle b/sdl_android/build.gradle
index 025268455..ad04cab31 100644
--- a/sdl_android/build.gradle
+++ b/sdl_android/build.gradle
@@ -1,7 +1,7 @@
apply plugin: 'com.android.library'
android {
- compileSdkVersion 21
+ compileSdkVersion 22
buildToolsVersion "25.0.2"
defaultConfig {
minSdkVersion 8
@@ -15,6 +15,9 @@ android {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
+ debug {
+ testCoverageEnabled = true
+ }
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
@@ -27,8 +30,26 @@ android {
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
+ compile ('com.smartdevicelink:bson_java_port:1.0.0@aar'){
+ transitive = true
+ }
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
testCompile 'junit:junit:4.12'
}
+
+buildscript {
+ repositories {
+ jcenter()
+ mavenCentral()
+ }
+ dependencies {
+ classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
+ classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
+ classpath 'com.trickyandroid:jacoco-everywhere:0.2.1'
+ }
+}
+
+apply from: 'bintray.gradle'
+apply plugin: 'jacoco-everywhere' \ No newline at end of file
diff --git a/sdl_android/src/androidTest/assets/json/DeleteInteractionChoiceSet.json b/sdl_android/src/androidTest/assets/json/DeleteInteractionChoiceSet.json
index 40419f005..60f9a6c61 100644
--- a/sdl_android/src/androidTest/assets/json/DeleteInteractionChoiceSet.json
+++ b/sdl_android/src/androidTest/assets/json/DeleteInteractionChoiceSet.json
@@ -3,7 +3,7 @@
"name":"DeleteInteractionChoiceSet",
"correlationID":119,
"parameters":{
- "interactionChoiceSetID":56,
+ "interactionChoiceSetID":56
}
},
"response":{
diff --git a/sdl_android/src/androidTest/assets/json/DeleteSubMenu.json b/sdl_android/src/androidTest/assets/json/DeleteSubMenu.json
index d0619a1f6..c31eb189d 100644
--- a/sdl_android/src/androidTest/assets/json/DeleteSubMenu.json
+++ b/sdl_android/src/androidTest/assets/json/DeleteSubMenu.json
@@ -3,7 +3,7 @@
"name":"DeleteSubMenu",
"correlationID":121,
"parameters":{
- "menuID":765,
+ "menuID":765
}
},
"response":{
diff --git a/sdl_android/src/androidTest/assets/json/DialNumber.json b/sdl_android/src/androidTest/assets/json/DialNumber.json
new file mode 100644
index 000000000..cb79aad84
--- /dev/null
+++ b/sdl_android/src/androidTest/assets/json/DialNumber.json
@@ -0,0 +1,13 @@
+{
+ "request":{
+ "name":"DialNumber",
+ "correlationID":194,
+ "parameters":{
+ "wayPointType":"DESTINATION"
+ }
+ },
+ "response":{
+ "name":"DialNumberResponse",
+ "correlationID":195
+ }
+} \ No newline at end of file
diff --git a/sdl_android/src/androidTest/assets/json/GetSystemCapability.json b/sdl_android/src/androidTest/assets/json/GetSystemCapability.json
new file mode 100644
index 000000000..c96bf6013
--- /dev/null
+++ b/sdl_android/src/androidTest/assets/json/GetSystemCapability.json
@@ -0,0 +1,18 @@
+{
+ "request":{
+ "name":"GetSystemCapability",
+ "correlationID":203,
+ "parameters":{
+ "systemCapabilityType":"NAVIGATION"
+ }
+ },
+ "response":{
+ "name":"GetSystemCapabilityResponse",
+ "correlationID":204,
+ "parameters":{
+ "systemCapability":{
+ "systemCapabilityType":"NAVIGATION"
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/sdl_android/src/androidTest/assets/json/GetWayPoints.json b/sdl_android/src/androidTest/assets/json/GetWayPoints.json
new file mode 100644
index 000000000..8d06a9dd6
--- /dev/null
+++ b/sdl_android/src/androidTest/assets/json/GetWayPoints.json
@@ -0,0 +1,18 @@
+{
+ "request":{
+ "name":"GetWayPoints",
+ "correlationID":196,
+ "parameters":{
+ "wayPointType":"DESTINATION"
+ }
+ },
+ "response":{
+ "name":"GetWayPointsResponse",
+ "correlationID":197,
+ "parameters":{
+ "wayPoints":[
+ {}, {}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/sdl_android/src/androidTest/assets/json/PerformInteraction.json b/sdl_android/src/androidTest/assets/json/PerformInteraction.json
index 1096d9c4d..b8965ee61 100644
--- a/sdl_android/src/androidTest/assets/json/PerformInteraction.json
+++ b/sdl_android/src/androidTest/assets/json/PerformInteraction.json
@@ -69,7 +69,7 @@
"parameters":{
"manualTextEntry":"Text Entry",
"triggerSource":"MENU",
- "choiceID":45,
+ "choiceID":45
}
}
} \ No newline at end of file
diff --git a/sdl_android/src/androidTest/assets/json/PutFile.json b/sdl_android/src/androidTest/assets/json/PutFile.json
index 1b14dc798..70e80a09a 100644
--- a/sdl_android/src/androidTest/assets/json/PutFile.json
+++ b/sdl_android/src/androidTest/assets/json/PutFile.json
@@ -20,7 +20,7 @@
"name":"PutFileResponse",
"correlationID":138,
"parameters":{
- "spaceAvailable":43567543,
+ "spaceAvailable":43567543
}
}
} \ No newline at end of file
diff --git a/sdl_android/src/androidTest/assets/json/RegisterAppInterface.json b/sdl_android/src/androidTest/assets/json/RegisterAppInterface.json
index abb7611ae..fe1edb518 100644
--- a/sdl_android/src/androidTest/assets/json/RegisterAppInterface.json
+++ b/sdl_android/src/androidTest/assets/json/RegisterAppInterface.json
@@ -50,7 +50,7 @@
"make":"Chrysler",
"model":"Crossfire",
"modelYear":"1820",
- "trim":"Gold",
+ "trim":"Gold"
},
"speechCapabilities":[
"SAPI_PHONEMES",
diff --git a/sdl_android/src/androidTest/assets/json/SendHapticData.json b/sdl_android/src/androidTest/assets/json/SendHapticData.json
new file mode 100644
index 000000000..42b863aae
--- /dev/null
+++ b/sdl_android/src/androidTest/assets/json/SendHapticData.json
@@ -0,0 +1,22 @@
+{
+ "request":{
+ "name":"SendHapticData",
+ "correlationID":1234,
+ "parameters":{
+ "hapticRectData":[
+ {"id":123,
+ "rect":{
+ "height":1,
+ "width":1,
+ "x":1,
+ "y":1
+ }
+ }
+ ]
+ }
+ },
+ "response":{
+ "name":"SendHapticData",
+ "correlationID":1234
+ }
+} \ No newline at end of file
diff --git a/sdl_android/src/androidTest/assets/json/SendLocation.json b/sdl_android/src/androidTest/assets/json/SendLocation.json
index c6553c59c..9b0ae8901 100644
--- a/sdl_android/src/androidTest/assets/json/SendLocation.json
+++ b/sdl_android/src/androidTest/assets/json/SendLocation.json
@@ -16,7 +16,7 @@
"line1",
"line2",
"line3"
- ],
+ ]
}
},
"response":{
diff --git a/sdl_android/src/androidTest/assets/json/SetGlobalProperties.json b/sdl_android/src/androidTest/assets/json/SetGlobalProperties.json
index 955d657a2..60cdfbffb 100644
--- a/sdl_android/src/androidTest/assets/json/SetGlobalProperties.json
+++ b/sdl_android/src/androidTest/assets/json/SetGlobalProperties.json
@@ -17,7 +17,7 @@
"b"
],
"autoCompleteText":"something goes here",
- "language":"EN-US",
+ "language":"EN-US"
},
"helpPrompt":[
{
diff --git a/sdl_android/src/androidTest/assets/json/ShowConstantTBT.json b/sdl_android/src/androidTest/assets/json/ShowConstantTBT.json
index 10e064992..0a0c30b0c 100644
--- a/sdl_android/src/androidTest/assets/json/ShowConstantTBT.json
+++ b/sdl_android/src/androidTest/assets/json/ShowConstantTBT.json
@@ -42,7 +42,7 @@
}
}
],
- "timeToDestination":"52 minutes",
+ "timeToDestination":"52 minutes"
}
},
"response":{
diff --git a/sdl_android/src/androidTest/assets/json/Slider.json b/sdl_android/src/androidTest/assets/json/Slider.json
index 4bd5761ed..38f033df4 100644
--- a/sdl_android/src/androidTest/assets/json/Slider.json
+++ b/sdl_android/src/androidTest/assets/json/Slider.json
@@ -12,7 +12,7 @@
"Header Line 4"
],
"position":11,
- "timeout":30000,
+ "timeout":30000
}
},
"response":{
diff --git a/sdl_android/src/androidTest/assets/json/StreamRPC.json b/sdl_android/src/androidTest/assets/json/StreamRPC.json
new file mode 100644
index 000000000..ff20ffc93
--- /dev/null
+++ b/sdl_android/src/androidTest/assets/json/StreamRPC.json
@@ -0,0 +1,10 @@
+{
+ "response":{
+ "name":"StreamRPCResponse",
+ "correlationID":198,
+ "parameters":{
+ "fileName":"test",
+ "fileSize":100
+ }
+ }
+} \ No newline at end of file
diff --git a/sdl_android/src/androidTest/assets/json/SubscribeWayPoints.json b/sdl_android/src/androidTest/assets/json/SubscribeWayPoints.json
new file mode 100644
index 000000000..bd1eee5c6
--- /dev/null
+++ b/sdl_android/src/androidTest/assets/json/SubscribeWayPoints.json
@@ -0,0 +1,10 @@
+{
+ "request":{
+ "name":"SubscribeWayPoints",
+ "correlationID":199
+ },
+ "response":{
+ "name":"SubscribeWayPointsResponse",
+ "correlationID":200
+ }
+} \ No newline at end of file
diff --git a/sdl_android/src/androidTest/assets/json/UnsubscribeWayPoints.json b/sdl_android/src/androidTest/assets/json/UnsubscribeWayPoints.json
new file mode 100644
index 000000000..60e2a98e4
--- /dev/null
+++ b/sdl_android/src/androidTest/assets/json/UnsubscribeWayPoints.json
@@ -0,0 +1,10 @@
+{
+ "request":{
+ "name":"UnsubscribeWayPoints",
+ "correlationID":201
+ },
+ "response":{
+ "name":"UnsubscribeWayPointsResponse",
+ "correlationID":202
+ }
+} \ No newline at end of file
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/SdlConnection/SdlConnectionTest.java b/sdl_android/src/androidTest/java/com/smartdevicelink/SdlConnection/SdlConnectionTest.java
index 90122905a..0b8e37ea0 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/SdlConnection/SdlConnectionTest.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/SdlConnection/SdlConnectionTest.java
@@ -3,6 +3,7 @@ package com.smartdevicelink.SdlConnection;
import android.test.AndroidTestCase;
import com.smartdevicelink.test.SdlUnitTestContants;
+import com.smartdevicelink.test.util.DeviceUtil;
import com.smartdevicelink.transport.BTTransportConfig;
import com.smartdevicelink.transport.BaseTransportConfig;
import com.smartdevicelink.transport.MultiplexTransportConfig;
@@ -41,16 +42,15 @@ public class SdlConnectionTest extends AndroidTestCase {
assertNotNull(SdlConnectionTestClass.cachedMultiConfig);
-
-
connection.forceHardwareConnectEvent(TransportType.MULTIPLEX);
assertFalse(connection.connected);
-
- assertNotNull(SdlConnectionTestClass.cachedMultiConfig.getService());
+ SdlConnectionTestClass.cachedMultiConfig.setSecurityLevel(MultiplexTransportConfig.FLAG_MULTI_SECURITY_OFF);
- assertEquals(TransportType.MULTIPLEX, connection.getCurrentTransportType());
-
+ if(!DeviceUtil.isEmulator()) { // Cannot perform MBT operations in emulator
+ assertNotNull(SdlConnectionTestClass.cachedMultiConfig.getService());
+ assertEquals(TransportType.MULTIPLEX, connection.getCurrentTransportType());
+ }
// Test for handling of null service
MultiplexTransportConfig null_service_config = new MultiplexTransportConfig(this.mContext,SdlUnitTestContants.TEST_APP_ID);
@@ -72,7 +72,11 @@ public class SdlConnectionTest extends AndroidTestCase {
rsvp.setFlags(RouterServiceValidator.FLAG_DEBUG_NONE);
MultiplexTransportConfig config = new MultiplexTransportConfig(this.mContext,SdlUnitTestContants.TEST_APP_ID);
SdlConnection connection = new SdlConnection(config,rsvp);
- assertEquals(TransportType.MULTIPLEX, connection.getCurrentTransportType());
+ if(DeviceUtil.isEmulator()){ // Cannot perform MBT operations in emulator
+ assertEquals(TransportType.BLUETOOTH, connection.getCurrentTransportType());
+ }else{
+ assertEquals(TransportType.MULTIPLEX, connection.getCurrentTransportType());
+ }
}
public void testMultiplexConstructorInsalledFrom(){
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/protocol/WiProProtocolTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/protocol/WiProProtocolTests.java
index 5eb04ca81..f8cae95f4 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/protocol/WiProProtocolTests.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/protocol/WiProProtocolTests.java
@@ -1,29 +1,21 @@
package com.smartdevicelink.protocol;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-
-import junit.framework.Assert;
+import android.test.AndroidTestCase;
+import android.util.Log;
-import com.smartdevicelink.protocol.IProtocolListener;
-import com.smartdevicelink.protocol.ProtocolMessage;
-import com.smartdevicelink.protocol.SdlPacket;
-import com.smartdevicelink.protocol.WiProProtocol;
+import com.smartdevicelink.SdlConnection.SdlConnection;
import com.smartdevicelink.protocol.WiProProtocol.MessageFrameAssembler;
-import com.smartdevicelink.protocol.enums.MessageType;
import com.smartdevicelink.protocol.enums.SessionType;
import com.smartdevicelink.test.SampleRpc;
-import com.smartdevicelink.util.DebugTool;
-import java.io.ByteArrayOutputStream;
-
-import com.smartdevicelink.SdlConnection.SdlConnection;
import com.smartdevicelink.test.SdlUnitTestContants;
import com.smartdevicelink.transport.BaseTransportConfig;
import com.smartdevicelink.transport.MultiplexTransportConfig;
import com.smartdevicelink.transport.RouterServiceValidator;
-import android.test.AndroidTestCase;
-import android.util.Log;
+import junit.framework.Assert;
+
+import java.io.ByteArrayOutputStream;
+import java.lang.reflect.Method;
/**
* This is a unit test class for the SmartDeviceLink library project class :
@@ -126,11 +118,15 @@ public class WiProProtocolTests extends AndroidTestCase {
wiProProtocol = new WiProProtocol(defaultListener);
wiProProtocol.setVersion((byte)0x04);
assertEquals((byte)0x04,wiProProtocol.getVersion());
-
- //If we get newer than 4, it should fall back to 4
+
wiProProtocol = new WiProProtocol(defaultListener);
wiProProtocol.setVersion((byte)0x05);
- assertEquals((byte)0x04,wiProProtocol.getVersion());
+ assertEquals((byte)0x05,wiProProtocol.getVersion());
+
+ //If we get newer than 5, it should fall back to 5
+ wiProProtocol = new WiProProtocol(defaultListener);
+ wiProProtocol.setVersion((byte)0x06);
+ assertEquals((byte)0x05,wiProProtocol.getVersion());
//Is this right?
wiProProtocol = new WiProProtocol(defaultListener);
@@ -144,31 +140,27 @@ public class WiProProtocolTests extends AndroidTestCase {
wiProProtocol.setVersion((byte)0x01);
try{
- Field field = wiProProtocol.getClass().getDeclaredField("MAX_DATA_SIZE");
- field.setAccessible(true);
- int mtu = (Integer) field.get(wiProProtocol);
- assertEquals(mtu, 1500-8);
- //Ok our reflection works we can test the rest of the cases
-
+ assertEquals(wiProProtocol.getMtu(), 1500-8);
+
//Version 2
wiProProtocol.setVersion((byte)0x02);
- mtu = (Integer) field.get(wiProProtocol);
- assertEquals(mtu, 1500-12);
+ assertEquals(wiProProtocol.getMtu(), 1500-12);
//Version 3
wiProProtocol.setVersion((byte)0x03);
- mtu = (Integer) field.get(wiProProtocol);
- assertEquals(mtu, 131072);
+ assertEquals(wiProProtocol.getMtu(), 131072);
//Version 4
wiProProtocol.setVersion((byte)0x04);
- mtu = (Integer) field.get(wiProProtocol);
- assertEquals(mtu, 131072);
+ assertEquals(wiProProtocol.getMtu(), 131072);
- //Version 4+
+ //Version 5
wiProProtocol.setVersion((byte)0x05);
- mtu = (Integer) field.get(wiProProtocol);
- assertEquals(mtu, 1500-12);
+ assertEquals(wiProProtocol.getMtu(), 131072);
+
+ //Version 5+
+ wiProProtocol.setVersion((byte)0x06);
+ assertEquals(wiProProtocol.getMtu(), 131072);
}catch(Exception e){
Assert.fail("Exceptin during reflection");
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/SdlConnection/SdlSessionTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/SdlConnection/SdlSessionTests.java
new file mode 100644
index 000000000..ec7bf710a
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/SdlConnection/SdlSessionTests.java
@@ -0,0 +1,50 @@
+package com.smartdevicelink.test.SdlConnection;
+
+import com.smartdevicelink.SdlConnection.SdlSession;
+import com.smartdevicelink.protocol.enums.SessionType;
+import com.smartdevicelink.proxy.TTSChunkFactory;
+import com.smartdevicelink.proxy.interfaces.ISdlServiceListener;
+import com.smartdevicelink.proxy.rpc.TTSChunk;
+import com.smartdevicelink.proxy.rpc.enums.SpeechCapabilities;
+import com.smartdevicelink.test.Test;
+import com.smartdevicelink.transport.TCPTransportConfig;
+
+import junit.framework.TestCase;
+
+import java.util.Vector;
+
+/**
+ * This is a unit test class for the SmartDeviceLink library project class :
+ * {@link com.smartdevicelink.SdlConnection.SdlSession}
+ */
+public class SdlSessionTests extends TestCase {
+
+ public void testServiceListeners(){
+ SdlSession session = SdlSession.createSession((byte)5,null, new TCPTransportConfig(8080,"",false));
+ ISdlServiceListener test = new ISdlServiceListener() {
+ @Override
+ public void onServiceStarted(SdlSession session, SessionType type, boolean isEncrypted) {
+
+ }
+
+ @Override
+ public void onServiceEnded(SdlSession session, SessionType type) {
+
+ }
+
+ @Override
+ public void onServiceError(SdlSession session, SessionType type, String reason) {
+
+ }
+ };
+
+ session.addServiceListener(SessionType.RPC, test);
+
+ assertTrue(session.removeServiceListener(SessionType.RPC, test));
+
+ assertFalse(session.removeServiceListener(SessionType.RPC, test));
+
+ }
+
+
+} \ No newline at end of file
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/Test.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/Test.java
index 9acf6e24e..58ee7065c 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/Test.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/Test.java
@@ -1,36 +1,35 @@
package com.smartdevicelink.test;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
import android.util.Log;
import com.smartdevicelink.proxy.TTSChunkFactory;
import com.smartdevicelink.proxy.rpc.AudioPassThruCapabilities;
import com.smartdevicelink.proxy.rpc.ButtonCapabilities;
import com.smartdevicelink.proxy.rpc.Choice;
+import com.smartdevicelink.proxy.rpc.Coordinate;
import com.smartdevicelink.proxy.rpc.DIDResult;
import com.smartdevicelink.proxy.rpc.DeviceInfo;
import com.smartdevicelink.proxy.rpc.DisplayCapabilities;
import com.smartdevicelink.proxy.rpc.HMIPermissions;
+import com.smartdevicelink.proxy.rpc.HapticRect;
import com.smartdevicelink.proxy.rpc.Image;
import com.smartdevicelink.proxy.rpc.ImageField;
import com.smartdevicelink.proxy.rpc.ImageResolution;
import com.smartdevicelink.proxy.rpc.KeyboardProperties;
+import com.smartdevicelink.proxy.rpc.LocationDetails;
import com.smartdevicelink.proxy.rpc.MenuParams;
+import com.smartdevicelink.proxy.rpc.MetadataTags;
+import com.smartdevicelink.proxy.rpc.OasisAddress;
import com.smartdevicelink.proxy.rpc.ParameterPermissions;
import com.smartdevicelink.proxy.rpc.PermissionItem;
import com.smartdevicelink.proxy.rpc.PresetBankCapabilities;
+import com.smartdevicelink.proxy.rpc.Rectangle;
import com.smartdevicelink.proxy.rpc.ScreenParams;
import com.smartdevicelink.proxy.rpc.SdlMsgVersion;
import com.smartdevicelink.proxy.rpc.SoftButton;
import com.smartdevicelink.proxy.rpc.SoftButtonCapabilities;
import com.smartdevicelink.proxy.rpc.StartTime;
+import com.smartdevicelink.proxy.rpc.SystemCapability;
import com.smartdevicelink.proxy.rpc.TTSChunk;
import com.smartdevicelink.proxy.rpc.TextField;
import com.smartdevicelink.proxy.rpc.TouchCoord;
@@ -39,6 +38,8 @@ import com.smartdevicelink.proxy.rpc.TouchEventCapabilities;
import com.smartdevicelink.proxy.rpc.Turn;
import com.smartdevicelink.proxy.rpc.VehicleDataResult;
import com.smartdevicelink.proxy.rpc.VehicleType;
+import com.smartdevicelink.proxy.rpc.VideoStreamingCapability;
+import com.smartdevicelink.proxy.rpc.VideoStreamingFormat;
import com.smartdevicelink.proxy.rpc.VrHelpItem;
import com.smartdevicelink.proxy.rpc.enums.AmbientLightStatus;
import com.smartdevicelink.proxy.rpc.enums.AppHMIType;
@@ -84,10 +85,12 @@ import com.smartdevicelink.proxy.rpc.enums.SamplingRate;
import com.smartdevicelink.proxy.rpc.enums.SoftButtonType;
import com.smartdevicelink.proxy.rpc.enums.SpeechCapabilities;
import com.smartdevicelink.proxy.rpc.enums.SystemAction;
+import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType;
import com.smartdevicelink.proxy.rpc.enums.SystemContext;
import com.smartdevicelink.proxy.rpc.enums.TBTState;
import com.smartdevicelink.proxy.rpc.enums.TextAlignment;
import com.smartdevicelink.proxy.rpc.enums.TextFieldName;
+import com.smartdevicelink.proxy.rpc.enums.MetadataType;
import com.smartdevicelink.proxy.rpc.enums.TouchType;
import com.smartdevicelink.proxy.rpc.enums.TriggerSource;
import com.smartdevicelink.proxy.rpc.enums.UpdateMode;
@@ -96,9 +99,19 @@ import com.smartdevicelink.proxy.rpc.enums.VehicleDataNotificationStatus;
import com.smartdevicelink.proxy.rpc.enums.VehicleDataResultCode;
import com.smartdevicelink.proxy.rpc.enums.VehicleDataStatus;
import com.smartdevicelink.proxy.rpc.enums.VehicleDataType;
+import com.smartdevicelink.proxy.rpc.enums.VideoStreamingCodec;
+import com.smartdevicelink.proxy.rpc.enums.VideoStreamingProtocol;
import com.smartdevicelink.proxy.rpc.enums.VrCapabilities;
import com.smartdevicelink.proxy.rpc.enums.WarningLightStatus;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
public class Test {
// Test Failure Messages
@@ -112,9 +125,10 @@ public class Test {
// RPC Request/Response/Notification/Datatype Test Values
public static final int GENERAL_INT = 100;
+ public static final Integer GENERAL_INTEGER = 100;
public static final Long GENERAL_LONG = 100L;
public static final Turn GENERAL_TURN = new Turn();
- public static final float GENERAL_FLOAT = 100f;
+ public static final Float GENERAL_FLOAT = 100f;
public static final Image GENERAL_IMAGE = new Image();
public static final Choice GENERAL_CHOICE = new Choice();
public static final String GENERAL_STRING = "test";
@@ -126,6 +140,9 @@ public class Test {
public static final HMILevel GENERAL_HMILEVEL = HMILevel.HMI_FULL;
public static final DIDResult GENERAL_DIDRESULT = new DIDResult();
public static final TextField GENERAL_TEXTFIELD = new TextField();
+ public static final OasisAddress GENERAL_OASISADDRESS = new OasisAddress();
+ public static final Coordinate GENERAL_COORDINATE = new Coordinate();
+ public static final LocationDetails GENERAL_LOCATIONDETAILS = new LocationDetails();
public static final Dimension GENERAL_DIMENSION = Dimension._2D;
public static final ImageType GENERAL_IMAGETYPE = ImageType.DYNAMIC;
public static final AudioType GENERAL_AUDIOTYPE = AudioType.PCM;
@@ -196,7 +213,15 @@ public class Test {
public static final PowerModeQualificationStatus GENERAL_POWERMODEQUALIFICATIONSTATUS = PowerModeQualificationStatus.POWER_MODE_OK;
public static final VehicleDataNotificationStatus GENERAL_VEHICLEDATANOTIFICATIONSTATUS = VehicleDataNotificationStatus.NORMAL;
public static final AppInterfaceUnregisteredReason GENERAL_APPINTERFACEUNREGISTEREDREASON = AppInterfaceUnregisteredReason.BLUETOOTH_OFF;
-
+ public static final SystemCapabilityType GENERAL_SYSTEMCAPABILITYTYPE = SystemCapabilityType.NAVIGATION;
+ public static final SystemCapability GENERAL_SYSTEMCAPABILITY = new SystemCapability();
+ public static final VideoStreamingProtocol GENERAL_VIDEOSTREAMINGPROTOCOL = VideoStreamingProtocol.RAW;
+ public static final VideoStreamingCodec GENERAL_VIDEOSTREAMINGCODEC = VideoStreamingCodec.H264;
+ public static final VideoStreamingCapability GENERAL_VIDEOSTREAMINGCAPABILITY = new VideoStreamingCapability();
+ public static final VideoStreamingFormat GENERAL_VIDEOSTREAMINGFORMAT = new VideoStreamingFormat();
+ public static final MetadataTags GENERAL_METADATASTRUCT = new MetadataTags();
+ public static final Rectangle GENERAL_RECTANGLE = new Rectangle();
+ public static final HapticRect GENERAL_HAPTIC_RECT = new HapticRect();
public static final List<Long> GENERAL_LONG_LIST = Arrays.asList(new Long[]{ 1L, 2L });
public static final List<Turn> GENERAL_TURN_LIST = new ArrayList<Turn>();
public static final List<Choice> GENERAL_CHOICE_LIST = new ArrayList<Choice>();
@@ -224,6 +249,7 @@ public class Test {
public static final List<HmiZoneCapabilities> GENERAL_HMIZONECAPABILITIES_LIST = new ArrayList<HmiZoneCapabilities>(2);
public static final List<SoftButtonCapabilities> GENERAL_SOFTBUTTONCAPABILITIES_LIST = new ArrayList<SoftButtonCapabilities>(1);
public static final List<AudioPassThruCapabilities> GENERAL_AUDIOPASSTHRUCAPABILITIES_LIST = new ArrayList<AudioPassThruCapabilities>(1);
+ public static final List<VideoStreamingFormat> GENERAL_VIDEOSTREAMINGFORMAT_LIST = new ArrayList<VideoStreamingFormat>(2);
public static final JSONArray JSON_TURNS = new JSONArray();
public static final JSONArray JSON_CHOICES = new JSONArray();
@@ -240,6 +266,7 @@ public class Test {
public static final JSONArray JSON_BUTTONCAPABILITIES = new JSONArray();
public static final JSONArray JSON_SOFTBUTTONCAPABILITIES = new JSONArray();
public static final JSONArray JSON_AUDIOPASSTHRUCAPABILITIES = new JSONArray();
+ public static final JSONArray JSON_TEXTFIELDTYPES = new JSONArray();
public static final JSONObject JSON_TURN = new JSONObject();
public static final JSONObject JSON_IMAGE = new JSONObject();
@@ -295,6 +322,27 @@ public class Test {
GENERAL_TEXTFIELD.setWidth(GENERAL_INT);
GENERAL_TEXTFIELD.setCharacterSet(GENERAL_CHARACTERSET);
GENERAL_TEXTFIELD_LIST.add(GENERAL_TEXTFIELD);
+
+ GENERAL_COORDINATE.setLongitudeDegrees(GENERAL_FLOAT);
+ GENERAL_COORDINATE.setLatitudeDegrees(GENERAL_FLOAT);
+
+ GENERAL_OASISADDRESS.setCountryName(GENERAL_STRING);
+ GENERAL_OASISADDRESS.setThoroughfare(GENERAL_STRING);
+ GENERAL_OASISADDRESS.setSubThoroughfare(GENERAL_STRING);
+ GENERAL_OASISADDRESS.setCountryCode(GENERAL_STRING);
+ GENERAL_OASISADDRESS.setPostalCode(GENERAL_STRING);
+ GENERAL_OASISADDRESS.setLocality(GENERAL_STRING);
+ GENERAL_OASISADDRESS.setSubLocality(GENERAL_STRING);
+ GENERAL_OASISADDRESS.setAdministrativeArea(GENERAL_STRING);
+ GENERAL_OASISADDRESS.setSubAdministrativeArea(GENERAL_STRING);
+
+ GENERAL_LOCATIONDETAILS.setAddressLines(GENERAL_STRING_LIST);
+ GENERAL_LOCATIONDETAILS.setCoordinate(GENERAL_COORDINATE);
+ GENERAL_LOCATIONDETAILS.setLocationDescription(GENERAL_STRING);
+ GENERAL_LOCATIONDETAILS.setLocationImage(GENERAL_IMAGE);
+ GENERAL_LOCATIONDETAILS.setLocationName(GENERAL_STRING);
+ GENERAL_LOCATIONDETAILS.setSearchAddress(GENERAL_OASISADDRESS);
+ GENERAL_LOCATIONDETAILS.setPhoneNumber(GENERAL_STRING);
GENERAL_FILETYPE_LIST.add(GENERAL_FILETYPE);
@@ -430,8 +478,38 @@ public class Test {
GENERAL_PERMISSIONITEM.setHMIPermissions(GENERAL_HMIPERMISSIONS);
GENERAL_PERMISSIONITEM.setParameterPermissions(GENERAL_PARAMETERPERMISSIONS);
GENERAL_PERMISSIONITEM_LIST.add(GENERAL_PERMISSIONITEM);
+
+ GENERAL_SYSTEMCAPABILITY.setSystemCapabilityType(GENERAL_SYSTEMCAPABILITYTYPE);
+
+ GENERAL_VIDEOSTREAMINGFORMAT.setProtocol(GENERAL_VIDEOSTREAMINGPROTOCOL);
+ GENERAL_VIDEOSTREAMINGFORMAT.setCodec(GENERAL_VIDEOSTREAMINGCODEC);
+
+ GENERAL_VIDEOSTREAMINGFORMAT_LIST.add(GENERAL_VIDEOSTREAMINGFORMAT);
+ GENERAL_VIDEOSTREAMINGFORMAT_LIST.add(GENERAL_VIDEOSTREAMINGFORMAT);
+
+ GENERAL_VIDEOSTREAMINGCAPABILITY.setMaxBitrate(GENERAL_INT);
+ GENERAL_VIDEOSTREAMINGCAPABILITY.setPreferredResolution(GENERAL_IMAGERESOLUTION);
+ GENERAL_VIDEOSTREAMINGCAPABILITY.setSupportedFormats(GENERAL_VIDEOSTREAMINGFORMAT_LIST);
+
+ List<MetadataType> exampleList = new ArrayList<>();
+ exampleList.add(0, MetadataType.CURRENT_TEMPERATURE);
+ exampleList.add(1, MetadataType.MEDIA_ALBUM);
+ exampleList.add(2, MetadataType.MEDIA_ARTIST);
+
+ GENERAL_METADATASTRUCT.setMainField1(exampleList);
+ GENERAL_METADATASTRUCT.setMainField2(exampleList);
+ GENERAL_METADATASTRUCT.setMainField3(exampleList);
+ GENERAL_METADATASTRUCT.setMainField4(exampleList);
+
+ GENERAL_RECTANGLE.setX(GENERAL_FLOAT);
+ GENERAL_RECTANGLE.setY(GENERAL_FLOAT);
+ GENERAL_RECTANGLE.setWidth(GENERAL_FLOAT);
+ GENERAL_RECTANGLE.setHeight(GENERAL_FLOAT);
+
+ GENERAL_HAPTIC_RECT.setId(GENERAL_INTEGER);
+ GENERAL_HAPTIC_RECT.setRect(GENERAL_RECTANGLE);
- try {
+ try {
JSON_HMIPERMISSIONS.put(HMIPermissions.KEY_ALLOWED, GENERAL_HMILEVEL_LIST);
JSON_HMIPERMISSIONS.put(HMIPermissions.KEY_USER_DISALLOWED, GENERAL_HMILEVEL_LIST);
@@ -582,6 +660,10 @@ public class Test {
JSON_TOUCHEVENT.put(TouchEvent.KEY_ID, GENERAL_INT);
JSON_TOUCHEVENT.put(TouchEvent.KEY_TS, JsonUtils.createJsonArray(GENERAL_LONG_LIST));
JSON_TOUCHEVENTS.put(JSON_TOUCHEVENT);
+
+ JSON_TEXTFIELDTYPES.put(MetadataType.CURRENT_TEMPERATURE);
+ JSON_TEXTFIELDTYPES.put(MetadataType.MEDIA_ALBUM);
+ JSON_TEXTFIELDTYPES.put(MetadataType.MEDIA_ARTIST);
} catch (JSONException e) {
Log.e("Test", "Static Json Construction Failed.", e);
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/Validator.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/Validator.java
index e20098a60..966370e54 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/Validator.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/Validator.java
@@ -14,6 +14,7 @@ import com.smartdevicelink.proxy.rpc.BodyInformation;
import com.smartdevicelink.proxy.rpc.ButtonCapabilities;
import com.smartdevicelink.proxy.rpc.Choice;
import com.smartdevicelink.proxy.rpc.ClusterModeStatus;
+import com.smartdevicelink.proxy.rpc.Coordinate;
import com.smartdevicelink.proxy.rpc.DIDResult;
import com.smartdevicelink.proxy.rpc.DeviceInfo;
import com.smartdevicelink.proxy.rpc.DeviceStatus;
@@ -30,9 +31,11 @@ import com.smartdevicelink.proxy.rpc.ImageResolution;
import com.smartdevicelink.proxy.rpc.KeyboardProperties;
import com.smartdevicelink.proxy.rpc.MenuParams;
import com.smartdevicelink.proxy.rpc.MyKey;
+import com.smartdevicelink.proxy.rpc.OasisAddress;
import com.smartdevicelink.proxy.rpc.ParameterPermissions;
import com.smartdevicelink.proxy.rpc.PermissionItem;
import com.smartdevicelink.proxy.rpc.PresetBankCapabilities;
+import com.smartdevicelink.proxy.rpc.Rectangle;
import com.smartdevicelink.proxy.rpc.ScreenParams;
import com.smartdevicelink.proxy.rpc.SdlMsgVersion;
import com.smartdevicelink.proxy.rpc.SingleTireStatus;
@@ -48,6 +51,7 @@ import com.smartdevicelink.proxy.rpc.TouchEventCapabilities;
import com.smartdevicelink.proxy.rpc.Turn;
import com.smartdevicelink.proxy.rpc.VehicleDataResult;
import com.smartdevicelink.proxy.rpc.VehicleType;
+import com.smartdevicelink.proxy.rpc.VideoStreamingFormat;
import com.smartdevicelink.proxy.rpc.VrHelpItem;
import com.smartdevicelink.proxy.rpc.enums.FileType;
import com.smartdevicelink.proxy.rpc.enums.HMILevel;
@@ -298,6 +302,99 @@ public class Validator{
return true;
}
+ public static boolean validateCoordinate(Coordinate c1, Coordinate c2){
+ if(c1 == null){
+ return ( c2 == null );
+ }
+ if(c2 == null){
+ return ( c1 == null );
+ }
+
+ if(c1.getLatitudeDegrees() != c2.getLatitudeDegrees()){
+ return false;
+ }
+
+ if(c1.getLongitudeDegrees() != c2.getLongitudeDegrees()){
+ return false;
+ }
+
+ return true;
+ }
+
+ public static boolean validateRectangle(Rectangle c1, Rectangle c2){
+ if(c1 == null){
+ return ( c2 == null );
+ }
+ if(c2 == null){
+ return ( c1 == null );
+ }
+
+ if(c1.getX() != c2.getX()){
+ return false;
+ }
+
+ if(c1.getY() != c2.getY()){
+ return false;
+ }
+
+ if(c1.getWidth() != c2.getWidth()){
+ return false;
+ }
+
+ if(c1.getHeight() != c2.getHeight()){
+ return false;
+ }
+
+ return true;
+ }
+
+ public static boolean validateOasisAddress(OasisAddress a1, OasisAddress a2){
+ if(a1 == null){
+ return ( a2 == null );
+ }
+ if(a2 == null){
+ return ( a1 == null );
+ }
+
+ if(!a1.getAdministrativeArea().equals(a2.getAdministrativeArea())){
+ return false;
+ }
+
+ if(!a1.getCountryCode().equals(a2.getCountryCode())){
+ return false;
+ }
+
+ if(!a1.getCountryName().equals(a2.getCountryName())){
+ return false;
+ }
+
+ if(!a1.getLocality().equals(a2.getLocality())){
+ return false;
+ }
+
+ if(!a1.getSubLocality().equals(a2.getSubLocality())){
+ return false;
+ }
+
+ if(!a1.getSubAdministrativeArea().equals(a2.getSubAdministrativeArea())){
+ return false;
+ }
+
+ if(!a1.getPostalCode().equals(a2.getPostalCode())){
+ return false;
+ }
+
+ if(!a1.getThoroughfare().equals(a2.getThoroughfare())){
+ return false;
+ }
+
+ if(!a1.getSubThoroughfare().equals(a2.getSubThoroughfare())){
+ return false;
+ }
+
+ return true;
+ }
+
public static boolean validateTtsChunks(List<TTSChunk> list1, List<TTSChunk> list2){
if(list1 == null){
return ( list2 == null );
@@ -1104,6 +1201,18 @@ public class Validator{
return true;
}
+
+ public static boolean validateSupportedFormats (VideoStreamingFormat vsf1, VideoStreamingFormat vsf2) {
+ if(vsf1.getProtocol() != vsf2.getProtocol()){
+ return false;
+ }
+
+ if(vsf1.getCodec() != vsf2.getCodec()){
+ return false;
+ }
+
+ return true;
+ }
public static boolean validateDisplayCapabilities (DisplayCapabilities item1, DisplayCapabilities item2) {
if (item1 == null) {
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/RPCMessageTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/RPCMessageTests.java
new file mode 100644
index 000000000..51727bb66
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/RPCMessageTests.java
@@ -0,0 +1,141 @@
+package com.smartdevicelink.test.proxy;
+
+import com.smartdevicelink.proxy.RPCMessage;
+import com.smartdevicelink.proxy.rpc.Alert;
+import com.smartdevicelink.proxy.rpc.ChangeRegistration;
+import com.smartdevicelink.proxy.rpc.Choice;
+import com.smartdevicelink.proxy.rpc.DisplayCapabilities;
+import com.smartdevicelink.proxy.rpc.GetDTCsResponse;
+import com.smartdevicelink.proxy.rpc.Image;
+import com.smartdevicelink.proxy.rpc.TTSChunk;
+import com.smartdevicelink.proxy.rpc.enums.Language;
+import com.smartdevicelink.proxy.rpc.enums.MediaClockFormat;
+import com.smartdevicelink.test.Test;
+import com.smartdevicelink.test.Validator;
+
+import junit.framework.TestCase;
+
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.List;
+
+/**
+ * Created by austinkirk on 6/8/17.
+ */
+
+public class RPCMessageTests extends TestCase {
+ RPCMessage testMessage = new RPCMessage("TestFunction");
+
+ private static final String TAG = "RPC Struct Tests";
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ public void testGeneralGettersAndSetters(){
+ String testKey = Test.GENERAL_STRING;
+ Integer testInt = Test.GENERAL_INT;
+
+ testMessage.setParameters(testKey, testInt);
+ assertEquals(Test.MATCH, testInt, testMessage.getParameters(testKey));
+
+ testMessage.setParameters(testKey, null);
+ assertNull(testMessage.getParameters(testKey));
+ }
+
+ public void testCommonObjectGetters(){
+ String stringKey = "String";
+ String testString = Test.GENERAL_STRING;
+ testMessage.setParameters(stringKey, testString);
+
+ assertEquals(Test.MATCH, testMessage.getString(stringKey), testString);
+
+ String intKey = "Integer";
+ Integer testInt = Test.GENERAL_INT;
+ testMessage.setParameters(intKey, testInt);
+
+ assertEquals(Test.MATCH, testMessage.getInteger(intKey), testInt);
+
+ String doubleKey = "Double";
+ Double testDouble = Test.GENERAL_DOUBLE;
+ testMessage.setParameters(doubleKey, testDouble);
+
+ assertEquals(Test.MATCH, testMessage.getDouble(doubleKey), testDouble);
+
+ String booleanKey = "Boolean";
+ Boolean testBoolean = Test.GENERAL_BOOLEAN;
+ testMessage.setParameters(booleanKey, testBoolean);
+
+ assertEquals(Test.MATCH, testMessage.getBoolean(booleanKey), testBoolean);
+
+ String longKey = "Long";
+ Long testLong = Test.GENERAL_LONG;
+ testMessage.setParameters(longKey, testLong);
+
+ assertEquals(Test.MATCH, testMessage.getLong(longKey), testLong);
+
+ testMessage.setParameters(longKey, testInt);
+
+ assertEquals(Test.MATCH, testMessage.getLong(longKey), new Long(testInt.longValue()));
+
+ testMessage.setParameters(longKey, testDouble);
+ assertNull(testMessage.getLong(longKey));
+ }
+
+ public void testGetObject(){
+ String keyIsEmpty = "EMPTY";
+ assertNull(testMessage.getObject(Integer.class, keyIsEmpty));
+
+ String keyLanguage = ChangeRegistration.KEY_LANGUAGE;
+ Language language = Test.GENERAL_LANGUAGE;
+ testMessage.setParameters(keyLanguage, language);
+ assertEquals(Test.MATCH, language, testMessage.getObject(Language.class, keyLanguage));
+
+ String languageString = language.toString();
+ testMessage.setParameters(keyLanguage, languageString);
+ assertEquals(Test.MATCH, language, testMessage.getObject(Language.class, keyLanguage));
+
+ String keyImage = Choice.KEY_IMAGE;
+ Image testImage = Test.GENERAL_IMAGE;
+ testMessage.setParameters(keyImage, testImage.getStore());
+ assertTrue(Validator.validateImage(testImage, (Image) testMessage.getObject(Image.class, keyImage)));
+
+ String keyDTCs = GetDTCsResponse.KEY_DTC;
+ List<String> testDTCs = Test.GENERAL_STRING_LIST;
+ testMessage.setParameters(keyDTCs, testDTCs);
+ assertEquals(Test.MATCH, testDTCs, testMessage.getObject(String.class, keyDTCs));
+
+ String keyTTSchunks = Alert.KEY_TTS_CHUNKS;
+ List<TTSChunk> testTTSchunks = Test.GENERAL_TTSCHUNK_LIST;
+ testMessage.setParameters(keyTTSchunks, testTTSchunks);
+ assertEquals(Test.MATCH, testTTSchunks, testMessage.getObject(TTSChunk.class, keyTTSchunks));
+
+ List<Hashtable<String, Object>> testListTTSchunks = new ArrayList<>();
+ for(TTSChunk ttsChunk : testTTSchunks){
+ testListTTSchunks.add(ttsChunk.getStore());
+ }
+ testMessage.setParameters(keyTTSchunks, testListTTSchunks);
+ List<TTSChunk> underTest = (List<TTSChunk>) testMessage.getObject(TTSChunk.class, keyTTSchunks);
+ assertTrue(Validator.validateTtsChunks(testTTSchunks, underTest));
+
+ String keyMediaClockFormats = DisplayCapabilities.KEY_MEDIA_CLOCK_FORMATS;
+ List<MediaClockFormat> testMediaClockFormats = Test.GENERAL_MEDIACLOCKFORMAT_LIST;
+ testMessage.setParameters(keyMediaClockFormats, testMediaClockFormats);
+ assertEquals(Test.MATCH, testMediaClockFormats, testMessage.getObject(MediaClockFormat.class, keyMediaClockFormats));
+
+ List<String> testListMediaClockFormats = new ArrayList<>();
+ for(MediaClockFormat mcFormat : testMediaClockFormats){
+ testListMediaClockFormats.add(mcFormat.toString());
+ }
+ testMessage.setParameters(keyMediaClockFormats, testListMediaClockFormats);
+ assertEquals(Test.MATCH, testMediaClockFormats, testMessage.getObject(MediaClockFormat.class, keyMediaClockFormats));
+
+ assertNull(testMessage.getObject(Image.class, keyLanguage)); // Test incorrect class
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/RPCStructTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/RPCStructTests.java
new file mode 100644
index 000000000..370d30979
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/RPCStructTests.java
@@ -0,0 +1,158 @@
+package com.smartdevicelink.test.proxy;
+
+import com.smartdevicelink.proxy.RPCStruct;
+import com.smartdevicelink.proxy.rpc.AirbagStatus;
+import com.smartdevicelink.proxy.rpc.Choice;
+import com.smartdevicelink.proxy.rpc.DisplayCapabilities;
+import com.smartdevicelink.proxy.rpc.Image;
+import com.smartdevicelink.proxy.rpc.ImageField;
+import com.smartdevicelink.proxy.rpc.enums.MediaClockFormat;
+import com.smartdevicelink.proxy.rpc.enums.VehicleDataEventStatus;
+import com.smartdevicelink.test.Test;
+import com.smartdevicelink.test.Validator;
+
+import junit.framework.TestCase;
+
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.List;
+
+/**
+ * Created by austinkirk on 6/8/17.
+ */
+
+public class RPCStructTests extends TestCase {
+ RPCStruct testStruct = new RPCStruct();
+
+ private static final String TAG = "RPC Struct Tests";
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ public void testGeneralGettersAndSetters(){
+ String testKey = Test.GENERAL_STRING;
+ Integer testInt = Test.GENERAL_INT;
+
+ testStruct.setValue(testKey, testInt);
+ assertEquals(Test.MATCH, testInt, testStruct.getValue(testKey));
+
+ testStruct.setValue(testKey, null);
+ assertNull(testStruct.getValue(testKey));
+ }
+
+ public void testCommonObjectGetters(){
+ String stringKey = "String";
+ String testString = Test.GENERAL_STRING;
+ testStruct.setValue(stringKey, testString);
+
+ assertEquals(Test.MATCH, testStruct.getString(stringKey), testString);
+
+ String intKey = "Integer";
+ Integer testInt = Test.GENERAL_INT;
+ testStruct.setValue(intKey, testInt);
+
+ assertEquals(Test.MATCH, testStruct.getInteger(intKey), testInt);
+
+ String doubleKey = "Double";
+ Double testDouble = Test.GENERAL_DOUBLE;
+ testStruct.setValue(doubleKey, testDouble);
+
+ assertEquals(Test.MATCH, testStruct.getDouble(doubleKey), testDouble);
+
+ String booleanKey = "Boolean";
+ Boolean testBoolean = Test.GENERAL_BOOLEAN;
+ testStruct.setValue(booleanKey, testBoolean);
+
+ assertEquals(Test.MATCH, testStruct.getBoolean(booleanKey), testBoolean);
+
+ String longKey = "Long";
+ Long testLong = Test.GENERAL_LONG;
+ testStruct.setValue(longKey, testLong);
+
+ assertEquals(Test.MATCH, testStruct.getLong(longKey), testLong);
+
+ testStruct.setValue(longKey, testInt);
+
+ assertEquals(Test.MATCH, testStruct.getLong(longKey), new Long(testInt.longValue()));
+
+ testStruct.setValue(longKey, testDouble);
+
+ assertNull(testStruct.getLong(longKey));
+ }
+
+ public void testGetObject(){
+ String keyIsEmpty = "EMPTY";
+ assertNull(testStruct.getObject(Integer.class, keyIsEmpty));
+
+ String keyAirbag = AirbagStatus.KEY_DRIVER_AIRBAG_DEPLOYED;
+ VehicleDataEventStatus eventStatus = VehicleDataEventStatus.FAULT;
+ testStruct.setValue(keyAirbag, eventStatus);
+ assertEquals(Test.MATCH, eventStatus, testStruct.getObject(VehicleDataEventStatus.class, keyAirbag));
+
+ String eventStatusString = VehicleDataEventStatus.FAULT.toString();
+ testStruct.setValue(keyAirbag, eventStatusString);
+ assertEquals(Test.MATCH, eventStatus, testStruct.getObject(VehicleDataEventStatus.class, keyAirbag));
+
+ String keyImage = Choice.KEY_IMAGE;
+ Image testImage = Test.GENERAL_IMAGE;
+ testStruct.setValue(keyImage, testImage.getStore());
+ assertTrue(Validator.validateImage(testImage, (Image) testStruct.getObject(Image.class, keyImage)));
+
+ String keyVrCommand = Choice.KEY_VR_COMMANDS;
+ List<String> testCommands = Test.GENERAL_STRING_LIST;
+ testStruct.setValue(keyVrCommand, testCommands);
+ assertEquals(Test.MATCH, testCommands, testStruct.getObject(String.class, keyVrCommand));
+
+ String keyImageFields = DisplayCapabilities.KEY_IMAGE_FIELDS;
+ List<ImageField> testImageFields = Test.GENERAL_IMAGEFIELD_LIST;
+ testStruct.setValue(keyImageFields, testImageFields);
+ assertEquals(Test.MATCH, testImageFields, testStruct.getObject(ImageField.class, keyImageFields));
+
+ List<Hashtable<String, Object>> testListImageFields = new ArrayList<>();
+ for(ImageField imgField : testImageFields){
+ testListImageFields.add(imgField.getStore());
+ }
+ testStruct.setValue(keyImageFields, testListImageFields);
+ List<ImageField> underTest = (List<ImageField>) testStruct.getObject(ImageField.class, keyImageFields);
+ int index = 0;
+ for(ImageField imgField : testImageFields){
+ assertTrue(Validator.validateImageFields(imgField, underTest.get(index++)));
+ }
+
+ String keyMediaClockFormats = DisplayCapabilities.KEY_MEDIA_CLOCK_FORMATS;
+ List<MediaClockFormat> testMediaClockFormats = Test.GENERAL_MEDIACLOCKFORMAT_LIST;
+ testStruct.setValue(keyMediaClockFormats, testMediaClockFormats);
+ assertEquals(Test.MATCH, testMediaClockFormats, testStruct.getObject(MediaClockFormat.class, keyMediaClockFormats));
+
+ List<String> testListMediaClockFormats = new ArrayList<>();
+ for(MediaClockFormat mcFormat : testMediaClockFormats){
+ testListMediaClockFormats.add(mcFormat.toString());
+ }
+ testStruct.setValue(keyMediaClockFormats, testListMediaClockFormats);
+ assertEquals(Test.MATCH, testMediaClockFormats, testStruct.getObject(MediaClockFormat.class, keyMediaClockFormats));
+
+ assertNull(testStruct.getObject(Image.class, keyAirbag)); // Test incorrect class
+ }
+
+ public void testGetObjectExceptions(){
+ String invalidKey = "invalid";
+ testStruct.setValue(invalidKey, new Hashtable<>());
+ assertNull(testStruct.getObject(Integer.class, invalidKey));
+
+ List<Hashtable<String, Object>> list = new ArrayList<>();
+ list.add(new Hashtable<String, Object>());
+ testStruct.setValue(invalidKey, list);
+ assertNull(testStruct.getObject(Integer.class, invalidKey));
+
+ testStruct.setValue(invalidKey, Test.GENERAL_STRING);
+ assertNull(testStruct.getObject(Integer.class, invalidKey));
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/SdlProxyBaseTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/SdlProxyBaseTests.java
new file mode 100644
index 000000000..ee8d7d0ee
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/SdlProxyBaseTests.java
@@ -0,0 +1,460 @@
+package com.smartdevicelink.test.proxy;
+
+import android.content.Context;
+import android.telephony.TelephonyManager;
+import android.test.AndroidTestCase;
+import android.util.Log;
+
+import com.smartdevicelink.exception.SdlException;
+import com.smartdevicelink.exception.SdlExceptionCause;
+import com.smartdevicelink.proxy.SdlProxyALM;
+import com.smartdevicelink.proxy.SdlProxyBuilder;
+import com.smartdevicelink.proxy.SdlProxyConfigurationResources;
+import com.smartdevicelink.proxy.callbacks.OnServiceEnded;
+import com.smartdevicelink.proxy.callbacks.OnServiceNACKed;
+import com.smartdevicelink.proxy.interfaces.IProxyListenerALM;
+import com.smartdevicelink.proxy.rpc.AddCommandResponse;
+import com.smartdevicelink.proxy.rpc.AddSubMenuResponse;
+import com.smartdevicelink.proxy.rpc.AlertManeuverResponse;
+import com.smartdevicelink.proxy.rpc.AlertResponse;
+import com.smartdevicelink.proxy.rpc.ChangeRegistrationResponse;
+import com.smartdevicelink.proxy.rpc.CreateInteractionChoiceSetResponse;
+import com.smartdevicelink.proxy.rpc.DeleteCommandResponse;
+import com.smartdevicelink.proxy.rpc.DeleteFileResponse;
+import com.smartdevicelink.proxy.rpc.DeleteInteractionChoiceSetResponse;
+import com.smartdevicelink.proxy.rpc.DeleteSubMenuResponse;
+import com.smartdevicelink.proxy.rpc.DiagnosticMessageResponse;
+import com.smartdevicelink.proxy.rpc.DialNumberResponse;
+import com.smartdevicelink.proxy.rpc.EndAudioPassThruResponse;
+import com.smartdevicelink.proxy.rpc.GenericResponse;
+import com.smartdevicelink.proxy.rpc.GetDTCsResponse;
+import com.smartdevicelink.proxy.rpc.GetSystemCapabilityResponse;
+import com.smartdevicelink.proxy.rpc.GetVehicleDataResponse;
+import com.smartdevicelink.proxy.rpc.GetWayPointsResponse;
+import com.smartdevicelink.proxy.rpc.ListFilesResponse;
+import com.smartdevicelink.proxy.rpc.OnAudioPassThru;
+import com.smartdevicelink.proxy.rpc.OnButtonEvent;
+import com.smartdevicelink.proxy.rpc.OnButtonPress;
+import com.smartdevicelink.proxy.rpc.OnCommand;
+import com.smartdevicelink.proxy.rpc.OnDriverDistraction;
+import com.smartdevicelink.proxy.rpc.OnHMIStatus;
+import com.smartdevicelink.proxy.rpc.OnHashChange;
+import com.smartdevicelink.proxy.rpc.OnKeyboardInput;
+import com.smartdevicelink.proxy.rpc.OnLanguageChange;
+import com.smartdevicelink.proxy.rpc.OnLockScreenStatus;
+import com.smartdevicelink.proxy.rpc.OnPermissionsChange;
+import com.smartdevicelink.proxy.rpc.OnStreamRPC;
+import com.smartdevicelink.proxy.rpc.OnSystemRequest;
+import com.smartdevicelink.proxy.rpc.OnTBTClientState;
+import com.smartdevicelink.proxy.rpc.OnTouchEvent;
+import com.smartdevicelink.proxy.rpc.OnVehicleData;
+import com.smartdevicelink.proxy.rpc.OnWayPointChange;
+import com.smartdevicelink.proxy.rpc.PerformAudioPassThruResponse;
+import com.smartdevicelink.proxy.rpc.PerformInteractionResponse;
+import com.smartdevicelink.proxy.rpc.PutFileResponse;
+import com.smartdevicelink.proxy.rpc.ReadDIDResponse;
+import com.smartdevicelink.proxy.rpc.ResetGlobalPropertiesResponse;
+import com.smartdevicelink.proxy.rpc.ScrollableMessageResponse;
+import com.smartdevicelink.proxy.rpc.SendHapticDataResponse;
+import com.smartdevicelink.proxy.rpc.SendLocationResponse;
+import com.smartdevicelink.proxy.rpc.SetAppIconResponse;
+import com.smartdevicelink.proxy.rpc.SetDisplayLayoutResponse;
+import com.smartdevicelink.proxy.rpc.SetGlobalPropertiesResponse;
+import com.smartdevicelink.proxy.rpc.SetMediaClockTimerResponse;
+import com.smartdevicelink.proxy.rpc.ShowConstantTbtResponse;
+import com.smartdevicelink.proxy.rpc.ShowResponse;
+import com.smartdevicelink.proxy.rpc.SliderResponse;
+import com.smartdevicelink.proxy.rpc.SpeakResponse;
+import com.smartdevicelink.proxy.rpc.StreamRPCResponse;
+import com.smartdevicelink.proxy.rpc.SubscribeButtonResponse;
+import com.smartdevicelink.proxy.rpc.SubscribeVehicleDataResponse;
+import com.smartdevicelink.proxy.rpc.SubscribeWayPointsResponse;
+import com.smartdevicelink.proxy.rpc.SystemRequestResponse;
+import com.smartdevicelink.proxy.rpc.UnsubscribeButtonResponse;
+import com.smartdevicelink.proxy.rpc.UnsubscribeVehicleDataResponse;
+import com.smartdevicelink.proxy.rpc.UnsubscribeWayPointsResponse;
+import com.smartdevicelink.proxy.rpc.UpdateTurnListResponse;
+import com.smartdevicelink.proxy.rpc.enums.SdlDisconnectedReason;
+
+import junit.framework.Assert;
+
+
+public class SdlProxyBaseTests extends AndroidTestCase{
+ public static final String TAG = "SdlProxyBaseTests";
+
+ @Override
+ protected void setUp() throws Exception{
+ super.setUp();
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ //Nothing here for now
+ }
+
+ /**
+ * Test SdlProxyBase for handling null SdlProxyConfigurationResources
+ */
+ public void testNullSdlProxyConfigurationResources() {
+ SdlProxyALM proxy = null;
+ SdlProxyBuilder.Builder builder = new SdlProxyBuilder.Builder(new ProxyListenerTest(), "appId", "appName", true, getContext());
+ SdlProxyConfigurationResources config = new SdlProxyConfigurationResources("path", (TelephonyManager)getContext().getSystemService(Context.TELEPHONY_SERVICE));
+ //Construct with a non-null SdlProxyConfigurationResources
+ builder.setSdlProxyConfigurationResources(config);
+ try {
+ proxy = builder.build();
+ } catch (Exception e) {
+ Log.v(TAG, "Exception in testNullSdlProxyConfigurationResources, testing non null SdlProxyConfigurationResources");
+ if (!(e instanceof SdlException) || !((SdlException) e).getSdlExceptionCause().equals(SdlExceptionCause.BLUETOOTH_ADAPTER_NULL)) {
+ Assert.fail("Exception in testNullSdlProxyConfigurationResources");
+ }
+ }
+
+ //Construct with a null SdlProxyConfigurationResources
+ builder.setSdlProxyConfigurationResources(null);
+ try {
+ proxy = builder.build();
+ } catch (Exception e) {
+ Log.v(TAG, "Exception in testNullSdlProxyConfigurationResources, testing null SdlProxyConfigurationResources");
+ if (!(e instanceof SdlException) || !((SdlException) e).getSdlExceptionCause().equals(SdlExceptionCause.BLUETOOTH_ADAPTER_NULL)) {
+ Assert.fail("Exception in testNullSdlProxyConfigurationResources, testing null SdlProxyConfigurationResources");
+ }
+ }
+
+ //Construct with a non-null SdlProxyConfigurationResources and a null TelephonyManager
+ config.setTelephonyManager(null);
+ builder.setSdlProxyConfigurationResources(config);
+ try {
+ proxy = builder.build();
+ } catch (Exception e) {
+ Log.v(TAG, "Exception in testNullSdlProxyConfigurationResources, testing null TelephonyManager");
+ if (!(e instanceof SdlException) || !((SdlException) e).getSdlExceptionCause().equals(SdlExceptionCause.BLUETOOTH_ADAPTER_NULL)) {
+ Assert.fail("Exception in testNullSdlProxyConfigurationResources, testing null TelephonyManager");
+ }
+ }
+ }
+
+ public class ProxyListenerTest implements IProxyListenerALM {
+
+ @Override
+ public void onProxyClosed(String s, Exception e, SdlDisconnectedReason reason) {
+
+ }
+
+ @Override
+ public void onOnHMIStatus(OnHMIStatus status) {
+
+ }
+
+ @Override
+ public void onListFilesResponse(ListFilesResponse response) {
+ }
+
+ @Override
+ public void onPutFileResponse(PutFileResponse response) {
+ }
+
+ @Override
+ public void onOnLockScreenNotification(OnLockScreenStatus notification) {
+ }
+
+ @Override
+ public void onOnCommand(OnCommand notification){
+ }
+
+ /**
+ * Callback method that runs when the add command response is received from SDL.
+ */
+ @Override
+ public void onAddCommandResponse(AddCommandResponse response) {
+ }
+
+ @Override
+ public void onOnPermissionsChange(OnPermissionsChange notification) {
+
+ }
+
+ @Override
+ public void onSubscribeVehicleDataResponse(SubscribeVehicleDataResponse response) {
+ }
+
+ @Override
+ public void onOnVehicleData(OnVehicleData notification) {
+ }
+
+ /**
+ * Rest of the SDL callbacks from the head unit
+ */
+
+ @Override
+ public void onAddSubMenuResponse(AddSubMenuResponse response) {
+ }
+
+ @Override
+ public void onCreateInteractionChoiceSetResponse(CreateInteractionChoiceSetResponse response) {
+ }
+
+ @Override
+ public void onAlertResponse(AlertResponse response) {
+ }
+
+ @Override
+ public void onDeleteCommandResponse(DeleteCommandResponse response) {
+ }
+
+ @Override
+ public void onDeleteInteractionChoiceSetResponse(DeleteInteractionChoiceSetResponse response) {
+ }
+
+ @Override
+ public void onDeleteSubMenuResponse(DeleteSubMenuResponse response) {
+ }
+
+ @Override
+ public void onPerformInteractionResponse(PerformInteractionResponse response) {
+ }
+
+ @Override
+ public void onResetGlobalPropertiesResponse(
+ ResetGlobalPropertiesResponse response) {
+ }
+
+ @Override
+ public void onSetGlobalPropertiesResponse(SetGlobalPropertiesResponse response) {
+ }
+
+ @Override
+ public void onSetMediaClockTimerResponse(SetMediaClockTimerResponse response) {
+ }
+
+ @Override
+ public void onShowResponse(ShowResponse response) {
+ }
+
+ @Override
+ public void onSpeakResponse(SpeakResponse response) {
+ Log.i(TAG, "SpeakCommand response from SDL: " + response.getResultCode().name() + " Info: " + response.getInfo());
+ }
+
+ @Override
+ public void onOnButtonEvent(OnButtonEvent notification) {
+ }
+
+ @Override
+ public void onOnButtonPress(OnButtonPress notification) {
+ }
+
+ @Override
+ public void onSubscribeButtonResponse(SubscribeButtonResponse response) {
+ }
+
+ @Override
+ public void onUnsubscribeButtonResponse(UnsubscribeButtonResponse response) {
+ }
+
+
+ @Override
+ public void onOnTBTClientState(OnTBTClientState notification) {
+ }
+
+ @Override
+ public void onUnsubscribeVehicleDataResponse(
+ UnsubscribeVehicleDataResponse response) {
+
+ }
+
+ @Override
+ public void onGetVehicleDataResponse(GetVehicleDataResponse response) {
+
+ }
+
+ @Override
+ public void onReadDIDResponse(ReadDIDResponse response) {
+
+ }
+
+ @Override
+ public void onGetDTCsResponse(GetDTCsResponse response) {
+
+ }
+
+
+ @Override
+ public void onPerformAudioPassThruResponse(PerformAudioPassThruResponse response) {
+
+ }
+
+ @Override
+ public void onEndAudioPassThruResponse(EndAudioPassThruResponse response) {
+
+ }
+
+ @Override
+ public void onOnAudioPassThru(OnAudioPassThru notification) {
+
+ }
+
+ @Override
+ public void onDeleteFileResponse(DeleteFileResponse response) {
+
+ }
+
+ @Override
+ public void onSetAppIconResponse(SetAppIconResponse response) {
+
+ }
+
+ @Override
+ public void onScrollableMessageResponse(ScrollableMessageResponse response) {
+
+ }
+
+ @Override
+ public void onChangeRegistrationResponse(ChangeRegistrationResponse response) {
+
+ }
+
+ @Override
+ public void onSetDisplayLayoutResponse(SetDisplayLayoutResponse response) {
+
+ }
+
+ @Override
+ public void onOnLanguageChange(OnLanguageChange notification) {
+
+ }
+
+ @Override
+ public void onSliderResponse(SliderResponse response) {
+
+ }
+
+
+ @Override
+ public void onOnHashChange(OnHashChange notification) {
+
+ }
+
+ @Override
+ public void onOnSystemRequest(OnSystemRequest notification) {
+ }
+
+ @Override
+ public void onSystemRequestResponse(SystemRequestResponse response) {
+
+ }
+
+ @Override
+ public void onOnKeyboardInput(OnKeyboardInput notification) {
+
+ }
+
+ @Override
+ public void onOnTouchEvent(OnTouchEvent notification) {
+
+ }
+
+ @Override
+ public void onDiagnosticMessageResponse(DiagnosticMessageResponse response) {
+
+ }
+
+ @Override
+ public void onOnStreamRPC(OnStreamRPC notification) {
+
+ }
+
+ @Override
+ public void onStreamRPCResponse(StreamRPCResponse response) {
+
+ }
+
+ @Override
+ public void onDialNumberResponse(DialNumberResponse response) {
+
+ }
+
+ @Override
+ public void onSendLocationResponse(SendLocationResponse response) {
+ Log.i(TAG, "SendLocation response from SDL: " + response.getResultCode().name() + " Info: " + response.getInfo());
+
+ }
+
+ @Override
+ public void onServiceEnded(OnServiceEnded serviceEnded) {
+
+ }
+
+ @Override
+ public void onServiceNACKed(OnServiceNACKed serviceNACKed) {
+
+ }
+
+ @Override
+ public void onShowConstantTbtResponse(ShowConstantTbtResponse response) {
+ Log.i(TAG, "ShowConstantTbt response from SDL: " + response.getResultCode().name() + " Info: " + response.getInfo());
+
+ }
+
+ @Override
+ public void onAlertManeuverResponse(AlertManeuverResponse response) {
+ Log.i(TAG, "AlertManeuver response from SDL: " + response.getResultCode().name() + " Info: " + response.getInfo());
+
+ }
+
+ @Override
+ public void onUpdateTurnListResponse(UpdateTurnListResponse response) {
+ Log.i(TAG, "UpdateTurnList response from SDL: " + response.getResultCode().name() + " Info: " + response.getInfo());
+
+ }
+
+ @Override
+ public void onServiceDataACK(int dataSize) {
+ }
+
+ @Override
+ public void onGetWayPointsResponse(GetWayPointsResponse response) {
+ Log.i(TAG, "GetWayPoints response from SDL: " + response.getResultCode().name() + " Info: " + response.getInfo());
+ }
+
+ @Override
+ public void onSubscribeWayPointsResponse(SubscribeWayPointsResponse response) {
+ Log.i(TAG, "SubscribeWayPoints response from SDL: " + response.getResultCode().name() + " Info: " + response.getInfo());
+ }
+
+ @Override
+ public void onUnsubscribeWayPointsResponse(UnsubscribeWayPointsResponse response) {
+ Log.i(TAG, "UnsubscribeWayPoints response from SDL: " + response.getResultCode().name() + " Info: " + response.getInfo());
+ }
+
+ @Override
+ public void onOnWayPointChange(OnWayPointChange notification) {
+ Log.i(TAG, "OnWayPointChange notification from SDL: " + notification);
+ }
+
+ @Override
+ public void onGetSystemCapabilityResponse(GetSystemCapabilityResponse response) {
+ Log.i(TAG, "GetSystemCapability response from SDL: " + response);
+ }
+
+ @Override
+ public void onOnDriverDistraction(OnDriverDistraction notification) {
+ // Some RPCs (depending on region) cannot be sent when driver distraction is active.
+ }
+
+ @Override
+ public void onError(String info, Exception e) {
+ }
+
+ @Override
+ public void onGenericResponse(GenericResponse response) {
+ Log.i(TAG, "Generic response from SDL: " + response.getResultCode().name() + " Info: " + response.getInfo());
+ }
+
+ @Override
+ public void onSendHapticDataResponse(SendHapticDataResponse response) {
+ Log.i(TAG, "SendHapticDataResponse response from SDL: " + response);
+ }
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/CoordinateTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/CoordinateTests.java
new file mode 100644
index 000000000..5f8a8327f
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/CoordinateTests.java
@@ -0,0 +1,73 @@
+package com.smartdevicelink.test.rpc.datatypes;
+
+import com.smartdevicelink.proxy.rpc.Coordinate;
+import com.smartdevicelink.test.JsonUtils;
+import com.smartdevicelink.test.Test;
+
+import junit.framework.TestCase;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Iterator;
+
+/**
+ * Created by austinkirk on 6/6/17.
+ */
+
+public class CoordinateTests extends TestCase {
+
+ private Coordinate msg;
+
+ @Override
+ public void setUp(){
+ msg = new Coordinate();
+
+ msg.setLatitudeDegrees(Test.GENERAL_FLOAT);
+ msg.setLongitudeDegrees(Test.GENERAL_FLOAT);
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Test Values
+ float floatLat = msg.getLatitudeDegrees();
+ float floatLong = msg.getLongitudeDegrees();
+
+ // Valid Tests
+ assertEquals(Test.MATCH, Test.GENERAL_FLOAT, floatLat);
+ assertEquals(Test.MATCH, Test.GENERAL_FLOAT, floatLong);
+ // Invalid/Null Tests
+ Coordinate msg = new Coordinate();
+ assertNotNull(Test.NOT_NULL, msg);
+
+ assertNull(Test.NULL, msg.getLatitudeDegrees());
+ assertNull(Test.NULL, msg.getLongitudeDegrees());
+ }
+
+ public void testJson(){
+ JSONObject reference = new JSONObject();
+
+ try{
+ reference.put(Coordinate.KEY_LATITUDE_DEGREES, (Float) Test.GENERAL_FLOAT);
+ reference.put(Coordinate.KEY_LONGITUDE_DEGREES, (Float) Test.GENERAL_FLOAT);
+
+ JSONObject underTest = msg.serializeJSON();
+
+ assertEquals(Test.MATCH, reference.length(), underTest.length());
+
+ Iterator<?> iterator = reference.keys();
+ while(iterator.hasNext()){
+ String key = (String) iterator.next();
+
+ Object a = JsonUtils.readObjectFromJsonObject(reference, key);
+ Object b = JsonUtils.readObjectFromJsonObject(underTest, key);
+
+ assertEquals(Test.MATCH, a, b);
+ }
+ } catch(JSONException e){
+ fail(Test.JSON_FAIL);
+ }
+ }
+} \ No newline at end of file
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/DateTimeTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/DateTimeTests.java
new file mode 100644
index 000000000..2cf38b68f
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/DateTimeTests.java
@@ -0,0 +1,109 @@
+package com.smartdevicelink.test.rpc.datatypes;
+
+import com.smartdevicelink.proxy.rpc.DateTime;
+import com.smartdevicelink.test.JsonUtils;
+import com.smartdevicelink.test.Test;
+
+import junit.framework.TestCase;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Iterator;
+
+/**
+ * Created by austinkirk on 6/6/17.
+ */
+
+public class DateTimeTests extends TestCase {
+
+ private DateTime msg;
+
+ @Override
+ public void setUp(){
+ msg = new DateTime();
+
+ msg.setYear(Test.GENERAL_INT);
+ msg.setMonth(Test.GENERAL_INT);
+ msg.setDay(Test.GENERAL_INT);
+ msg.setHour(Test.GENERAL_INT);
+ msg.setMinute(Test.GENERAL_INT);
+ msg.setSecond(Test.GENERAL_INT);
+ msg.setMilliSecond(Test.GENERAL_INT);
+ msg.setTzHour(Test.GENERAL_INT);
+ msg.setTzMinute(Test.GENERAL_INT);
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Test Values
+ Integer year = msg.getYear();
+ Integer month = msg.getMonth();
+ Integer day = msg.getDay();
+ Integer hour = msg.getHour();
+ Integer min = msg.getMinute();
+ Integer sec = msg.getSecond();
+ Integer ms = msg.getMilliSecond();
+ Integer tzHour = msg.getTzHour();
+ Integer tzMin = msg.getTzMinute();
+
+ // Valid Tests
+ assertEquals(Test.MATCH, (Integer) Test.GENERAL_INT, year);
+ assertEquals(Test.MATCH, (Integer) Test.GENERAL_INT, month);
+ assertEquals(Test.MATCH, (Integer) Test.GENERAL_INT, day);
+ assertEquals(Test.MATCH, (Integer) Test.GENERAL_INT, hour);
+ assertEquals(Test.MATCH, (Integer) Test.GENERAL_INT, min);
+ assertEquals(Test.MATCH, (Integer) Test.GENERAL_INT, sec);
+ assertEquals(Test.MATCH, (Integer) Test.GENERAL_INT, ms);
+ assertEquals(Test.MATCH, (Integer) Test.GENERAL_INT, tzHour);
+ assertEquals(Test.MATCH, (Integer) Test.GENERAL_INT, tzMin);
+
+ // Invalid/Null Tests
+ DateTime msg = new DateTime();
+ assertNotNull(Test.NOT_NULL, msg);
+
+ assertNull(Test.NULL, msg.getYear());
+ assertNull(Test.NULL, msg.getMonth());
+ assertNull(Test.NULL, msg.getDay());
+ assertNull(Test.NULL, msg.getHour());
+ assertNull(Test.NULL, msg.getMinute());
+ assertNull(Test.NULL, msg.getSecond());
+ assertNull(Test.NULL, msg.getMilliSecond());
+ assertNull(Test.NULL, msg.getTzHour());
+ assertNull(Test.NULL, msg.getTzMinute());
+ }
+
+ public void testJson(){
+ JSONObject reference = new JSONObject();
+
+ try{
+ reference.put(DateTime.KEY_YEAR, (Integer) Test.GENERAL_INT);
+ reference.put(DateTime.KEY_MONTH, (Integer) Test.GENERAL_INT);
+ reference.put(DateTime.KEY_DAY, (Integer) Test.GENERAL_INT);
+ reference.put(DateTime.KEY_HOUR, (Integer) Test.GENERAL_INT);
+ reference.put(DateTime.KEY_MINUTE, (Integer) Test.GENERAL_INT);
+ reference.put(DateTime.KEY_SECOND, (Integer) Test.GENERAL_INT);
+ reference.put(DateTime.KEY_MILLISECOND, (Integer) Test.GENERAL_INT);
+ reference.put(DateTime.KEY_TZ_HOUR, (Integer) Test.GENERAL_INT);
+ reference.put(DateTime.KEY_TZ_MINUTE, (Integer) Test.GENERAL_INT);
+
+ JSONObject underTest = msg.serializeJSON();
+
+ assertEquals(Test.MATCH, reference.length(), underTest.length());
+
+ Iterator<?> iterator = reference.keys();
+ while(iterator.hasNext()){
+ String key = (String) iterator.next();
+
+ Object a = JsonUtils.readObjectFromJsonObject(reference, key);
+ Object b = JsonUtils.readObjectFromJsonObject(underTest, key);
+
+ assertEquals(Test.MATCH, a, b);
+ }
+ } catch(JSONException e){
+ fail(Test.JSON_FAIL);
+ }
+ }
+} \ No newline at end of file
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/HMICapabilitiesTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/HMICapabilitiesTests.java
new file mode 100644
index 000000000..cc4813caa
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/HMICapabilitiesTests.java
@@ -0,0 +1,74 @@
+package com.smartdevicelink.test.rpc.datatypes;
+
+import com.smartdevicelink.proxy.rpc.HMICapabilities;
+import com.smartdevicelink.test.JsonUtils;
+import com.smartdevicelink.test.Test;
+
+import junit.framework.TestCase;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import static com.smartdevicelink.proxy.rpc.HMICapabilities.KEY_NAVIGATION;
+import static com.smartdevicelink.proxy.rpc.HMICapabilities.KEY_PHONE_CALL;
+import static com.smartdevicelink.proxy.rpc.HMICapabilities.KEY_VIDEO_STREAMING;
+
+public class HMICapabilitiesTests extends TestCase {
+ private HMICapabilities msg;
+
+ @Override
+ public void setUp(){
+ msg = new HMICapabilities();
+
+ msg.setNavigationAvilable(Test.GENERAL_BOOLEAN);
+ msg.setPhoneCallAvilable(Test.GENERAL_BOOLEAN);
+ msg.setVideoStreamingAvailable(Test.GENERAL_BOOLEAN);
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Test Values
+ Boolean navAvail = msg.isNavigationAvailable();
+ Boolean phoneAvail = msg.isPhoneCallAvailable();
+ Boolean vidStreamAvail = msg.isVideoStreamingAvailable();
+
+ // Valid Tests
+ assertEquals(Test.MATCH, (Boolean) Test.GENERAL_BOOLEAN, navAvail);
+ assertEquals(Test.MATCH, (Boolean) Test.GENERAL_BOOLEAN, phoneAvail);
+ assertEquals(Test.MATCH, (Boolean) Test.GENERAL_BOOLEAN, vidStreamAvail);
+
+ // Invalid/Null Tests
+ HMICapabilities msg = new HMICapabilities();
+ assertNotNull(Test.NOT_NULL, msg);
+
+ assertFalse(msg.isNavigationAvailable());
+ assertFalse(msg.isPhoneCallAvailable());
+ assertFalse(msg.isVideoStreamingAvailable());
+ }
+
+ public void testJson(){
+ JSONObject reference = new JSONObject();
+
+ try{
+ reference.put(KEY_NAVIGATION, Test.GENERAL_BOOLEAN);
+ reference.put(HMICapabilities.KEY_PHONE_CALL, Test.GENERAL_BOOLEAN);
+ reference.put(HMICapabilities.KEY_VIDEO_STREAMING, Test.GENERAL_BOOLEAN);
+
+ JSONObject underTest = msg.serializeJSON();
+ assertEquals(Test.MATCH, reference.length(), underTest.length());
+
+ assertEquals(Test.MATCH, JsonUtils.readStringListFromJsonObject(reference, KEY_NAVIGATION),
+ JsonUtils.readStringListFromJsonObject(underTest, KEY_NAVIGATION));
+
+ assertEquals(Test.MATCH, JsonUtils.readStringListFromJsonObject(reference, KEY_PHONE_CALL),
+ JsonUtils.readStringListFromJsonObject(underTest, KEY_PHONE_CALL));
+
+ assertEquals(Test.MATCH, JsonUtils.readStringListFromJsonObject(reference, KEY_VIDEO_STREAMING),
+ JsonUtils.readStringListFromJsonObject(underTest, KEY_VIDEO_STREAMING));
+ } catch(JSONException e){
+ fail(Test.JSON_FAIL);
+ }
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/HapticRectTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/HapticRectTests.java
new file mode 100644
index 000000000..c72204640
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/HapticRectTests.java
@@ -0,0 +1,73 @@
+package com.smartdevicelink.test.rpc.datatypes;
+
+import com.smartdevicelink.marshal.JsonRPCMarshaller;
+import com.smartdevicelink.proxy.rpc.HapticRect;
+import com.smartdevicelink.proxy.rpc.Rectangle;
+import com.smartdevicelink.test.JsonUtils;
+import com.smartdevicelink.test.Test;
+import com.smartdevicelink.test.Validator;
+
+import junit.framework.TestCase;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/**
+ * Created by brettywhite on 8/24/17.
+ */
+
+public class HapticRectTests extends TestCase {
+
+ private HapticRect msg;
+
+ @Override
+ public void setUp() {
+ msg = new HapticRect();
+
+ msg.setId(Test.GENERAL_INTEGER);
+ msg.setRect(Test.GENERAL_RECTANGLE);
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Test Values
+ Integer id = msg.getId();
+ Rectangle rect = msg.getRect();
+
+ // Valid Tests
+ assertEquals(Test.MATCH, Test.GENERAL_INTEGER, id);
+ assertEquals(Test.MATCH, Test.GENERAL_RECTANGLE, rect);
+
+ // Invalid/Null Tests
+ HapticRect msg = new HapticRect();
+ assertNotNull(Test.NOT_NULL, msg);
+
+ assertNull(Test.NULL, msg.getId());
+ assertNull(Test.NULL, msg.getRect());
+ }
+
+ public void testJson(){
+ JSONObject reference = new JSONObject();
+
+ try{
+ reference.put(HapticRect.KEY_ID, Test.GENERAL_INTEGER);
+ reference.put(HapticRect.KEY_RECT, Test.GENERAL_RECTANGLE);
+
+ JSONObject underTest = msg.serializeJSON();
+ assertEquals(Test.MATCH, reference.length(), underTest.length());
+
+ assertEquals(Test.MATCH, JsonUtils.readIntegerFromJsonObject(reference, HapticRect.KEY_ID),
+ JsonUtils.readIntegerFromJsonObject(underTest, HapticRect.KEY_ID));
+
+ assertTrue(Validator.validateRectangle(
+ (Rectangle) JsonUtils.readObjectFromJsonObject(reference, HapticRect.KEY_RECT),
+ new Rectangle(JsonRPCMarshaller.deserializeJSONObject( (JSONObject) JsonUtils.readObjectFromJsonObject(underTest, HapticRect.KEY_RECT))))
+ );
+
+ } catch(JSONException e){
+ fail(Test.JSON_FAIL);
+ }
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/LocationDetailsTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/LocationDetailsTests.java
new file mode 100644
index 000000000..18da17eac
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/LocationDetailsTests.java
@@ -0,0 +1,113 @@
+package com.smartdevicelink.test.rpc.datatypes;
+
+import com.smartdevicelink.marshal.JsonRPCMarshaller;
+import com.smartdevicelink.proxy.rpc.Coordinate;
+import com.smartdevicelink.proxy.rpc.Image;
+import com.smartdevicelink.proxy.rpc.LocationDetails;
+import com.smartdevicelink.proxy.rpc.OasisAddress;
+import com.smartdevicelink.test.JsonUtils;
+import com.smartdevicelink.test.Test;
+import com.smartdevicelink.test.Validator;
+
+import junit.framework.TestCase;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.List;
+
+/**
+ * Created by austinkirk on 6/7/17.
+ */
+
+public class LocationDetailsTests extends TestCase {
+ private LocationDetails msg;
+
+ @Override
+ public void setUp(){
+ msg = Test.GENERAL_LOCATIONDETAILS;
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Test Values
+ List<String> field1 = msg.getAddressLines();
+ String field2 = msg.getLocationDescription();
+ String field3 = msg.getLocationName();
+ String field4 = msg.getPhoneNumber();
+ Coordinate field5 = msg.getCoordinate();
+ Image field6 = msg.getLocationImage();
+ OasisAddress field7 = msg.getSearchAddress();
+
+ // Valid Tests
+ assertEquals(Test.MATCH, Test.GENERAL_STRING_LIST, field1);
+ assertEquals(Test.MATCH, Test.GENERAL_STRING, field2);
+ assertEquals(Test.MATCH, Test.GENERAL_STRING, field3);
+ assertEquals(Test.MATCH, Test.GENERAL_STRING, field4);
+ assertEquals(Test.MATCH, Test.GENERAL_COORDINATE, field5);
+ assertEquals(Test.MATCH, Test.GENERAL_IMAGE, field6);
+ assertEquals(Test.MATCH, Test.GENERAL_OASISADDRESS, field7);
+
+ // Invalid/Null Tests
+ LocationDetails msg = new LocationDetails();
+ assertNotNull(Test.NOT_NULL, msg);
+
+
+ assertNull(msg.getAddressLines());
+ assertNull(msg.getLocationDescription());
+ assertNull(msg.getLocationName());
+ assertNull(msg.getPhoneNumber());
+ assertNull(msg.getCoordinate());
+ assertNull(msg.getLocationImage());
+ assertNull(msg.getSearchAddress());
+ }
+
+ public void testJson(){
+ JSONObject reference = new JSONObject();
+
+ try{
+ reference.put(LocationDetails.KEY_ADDRESS_LINES, JsonUtils.createJsonArray(Test.GENERAL_STRING_LIST));
+ reference.put(LocationDetails.KEY_LOCATION_DESCRIPTION, Test.GENERAL_STRING);
+ reference.put(LocationDetails.KEY_LOCATION_NAME, Test.GENERAL_STRING);
+ reference.put(LocationDetails.KEY_PHONE_NUMBER, Test.GENERAL_STRING);
+ reference.put(LocationDetails.KEY_COORDINATE, Test.GENERAL_COORDINATE);
+ reference.put(LocationDetails.KEY_LOCATION_IMAGE, Test.GENERAL_IMAGE);
+ reference.put(LocationDetails.KEY_SEARCH_ADDRESS, Test.GENERAL_OASISADDRESS);
+
+ JSONObject underTest = msg.serializeJSON();
+ assertEquals(Test.MATCH, reference.length(), underTest.length());
+
+ assertEquals(Test.MATCH, JsonUtils.readObjectFromJsonObject(reference, LocationDetails.KEY_ADDRESS_LINES),
+ JsonUtils.readObjectFromJsonObject(underTest, LocationDetails.KEY_ADDRESS_LINES));
+
+ assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(reference, LocationDetails.KEY_LOCATION_DESCRIPTION),
+ JsonUtils.readStringFromJsonObject(underTest, LocationDetails.KEY_LOCATION_DESCRIPTION));
+
+ assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(reference, LocationDetails.KEY_LOCATION_NAME),
+ JsonUtils.readStringFromJsonObject(underTest, LocationDetails.KEY_LOCATION_NAME));
+
+ assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(reference, LocationDetails.KEY_PHONE_NUMBER),
+ JsonUtils.readStringFromJsonObject(underTest, LocationDetails.KEY_PHONE_NUMBER));
+
+ assertTrue(Validator.validateCoordinate(
+ (Coordinate) JsonUtils.readObjectFromJsonObject(reference, LocationDetails.KEY_COORDINATE),
+ new Coordinate(JsonRPCMarshaller.deserializeJSONObject( (JSONObject) JsonUtils.readObjectFromJsonObject(underTest, LocationDetails.KEY_COORDINATE))))
+ );
+
+ assertTrue(Validator.validateImage(
+ (Image) JsonUtils.readObjectFromJsonObject(reference, LocationDetails.KEY_LOCATION_IMAGE),
+ new Image(JsonRPCMarshaller.deserializeJSONObject((JSONObject) JsonUtils.readObjectFromJsonObject(underTest, LocationDetails.KEY_LOCATION_IMAGE)))
+ ));
+
+ assertTrue(Validator.validateOasisAddress(
+ (OasisAddress) JsonUtils.readObjectFromJsonObject(reference, LocationDetails.KEY_SEARCH_ADDRESS),
+ new OasisAddress(JsonRPCMarshaller.deserializeJSONObject((JSONObject) JsonUtils.readObjectFromJsonObject(underTest, LocationDetails.KEY_SEARCH_ADDRESS)))
+ ));
+
+ } catch(JSONException e){
+ fail(Test.JSON_FAIL);
+ }
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/MetadataTagsTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/MetadataTagsTests.java
new file mode 100644
index 000000000..5f27cc132
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/MetadataTagsTests.java
@@ -0,0 +1,110 @@
+package com.smartdevicelink.test.rpc.datatypes;
+
+import com.smartdevicelink.proxy.rpc.MetadataTags;
+import com.smartdevicelink.proxy.rpc.enums.MetadataType;
+import com.smartdevicelink.test.JsonUtils;
+import com.smartdevicelink.test.Test;
+
+import junit.framework.TestCase;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+
+/**
+ * This is a unit test class for the SmartDeviceLink library project class:
+ * {@link MetadataTags}
+ */
+
+public class MetadataTagsTests extends TestCase {
+
+ private MetadataTags msg;
+ private MetadataTags msg2;
+ private List<MetadataType> exampleList;
+
+ @Override
+ public void setUp() {
+ // Create List for Testing
+ exampleList = new ArrayList<>();
+ exampleList.add(0, MetadataType.CURRENT_TEMPERATURE);
+ exampleList.add(1, MetadataType.MEDIA_ALBUM);
+ exampleList.add(2, MetadataType.MEDIA_ARTIST);
+
+ msg = new MetadataTags();
+ msg.setMainField1(exampleList);
+ msg.setMainField2(exampleList);
+ msg.setMainField3(exampleList);
+ msg.setMainField4(exampleList);
+
+ // Setup without a list
+ msg2 = new MetadataTags();
+ msg2.setMainField1(MetadataType.CURRENT_TEMPERATURE);
+ msg2.setMainField2(MetadataType.HUMIDITY);
+ msg2.setMainField3(MetadataType.MAXIMUM_TEMPERATURE);
+ msg2.setMainField4(MetadataType.MEDIA_ALBUM);
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Test Values
+ List<MetadataType> mainField1Types = msg.getMainField1();
+ List<MetadataType> mainField2Types = msg.getMainField2();
+ List<MetadataType> mainField3Types = msg.getMainField3();
+ List<MetadataType> mainField4Types = msg.getMainField4();
+
+ // Valid Tests
+ assertEquals(Test.MATCH, exampleList, mainField1Types);
+ assertEquals(Test.MATCH, exampleList, mainField2Types);
+ assertEquals(Test.MATCH, exampleList, mainField3Types);
+ assertEquals(Test.MATCH, exampleList, mainField4Types);
+
+ // Test metadata set without a list
+ mainField1Types = msg2.getMainField1();
+ mainField2Types = msg2.getMainField2();
+ mainField3Types = msg2.getMainField3();
+ mainField4Types = msg2.getMainField4();
+
+ // Valid Tests
+ assertEquals(Test.MATCH, MetadataType.CURRENT_TEMPERATURE, mainField1Types.get(0));
+ assertEquals(Test.MATCH, MetadataType.HUMIDITY, mainField2Types.get(0));
+ assertEquals(Test.MATCH, MetadataType.MAXIMUM_TEMPERATURE, mainField3Types.get(0));
+ assertEquals(Test.MATCH, MetadataType.MEDIA_ALBUM, mainField4Types.get(0));
+
+ // Invalid/Null Tests
+ MetadataTags msg = new MetadataTags();
+ assertNotNull(Test.NOT_NULL, msg);
+
+ assertNull(Test.NULL, msg.getMainField1());
+ assertNull(Test.NULL, msg.getMainField2());
+ assertNull(Test.NULL, msg.getMainField3());
+ assertNull(Test.NULL, msg.getMainField4());
+ }
+
+ public void testJson() {
+ JSONObject reference = new JSONObject();
+
+ try {
+ reference.put(MetadataTags.KEY_MAIN_FIELD_1_TYPE, Test.JSON_TEXTFIELDTYPES);
+ reference.put(MetadataTags.KEY_MAIN_FIELD_2_TYPE, Test.JSON_TEXTFIELDTYPES);
+ reference.put(MetadataTags.KEY_MAIN_FIELD_3_TYPE, Test.JSON_TEXTFIELDTYPES);
+ reference.put(MetadataTags.KEY_MAIN_FIELD_4_TYPE, Test.JSON_TEXTFIELDTYPES);
+
+ JSONObject underTest = msg.serializeJSON();
+ assertEquals(Test.MATCH, reference.length(), underTest.length());
+
+ Iterator<?> iterator = reference.keys();
+ while (iterator.hasNext()) {
+ String key = (String) iterator.next();
+ assertEquals(Test.MATCH, JsonUtils.readObjectFromJsonObject(reference, key), JsonUtils.readObjectFromJsonObject(underTest, key));
+ }
+ } catch (JSONException e) {
+ fail(Test.JSON_FAIL);
+ }
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/OasisAddressTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/OasisAddressTests.java
new file mode 100644
index 000000000..cf39a3c18
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/OasisAddressTests.java
@@ -0,0 +1,95 @@
+package com.smartdevicelink.test.rpc.datatypes;
+
+import com.smartdevicelink.proxy.rpc.OasisAddress;
+import com.smartdevicelink.test.Test;
+
+import junit.framework.TestCase;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Iterator;
+
+/**
+ * Created by austinkirk on 6/7/17.
+ */
+
+public class OasisAddressTests extends TestCase {
+ private OasisAddress msg;
+
+ @Override
+ public void setUp(){
+ msg = Test.GENERAL_OASISADDRESS;
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Test Values
+ String f1 = msg.getAdministrativeArea();
+ String f2 = msg.getSubAdministrativeArea();
+ String f3 = msg.getCountryCode();
+ String f4 = msg.getCountryName();
+ String f5 = msg.getLocality();
+ String f6 = msg.getSubLocality();
+ String f7 = msg.getPostalCode();
+ String f8 = msg.getThoroughfare();
+ String f9 = msg.getSubThoroughfare();
+
+
+ // Valid Tests
+ assertEquals(Test.MATCH, Test.GENERAL_STRING, f1);
+ assertEquals(Test.MATCH, Test.GENERAL_STRING, f2);
+ assertEquals(Test.MATCH, Test.GENERAL_STRING, f3);
+ assertEquals(Test.MATCH, Test.GENERAL_STRING, f4);
+ assertEquals(Test.MATCH, Test.GENERAL_STRING, f5);
+ assertEquals(Test.MATCH, Test.GENERAL_STRING, f6);
+ assertEquals(Test.MATCH, Test.GENERAL_STRING, f7);
+ assertEquals(Test.MATCH, Test.GENERAL_STRING, f8);
+ assertEquals(Test.MATCH, Test.GENERAL_STRING, f9);
+
+ // Invalid/Null Tests
+ OasisAddress msg = new OasisAddress();
+ assertNotNull(Test.NOT_NULL, msg);
+
+ assertNull(msg.getAdministrativeArea());
+ assertNull(msg.getSubAdministrativeArea());
+ assertNull(msg.getCountryCode());
+ assertNull(msg.getCountryName());
+ assertNull(msg.getLocality());
+ assertNull(msg.getSubLocality());
+ assertNull(msg.getPostalCode());
+ assertNull(msg.getThoroughfare());
+ assertNull(msg.getSubThoroughfare());
+ }
+
+ public void testJson(){
+ JSONObject reference = new JSONObject();
+
+ try{
+ reference.put(OasisAddress.KEY_ADMINISTRATIVE_AREA, Test.GENERAL_STRING);
+ reference.put(OasisAddress.KEY_SUB_ADMINISTRATIVE_AREA, Test.GENERAL_STRING);
+ reference.put(OasisAddress.KEY_COUNTRY_CODE, Test.GENERAL_STRING);
+ reference.put(OasisAddress.KEY_COUNTRY_NAME, Test.GENERAL_STRING);
+ reference.put(OasisAddress.KEY_LOCALITY, Test.GENERAL_STRING);
+ reference.put(OasisAddress.KEY_SUB_LOCALITY, Test.GENERAL_STRING);
+ reference.put(OasisAddress.KEY_POSTAL_CODE, Test.GENERAL_STRING);
+ reference.put(OasisAddress.KEY_THOROUGH_FARE, Test.GENERAL_STRING);
+ reference.put(OasisAddress.KEY_SUB_THOROUGH_FARE, Test.GENERAL_STRING);
+
+ JSONObject underTest = msg.serializeJSON();
+ assertEquals(Test.MATCH, reference.length(), underTest.length());
+
+ Iterator<?> iterator = reference.keys();
+ while (iterator.hasNext()) {
+ String key = (String) iterator.next();
+ assertEquals(Test.MATCH, reference.get(key),
+ underTest.get(key));
+ }
+
+ } catch(JSONException e){
+ fail(Test.JSON_FAIL);
+ }
+ }
+} \ No newline at end of file
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/RectangleTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/RectangleTests.java
new file mode 100644
index 000000000..569a4db83
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/RectangleTests.java
@@ -0,0 +1,79 @@
+package com.smartdevicelink.test.rpc.datatypes;
+
+import com.smartdevicelink.proxy.rpc.Rectangle;
+import com.smartdevicelink.test.JsonUtils;
+import com.smartdevicelink.test.Test;
+
+import junit.framework.TestCase;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Iterator;
+
+/**
+ * This is a unit test class for the SmartDeviceLink library project class :
+ * {@link Rectangle}
+ */
+public class RectangleTests extends TestCase {
+
+ private Rectangle msg;
+
+ @Override
+ public void setUp() {
+ msg = new Rectangle();
+
+ msg.setX(Test.GENERAL_FLOAT);
+ msg.setY(Test.GENERAL_FLOAT);
+ msg.setWidth(Test.GENERAL_FLOAT);
+ msg.setHeight(Test.GENERAL_FLOAT);
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Test Values
+ Float x = msg.getX();
+ Float y = msg.getY();
+ Float width = msg.getWidth();
+ Float height = msg.getHeight();
+
+ // Valid Tests
+ assertEquals(Test.MATCH, Test.GENERAL_FLOAT, x);
+ assertEquals(Test.MATCH, Test.GENERAL_FLOAT, y);
+ assertEquals(Test.MATCH, Test.GENERAL_FLOAT, width);
+ assertEquals(Test.MATCH, Test.GENERAL_FLOAT, height);
+
+ // Invalid/Null Tests
+ Rectangle msg = new Rectangle();
+ assertNotNull(Test.NOT_NULL, msg);
+
+ assertNull(Test.NULL, msg.getX());
+ assertNull(Test.NULL, msg.getY());
+ assertNull(Test.NULL, msg.getWidth());
+ assertNull(Test.NULL, msg.getHeight());
+ }
+
+ public void testJson() {
+ JSONObject reference = new JSONObject();
+
+ try {
+ reference.put(Rectangle.KEY_X, (Test.GENERAL_FLOAT));
+ reference.put(Rectangle.KEY_Y, (Test.GENERAL_FLOAT));
+ reference.put(Rectangle.KEY_WIDTH, (Test.GENERAL_FLOAT));
+ reference.put(Rectangle.KEY_HEIGHT, (Test.GENERAL_FLOAT));
+
+ JSONObject underTest = msg.serializeJSON();
+ assertEquals(Test.MATCH, reference.length(), underTest.length());
+
+ Iterator<?> iterator = reference.keys();
+ while (iterator.hasNext()) {
+ String key = (String) iterator.next();
+ assertEquals(Test.MATCH, JsonUtils.readObjectFromJsonObject(reference, key), JsonUtils.readObjectFromJsonObject(underTest, key));
+ }
+ } catch (JSONException e) {
+ fail(Test.JSON_FAIL);
+ }
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SdlMsgVersionTest.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SdlMsgVersionTest.java
index c94afc643..645652ea0 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SdlMsgVersionTest.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SdlMsgVersionTest.java
@@ -25,6 +25,7 @@ public class SdlMsgVersionTest extends TestCase {
msg.setMajorVersion(Test.GENERAL_INT);
msg.setMinorVersion(Test.GENERAL_INT);
+ msg.setPatchVersion(Test.GENERAL_INT);
}
/**
@@ -34,17 +35,20 @@ public class SdlMsgVersionTest extends TestCase {
// Test Values
Integer major = msg.getMajorVersion();
Integer minor = msg.getMinorVersion();
-
+ Integer patch = msg.getPatchVersion();
+
// Valid Tests
assertEquals(Test.MATCH, (Integer) Test.GENERAL_INT, major);
assertEquals(Test.MATCH, (Integer) Test.GENERAL_INT, minor);
-
+ assertEquals(Test.MATCH, (Integer) Test.GENERAL_INT, patch);
+
// Invalid/Null Tests
SdlMsgVersion msg = new SdlMsgVersion();
assertNotNull(Test.NOT_NULL, msg);
assertNull(Test.NULL, msg.getMajorVersion());
assertNull(Test.NULL, msg.getMinorVersion());
+ assertNull(Test.NULL, msg.getPatchVersion());
}
public void testJson() {
@@ -53,6 +57,7 @@ public class SdlMsgVersionTest extends TestCase {
try {
reference.put(SdlMsgVersion.KEY_MAJOR_VERSION, Test.GENERAL_INT);
reference.put(SdlMsgVersion.KEY_MINOR_VERSION, Test.GENERAL_INT);
+ reference.put(SdlMsgVersion.KEY_PATCH_VERSION, Test.GENERAL_INT);
JSONObject underTest = msg.serializeJSON();
assertEquals(Test.MATCH, reference.length(), underTest.length());
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SystemCapabilityTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SystemCapabilityTests.java
new file mode 100644
index 000000000..566b2733e
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SystemCapabilityTests.java
@@ -0,0 +1,61 @@
+package com.smartdevicelink.test.rpc.datatypes;
+
+import com.smartdevicelink.proxy.rpc.SystemCapability;
+import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType;
+import com.smartdevicelink.test.JsonUtils;
+import com.smartdevicelink.test.Test;
+
+import junit.framework.TestCase;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Iterator;
+
+public class SystemCapabilityTests extends TestCase {
+
+ private SystemCapability msg;
+
+ @Override
+ public void setUp() {
+ msg = new SystemCapability();
+
+ msg.setSystemCapabilityType(Test.GENERAL_SYSTEMCAPABILITYTYPE);
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Test Values
+ SystemCapabilityType testType = msg.getSystemCapabilityType();
+
+ // Valid Tests
+ assertEquals(Test.MATCH, (SystemCapabilityType) Test.GENERAL_SYSTEMCAPABILITYTYPE, testType);
+
+ // Invalid/Null Tests
+ SystemCapability msg = new SystemCapability();
+ assertNotNull(Test.NOT_NULL, msg);
+
+ assertNull(Test.NULL, msg.getSystemCapabilityType());
+ }
+
+ public void testJson() {
+ JSONObject reference = new JSONObject();
+
+ try {
+ reference.put(SystemCapability.KEY_SYSTEM_CAPABILITY_TYPE, Test.GENERAL_SYSTEMCAPABILITYTYPE);
+
+ JSONObject underTest = msg.serializeJSON();
+ assertEquals(Test.MATCH, reference.length(), underTest.length());
+
+ Iterator<?> iterator = reference.keys();
+ while (iterator.hasNext()) {
+ String key = (String) iterator.next();
+ assertEquals(Test.MATCH, JsonUtils.readObjectFromJsonObject(reference, key), JsonUtils.readObjectFromJsonObject(underTest, key));
+ }
+ } catch (JSONException e) {
+ fail(Test.JSON_FAIL);
+ }
+ }
+} \ No newline at end of file
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/VideoStreamingCapabilityTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/VideoStreamingCapabilityTests.java
new file mode 100644
index 000000000..54cfc1a22
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/VideoStreamingCapabilityTests.java
@@ -0,0 +1,96 @@
+package com.smartdevicelink.test.rpc.datatypes;
+
+import com.smartdevicelink.marshal.JsonRPCMarshaller;
+import com.smartdevicelink.proxy.rpc.ImageResolution;
+import com.smartdevicelink.proxy.rpc.VideoStreamingCapability;
+import com.smartdevicelink.proxy.rpc.VideoStreamingFormat;
+import com.smartdevicelink.test.JsonUtils;
+import com.smartdevicelink.test.Test;
+import com.smartdevicelink.test.Validator;
+
+import junit.framework.TestCase;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+
+
+public class VideoStreamingCapabilityTests extends TestCase {
+
+ private VideoStreamingCapability msg;
+
+ @Override
+ public void setUp() {
+ msg = new VideoStreamingCapability();
+ msg.setSupportedFormats(Test.GENERAL_VIDEOSTREAMINGFORMAT_LIST);
+ msg.setPreferredResolution(Test.GENERAL_IMAGERESOLUTION);
+ msg.setMaxBitrate(Test.GENERAL_INT);
+ msg.setIsHapticSpatialDataSupported(Test.GENERAL_BOOLEAN);
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Test Values
+ List<VideoStreamingFormat> format = msg.getSupportedFormats();
+ ImageResolution res = msg.getPreferredResolution();
+ Integer maxBitrate = msg.getMaxBitrate();
+ Boolean isHapticSpatialDataSupported = msg.getIsHapticSpatialDataSupported();
+
+ // Valid Tests
+ assertEquals(Test.MATCH, (List<VideoStreamingFormat>) Test.GENERAL_VIDEOSTREAMINGFORMAT_LIST, format);
+ assertEquals(Test.MATCH, (ImageResolution) Test.GENERAL_IMAGERESOLUTION, res);
+ assertEquals(Test.MATCH, (Integer) Test.GENERAL_INT, maxBitrate);
+ assertEquals(Test.MATCH, (Boolean) Test.GENERAL_BOOLEAN, isHapticSpatialDataSupported);
+
+ // Invalid/Null Tests
+ VideoStreamingCapability msg = new VideoStreamingCapability();
+ assertNotNull(Test.NOT_NULL, msg);
+
+ assertNull(Test.NULL, msg.getMaxBitrate());
+ assertNull(Test.NULL, msg.getPreferredResolution());
+ assertNull(Test.NULL, msg.getSupportedFormats());
+ assertNull(Test.NULL, msg.getIsHapticSpatialDataSupported());
+ }
+
+ public void testJson() {
+ JSONObject reference = new JSONObject();
+
+ try {
+ reference.put(VideoStreamingCapability.KEY_MAX_BITRATE, Test.GENERAL_INT);
+ reference.put(VideoStreamingCapability.KEY_PREFERRED_RESOLUTION, Test.GENERAL_IMAGERESOLUTION);
+ reference.put(VideoStreamingCapability.KEY_SUPPORTED_FORMATS, Test.GENERAL_VIDEOSTREAMINGFORMAT_LIST);
+ reference.put(VideoStreamingCapability.KEY_HAPTIC_SPATIAL_DATA_SUPPORTED, Test.GENERAL_BOOLEAN);
+
+ JSONObject underTest = msg.serializeJSON();
+ assertEquals(Test.MATCH, reference.length(), underTest.length());
+
+ Iterator<?> iterator = reference.keys();
+ while (iterator.hasNext()) {
+ String key = (String) iterator.next();
+
+ if (key.equals(VideoStreamingCapability.KEY_MAX_BITRATE) || key.equals(VideoStreamingCapability.KEY_HAPTIC_SPATIAL_DATA_SUPPORTED)) {
+ assertTrue(Test.TRUE, JsonUtils.readIntegerFromJsonObject(reference, key) == JsonUtils.readIntegerFromJsonObject(underTest, key));
+ } else if (key.equals(VideoStreamingCapability.KEY_PREFERRED_RESOLUTION)) {
+ ImageResolution irReference = (ImageResolution) JsonUtils.readObjectFromJsonObject(reference, key);
+ Hashtable<String, Object> hashTest = JsonRPCMarshaller.deserializeJSONObject(JsonUtils.readJsonObjectFromJsonObject(underTest, key));
+ assertTrue(Validator.validateImageResolution(irReference, new ImageResolution(hashTest)));
+ } else if (key.equals(VideoStreamingCapability.KEY_SUPPORTED_FORMATS)){
+ List<VideoStreamingFormat> vsfReference = (List<VideoStreamingFormat>) JsonUtils.readObjectFromJsonObject(reference, key);
+ JSONArray vsfArray = JsonUtils.readJsonArrayFromJsonObject(underTest, key);
+ int i = 0;
+ for(VideoStreamingFormat vsf : vsfReference){
+ assertTrue(Validator.validateSupportedFormats(vsf, new VideoStreamingFormat(JsonRPCMarshaller.deserializeJSONObject(vsfArray.getJSONObject(i++)))));
+ }
+ }
+ }
+ } catch (JSONException e) {
+ fail(Test.JSON_FAIL);
+ }
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/VideoStreamingFormatTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/VideoStreamingFormatTests.java
new file mode 100644
index 000000000..ff7cb2719
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/VideoStreamingFormatTests.java
@@ -0,0 +1,70 @@
+package com.smartdevicelink.test.rpc.datatypes;
+
+import com.smartdevicelink.proxy.rpc.ImageResolution;
+import com.smartdevicelink.proxy.rpc.VideoStreamingCapability;
+import com.smartdevicelink.proxy.rpc.VideoStreamingFormat;
+import com.smartdevicelink.proxy.rpc.enums.VideoStreamingCodec;
+import com.smartdevicelink.proxy.rpc.enums.VideoStreamingProtocol;
+import com.smartdevicelink.test.JsonUtils;
+import com.smartdevicelink.test.Test;
+
+import junit.framework.TestCase;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Iterator;
+
+public class VideoStreamingFormatTests extends TestCase {
+
+ private VideoStreamingFormat msg;
+
+ @Override
+ public void setUp() {
+ msg = new VideoStreamingFormat();
+ msg.setProtocol(Test.GENERAL_VIDEOSTREAMINGPROTOCOL);
+ msg.setCodec(Test.GENERAL_VIDEOSTREAMINGCODEC);
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Test Values
+ VideoStreamingProtocol protocol = msg.getProtocol();
+ VideoStreamingCodec codec = msg.getCodec();
+
+ // Valid Tests
+ assertEquals(Test.MATCH, (VideoStreamingProtocol) Test.GENERAL_VIDEOSTREAMINGPROTOCOL, protocol);
+ assertEquals(Test.MATCH, (VideoStreamingCodec) Test.GENERAL_VIDEOSTREAMINGCODEC, codec);
+
+ // Invalid/Null Tests
+ VideoStreamingFormat msg = new VideoStreamingFormat();
+ assertNotNull(Test.NOT_NULL, msg);
+
+ assertNull(Test.NULL, msg.getProtocol());
+ assertNull(Test.NULL, msg.getCodec());
+ }
+
+ public void testJson() {
+ JSONObject reference = new JSONObject();
+
+ try {
+ reference.put(VideoStreamingFormat.KEY_PROTOCOL, Test.GENERAL_VIDEOSTREAMINGPROTOCOL);
+ reference.put(VideoStreamingFormat.KEY_CODEC, Test.GENERAL_VIDEOSTREAMINGCODEC);
+
+ JSONObject underTest = msg.serializeJSON();
+ assertEquals(Test.MATCH, reference.length(), underTest.length());
+
+ Iterator<?> iterator = reference.keys();
+ while (iterator.hasNext()) {
+ String key = (String) iterator.next();
+
+ assertEquals(Test.MATCH, JsonUtils.readObjectFromJsonObject(reference, key), JsonUtils.readObjectFromJsonObject(underTest, key));
+ }
+ } catch (JSONException e) {
+ fail(Test.JSON_FAIL);
+ }
+ }
+}
+
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/AppHmiTypeTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/AppHmiTypeTests.java
index 76d203901..bcaeae93d 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/AppHmiTypeTests.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/AppHmiTypeTests.java
@@ -10,7 +10,7 @@ import com.smartdevicelink.proxy.rpc.enums.AppHMIType;
/**
* This is a unit test class for the SmartDeviceLink library project class :
- * {@link com.smartdevicelink.rpc.enums.AppHmiType}
+ * {@link com.smartdevicelink.proxy.rpc.enums.AppHMIType}
*/
public class AppHmiTypeTests extends TestCase {
@@ -34,6 +34,8 @@ public class AppHmiTypeTests extends TestCase {
AppHMIType enumSocial = AppHMIType.valueForString(example);
example = "BACKGROUND_PROCESS";
AppHMIType enumBackgroundProcess = AppHMIType.valueForString(example);
+ example = "PROJECTION";
+ AppHMIType enumProjection = AppHMIType.valueForString(example);
example = "TESTING";
AppHMIType enumTesting = AppHMIType.valueForString(example);
example = "SYSTEM";
@@ -47,6 +49,7 @@ public class AppHmiTypeTests extends TestCase {
assertNotNull("INFORMATION returned null", enumInformation);
assertNotNull("SOCIAL returned null", enumSocial);
assertNotNull("BACKGROUND_PROCESS returned null", enumBackgroundProcess);
+ assertNotNull("PROJECTION returned null", enumProjection);
assertNotNull("TESTING returned null", enumTesting);
assertNotNull("SYSTEM returned null", enumSystem);
}
@@ -93,7 +96,8 @@ public class AppHmiTypeTests extends TestCase {
enumTestList.add(AppHMIType.NAVIGATION);
enumTestList.add(AppHMIType.INFORMATION);
enumTestList.add(AppHMIType.SOCIAL);
- enumTestList.add(AppHMIType.BACKGROUND_PROCESS);
+ enumTestList.add(AppHMIType.BACKGROUND_PROCESS);
+ enumTestList.add(AppHMIType.PROJECTION);
enumTestList.add(AppHMIType.TESTING);
enumTestList.add(AppHMIType.SYSTEM);
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/DisplayTypeTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/DisplayTypeTests.java
index 83af2561e..560bdf025 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/DisplayTypeTests.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/DisplayTypeTests.java
@@ -9,15 +9,15 @@ import junit.framework.TestCase;
import com.smartdevicelink.proxy.rpc.enums.DisplayType;
/**
- * This is a unit test class for the SmartDeviceLink library project class :
- * {@link com.smartdevicelink.rpc.enums.DisplayType}
+ * This is a unit test class for the SmartDeviceLink library project class :
+ * {@link com.smartdevicelink.proxy.rpc.enums.DisplayType}
*/
public class DisplayTypeTests extends TestCase {
/**
* Verifies that the enum values are not null upon valid assignment.
*/
- public void testValidEnums () {
+ public void testValidEnums () {
String example = "CID";
DisplayType enumCid = DisplayType.valueForString(example);
example = "TYPE2";
@@ -38,6 +38,8 @@ public class DisplayTypeTests extends TestCase {
DisplayType enumMfd5 = DisplayType.valueForString(example);
example = "GEN3_8-INCH";
DisplayType enumGen3_8Inch = DisplayType.valueForString(example);
+ example = "SDL_GENERIC";
+ DisplayType enumGeneric = DisplayType.valueForString(example);
assertNotNull("CID returned null", enumCid);
assertNotNull("TYPE2 returned null", enumType2);
@@ -49,6 +51,7 @@ public class DisplayTypeTests extends TestCase {
assertNotNull("MFD4 returned null", enumMfd4);
assertNotNull("MFD5 returned null", enumMfd5);
assertNotNull("GEN3_8-INCH returned null", enumGen3_8Inch);
+ assertNotNull("SDL_GENERIC returned null", enumGeneric);
}
/**
@@ -57,11 +60,11 @@ public class DisplayTypeTests extends TestCase {
public void testInvalidEnum () {
String example = "cId";
try {
- DisplayType temp = DisplayType.valueForString(example);
- assertNull("Result of valueForString should be null.", temp);
+ DisplayType temp = DisplayType.valueForString(example);
+ assertNull("Result of valueForString should be null.", temp);
}
catch (IllegalArgumentException exception) {
- fail("Invalid enum throws IllegalArgumentException.");
+ fail("Invalid enum throws IllegalArgumentException.");
}
}
@@ -71,19 +74,19 @@ public class DisplayTypeTests extends TestCase {
public void testNullEnum () {
String example = null;
try {
- DisplayType temp = DisplayType.valueForString(example);
- assertNull("Result of valueForString should be null.", temp);
+ DisplayType temp = DisplayType.valueForString(example);
+ assertNull("Result of valueForString should be null.", temp);
}
catch (NullPointerException exception) {
- fail("Null string throws NullPointerException.");
+ fail("Null string throws NullPointerException.");
}
}
-
+
/**
* Verifies the possible enum values of DisplayType.
*/
public void testListEnum() {
- List<DisplayType> enumValueList = Arrays.asList(DisplayType.values());
+ List<DisplayType> enumValueList = Arrays.asList(DisplayType.values());
List<DisplayType> enumTestList = new ArrayList<DisplayType>();
enumTestList.add(DisplayType.CID);
@@ -91,13 +94,14 @@ public class DisplayTypeTests extends TestCase {
enumTestList.add(DisplayType.TYPE5);
enumTestList.add(DisplayType.NGN);
enumTestList.add(DisplayType.GEN2_8_DMA);
- enumTestList.add(DisplayType.GEN2_6_DMA);
+ enumTestList.add(DisplayType.GEN2_6_DMA);
enumTestList.add(DisplayType.MFD3);
- enumTestList.add(DisplayType.MFD4);
+ enumTestList.add(DisplayType.MFD4);
enumTestList.add(DisplayType.MFD5);
- enumTestList.add(DisplayType.GEN3_8_INCH);
+ enumTestList.add(DisplayType.GEN3_8_INCH);
+ enumTestList.add(DisplayType.SDL_GENERIC);
- assertTrue("Enum value list does not match enum class list",
+ assertTrue("Enum value list does not match enum class list",
enumValueList.containsAll(enumTestList) && enumTestList.containsAll(enumValueList));
- }
+ }
} \ No newline at end of file
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/LanguageTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/LanguageTests.java
index 3679a9ffc..6b87c5d26 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/LanguageTests.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/LanguageTests.java
@@ -10,7 +10,7 @@ import com.smartdevicelink.proxy.rpc.enums.Language;
/**
* This is a unit test class for the SmartDeviceLink library project class :
- * {@link com.smartdevicelink.rpc.enums.Language}
+ * {@link com.smartdevicelink.proxy.rpc.enums.Language}
*/
public class LanguageTests extends TestCase {
@@ -20,6 +20,32 @@ public class LanguageTests extends TestCase {
public void testValidEnums () {
String example = "EN-US";
Language enumEnUs = Language.valueForString(example);
+ example = "EN-SA";
+ Language enumEnSa = Language.valueForString(example);
+ example = "HE-IL";
+ Language enumHeIl = Language.valueForString(example);
+ example = "RO-RO";
+ Language enumRoRo = Language.valueForString(example);
+ example = "UK-UA";
+ Language enumUkUa = Language.valueForString(example);
+ example = "ID-ID";
+ Language enumIdId = Language.valueForString(example);
+ example = "VI-VN";
+ Language enumViVn = Language.valueForString(example);
+ example = "MS-MY";
+ Language enumMsMy = Language.valueForString(example);
+ example = "HI-IN";
+ Language enumHiIn = Language.valueForString(example);
+ example = "NL-BE";
+ Language enumNlBe = Language.valueForString(example);
+ example = "EL-GR";
+ Language enumElGr = Language.valueForString(example);
+ example = "HU-HU";
+ Language enumHuHu = Language.valueForString(example);
+ example = "FI-FI";
+ Language enumFiFi = Language.valueForString(example);
+ example = "SK-SK";
+ Language enumSkSk = Language.valueForString(example);
example = "ES-MX";
Language enumEsMx = Language.valueForString(example);
example = "FR-CA";
@@ -66,8 +92,25 @@ public class LanguageTests extends TestCase {
Language enumDaDk = Language.valueForString(example);
example = "NO-NO";
Language enumNoNo = Language.valueForString(example);
+ example = "EN-IN";
+ Language enumEnIn = Language.valueForString(example);
+ example = "TH-TH";
+ Language enumThTh = Language.valueForString(example);
assertNotNull("EN-US returned null", enumEnUs);
+ assertNotNull("EN-SA returned null", enumEnSa);
+ assertNotNull("HE-IL returned null", enumHeIl);
+ assertNotNull("RO-RO returned null", enumRoRo);
+ assertNotNull("UK-UA returned null", enumUkUa);
+ assertNotNull("ID-ID returned null", enumIdId);
+ assertNotNull("VI-VN returned null", enumViVn);
+ assertNotNull("MS-MY returned null", enumMsMy);
+ assertNotNull("HI-IN returned null", enumHiIn);
+ assertNotNull("NL-BE returned null", enumNlBe);
+ assertNotNull("EL-GR returned null", enumElGr);
+ assertNotNull("HU-HU returned null", enumHuHu);
+ assertNotNull("FI-FI returned null", enumFiFi);
+ assertNotNull("SK-SK returned null", enumSkSk);
assertNotNull("ES-MX returned null", enumEsMx);
assertNotNull("FR-CA returned null", enumFrCa);
assertNotNull("DE-DE returned null", enumDeDe);
@@ -91,6 +134,8 @@ public class LanguageTests extends TestCase {
assertNotNull("CS-CZ returned null", enumCsCz);
assertNotNull("DA-DK returned null", enumDaDk);
assertNotNull("NO-NO returned null", enumNoNo);
+ assertNotNull("EN-IN returned null", enumEnIn);
+ assertNotNull("TH-TH returned null", enumThTh);
}
/**
@@ -130,6 +175,19 @@ public class LanguageTests extends TestCase {
List<Language> enumTestList = new ArrayList<Language>();
enumTestList.add(Language.EN_US);
+ enumTestList.add(Language.EN_SA);
+ enumTestList.add(Language.HE_IL);
+ enumTestList.add(Language.RO_RO);
+ enumTestList.add(Language.UK_UA);
+ enumTestList.add(Language.ID_ID);
+ enumTestList.add(Language.VI_VN);
+ enumTestList.add(Language.MS_MY);
+ enumTestList.add(Language.HI_IN);
+ enumTestList.add(Language.NL_BE);
+ enumTestList.add(Language.EL_GR);
+ enumTestList.add(Language.HU_HU);
+ enumTestList.add(Language.FI_FI);
+ enumTestList.add(Language.SK_SK);
enumTestList.add(Language.ES_MX);
enumTestList.add(Language.FR_CA);
enumTestList.add(Language.DE_DE);
@@ -153,6 +211,8 @@ public class LanguageTests extends TestCase {
enumTestList.add(Language.CS_CZ);
enumTestList.add(Language.DA_DK);
enumTestList.add(Language.NO_NO);
+ enumTestList.add(Language.EN_IN);
+ enumTestList.add(Language.TH_TH);
assertTrue("Enum value list does not match enum class list",
enumValueList.containsAll(enumTestList) && enumTestList.containsAll(enumValueList));
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/MetadataTypeTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/MetadataTypeTests.java
new file mode 100644
index 000000000..c1aff1bdd
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/MetadataTypeTests.java
@@ -0,0 +1,114 @@
+package com.smartdevicelink.test.rpc.enums;
+
+import com.smartdevicelink.proxy.rpc.enums.MetadataType;
+
+import junit.framework.TestCase;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+
+/**
+ * This is a unit test class for the SmartDeviceLink library project class :
+ * {@link com.smartdevicelink.proxy.rpc.MetadataTags}
+ */
+
+public class MetadataTypeTests extends TestCase{
+
+ /**
+ * Verifies that the enum values are not null upon valid assignment.
+ */
+ public void testValidEnums () {
+ String example = "mediaTitle";
+ MetadataType enumMediaTitle = MetadataType.valueForString(example);
+ example = "mediaArtist";
+ MetadataType enumMediaArtist = MetadataType.valueForString(example);
+ example = "mediaAlbum";
+ MetadataType enumMediaAlbum = MetadataType.valueForString(example);
+ example = "mediaYear";
+ MetadataType enumMediaYear = MetadataType.valueForString(example);
+ example = "mediaGenre";
+ MetadataType enumMediaGenre = MetadataType.valueForString(example);
+ example = "mediaStation";
+ MetadataType enumMediaStation = MetadataType.valueForString(example);
+ example = "rating";
+ MetadataType enumRating = MetadataType.valueForString(example);
+ example = "currentTemperature";
+ MetadataType enumCurrentTemperature = MetadataType.valueForString(example);
+ example = "maximumTemperature";
+ MetadataType enumMaximumTemperature = MetadataType.valueForString(example);
+ example = "minimumTemperature";
+ MetadataType enumMinimumTemperature = MetadataType.valueForString(example);
+ example = "weatherTerm";
+ MetadataType enumWeatherTerm = MetadataType.valueForString(example);
+ example = "humidity";
+ MetadataType enumHumidity = MetadataType.valueForString(example);
+
+
+ assertNotNull("mediaTitle returned null", enumMediaTitle);
+ assertNotNull("mediaArtist returned null", enumMediaArtist);
+ assertNotNull("mediaAlbum returned null", enumMediaAlbum);
+ assertNotNull("mediaYear returned null", enumMediaYear);
+ assertNotNull("mediaGenre returned null", enumMediaGenre);
+ assertNotNull("mediaStation returned null", enumMediaStation);
+ assertNotNull("rating returned null", enumRating);
+ assertNotNull("currentTemperature returned null", enumCurrentTemperature);
+ assertNotNull("maximumTemperature returned null", enumMaximumTemperature);
+ assertNotNull("minimumTemperature returned null", enumMinimumTemperature);
+ assertNotNull("weatherTerm returned null", enumWeatherTerm);
+ assertNotNull("humidity returned null", enumHumidity);
+ }
+
+ /**
+ * Verifies that an invalid assignment is null.
+ */
+ public void testInvalidEnum () {
+ String example = "MEDIA_TITLEZ";
+ try {
+ MetadataType temp = MetadataType.valueForString(example);
+ assertNull("Result of valueForString should be null.", temp);
+ }
+ catch (IllegalArgumentException exception) {
+ fail("Invalid enum throws IllegalArgumentException.");
+ }
+ }
+
+ /**
+ * Verifies that a null assignment is invalid.
+ */
+ public void testNullEnum () {
+ String example = null;
+ try {
+ MetadataType temp = MetadataType.valueForString(example);
+ assertNull("Result of valueForString should be null.", temp);
+ }
+ catch (NullPointerException exception) {
+ fail("Null string throws NullPointerException.");
+ }
+ }
+
+ /**
+ * Verifies the possible enum values of MetadataType.
+ */
+ public void testListEnum() {
+ List<MetadataType> enumValueList = Arrays.asList(MetadataType.values());
+
+ List<MetadataType> enumTestList = new ArrayList<MetadataType>();
+ enumTestList.add(MetadataType.MEDIA_TITLE);
+ enumTestList.add(MetadataType.MEDIA_ARTIST);
+ enumTestList.add(MetadataType.MEDIA_ALBUM);
+ enumTestList.add(MetadataType.MEDIA_YEAR);
+ enumTestList.add(MetadataType.MEDIA_GENRE);
+ enumTestList.add(MetadataType.MEDIA_STATION);
+ enumTestList.add(MetadataType.RATING);
+ enumTestList.add(MetadataType.CURRENT_TEMPERATURE);
+ enumTestList.add(MetadataType.MAXIMUM_TEMPERATURE);
+ enumTestList.add(MetadataType.MINIMUM_TEMPERATURE);
+ enumTestList.add(MetadataType.WEATHER_TERM);
+ enumTestList.add(MetadataType.HUMIDITY);
+
+ assertTrue("Enum value list does not match enum class list",
+ enumValueList.containsAll(enumTestList) && enumTestList.containsAll(enumValueList));
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/TouchTypeTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/TouchTypeTests.java
index 06636a045..db9c417ef 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/TouchTypeTests.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/TouchTypeTests.java
@@ -1,16 +1,16 @@
package com.smartdevicelink.test.rpc.enums;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import com.smartdevicelink.proxy.rpc.enums.TouchType;
import junit.framework.TestCase;
-import com.smartdevicelink.proxy.rpc.enums.TouchType;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
/**
* This is a unit test class for the SmartDeviceLink library project class :
- * {@link com.smartdevicelink.rpc.enums.TouchType}
+ * {@link com.smartdevicelink.proxy.rpc.enums.TouchType}
*/
public class TouchTypeTests extends TestCase {
@@ -24,10 +24,14 @@ public class TouchTypeTests extends TestCase {
TouchType enumMove = TouchType.valueForString(example);
example = "END";
TouchType enumEnd = TouchType.valueForString(example);
-
+ example = "CANCEL";
+ TouchType enumCancel = TouchType.valueForString(example);
+
+
assertNotNull("BEGIN returned null", enumBegin);
assertNotNull("MOVE returned null", enumMove);
assertNotNull("END returned null", enumEnd);
+ assertNotNull("CANCEL returned null", enumCancel);
}
/**
@@ -69,6 +73,7 @@ public class TouchTypeTests extends TestCase {
enumTestList.add(TouchType.BEGIN);
enumTestList.add(TouchType.MOVE);
enumTestList.add(TouchType.END);
+ enumTestList.add(TouchType.CANCEL);
assertTrue("Enum value list does not match enum class list",
enumValueList.containsAll(enumTestList) && enumTestList.containsAll(enumValueList));
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/VideoStreamingCodecTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/VideoStreamingCodecTests.java
new file mode 100644
index 000000000..b4aa8fd97
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/VideoStreamingCodecTests.java
@@ -0,0 +1,79 @@
+package com.smartdevicelink.test.rpc.enums;
+import com.smartdevicelink.proxy.rpc.enums.VideoStreamingCodec;
+
+import junit.framework.TestCase;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class VideoStreamingCodecTests extends TestCase {
+
+ /**
+ * Verifies that the enum values are not null upon valid assignment.
+ */
+ public void testValidEnums () {
+ String example = "H264";
+ VideoStreamingCodec enumH264 = VideoStreamingCodec.valueForString(example);
+ example = "H265";
+ VideoStreamingCodec enumH265 = VideoStreamingCodec.valueForString(example);
+ example = "Theora";
+ VideoStreamingCodec enumTheora = VideoStreamingCodec.valueForString(example);
+ example = "VP8";
+ VideoStreamingCodec enumVP8 = VideoStreamingCodec.valueForString(example);
+ example = "VP9";
+ VideoStreamingCodec enumVP9 = VideoStreamingCodec.valueForString(example);
+
+ assertNotNull("H264 returned null", enumH264);
+ assertNotNull("H265 returned null", enumH265);
+ assertNotNull("Theora returned null", enumTheora);
+ assertNotNull("VP8 returned null", enumVP8);
+ assertNotNull("VP9 returned null", enumVP9);
+ }
+
+ /**
+ * Verifies that an invalid assignment is null.
+ */
+ public void testInvalidEnum () {
+ String example = "H234";
+ try {
+ VideoStreamingCodec temp = VideoStreamingCodec.valueForString(example);
+ assertNull("Result of valueForString should be null.", temp);
+ }
+ catch (IllegalArgumentException exception) {
+ fail("Invalid enum throws IllegalArgumentException.");
+ }
+ }
+
+ /**
+ * Verifies that a null assignment is invalid.
+ */
+ public void testNullEnum () {
+ String example = null;
+ try {
+ VideoStreamingCodec temp = VideoStreamingCodec.valueForString(example);
+ assertNull("Result of valueForString should be null.", temp);
+ }
+ catch (NullPointerException exception) {
+ fail("Null string throws NullPointerException.");
+ }
+ }
+
+
+ /**
+ * Verifies the possible enum values of TouchType.
+ */
+ public void testListEnum() {
+ List<VideoStreamingCodec> enumValueList = Arrays.asList(VideoStreamingCodec.values());
+
+ List<VideoStreamingCodec> enumTestList = new ArrayList<VideoStreamingCodec>();
+ enumTestList.add(VideoStreamingCodec.H264);
+ enumTestList.add(VideoStreamingCodec.H265);
+ enumTestList.add(VideoStreamingCodec.Theora);
+ enumTestList.add(VideoStreamingCodec.VP8);
+ enumTestList.add(VideoStreamingCodec.VP9);
+
+ assertTrue("Enum value list does not match enum class list",
+ enumValueList.containsAll(enumTestList) && enumTestList.containsAll(enumValueList));
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/VideoStreamingProtocolTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/VideoStreamingProtocolTests.java
new file mode 100644
index 000000000..be50d2c30
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/VideoStreamingProtocolTests.java
@@ -0,0 +1,82 @@
+package com.smartdevicelink.test.rpc.enums;
+
+import com.smartdevicelink.proxy.rpc.enums.VideoStreamingCodec;
+import com.smartdevicelink.proxy.rpc.enums.VideoStreamingProtocol;
+
+import junit.framework.TestCase;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class VideoStreamingProtocolTests extends TestCase {
+
+ /**
+ * Verifies that the enum values are not null upon valid assignment.
+ */
+ public void testValidEnums () {
+ String example = "RAW";
+ VideoStreamingProtocol enumRAW = VideoStreamingProtocol.valueForString(example);
+ example = "RTP";
+ VideoStreamingProtocol enumRTP = VideoStreamingProtocol.valueForString(example);
+ example = "RTSP";
+ VideoStreamingProtocol enumRTSP = VideoStreamingProtocol.valueForString(example);
+ example = "RTMP";
+ VideoStreamingProtocol enumRTMP = VideoStreamingProtocol.valueForString(example);
+ example = "WEBM";
+ VideoStreamingProtocol enumWEBM = VideoStreamingProtocol.valueForString(example);
+
+ assertNotNull("RAW returned null", enumRAW);
+ assertNotNull("RTP returned null", enumRTP);
+ assertNotNull("RTSP returned null", enumRTSP);
+ assertNotNull("RTMP returned null", enumRTMP);
+ assertNotNull("WEBM returned null", enumWEBM);
+ }
+
+ /**
+ * Verifies that an invalid assignment is null.
+ */
+ public void testInvalidEnum () {
+ String example = "RAAW";
+ try {
+ VideoStreamingProtocol temp = VideoStreamingProtocol.valueForString(example);
+ assertNull("Result of valueForString should be null.", temp);
+ }
+ catch (IllegalArgumentException exception) {
+ fail("Invalid enum throws IllegalArgumentException.");
+ }
+ }
+
+ /**
+ * Verifies that a null assignment is invalid.
+ */
+ public void testNullEnum () {
+ String example = null;
+ try {
+ VideoStreamingProtocol temp = VideoStreamingProtocol.valueForString(example);
+ assertNull("Result of valueForString should be null.", temp);
+ }
+ catch (NullPointerException exception) {
+ fail("Null string throws NullPointerException.");
+ }
+ }
+
+
+ /**
+ * Verifies the possible enum values of TouchType.
+ */
+ public void testListEnum() {
+ List<VideoStreamingProtocol> enumValueList = Arrays.asList(VideoStreamingProtocol.values());
+
+ List<VideoStreamingProtocol> enumTestList = new ArrayList<VideoStreamingProtocol>();
+ enumTestList.add(VideoStreamingProtocol.RAW);
+ enumTestList.add(VideoStreamingProtocol.RTP);
+ enumTestList.add(VideoStreamingProtocol.RTSP);
+ enumTestList.add(VideoStreamingProtocol.RTMP);
+ enumTestList.add(VideoStreamingProtocol.WEBM);
+
+ assertTrue("Enum value list does not match enum class list",
+ enumValueList.containsAll(enumTestList) && enumTestList.containsAll(enumValueList));
+ }
+}
+
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/notifications/OnSdlChoiceChosenTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/notifications/OnSdlChoiceChosenTests.java
index 2725f4eae..77d2cdb21 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/notifications/OnSdlChoiceChosenTests.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/notifications/OnSdlChoiceChosenTests.java
@@ -14,14 +14,16 @@ import com.smartdevicelink.test.Validator;
/**
* This is a unit test class for the SmartDeviceLink library project class :
- * {@link com.smartdevicelink.rpc.OnSdlChoiceChosen}
+ * {@link com.smartdevicelink.proxy.rpc.OnSdlChoiceChosen}
*/
public class OnSdlChoiceChosenTests extends BaseRpcTests{
+ SdlChoice sdlChoice;
+
@Override
protected RPCMessage createMessage(){
OnSdlChoiceChosen msg = new OnSdlChoiceChosen();
- SdlChoice sdlChoice = msg.new SdlChoice(Test.GENERAL_CHOICE);
+ sdlChoice = msg.new SdlChoice(Test.GENERAL_CHOICE);
msg.setTriggerSource(Test.GENERAL_TRIGGERSOURCE);
msg.setSdlChoice(sdlChoice);
@@ -45,7 +47,7 @@ public class OnSdlChoiceChosenTests extends BaseRpcTests{
try{
result.put(OnSdlChoiceChosen.KEY_TRIGGER_SOURCE, Test.GENERAL_TRIGGERSOURCE);
- result.put(OnSdlChoiceChosen.KEY_SDL_CHOICE, Test.JSON_CHOICE);
+ result.put(OnSdlChoiceChosen.KEY_SDL_CHOICE, sdlChoice);
}catch(JSONException e){
fail(Test.JSON_FAIL);
}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/notifications/OnStreamRPCTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/notifications/OnStreamRPCTests.java
new file mode 100644
index 000000000..58db7d8eb
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/notifications/OnStreamRPCTests.java
@@ -0,0 +1,76 @@
+package com.smartdevicelink.test.rpc.notifications;
+
+import com.smartdevicelink.protocol.enums.FunctionID;
+import com.smartdevicelink.proxy.RPCMessage;
+import com.smartdevicelink.proxy.rpc.OnStreamRPC;
+import com.smartdevicelink.test.BaseRpcTests;
+import com.smartdevicelink.test.Test;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/**
+ * Created by austinkirk on 6/7/17.
+ */
+
+public class OnStreamRPCTests extends BaseRpcTests {
+ @Override
+ protected RPCMessage createMessage(){
+ OnStreamRPC msg = new OnStreamRPC();
+
+ msg.setBytesComplete(Test.GENERAL_LONG);
+ msg.setFileName(Test.GENERAL_STRING);
+ msg.setFileSize(Test.GENERAL_LONG);
+
+ return msg;
+ }
+
+ @Override
+ protected String getMessageType(){
+ return RPCMessage.KEY_NOTIFICATION;
+ }
+
+ @Override
+ protected String getCommandType(){
+ return FunctionID.ON_STREAM_RPC.toString();
+ }
+
+ @Override
+ protected JSONObject getExpectedParameters(int sdlVersion){
+ JSONObject result = new JSONObject();
+
+ try{
+ result.put(OnStreamRPC.KEY_BYTESCOMPLETE, Test.GENERAL_LONG);
+ result.put(OnStreamRPC.KEY_FILENAME, Test.GENERAL_STRING);
+ result.put(OnStreamRPC.KEY_FILESIZE, Test.GENERAL_LONG);
+ }catch(JSONException e){
+ fail(Test.JSON_FAIL);
+ }
+
+ return result;
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Test Values
+ Long bytes = ((OnStreamRPC) msg).getBytesComplete();
+ String fileName = ((OnStreamRPC) msg).getFileName();
+ Long fileSize = ((OnStreamRPC) msg).getFileSize();
+
+ // Valid Tests
+ assertEquals(Test.MATCH, Test.GENERAL_LONG, bytes);
+ assertEquals(Test.MATCH, Test.GENERAL_STRING, fileName);
+ assertEquals(Test.MATCH, Test.GENERAL_LONG, fileSize);
+
+ // Invalid/Null Tests
+ OnStreamRPC msg = new OnStreamRPC();
+ assertNotNull(Test.NOT_NULL, msg);
+ testNullBase(msg);
+
+ assertNull(Test.NULL, msg.getBytesComplete());
+ assertNull(Test.NULL, msg.getFileName());
+ assertNull(Test.NULL, msg.getFileSize());
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/notifications/OnWayPointChangeTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/notifications/OnWayPointChangeTests.java
new file mode 100644
index 000000000..dcc02dafd
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/notifications/OnWayPointChangeTests.java
@@ -0,0 +1,86 @@
+package com.smartdevicelink.test.rpc.notifications;
+
+import com.smartdevicelink.marshal.JsonRPCMarshaller;
+import com.smartdevicelink.protocol.enums.FunctionID;
+import com.smartdevicelink.proxy.RPCMessage;
+import com.smartdevicelink.proxy.rpc.GetWayPointsResponse;
+import com.smartdevicelink.proxy.rpc.LocationDetails;
+import com.smartdevicelink.proxy.rpc.OnWayPointChange;
+import com.smartdevicelink.test.BaseRpcTests;
+import com.smartdevicelink.test.Test;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by austinkirk on 6/7/17.
+ */
+
+public class OnWayPointChangeTests extends BaseRpcTests {
+ @Override
+ protected RPCMessage createMessage(){
+ OnWayPointChange msg = new OnWayPointChange();
+
+ List<LocationDetails> list = new ArrayList<>();
+ list.add(Test.GENERAL_LOCATIONDETAILS);
+ list.add(Test.GENERAL_LOCATIONDETAILS);
+
+ msg.setWayPoints(list);
+
+ return msg;
+ }
+
+ @Override
+ protected String getMessageType(){
+ return RPCMessage.KEY_NOTIFICATION;
+ }
+
+ @Override
+ protected String getCommandType(){
+ return FunctionID.ON_WAY_POINT_CHANGE.toString();
+ }
+
+ @Override
+ protected JSONObject getExpectedParameters(int sdlVersion){
+ JSONObject result = new JSONObject();
+
+ JSONArray jsonArray = new JSONArray();
+ try {
+ jsonArray.put(JsonRPCMarshaller.serializeHashtable(Test.GENERAL_LOCATIONDETAILS.getStore()));
+ jsonArray.put(JsonRPCMarshaller.serializeHashtable(Test.GENERAL_LOCATIONDETAILS.getStore()));
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+
+ try {
+ result.put(GetWayPointsResponse.KEY_WAY_POINTS, jsonArray);
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+
+ return result;
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Test Values
+ List<LocationDetails> list = ((OnWayPointChange) msg).getWayPoints();
+
+ // Valid Tests
+ assertEquals(Test.MATCH, Test.GENERAL_LOCATIONDETAILS, list.get(0));
+ assertEquals(Test.MATCH, Test.GENERAL_LOCATIONDETAILS, list.get(1));
+
+ // Invalid/Null Tests
+ OnWayPointChange msg = new OnWayPointChange();
+ assertNotNull(Test.NOT_NULL, msg);
+ testNullBase(msg);
+
+ assertNull(Test.NULL, msg.getWayPoints());
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/DialNumberTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/DialNumberTests.java
new file mode 100644
index 000000000..40a8d432f
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/DialNumberTests.java
@@ -0,0 +1,97 @@
+package com.smartdevicelink.test.rpc.requests;
+
+import com.smartdevicelink.marshal.JsonRPCMarshaller;
+import com.smartdevicelink.protocol.enums.FunctionID;
+import com.smartdevicelink.proxy.RPCMessage;
+import com.smartdevicelink.proxy.rpc.DialNumber;
+import com.smartdevicelink.test.BaseRpcTests;
+import com.smartdevicelink.test.JsonUtils;
+import com.smartdevicelink.test.Test;
+import com.smartdevicelink.test.json.rpc.JsonFileReader;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Hashtable;
+
+/**
+ * Created by austinkirk on 6/6/17.
+ */
+
+public class DialNumberTests extends BaseRpcTests {
+
+ private final String TEST_NUMBER = "5558675309";
+
+ @Override
+ protected RPCMessage createMessage(){
+ DialNumber msg = new DialNumber();
+
+ msg.setNumber(TEST_NUMBER);
+
+ return msg;
+ }
+
+ @Override
+ protected String getMessageType(){
+ return RPCMessage.KEY_REQUEST;
+ }
+
+ @Override
+ protected String getCommandType(){
+ return FunctionID.DIAL_NUMBER.toString();
+ }
+
+ @Override
+ protected JSONObject getExpectedParameters(int sdlVersion){
+ JSONObject result = new JSONObject();
+
+ try{
+ result.put(DialNumber.KEY_NUMBER, TEST_NUMBER);
+ }catch(JSONException e){
+ fail(Test.JSON_FAIL);
+ }
+
+ return result;
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Test Values
+ String testNumber = ((DialNumber) msg).getNumber();
+
+ // Valid Tests
+ assertEquals(Test.MATCH, TEST_NUMBER, testNumber);
+ // Invalid/Null Tests
+ DialNumber msg = new DialNumber();
+ assertNotNull(Test.NOT_NULL, msg);
+ testNullBase(msg);
+
+ assertNull(Test.NULL, msg.getNumber());
+ }
+
+ /**
+ * Tests a valid JSON construction of this RPC message.
+ */
+ public void testJsonConstructor () {
+ JSONObject commandJson = JsonFileReader.readId(this.mContext, getCommandType(), getMessageType());
+ assertNotNull(Test.NOT_NULL, commandJson);
+
+ try {
+ Hashtable<String, Object> hash = JsonRPCMarshaller.deserializeJSONObject(commandJson);
+ DialNumber cmd = new DialNumber(hash);
+ JSONObject body = JsonUtils.readJsonObjectFromJsonObject(commandJson, getMessageType());
+ assertNotNull(Test.NOT_NULL, body);
+
+ // Test everything in the json body.
+ assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(body, RPCMessage.KEY_FUNCTION_NAME), cmd.getFunctionName());
+ assertEquals(Test.MATCH, JsonUtils.readIntegerFromJsonObject(body, RPCMessage.KEY_CORRELATION_ID), cmd.getCorrelationID());
+
+ JSONObject parameters = JsonUtils.readJsonObjectFromJsonObject(body, RPCMessage.KEY_PARAMETERS);
+ assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(parameters, DialNumber.KEY_NUMBER), cmd.getNumber());
+ } catch (JSONException e) {
+ fail(Test.JSON_FAIL);
+ }
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/GetSystemCapabilityTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/GetSystemCapabilityTests.java
new file mode 100644
index 000000000..78d4507da
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/GetSystemCapabilityTests.java
@@ -0,0 +1,95 @@
+package com.smartdevicelink.test.rpc.requests;
+
+import com.smartdevicelink.marshal.JsonRPCMarshaller;
+import com.smartdevicelink.protocol.enums.FunctionID;
+import com.smartdevicelink.proxy.RPCMessage;
+import com.smartdevicelink.proxy.rpc.GetSystemCapability;
+import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType;
+import com.smartdevicelink.test.BaseRpcTests;
+import com.smartdevicelink.test.JsonUtils;
+import com.smartdevicelink.test.Test;
+import com.smartdevicelink.test.json.rpc.JsonFileReader;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Hashtable;
+
+public class GetSystemCapabilityTests extends BaseRpcTests {
+
+ @Override
+ protected RPCMessage createMessage(){
+ GetSystemCapability msg = new GetSystemCapability();
+
+ msg.setSystemCapabilityType(Test.GENERAL_SYSTEMCAPABILITYTYPE);
+
+ return msg;
+ }
+
+ @Override
+ protected String getMessageType(){
+ return RPCMessage.KEY_REQUEST;
+ }
+
+ @Override
+ protected String getCommandType(){
+ return FunctionID.GET_SYSTEM_CAPABILITY.toString();
+ }
+
+ @Override
+ protected JSONObject getExpectedParameters(int sdlVersion){
+ JSONObject result = new JSONObject();
+
+ try{
+ result.put(GetSystemCapability.KEY_SYSTEM_CAPABILITY_TYPE, Test.GENERAL_SYSTEMCAPABILITYTYPE);
+ }catch(JSONException e){
+ fail(Test.JSON_FAIL);
+ }
+
+ return result;
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Test Values
+ SystemCapabilityType testType = ( (GetSystemCapability) msg ).getSystemCapabilityType();
+
+ // Valid Tests
+ assertEquals(Test.MATCH, Test.GENERAL_SYSTEMCAPABILITYTYPE, testType);
+
+ // Invalid/Null Tests
+ GetSystemCapability msg = new GetSystemCapability();
+ assertNotNull(Test.NOT_NULL, msg);
+ testNullBase(msg);
+
+ assertNull(Test.NULL, msg.getSystemCapabilityType());
+ }
+
+ /**
+ * Tests a valid JSON construction of this RPC message.
+ */
+ public void testJsonConstructor () {
+ JSONObject commandJson = JsonFileReader.readId(this.mContext, getCommandType(), getMessageType());
+ assertNotNull(Test.NOT_NULL, commandJson);
+
+ try {
+ Hashtable<String, Object> hash = JsonRPCMarshaller.deserializeJSONObject(commandJson);
+ GetSystemCapability cmd = new GetSystemCapability(hash);
+
+ JSONObject body = JsonUtils.readJsonObjectFromJsonObject(commandJson, getMessageType());
+ assertNotNull(Test.NOT_NULL, body);
+
+ // Test everything in the json body.
+ assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(body, RPCMessage.KEY_FUNCTION_NAME), cmd.getFunctionName());
+ assertEquals(Test.MATCH, JsonUtils.readIntegerFromJsonObject(body, RPCMessage.KEY_CORRELATION_ID), cmd.getCorrelationID());
+
+ JSONObject parameters = JsonUtils.readJsonObjectFromJsonObject(body, RPCMessage.KEY_PARAMETERS);
+
+ assertEquals(Test.MATCH, JsonUtils.readObjectFromJsonObject(parameters, GetSystemCapability.KEY_SYSTEM_CAPABILITY_TYPE).toString(), cmd.getSystemCapabilityType().toString());
+ }catch (JSONException e) {
+ fail(Test.JSON_FAIL);
+ }
+ }
+} \ No newline at end of file
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/GetWayPointsTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/GetWayPointsTests.java
new file mode 100644
index 000000000..bf0531685
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/GetWayPointsTests.java
@@ -0,0 +1,96 @@
+package com.smartdevicelink.test.rpc.requests;
+
+import com.smartdevicelink.marshal.JsonRPCMarshaller;
+import com.smartdevicelink.protocol.enums.FunctionID;
+import com.smartdevicelink.proxy.RPCMessage;
+import com.smartdevicelink.proxy.rpc.GetWayPoints;
+import com.smartdevicelink.proxy.rpc.enums.WayPointType;
+import com.smartdevicelink.test.BaseRpcTests;
+import com.smartdevicelink.test.JsonUtils;
+import com.smartdevicelink.test.Test;
+import com.smartdevicelink.test.json.rpc.JsonFileReader;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Hashtable;
+
+/**
+ * Created by austinkirk on 6/6/17.
+ */
+
+public class GetWayPointsTests extends BaseRpcTests {
+ @Override
+ protected RPCMessage createMessage(){
+ GetWayPoints msg = new GetWayPoints();
+
+ msg.setWayPointType(WayPointType.DESTINATION);
+
+ return msg;
+ }
+
+ @Override
+ protected String getMessageType(){
+ return RPCMessage.KEY_REQUEST;
+ }
+
+ @Override
+ protected String getCommandType(){
+ return FunctionID.GET_WAY_POINTS.toString();
+ }
+
+ @Override
+ protected JSONObject getExpectedParameters(int sdlVersion){
+ JSONObject result = new JSONObject();
+
+ try{
+ result.put(GetWayPoints.KEY_WAY_POINT_TYPE, WayPointType.DESTINATION);
+ }catch(JSONException e){
+ fail(Test.JSON_FAIL);
+ }
+
+ return result;
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Test Values
+ WayPointType testType = ( (GetWayPoints) msg ).getWayPointType();
+
+ // Valid Tests
+ assertEquals(Test.MATCH, WayPointType.DESTINATION, testType);
+
+ // Invalid/Null Tests
+ GetWayPoints msg = new GetWayPoints();
+ assertNotNull(Test.NOT_NULL, msg);
+ testNullBase(msg);
+
+ assertNull(Test.NULL, msg.getWayPointType());
+ }
+
+ /**
+ * Tests a valid JSON construction of this RPC message.
+ */
+ public void testJsonConstructor () {
+ JSONObject commandJson = JsonFileReader.readId(this.mContext, getCommandType(), getMessageType());
+ assertNotNull(Test.NOT_NULL, commandJson);
+
+ try {
+ Hashtable<String, Object> hash = JsonRPCMarshaller.deserializeJSONObject(commandJson);
+ GetWayPoints cmd = new GetWayPoints(hash);
+ JSONObject body = JsonUtils.readJsonObjectFromJsonObject(commandJson, getMessageType());
+ assertNotNull(Test.NOT_NULL, body);
+
+ // Test everything in the json body.
+ assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(body, RPCMessage.KEY_FUNCTION_NAME), cmd.getFunctionName());
+ assertEquals(Test.MATCH, JsonUtils.readIntegerFromJsonObject(body, RPCMessage.KEY_CORRELATION_ID), cmd.getCorrelationID());
+
+ JSONObject parameters = JsonUtils.readJsonObjectFromJsonObject(body, RPCMessage.KEY_PARAMETERS);
+ assertEquals(Test.MATCH, WayPointType.valueForString(JsonUtils.readStringFromJsonObject(parameters, GetWayPoints.KEY_WAY_POINT_TYPE)), cmd.getWayPointType());
+ } catch (JSONException e) {
+ fail(Test.JSON_FAIL);
+ }
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/SendHapticDataTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/SendHapticDataTests.java
new file mode 100644
index 000000000..7c3b0ed90
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/SendHapticDataTests.java
@@ -0,0 +1,86 @@
+package com.smartdevicelink.test.rpc.requests;
+
+import com.smartdevicelink.marshal.JsonRPCMarshaller;
+import com.smartdevicelink.protocol.enums.FunctionID;
+import com.smartdevicelink.proxy.RPCMessage;
+import com.smartdevicelink.proxy.rpc.HapticRect;
+import com.smartdevicelink.proxy.rpc.SendHapticData;
+import com.smartdevicelink.test.BaseRpcTests;
+import com.smartdevicelink.test.Test;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by brettywhite on 8/9/17.
+ */
+
+public class SendHapticDataTests extends BaseRpcTests {
+
+ private SendHapticData msg;
+
+ @Override
+ protected RPCMessage createMessage(){
+ msg = new SendHapticData();
+
+ List<HapticRect> list = new ArrayList<>();
+ list.add(Test.GENERAL_HAPTIC_RECT);
+
+ msg.setHapticRectData(list);
+
+ return msg;
+ }
+
+ @Override
+ protected String getMessageType(){
+ return RPCMessage.KEY_REQUEST;
+ }
+
+ @Override
+ protected String getCommandType(){
+ return FunctionID.SEND_HAPTIC_DATA.toString();
+ }
+
+ @Override
+ protected JSONObject getExpectedParameters(int sdlVersion){
+ JSONObject result = new JSONObject();
+
+ JSONArray jsonArray = new JSONArray();
+ try {
+ jsonArray.put(JsonRPCMarshaller.serializeHashtable(Test.GENERAL_HAPTIC_RECT.getStore()));
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+
+ try {
+ result.put(SendHapticData.KEY_HAPTIC_RECT_DATA, jsonArray);
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+
+ return result;
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Test Values
+ List<HapticRect> list = msg.getHapticRectData();
+
+ // Valid Tests
+ assertEquals(Test.MATCH, Test.GENERAL_HAPTIC_RECT, list.get(0));
+
+ // Invalid/Null Tests
+ SendHapticData msg = new SendHapticData();
+ assertNotNull(Test.NOT_NULL, msg);
+ testNullBase(msg);
+
+ assertNull(Test.NULL, msg.getHapticRectData());
+ }
+
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/ShowTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/ShowTests.java
index 5899d9015..9c7a681df 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/ShowTests.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/ShowTests.java
@@ -12,6 +12,7 @@ import com.smartdevicelink.marshal.JsonRPCMarshaller;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCMessage;
import com.smartdevicelink.proxy.rpc.Image;
+import com.smartdevicelink.proxy.rpc.MetadataTags;
import com.smartdevicelink.proxy.rpc.Show;
import com.smartdevicelink.proxy.rpc.SoftButton;
import com.smartdevicelink.proxy.rpc.enums.TextAlignment;
@@ -23,12 +24,12 @@ import com.smartdevicelink.test.json.rpc.JsonFileReader;
/**
* This is a unit test class for the SmartDeviceLink library project class :
- * {@link com.smartdevicelink.rpc.Show}
+ * {@link com.smartdevicelink.proxy.rpc.Show}
*/
public class ShowTests extends BaseRpcTests {
@Override
- protected RPCMessage createMessage() {
+ protected RPCMessage createMessage() {
Show msg = new Show();
msg.setMainField1(Test.GENERAL_STRING);
@@ -42,6 +43,7 @@ public class ShowTests extends BaseRpcTests {
msg.setSecondaryGraphic(Test.GENERAL_IMAGE);
msg.setCustomPresets(Test.GENERAL_STRING_LIST);
msg.setSoftButtons(Test.GENERAL_SOFTBUTTON_LIST);
+ msg.setMetadataTags(Test.GENERAL_METADATASTRUCT);
return msg;
}
@@ -66,12 +68,13 @@ public class ShowTests extends BaseRpcTests {
result.put(Show.KEY_MAIN_FIELD_3, Test.GENERAL_STRING);
result.put(Show.KEY_MAIN_FIELD_4, Test.GENERAL_STRING);
result.put(Show.KEY_STATUS_BAR, Test.GENERAL_STRING);
- result.put(Show.KEY_MEDIA_TRACK, Test.GENERAL_STRING);
+ result.put(Show.KEY_MEDIA_TRACK, Test.GENERAL_STRING);
result.put(Show.KEY_GRAPHIC, Test.JSON_IMAGE);
result.put(Show.KEY_SECONDARY_GRAPHIC, Test.JSON_IMAGE);
result.put(Show.KEY_ALIGNMENT, Test.GENERAL_TEXTALIGNMENT);
- result.put(Show.KEY_CUSTOM_PRESETS, JsonUtils.createJsonArray(Test.GENERAL_STRING_LIST));
+ result.put(Show.KEY_CUSTOM_PRESETS, JsonUtils.createJsonArray(Test.GENERAL_STRING_LIST));
result.put(Show.KEY_SOFT_BUTTONS, Test.JSON_SOFTBUTTONS);
+ result.put(Show.KEY_METADATA_TAGS, Test.GENERAL_METADATASTRUCT.serializeJSON());
} catch (JSONException e) {
fail(Test.JSON_FAIL);
}
@@ -92,6 +95,7 @@ public class ShowTests extends BaseRpcTests {
TextAlignment testAlignment = ( (Show) msg ).getAlignment();
List<SoftButton> testSoftButtons = ( (Show) msg ).getSoftButtons();
List<String> testCustomPresets = ( (Show) msg ).getCustomPresets();
+ MetadataTags testMetadata = ( (Show) msg ).getMetadataTags();
// Valid Tests
assertEquals(Test.MATCH, Test.GENERAL_STRING, testTrack);
@@ -102,6 +106,7 @@ public class ShowTests extends BaseRpcTests {
assertEquals(Test.MATCH, Test.GENERAL_STRING, testText3);
assertEquals(Test.MATCH, Test.GENERAL_STRING, testText4);
assertEquals(Test.MATCH, Test.GENERAL_STRING_LIST.size(), testCustomPresets.size());
+ assertEquals(Test.MATCH, Test.GENERAL_METADATASTRUCT, testMetadata);
assertTrue(Test.TRUE, Validator.validateSoftButtons(Test.GENERAL_SOFTBUTTON_LIST, testSoftButtons));
assertTrue(Test.TRUE, Validator.validateImage(Test.GENERAL_IMAGE, testGraphic2));
assertTrue(Test.TRUE, Validator.validateImage(Test.GENERAL_IMAGE, testGraphic1));
@@ -121,7 +126,8 @@ public class ShowTests extends BaseRpcTests {
assertNull(Test.NULL, msg.getSecondaryGraphic());
assertNull(Test.NULL, msg.getCustomPresets());
assertNull(Test.NULL, msg.getMediaTrack());
- assertNull(Test.NULL, msg.getSoftButtons());
+ assertNull(Test.NULL, msg.getSoftButtons());
+ assertNull(Test.NULL, msg.getMetadataTags());
}
/**
@@ -130,24 +136,24 @@ public class ShowTests extends BaseRpcTests {
public void testJsonConstructor () {
JSONObject commandJson = JsonFileReader.readId(this.mContext,getCommandType(), getMessageType());
assertNotNull(Test.NOT_NULL, commandJson);
-
+
try {
Hashtable<String, Object> hash = JsonRPCMarshaller.deserializeJSONObject(commandJson);
Show cmd = new Show(hash);
-
+
JSONObject body = JsonUtils.readJsonObjectFromJsonObject(commandJson, getMessageType());
assertNotNull(Test.NOT_NULL, body);
-
+
// Test everything in the json body.
assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(body, RPCMessage.KEY_FUNCTION_NAME), cmd.getFunctionName());
assertEquals(Test.MATCH, JsonUtils.readIntegerFromJsonObject(body, RPCMessage.KEY_CORRELATION_ID), cmd.getCorrelationID());
JSONObject parameters = JsonUtils.readJsonObjectFromJsonObject(body, RPCMessage.KEY_PARAMETERS);
-
+
JSONObject graphic = JsonUtils.readJsonObjectFromJsonObject(parameters, Show.KEY_GRAPHIC);
Image referenceGraphic = new Image(JsonRPCMarshaller.deserializeJSONObject(graphic));
assertTrue(Test.TRUE, Validator.validateImage(referenceGraphic, cmd.getGraphic()));
-
+
List<String> customPresetsList = JsonUtils.readStringListFromJsonObject(parameters, Show.KEY_CUSTOM_PRESETS);
List<String> testPresetsList = cmd.getCustomPresets();
assertEquals(Test.MATCH, customPresetsList.size(), testPresetsList.size());
@@ -160,11 +166,12 @@ public class ShowTests extends BaseRpcTests {
assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(parameters, Show.KEY_STATUS_BAR), cmd.getStatusBar());
assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(parameters, Show.KEY_ALIGNMENT), cmd.getAlignment().toString());
assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(parameters, Show.KEY_MEDIA_TRACK), cmd.getMediaTrack());
+ assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(parameters, Show.KEY_METADATA_TAGS), cmd.getMetadataTags());
JSONObject secondaryGraphic = JsonUtils.readJsonObjectFromJsonObject(parameters, Show.KEY_SECONDARY_GRAPHIC);
Image referenceSecondaryGraphic = new Image(JsonRPCMarshaller.deserializeJSONObject(secondaryGraphic));
assertTrue(Test.TRUE, Validator.validateImage(referenceSecondaryGraphic, cmd.getSecondaryGraphic()));
-
+
JSONArray softButtonArray = JsonUtils.readJsonArrayFromJsonObject(parameters, Show.KEY_SOFT_BUTTONS);
List<SoftButton> softButtonList = new ArrayList<SoftButton>();
for (int index = 0; index < softButtonArray.length(); index++) {
@@ -172,9 +179,9 @@ public class ShowTests extends BaseRpcTests {
softButtonList.add(chunk);
}
assertTrue(Test.TRUE, Validator.validateSoftButtons(softButtonList, cmd.getSoftButtons()));
-
+
} catch (JSONException e) {
fail(Test.JSON_FAIL);
- }
- }
+ }
+ }
} \ No newline at end of file
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/SubscribeWayPointsTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/SubscribeWayPointsTests.java
new file mode 100644
index 000000000..06b6ee330
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/SubscribeWayPointsTests.java
@@ -0,0 +1,73 @@
+package com.smartdevicelink.test.rpc.requests;
+
+import com.smartdevicelink.marshal.JsonRPCMarshaller;
+import com.smartdevicelink.protocol.enums.FunctionID;
+import com.smartdevicelink.proxy.RPCMessage;
+import com.smartdevicelink.proxy.rpc.SubscribeWayPoints;
+import com.smartdevicelink.test.BaseRpcTests;
+import com.smartdevicelink.test.JsonUtils;
+import com.smartdevicelink.test.Test;
+import com.smartdevicelink.test.json.rpc.JsonFileReader;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Hashtable;
+
+/**
+ * Created by austinkirk on 6/7/17.
+ */
+
+public class SubscribeWayPointsTests extends BaseRpcTests {
+ @Override
+ protected RPCMessage createMessage() {
+ return new SubscribeWayPoints();
+ }
+
+ @Override
+ protected String getMessageType() {
+ return RPCMessage.KEY_REQUEST;
+ }
+
+ @Override
+ protected String getCommandType() {
+ return FunctionID.SUBSCRIBE_WAY_POINTS.toString();
+ }
+
+ @Override
+ protected JSONObject getExpectedParameters(int sdlVersion) {
+ return new JSONObject();
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Invalid/Null Tests
+ SubscribeWayPoints msg = new SubscribeWayPoints();
+ assertNotNull(Test.NOT_NULL, msg);
+ testNullBase(msg);
+ }
+
+ /**
+ * Tests a valid JSON construction of this RPC message.
+ */
+ public void testJsonConstructor () {
+ JSONObject commandJson = JsonFileReader.readId(this.mContext, getCommandType(), getMessageType());
+ assertNotNull(Test.NOT_NULL, commandJson);
+
+ try {
+ Hashtable<String, Object> hash = JsonRPCMarshaller.deserializeJSONObject(commandJson);
+ SubscribeWayPoints cmd = new SubscribeWayPoints(hash);
+
+ JSONObject body = JsonUtils.readJsonObjectFromJsonObject(commandJson, getMessageType());
+ assertNotNull(Test.NOT_NULL, body);
+
+ // Test everything in the json body.
+ assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(body, RPCMessage.KEY_FUNCTION_NAME), cmd.getFunctionName());
+ assertEquals(Test.MATCH, JsonUtils.readIntegerFromJsonObject(body, RPCMessage.KEY_CORRELATION_ID), cmd.getCorrelationID());
+ } catch (JSONException e) {
+ fail(Test.JSON_FAIL);
+ }
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/UnsubscribeWayPointsTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/UnsubscribeWayPointsTests.java
new file mode 100644
index 000000000..ac4afbbea
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/UnsubscribeWayPointsTests.java
@@ -0,0 +1,73 @@
+package com.smartdevicelink.test.rpc.requests;
+
+import com.smartdevicelink.marshal.JsonRPCMarshaller;
+import com.smartdevicelink.protocol.enums.FunctionID;
+import com.smartdevicelink.proxy.RPCMessage;
+import com.smartdevicelink.proxy.rpc.UnsubscribeWayPoints;
+import com.smartdevicelink.test.BaseRpcTests;
+import com.smartdevicelink.test.JsonUtils;
+import com.smartdevicelink.test.Test;
+import com.smartdevicelink.test.json.rpc.JsonFileReader;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Hashtable;
+
+/**
+ * Created by austinkirk on 6/7/17.
+ */
+
+public class UnsubscribeWayPointsTests extends BaseRpcTests {
+ @Override
+ protected RPCMessage createMessage() {
+ return new UnsubscribeWayPoints();
+ }
+
+ @Override
+ protected String getMessageType() {
+ return RPCMessage.KEY_REQUEST;
+ }
+
+ @Override
+ protected String getCommandType() {
+ return FunctionID.UNSUBSCRIBE_WAY_POINTS.toString();
+ }
+
+ @Override
+ protected JSONObject getExpectedParameters(int sdlVersion) {
+ return new JSONObject();
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Invalid/Null Tests
+ UnsubscribeWayPoints msg = new UnsubscribeWayPoints();
+ assertNotNull(Test.NOT_NULL, msg);
+ testNullBase(msg);
+ }
+
+ /**
+ * Tests a valid JSON construction of this RPC message.
+ */
+ public void testJsonConstructor () {
+ JSONObject commandJson = JsonFileReader.readId(this.mContext, getCommandType(), getMessageType());
+ assertNotNull(Test.NOT_NULL, commandJson);
+
+ try {
+ Hashtable<String, Object> hash = JsonRPCMarshaller.deserializeJSONObject(commandJson);
+ UnsubscribeWayPoints cmd = new UnsubscribeWayPoints(hash);
+
+ JSONObject body = JsonUtils.readJsonObjectFromJsonObject(commandJson, getMessageType());
+ assertNotNull(Test.NOT_NULL, body);
+
+ // Test everything in the json body.
+ assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(body, RPCMessage.KEY_FUNCTION_NAME), cmd.getFunctionName());
+ assertEquals(Test.MATCH, JsonUtils.readIntegerFromJsonObject(body, RPCMessage.KEY_CORRELATION_ID), cmd.getCorrelationID());
+ } catch (JSONException e) {
+ fail(Test.JSON_FAIL);
+ }
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/DialNumberResponseTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/DialNumberResponseTests.java
new file mode 100644
index 000000000..bf625f19a
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/DialNumberResponseTests.java
@@ -0,0 +1,74 @@
+package com.smartdevicelink.test.rpc.responses;
+
+import com.smartdevicelink.marshal.JsonRPCMarshaller;
+import com.smartdevicelink.protocol.enums.FunctionID;
+import com.smartdevicelink.proxy.RPCMessage;
+import com.smartdevicelink.proxy.rpc.DialNumberResponse;
+import com.smartdevicelink.test.BaseRpcTests;
+import com.smartdevicelink.test.JsonUtils;
+import com.smartdevicelink.test.Test;
+import com.smartdevicelink.test.json.rpc.JsonFileReader;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Hashtable;
+
+/**
+ * Created by austinkirk on 6/6/17.
+ */
+
+public class DialNumberResponseTests extends BaseRpcTests {
+
+ @Override
+ protected RPCMessage createMessage() {
+ return new DialNumberResponse();
+ }
+
+ @Override
+ protected String getMessageType() {
+ return RPCMessage.KEY_RESPONSE;
+ }
+
+ @Override
+ protected String getCommandType() {
+ return FunctionID.DIAL_NUMBER.toString();
+ }
+
+ @Override
+ protected JSONObject getExpectedParameters(int sdlVersion) {
+ return new JSONObject();
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Invalid/Null Tests
+ DialNumberResponse msg = new DialNumberResponse();
+ assertNotNull(Test.NOT_NULL, msg);
+ testNullBase(msg);
+ }
+
+ /**
+ * Tests a valid JSON construction of this RPC message.
+ */
+ public void testJsonConstructor () {
+ JSONObject commandJson = JsonFileReader.readId(this.mContext, getCommandType(), getMessageType());
+ assertNotNull(Test.NOT_NULL, commandJson);
+
+ try {
+ Hashtable<String, Object> hash = JsonRPCMarshaller.deserializeJSONObject(commandJson);
+ DialNumberResponse cmd = new DialNumberResponse(hash);
+
+ JSONObject body = JsonUtils.readJsonObjectFromJsonObject(commandJson, getMessageType());
+ assertNotNull(Test.NOT_NULL, body);
+
+ // Test everything in the json body.
+ assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(body, RPCMessage.KEY_FUNCTION_NAME), cmd.getFunctionName());
+ assertEquals(Test.MATCH, JsonUtils.readIntegerFromJsonObject(body, RPCMessage.KEY_CORRELATION_ID), cmd.getCorrelationID());
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/GetSystemCapabilityResponseTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/GetSystemCapabilityResponseTests.java
new file mode 100644
index 000000000..b9fd85a8e
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/GetSystemCapabilityResponseTests.java
@@ -0,0 +1,97 @@
+package com.smartdevicelink.test.rpc.responses;
+
+import com.smartdevicelink.marshal.JsonRPCMarshaller;
+import com.smartdevicelink.protocol.enums.FunctionID;
+import com.smartdevicelink.proxy.RPCMessage;
+import com.smartdevicelink.proxy.rpc.GetSystemCapabilityResponse;
+import com.smartdevicelink.proxy.rpc.SystemCapability;
+import com.smartdevicelink.test.BaseRpcTests;
+import com.smartdevicelink.test.JsonUtils;
+import com.smartdevicelink.test.Test;
+import com.smartdevicelink.test.json.rpc.JsonFileReader;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Hashtable;
+
+public class GetSystemCapabilityResponseTests extends BaseRpcTests {
+
+ @Override
+ protected RPCMessage createMessage(){
+ GetSystemCapabilityResponse msg = new GetSystemCapabilityResponse();
+
+ msg.setSystemCapability(Test.GENERAL_SYSTEMCAPABILITY);
+
+ return msg;
+ }
+
+ @Override
+ protected String getMessageType(){
+ return RPCMessage.KEY_RESPONSE;
+ }
+
+ @Override
+ protected String getCommandType(){
+ return FunctionID.GET_SYSTEM_CAPABILITY.toString();
+ }
+
+ @Override
+ protected JSONObject getExpectedParameters(int sdlVersion){
+ JSONObject result = new JSONObject();
+
+ try{
+ result.put(GetSystemCapabilityResponse.KEY_SYSTEM_CAPABILITY, JsonRPCMarshaller.serializeHashtable(Test.GENERAL_SYSTEMCAPABILITY.getStore()));
+ }catch(JSONException e){
+ fail(Test.JSON_FAIL);
+ }
+
+ return result;
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Test Values
+ SystemCapability testCapability = ( (GetSystemCapabilityResponse) msg ).getSystemCapability();
+
+ // Valid Tests
+ assertEquals(Test.MATCH, Test.GENERAL_SYSTEMCAPABILITY.getSystemCapabilityType(), testCapability.getSystemCapabilityType());
+
+ // Invalid/Null Tests
+ GetSystemCapabilityResponse msg = new GetSystemCapabilityResponse();
+ assertNotNull(Test.NOT_NULL, msg);
+ testNullBase(msg);
+
+ assertNull(Test.NULL, msg.getSystemCapability());
+ }
+
+ /**
+ * Tests a valid JSON construction of this RPC message.
+ */
+ public void testJsonConstructor () {
+ JSONObject commandJson = JsonFileReader.readId(this.mContext, getCommandType(), getMessageType());
+ assertNotNull(Test.NOT_NULL, commandJson);
+
+ try {
+ Hashtable<String, Object> hash = JsonRPCMarshaller.deserializeJSONObject(commandJson);
+ GetSystemCapabilityResponse cmd = new GetSystemCapabilityResponse(hash);
+
+ JSONObject body = JsonUtils.readJsonObjectFromJsonObject(commandJson, getMessageType());
+ assertNotNull(Test.NOT_NULL, body);
+
+ // Test everything in the json body.
+ assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(body, RPCMessage.KEY_FUNCTION_NAME), cmd.getFunctionName());
+ assertEquals(Test.MATCH, JsonUtils.readIntegerFromJsonObject(body, RPCMessage.KEY_CORRELATION_ID), cmd.getCorrelationID());
+
+ JSONObject parameters = JsonUtils.readJsonObjectFromJsonObject(body, RPCMessage.KEY_PARAMETERS);
+
+ SystemCapability testCapability = new SystemCapability(JsonRPCMarshaller.deserializeJSONObject((JSONObject) JsonUtils.readObjectFromJsonObject(parameters, GetSystemCapabilityResponse.KEY_SYSTEM_CAPABILITY)));
+ SystemCapability cmdCapability = cmd.getSystemCapability();
+ assertEquals(Test.MATCH, testCapability.getSystemCapabilityType(), cmdCapability.getSystemCapabilityType());
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/GetWayPointsResponseTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/GetWayPointsResponseTests.java
new file mode 100644
index 000000000..57d8499df
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/GetWayPointsResponseTests.java
@@ -0,0 +1,123 @@
+package com.smartdevicelink.test.rpc.responses;
+
+import com.smartdevicelink.marshal.JsonRPCMarshaller;
+import com.smartdevicelink.protocol.enums.FunctionID;
+import com.smartdevicelink.proxy.RPCMessage;
+import com.smartdevicelink.proxy.rpc.GetWayPointsResponse;
+import com.smartdevicelink.proxy.rpc.LocationDetails;
+import com.smartdevicelink.test.BaseRpcTests;
+import com.smartdevicelink.test.JsonUtils;
+import com.smartdevicelink.test.Test;
+import com.smartdevicelink.test.json.rpc.JsonFileReader;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.List;
+
+/**
+ * Created by austinkirk on 6/6/17.
+ */
+
+public class GetWayPointsResponseTests extends BaseRpcTests {
+ List<LocationDetails> waypoints = new ArrayList<LocationDetails>();
+
+ @Override
+ protected RPCMessage createMessage() {
+
+ waypoints.add(Test.GENERAL_LOCATIONDETAILS);
+ waypoints.add(Test.GENERAL_LOCATIONDETAILS);
+
+ GetWayPointsResponse getWayPointsResponse = new GetWayPointsResponse();
+ getWayPointsResponse.setWayPoints(waypoints);
+
+ return getWayPointsResponse;
+ }
+
+ @Override
+ protected String getMessageType() {
+ return RPCMessage.KEY_RESPONSE;
+ }
+
+ @Override
+ protected String getCommandType() {
+ return FunctionID.GET_WAY_POINTS.toString();
+ }
+
+ @Override
+ protected JSONObject getExpectedParameters(int sdlVersion) {
+ JSONObject result = new JSONObject();
+
+ JSONArray jsonArray = new JSONArray();
+ try {
+ jsonArray.put(JsonRPCMarshaller.serializeHashtable(Test.GENERAL_LOCATIONDETAILS.getStore()));
+ jsonArray.put(JsonRPCMarshaller.serializeHashtable(Test.GENERAL_LOCATIONDETAILS.getStore()));
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+
+ try {
+ result.put(GetWayPointsResponse.KEY_WAY_POINTS, jsonArray);
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+
+ return result;
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+
+ // Test Values
+ List<LocationDetails> testWPs = ( (GetWayPointsResponse) msg ).getWayPoints();
+
+ // Valid Tests
+ assertEquals(Test.MATCH, waypoints, testWPs);
+
+ // Invalid/Null Tests
+ GetWayPointsResponse msg = new GetWayPointsResponse();
+ assertNotNull(Test.NOT_NULL, msg);
+ testNullBase(msg);
+
+ assertNull(Test.NULL, msg.getWayPoints());
+ }
+
+ /**
+ * Tests a valid JSON construction of this RPC message.
+ */
+ public void testJsonConstructor () {
+ JSONObject commandJson = JsonFileReader.readId(this.mContext, getCommandType(), getMessageType());
+ assertNotNull(Test.NOT_NULL, commandJson);
+
+ try {
+ Hashtable<String, Object> hash = JsonRPCMarshaller.deserializeJSONObject(commandJson);
+ GetWayPointsResponse cmd = new GetWayPointsResponse(hash);
+
+ JSONObject body = JsonUtils.readJsonObjectFromJsonObject(commandJson, getMessageType());
+ assertNotNull(Test.NOT_NULL, body);
+
+ // Test everything in the json body.
+ assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(body, RPCMessage.KEY_FUNCTION_NAME), cmd.getFunctionName());
+ assertEquals(Test.MATCH, JsonUtils.readIntegerFromJsonObject(body, RPCMessage.KEY_CORRELATION_ID), cmd.getCorrelationID());
+
+ JSONObject parameters = JsonUtils.readJsonObjectFromJsonObject(body, RPCMessage.KEY_PARAMETERS);
+
+ JSONArray locArray = JsonUtils.readJsonArrayFromJsonObject(parameters, GetWayPointsResponse.KEY_WAY_POINTS);
+ List<LocationDetails> locationList = new ArrayList<LocationDetails>();
+ for (int index = 0; index < locArray.length(); index++) {
+ LocationDetails det = new LocationDetails(JsonRPCMarshaller.deserializeJSONObject( (JSONObject) locArray.get(index)));
+ locationList.add(det);
+ }
+ List<LocationDetails> dets = cmd.getWayPoints();
+ assertEquals(Test.MATCH, locationList.size(), dets.size());
+
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/ShowResponseTest.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/ShowResponseTest.java
index b012d1944..301e330e7 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/ShowResponseTest.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/ShowResponseTest.java
@@ -16,7 +16,7 @@ import com.smartdevicelink.test.json.rpc.JsonFileReader;
/**
* This is a unit test class for the SmartDeviceLink library project class :
- * {@link com.smartdevicelink.rpc.ShowResponse}
+ * {@link com.smartdevicelink.proxy.rpc.ShowResponse}
*/
public class ShowResponseTest extends BaseRpcTests {
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/StreamRPCResponseTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/StreamRPCResponseTests.java
new file mode 100644
index 000000000..47801ea90
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/StreamRPCResponseTests.java
@@ -0,0 +1,89 @@
+package com.smartdevicelink.test.rpc.responses;
+
+import com.smartdevicelink.marshal.JsonRPCMarshaller;
+import com.smartdevicelink.protocol.enums.FunctionID;
+import com.smartdevicelink.proxy.RPCMessage;
+import com.smartdevicelink.proxy.rpc.StreamRPCResponse;
+import com.smartdevicelink.test.BaseRpcTests;
+import com.smartdevicelink.test.JsonUtils;
+import com.smartdevicelink.test.Test;
+import com.smartdevicelink.test.json.rpc.JsonFileReader;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Hashtable;
+
+/**
+ * Created by austinkirk on 6/7/17.
+ */
+
+public class StreamRPCResponseTests extends BaseRpcTests {
+ @Override
+ protected RPCMessage createMessage(){
+ StreamRPCResponse response = new StreamRPCResponse();
+ response.setFileSize((Long) Test.GENERAL_LONG);
+ response.setFileName(Test.GENERAL_STRING);
+ return response;
+ }
+
+ @Override
+ protected String getMessageType(){
+ return RPCMessage.KEY_RESPONSE;
+ }
+
+ @Override
+ protected String getCommandType(){
+ return FunctionID.STREAM_RPC.toString();
+ }
+
+ @Override
+ protected JSONObject getExpectedParameters(int sdlVersion){
+ JSONObject result = new JSONObject();
+
+ try {
+ result.put(StreamRPCResponse.KEY_FILESIZE, (Long) Test.GENERAL_LONG);
+ result.put(StreamRPCResponse.KEY_FILENAME, Test.GENERAL_STRING);
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+
+ return result;
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Invalid/Null Tests
+ StreamRPCResponse msg = new StreamRPCResponse();
+ assertNotNull(Test.NOT_NULL, msg);
+ testNullBase(msg);
+ }
+
+ /**
+ * Tests a valid JSON construction of this RPC message.
+ */
+ public void testJsonConstructor () {
+ JSONObject commandJson = JsonFileReader.readId(this.mContext, getCommandType(), getMessageType());
+ assertNotNull(Test.NOT_NULL, commandJson);
+
+ try {
+ Hashtable<String, Object> hash = JsonRPCMarshaller.deserializeJSONObject(commandJson);
+ StreamRPCResponse cmd = new StreamRPCResponse(hash);
+
+ JSONObject body = JsonUtils.readJsonObjectFromJsonObject(commandJson, getMessageType());
+ assertNotNull(Test.NOT_NULL, body);
+
+ // Test everything in the json body.
+ assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(body, RPCMessage.KEY_FUNCTION_NAME), cmd.getFunctionName());
+ assertEquals(Test.MATCH, JsonUtils.readIntegerFromJsonObject(body, RPCMessage.KEY_CORRELATION_ID), cmd.getCorrelationID());
+
+ JSONObject parameters = JsonUtils.readJsonObjectFromJsonObject(body, RPCMessage.KEY_PARAMETERS);
+ assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(parameters, StreamRPCResponse.KEY_FILENAME), cmd.getFileName());
+ assertEquals(Test.MATCH, JsonUtils.readLongFromJsonObject(parameters, StreamRPCResponse.KEY_FILESIZE), cmd.getFileSize());
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/SubscribeWaypointsResponseTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/SubscribeWaypointsResponseTests.java
new file mode 100644
index 000000000..a43220dce
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/SubscribeWaypointsResponseTests.java
@@ -0,0 +1,73 @@
+package com.smartdevicelink.test.rpc.responses;
+
+import com.smartdevicelink.marshal.JsonRPCMarshaller;
+import com.smartdevicelink.protocol.enums.FunctionID;
+import com.smartdevicelink.proxy.RPCMessage;
+import com.smartdevicelink.proxy.rpc.SubscribeWayPointsResponse;
+import com.smartdevicelink.test.BaseRpcTests;
+import com.smartdevicelink.test.JsonUtils;
+import com.smartdevicelink.test.Test;
+import com.smartdevicelink.test.json.rpc.JsonFileReader;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Hashtable;
+
+/**
+ * Created by austinkirk on 6/7/17.
+ */
+
+public class SubscribeWaypointsResponseTests extends BaseRpcTests {
+ @Override
+ protected RPCMessage createMessage(){
+ return new SubscribeWayPointsResponse();
+ }
+
+ @Override
+ protected String getMessageType(){
+ return RPCMessage.KEY_RESPONSE;
+ }
+
+ @Override
+ protected String getCommandType(){
+ return FunctionID.SUBSCRIBE_WAY_POINTS.toString();
+ }
+
+ @Override
+ protected JSONObject getExpectedParameters(int sdlVersion){
+ return new JSONObject();
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Invalid/Null Tests
+ SubscribeWayPointsResponse msg = new SubscribeWayPointsResponse();
+ assertNotNull(Test.NOT_NULL, msg);
+ testNullBase(msg);
+ }
+
+ /**
+ * Tests a valid JSON construction of this RPC message.
+ */
+ public void testJsonConstructor () {
+ JSONObject commandJson = JsonFileReader.readId(this.mContext, getCommandType(), getMessageType());
+ assertNotNull(Test.NOT_NULL, commandJson);
+
+ try {
+ Hashtable<String, Object> hash = JsonRPCMarshaller.deserializeJSONObject(commandJson);
+ SubscribeWayPointsResponse cmd = new SubscribeWayPointsResponse(hash);
+
+ JSONObject body = JsonUtils.readJsonObjectFromJsonObject(commandJson, getMessageType());
+ assertNotNull(Test.NOT_NULL, body);
+
+ // Test everything in the json body.
+ assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(body, RPCMessage.KEY_FUNCTION_NAME), cmd.getFunctionName());
+ assertEquals("Correlation ID doesn't match input ID", JsonUtils.readIntegerFromJsonObject(body, RPCMessage.KEY_CORRELATION_ID), cmd.getCorrelationID());
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/UnsubscribeWayPointsResponseTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/UnsubscribeWayPointsResponseTests.java
new file mode 100644
index 000000000..b8b69be60
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/UnsubscribeWayPointsResponseTests.java
@@ -0,0 +1,73 @@
+package com.smartdevicelink.test.rpc.responses;
+
+import com.smartdevicelink.marshal.JsonRPCMarshaller;
+import com.smartdevicelink.protocol.enums.FunctionID;
+import com.smartdevicelink.proxy.RPCMessage;
+import com.smartdevicelink.proxy.rpc.UnsubscribeWayPointsResponse;
+import com.smartdevicelink.test.BaseRpcTests;
+import com.smartdevicelink.test.JsonUtils;
+import com.smartdevicelink.test.Test;
+import com.smartdevicelink.test.json.rpc.JsonFileReader;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Hashtable;
+
+/**
+ * Created by austinkirk on 6/7/17.
+ */
+
+public class UnsubscribeWayPointsResponseTests extends BaseRpcTests{
+ @Override
+ protected RPCMessage createMessage(){
+ return new UnsubscribeWayPointsResponse();
+ }
+
+ @Override
+ protected String getMessageType(){
+ return RPCMessage.KEY_RESPONSE;
+ }
+
+ @Override
+ protected String getCommandType(){
+ return FunctionID.UNSUBSCRIBE_WAY_POINTS.toString();
+ }
+
+ @Override
+ protected JSONObject getExpectedParameters(int sdlVersion){
+ return new JSONObject();
+ }
+
+ /**
+ * Tests the expected values of the RPC message.
+ */
+ public void testRpcValues () {
+ // Invalid/Null Tests
+ UnsubscribeWayPointsResponse msg = new UnsubscribeWayPointsResponse();
+ assertNotNull(Test.NOT_NULL, msg);
+ testNullBase(msg);
+ }
+
+ /**
+ * Tests a valid JSON construction of this RPC message.
+ */
+ public void testJsonConstructor () {
+ JSONObject commandJson = JsonFileReader.readId(this.mContext, getCommandType(), getMessageType());
+ assertNotNull(Test.NOT_NULL, commandJson);
+
+ try {
+ Hashtable<String, Object> hash = JsonRPCMarshaller.deserializeJSONObject(commandJson);
+ UnsubscribeWayPointsResponse cmd = new UnsubscribeWayPointsResponse(hash);
+
+ JSONObject body = JsonUtils.readJsonObjectFromJsonObject(commandJson, getMessageType());
+ assertNotNull(Test.NOT_NULL, body);
+
+ // Test everything in the json body.
+ assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(body, RPCMessage.KEY_FUNCTION_NAME), cmd.getFunctionName());
+ assertEquals("Correlation ID doesn't match input ID", JsonUtils.readIntegerFromJsonObject(body, RPCMessage.KEY_CORRELATION_ID), cmd.getCorrelationID());
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/streaming/AbstractPacketizerTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/streaming/AbstractPacketizerTests.java
index 6c5f663ba..e05091c44 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/streaming/AbstractPacketizerTests.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/streaming/AbstractPacketizerTests.java
@@ -1,6 +1,7 @@
package com.smartdevicelink.test.streaming;
import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
@@ -42,30 +43,27 @@ public class AbstractPacketizerTests extends TestCase {
MockPacketizer testPacketizer1 = null;
MockPacketizer testPacketizer2 = null;
MockPacketizer testPacketizer3 = null;
- MockPacketizer testPacketizer4 = null;
IStreamListener testListener = new MockStreamListener();
-
try {
-
- URL url = new URL("ftp://mirror.csclub.uwaterloo.ca/index.html");
- URLConnection urlConnection = url.openConnection();
- testInputStream = new BufferedInputStream(urlConnection.getInputStream());
-
+ testInputStream = new BufferedInputStream(new ByteArrayInputStream("sdl streaming test".getBytes()));
MockInterfaceBroker _interfaceBroker = new MockInterfaceBroker();
BaseTransportConfig _transportConfig = new BTTransportConfig(true);
-
testSdlSession = SdlSession.createSession(testWiproVersion,_interfaceBroker, _transportConfig);
-
testPacketizer1 = new MockPacketizer(testListener, testInputStream, testSessionType, testSessionId, testSdlSession);
testPacketizer2 = new MockPacketizer(null, null, null, testSessionId, testSdlSession);
testPacketizer3 = new MockPacketizer(testListener, testInputStream, testRpcRequest, testSessionType, testSessionId, testWiproVersion, testSdlSession);
- testPacketizer4 = new MockPacketizer(null, null, null, null, testSessionId, testWiproVersion, null);
+ try {
+ new MockPacketizer(null, null, null, null, testSessionId, testWiproVersion, null);
+ fail("Exception should be thrown");
+ }catch(Exception e) {
+ assertTrue(e instanceof IllegalArgumentException);
+ }
+
// Valid Tests
assertNotNull(Test.NOT_NULL, testPacketizer1);
assertNotNull(Test.NOT_NULL, testPacketizer2);
assertNotNull(Test.NOT_NULL, testPacketizer3);
- assertNotNull(Test.NOT_NULL, testPacketizer4);
assertEquals(Test.MATCH, testListener, testPacketizer1.getListener());
assertEquals(Test.MATCH, testInputStream, testPacketizer1.getInputStream());
@@ -83,13 +81,9 @@ public class AbstractPacketizerTests extends TestCase {
assertNull(Test.NULL, testPacketizer2.getListener());
assertNull(Test.NULL, testPacketizer2.getInputStream());
assertNull(Test.NULL, testPacketizer2.getSessionType());
- assertNull(Test.NULL, testPacketizer4.getListener());
- assertNull(Test.NULL, testPacketizer4.getInputStream());
- assertNull(Test.NULL, testPacketizer4.getSessionType());
- assertNull(Test.NULL, testPacketizer4.getRPCRequest());
- assertNull(Test.NULL, testPacketizer4.getSdlSession());
} catch (IOException e) {
+ e.printStackTrace();
fail("IOException was thrown.");
}
}
@@ -179,4 +173,4 @@ class MockPacketizer extends AbstractPacketizer {
@Override public void pause() { }
@Override public void resume() { }
-} \ No newline at end of file
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/streaming/StreamPacketizerTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/streaming/StreamPacketizerTests.java
index 2f4661aa8..218e904b3 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/streaming/StreamPacketizerTests.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/streaming/StreamPacketizerTests.java
@@ -1,6 +1,7 @@
package com.smartdevicelink.test.streaming;
import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
@@ -36,14 +37,9 @@ public class StreamPacketizerTests extends TestCase {
IStreamListener testListener = new MockStreamListener();
MockInterfaceBroker _interfaceBroker = new MockInterfaceBroker();
BaseTransportConfig _transportConfig = new BTTransportConfig(true);
-
SdlSession testSdlSession = SdlSession.createSession(testWiproVersion,_interfaceBroker, _transportConfig);
-
- try {
- URL url = new URL("ftp://mirror.csclub.uwaterloo.ca/index.html");
- URLConnection urlConnection = url.openConnection();
- testInputStream = new BufferedInputStream(urlConnection.getInputStream());
-
+ try {
+ testInputStream = new BufferedInputStream(new ByteArrayInputStream("sdl streaming test".getBytes()));
StreamPacketizer testStreamPacketizer = new StreamPacketizer(testListener, testInputStream, testSessionType, testSessionId, testSdlSession);
assertNotNull(Test.NOT_NULL, testStreamPacketizer);
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/streaming/StreamRPCPacketizerTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/streaming/StreamRPCPacketizerTests.java
index 63fb437f7..cac3b1616 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/streaming/StreamRPCPacketizerTests.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/streaming/StreamRPCPacketizerTests.java
@@ -1,6 +1,7 @@
package com.smartdevicelink.test.streaming;
import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
@@ -41,12 +42,8 @@ public class StreamRPCPacketizerTests extends TestCase {
MockInterfaceBroker _interfaceBroker = new MockInterfaceBroker();
BaseTransportConfig _transportConfig = new BTTransportConfig(true);
SdlSession testSdlSession = SdlSession.createSession(testWiproVersion,_interfaceBroker, _transportConfig);
-
- try {
- URL url = new URL("ftp://mirror.csclub.uwaterloo.ca/index.html");
- URLConnection urlConnection = url.openConnection();
- testInputStream = new BufferedInputStream(urlConnection.getInputStream());
-
+ try {
+ testInputStream = new BufferedInputStream(new ByteArrayInputStream("sdl streaming test".getBytes()));
StreamRPCPacketizer testStreamRpcPacketizer = new StreamRPCPacketizer(null, testListener, testInputStream, testRequest, testSessionType, testSessionId, testWV, testWV, testSdlSession);
assertNotNull(Test.NOT_NULL, testStreamRpcPacketizer);
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/trace/DiagLevelTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/trace/DiagLevelTests.java
index bc1aa6060..ce24ce4e8 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/trace/DiagLevelTests.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/trace/DiagLevelTests.java
@@ -122,7 +122,7 @@ public class DiagLevelTests extends TestCase {
assertFalse(Test.FALSE, DiagLevel.isValidDetailLevel(testInvalidS));
assertFalse(Test.FALSE, DiagLevel.isValidDetailLevel(null));
assertNull(Test.NULL, DiagLevel.getLevel(null));
- DiagLevel.setLevel(null, null);
+ DiagLevel.setLevel(null, null);
DiagLevel.setAllLevels(null);
} catch (NullPointerException e) {
fail("NullPointerException was thrown when attempting to set null values.");
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/transport/MultiplexBluetoothTransportTest.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/transport/MultiplexBluetoothTransportTest.java
index ae4bae4ce..cdf83079c 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/transport/MultiplexBluetoothTransportTest.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/transport/MultiplexBluetoothTransportTest.java
@@ -1,12 +1,14 @@
package com.smartdevicelink.test.transport;
-import junit.framework.TestCase;
import android.os.Handler;
+import android.os.Looper;
import android.os.Message;
+import com.smartdevicelink.test.util.DeviceUtil;
import com.smartdevicelink.transport.MultiplexBluetoothTransport;
import com.smartdevicelink.transport.SdlRouterService;
+import junit.framework.TestCase;
public class MultiplexBluetoothTransportTest extends TestCase {
@@ -17,41 +19,50 @@ public class MultiplexBluetoothTransportTest extends TestCase {
boolean didCorrectThing = false, isWaitingForResponse = false;
//Example handler
- Handler stateChangeHandler = new Handler(){
- int stateDesired = MultiplexBluetoothTransport.STATE_LISTEN;
- @Override
- public void handleMessage(Message msg) {
- if(!isWaitingForResponse){
- return;
- }
- switch(msg.what){
- case SdlRouterService.MESSAGE_STATE_CHANGE:
- if(msg.arg1 == stateDesired){
+ Handler stateChangeHandler;
+
+ public void testStateTransitions() {
+ if(Looper.myLooper() == null){
+ Looper.prepare();
+ }
+
+ stateChangeHandler = new Handler(){
+ int stateDesired = MultiplexBluetoothTransport.STATE_LISTEN;
+ @Override
+ public void handleMessage(Message msg) {
+ if(!isWaitingForResponse){
+ return;
+ }
+ switch(msg.what){
+ case SdlRouterService.MESSAGE_STATE_CHANGE:
+ if(msg.arg1 == stateDesired){
didCorrectThing = true;
break;
- }
+ }
default:
didCorrectThing = false;
+ }
+ REQUEST_LOCK.notify();
}
- REQUEST_LOCK.notify();
- }
-
- };
-
- public void testStateTransitions() {
+
+ };
+
//TODO test for more than the two states
bluetooth = MultiplexBluetoothTransport.getBluetoothSerialServerInstance();
assertNull(bluetooth);
bluetooth = MultiplexBluetoothTransport.getBluetoothSerialServerInstance(stateChangeHandler);
assertEquals(bluetooth.getState(), MultiplexBluetoothTransport.STATE_NONE);
-
+
bluetooth.start();
- assertEquals(bluetooth.getState(), MultiplexBluetoothTransport.STATE_LISTEN);
-
+ if(DeviceUtil.isEmulator()){
+ assertEquals(bluetooth.getState(), MultiplexBluetoothTransport.STATE_NONE);
+ }else{
+ assertEquals(bluetooth.getState(), MultiplexBluetoothTransport.STATE_LISTEN);
+ }
+
bluetooth.stop();
assertEquals(bluetooth.getState(), MultiplexBluetoothTransport.STATE_NONE);
-
}
private void notifyResponseReceived(){
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/util/BitConverterTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/util/BitConverterTests.java
index a3f0964b4..fb6eed3f9 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/util/BitConverterTests.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/util/BitConverterTests.java
@@ -1,11 +1,11 @@
package com.smartdevicelink.test.util;
-import java.util.Arrays;
+import com.smartdevicelink.test.Test;
+import com.smartdevicelink.util.BitConverter;
import junit.framework.TestCase;
-import com.smartdevicelink.test.Test;
-import com.smartdevicelink.util.BitConverter;
+import java.util.Arrays;
/**
* This is a unit test class for the SmartDeviceLink library project class :
@@ -61,7 +61,7 @@ public class BitConverterTests extends TestCase {
assertTrue(Test.ARRAY, Arrays.equals(expectedBytes, actualBytes));
// Invalid/Null Tests
- assertEquals(Test.MATCH, (int) 0, actualNullBytes);
+ assertEquals(Test.MATCH, (int) -1, actualNullBytes);
}
/**
@@ -83,6 +83,6 @@ public class BitConverterTests extends TestCase {
assertTrue(Test.ARRAY, Arrays.equals(expectedBytes, actualBytes));
// Invalid/Null Tests
- assertEquals(Test.MATCH, (short) 0, actualNullBytes);
+ assertEquals(Test.MATCH, (short) -1, actualNullBytes);
}
} \ No newline at end of file
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/util/DeviceUtil.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/util/DeviceUtil.java
new file mode 100644
index 000000000..08b5c0840
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/util/DeviceUtil.java
@@ -0,0 +1,17 @@
+package com.smartdevicelink.test.util;
+
+import android.os.Build;
+
+public class DeviceUtil {
+ public static boolean isEmulator() {
+ return Build.FINGERPRINT.startsWith("generic")
+ || Build.FINGERPRINT.startsWith("unknown")
+ || Build.MODEL.contains("google_sdk")
+ || Build.MODEL.contains("Emulator")
+ || Build.MODEL.contains("Android SDL built for")
+ || (Build.BRAND.startsWith("generic") && Build.DEVICE.startsWith("generic"))
+ || (Build.BRAND.startsWith("Android") && Build.DEVICE.startsWith("generic"))
+ || (Build.PRODUCT != null && Build.PRODUCT.startsWith("sdk_google_phone"))
+ || "google_sdk".equals(Build.PRODUCT);
+ }
+} \ No newline at end of file
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/util/SdlDataTypeConverterTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/util/SdlDataTypeConverterTests.java
index a4bdb8ab8..b39c405d5 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/util/SdlDataTypeConverterTests.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/util/SdlDataTypeConverterTests.java
@@ -36,11 +36,11 @@ public class SdlDataTypeConverterTests extends TestCase {
// Valid Tests
assertEquals(Test.MATCH, expectedValue, actualDoubleValue);
assertEquals(Test.MATCH, expectedValue, actualIntegerValue);
+ assertEquals(Test.MATCH, expectedValue, actualFloatValue);
// Null Tests
assertNull(Test.NULL, actualNullValue);
assertNull(Test.NULL, actualLongValue);
assertNull(Test.NULL, actualShortValue);
- assertNull(Test.NULL, actualFloatValue);
}
} \ No newline at end of file
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/util/VersionTest.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/util/VersionTest.java
new file mode 100644
index 000000000..44d25ffe0
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/util/VersionTest.java
@@ -0,0 +1,31 @@
+package com.smartdevicelink.test.util;
+
+import android.test.AndroidTestCase;
+
+import com.smartdevicelink.util.Version;
+
+public class VersionTest extends AndroidTestCase {
+
+ private static final String TEST_VERSION = "1.2.3";
+
+ public void testConstructorCorrect(){
+ Version version = new Version(TEST_VERSION);
+ assertEquals(1, version.getMajor());
+ assertEquals(2, version.getMinor());
+ assertEquals(3, version.getPatch());
+ }
+
+ public void testConstructorIncorrect(){
+ try{
+ Version version = new Version("1.2");
+ }catch (Exception e){
+ assert true;
+ }
+ assert false;
+ }
+
+ public void testToString(){
+ Version version = new Version(TEST_VERSION);
+ assertEquals(version.toString(), TEST_VERSION);
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/transport/MultiplexTransportTest.java b/sdl_android/src/androidTest/java/com/smartdevicelink/transport/MultiplexTransportTest.java
index 9f0822a73..901a756a3 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/transport/MultiplexTransportTest.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/transport/MultiplexTransportTest.java
@@ -6,6 +6,8 @@ import com.smartdevicelink.transport.enums.TransportType;
import android.test.AndroidTestCase;
+import junit.framework.Assert;
+
public class MultiplexTransportTest extends AndroidTestCase {
private static final int TIMEOUT = 2000;
@@ -69,8 +71,14 @@ public class MultiplexTransportTest extends AndroidTestCase {
trans = new MultiplexTransport(config,transportListener);
assertTrue(trans.brokerThread.isAlive());
-
-
-
+
+ // Send a null config object in the constructor and expect an IllegalArgumentException
+ try {
+ trans = new MultiplexTransport(null, transportListener);
+ } catch (IllegalArgumentException e) {
+ assertEquals("Null transportConfig in MultiplexTransport constructor", e.getMessage());
+ } catch (NullPointerException e) {
+ Assert.fail("NPE in MultiplexTransport constructor");
+ }
}
}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/transport/RSVTestCase.java b/sdl_android/src/androidTest/java/com/smartdevicelink/transport/RSVTestCase.java
index 03abbc7f4..e40049afd 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/transport/RSVTestCase.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/transport/RSVTestCase.java
@@ -1,14 +1,8 @@
package com.smartdevicelink.transport;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.List;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
+import android.app.ActivityManager;
+import android.content.ComponentName;
+import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.test.AndroidTestCase;
@@ -17,13 +11,23 @@ import android.util.Log;
import com.smartdevicelink.transport.RouterServiceValidator.TrustedAppStore;
import com.smartdevicelink.util.HttpRequestTask.HttpRequestTaskCallback;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.List;
+import java.util.concurrent.Semaphore;
+
public class RSVTestCase extends AndroidTestCase {
private static final String TAG = "RSVTestCase";
private static final long REFRESH_TRUSTED_APP_LIST_TIME_DAY = 3600000 * 24; // A day in ms
private static final long REFRESH_TRUSTED_APP_LIST_TIME_WEEK = REFRESH_TRUSTED_APP_LIST_TIME_DAY * 7; // A week in ms
private static final long REFRESH_TRUSTED_APP_LIST_TIME_MONTH = REFRESH_TRUSTED_APP_LIST_TIME_DAY * 30; // A ~month in ms
-
+ private static final String TEST = "{\"response\": {\"com.livio.sdl\" : { \"versionBlacklist\":[] }, \"com.lexus.tcapp\" : { \"versionBlacklist\":[] }, \"com.toyota.tcapp\" : { \"versionBlacklist\": [] } , \"com.sdl.router\":{\"versionBlacklist\": [] },\"com.ford.fordpass\" : { \"versionBlacklist\":[] } }}";
RouterServiceValidator rsvp;
/**
* Set this boolean if you want to test the actual validation of router service
@@ -41,6 +45,27 @@ public class RSVTestCase extends AndroidTestCase {
protected void tearDown() throws Exception {
super.tearDown();
}
+
+ private static final Semaphore TRUSTED_LIST_LOCK = new Semaphore(1);
+
+ private void requestTListLock(){
+ try {
+ TRUSTED_LIST_LOCK.acquire();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private void releaseTListLock(){
+ TRUSTED_LIST_LOCK.release();
+ }
+
+ private RouterServiceValidator.TrustedListCallback trustedListCallback = new RouterServiceValidator.TrustedListCallback(){
+ @Override
+ public void onListObtained(boolean successful) {
+ releaseTListLock();
+ }
+ };
/*
* These tests are a little strange because they don't test the logic behind the validation of each piece.
@@ -100,6 +125,8 @@ public class RSVTestCase extends AndroidTestCase {
}
public void testHighSecurity(){
+ requestTListLock();
+
RouterServiceValidator rsvp = new RouterServiceValidator(this.mContext); //Use a locally scoped instance
rsvp.setSecurityLevel(MultiplexTransportConfig.FLAG_MULTI_SECURITY_HIGH);
rsvp.setFlags(RouterServiceValidator.FLAG_DEBUG_INSTALLED_FROM_CHECK);
@@ -108,11 +135,13 @@ public class RSVTestCase extends AndroidTestCase {
assertEquals(RouterServiceValidator.getRefreshRate(), REFRESH_TRUSTED_APP_LIST_TIME_WEEK);
- assertTrue(RouterServiceValidator.createTrustedListRequest(mContext, true, null, null));
+ assertTrue(RouterServiceValidator.createTrustedListRequest(mContext, true, null, trustedListCallback));
}
public void testMediumSecurity(){
+ requestTListLock();
+
RouterServiceValidator rsvp = new RouterServiceValidator(this.mContext); //Use a locally scoped instance
rsvp.setSecurityLevel(MultiplexTransportConfig.FLAG_MULTI_SECURITY_MED);
rsvp.setFlags(RouterServiceValidator.FLAG_DEBUG_INSTALLED_FROM_CHECK);
@@ -121,11 +150,13 @@ public class RSVTestCase extends AndroidTestCase {
assertEquals(RouterServiceValidator.getRefreshRate(), REFRESH_TRUSTED_APP_LIST_TIME_WEEK);
- assertTrue(RouterServiceValidator.createTrustedListRequest(mContext, true, null, null));
+ assertTrue(RouterServiceValidator.createTrustedListRequest(mContext, true, null, trustedListCallback));
}
public void testLowSecurity(){
+ requestTListLock();
+
RouterServiceValidator rsvp = new RouterServiceValidator(this.mContext); //Use a locally scoped instance
rsvp.setSecurityLevel(MultiplexTransportConfig.FLAG_MULTI_SECURITY_LOW);
rsvp.setFlags(RouterServiceValidator.FLAG_DEBUG_INSTALLED_FROM_CHECK);
@@ -134,11 +165,13 @@ public class RSVTestCase extends AndroidTestCase {
assertEquals(RouterServiceValidator.getRefreshRate(), REFRESH_TRUSTED_APP_LIST_TIME_MONTH);
- assertTrue(RouterServiceValidator.createTrustedListRequest(mContext, true, null, null));
+ assertTrue(RouterServiceValidator.createTrustedListRequest(mContext, true, null, trustedListCallback));
}
public void testNoSecurity(){
+ requestTListLock();
+
RouterServiceValidator rsvp = new RouterServiceValidator(this.mContext); //Use a locally scoped instance
rsvp.setSecurityLevel(MultiplexTransportConfig.FLAG_MULTI_SECURITY_OFF);
rsvp.setFlags(RouterServiceValidator.FLAG_DEBUG_INSTALLED_FROM_CHECK);
@@ -147,7 +180,7 @@ public class RSVTestCase extends AndroidTestCase {
assertEquals(RouterServiceValidator.getRefreshRate(), REFRESH_TRUSTED_APP_LIST_TIME_WEEK);
- assertFalse(RouterServiceValidator.createTrustedListRequest(mContext, true, null, null));
+ assertFalse(RouterServiceValidator.createTrustedListRequest(mContext, true, null, trustedListCallback));
//This should always return true
assertTrue(rsvp.validate());
@@ -179,51 +212,66 @@ public class RSVTestCase extends AndroidTestCase {
}
public void testInvalidateList(){
+ requestTListLock();
+
assertFalse(RouterServiceValidator.invalidateList(null));
assertTrue(RouterServiceValidator.invalidateList(mContext));
+
+ releaseTListLock();
}
public void testGetTrustedList(){
+ requestTListLock();
+
assertNull(RouterServiceValidator.getTrustedList(null));
assertNotNull(RouterServiceValidator.getTrustedList(mContext));
+
+ releaseTListLock();
}
public void testSetTrustedList(){
+ requestTListLock();
+
assertFalse(RouterServiceValidator.setTrustedList(null,null));
assertFalse(RouterServiceValidator.setTrustedList(mContext,null));
assertFalse(RouterServiceValidator.setTrustedList(null,"test"));
assertTrue(RouterServiceValidator.setTrustedList(mContext,"test"));
- String test = "{\"response\": {\"com.livio.sdl\" : { \"versionBlacklist\":[] }, \"com.lexus.tcapp\" : { \"versionBlacklist\":[] }, \"com.toyota.tcapp\" : { \"versionBlacklist\": [] } , \"com.sdl.router\":{\"versionBlacklist\": [] },\"com.ford.fordpass\" : { \"versionBlacklist\":[] } }}";
- assertTrue(RouterServiceValidator.setTrustedList(mContext,test));
- assertTrue(RouterServiceValidator.setTrustedList(mContext,test+test+test+test+test));
+ assertTrue(RouterServiceValidator.setTrustedList(mContext,TEST));
+ assertTrue(RouterServiceValidator.setTrustedList(mContext,TEST+TEST+TEST+TEST+TEST));
StringBuilder builder = new StringBuilder();
for(int i = 0; i<1000; i++){
- builder.append(test);
+ builder.append(TEST);
}
assertTrue(RouterServiceValidator.setTrustedList(mContext,builder.toString()));
+
+ releaseTListLock();
}
public void testTrustedListSetAndGet(){
- String test = "{\"response\": {\"com.livio.sdl\" : { \"versionBlacklist\":[] }, \"com.lexus.tcapp\" : { \"versionBlacklist\":[] }, \"com.toyota.tcapp\" : { \"versionBlacklist\": [] } , \"com.sdl.router\":{\"versionBlacklist\": [] },\"com.ford.fordpass\" : { \"versionBlacklist\":[] } }}";
- assertTrue(RouterServiceValidator.setTrustedList(mContext,test));
+ requestTListLock();
+
+ assertTrue(RouterServiceValidator.setTrustedList(mContext,TEST));
String retVal = RouterServiceValidator.getTrustedList(mContext);
assertNotNull(retVal);
- assertTrue(test.equals(retVal));
-
- retVal = null;
+ assertTrue(TEST.equals(retVal));
+
StringBuilder builder = new StringBuilder();
for(int i = 0; i<1000; i++){
- builder.append(test);
+ builder.append(TEST);
}
assertTrue(RouterServiceValidator.setTrustedList(mContext,builder.toString()));
retVal = RouterServiceValidator.getTrustedList(mContext);
assertNotNull(retVal);
assertTrue(builder.toString().equals(retVal));
+
+ releaseTListLock();
}
public void testInvalidationSequence(){
+ requestTListLock();
+
assertTrue(RouterServiceValidator.invalidateList(mContext));
- assertTrue(RouterServiceValidator.createTrustedListRequest(mContext,false));
+ assertTrue(RouterServiceValidator.createTrustedListRequest(mContext, false, null, trustedListCallback));
}
public void testAppStorePackages(){
@@ -267,6 +315,8 @@ public class RSVTestCase extends AndroidTestCase {
static boolean didFinish = false;
public void testGetAndCheckList(){
+ requestTListLock();
+
final Object REQUEST_LOCK = new Object();
didFinish = false;
HttpRequestTaskCallback cb = new HttpRequestTaskCallback(){
@@ -279,6 +329,7 @@ public class RSVTestCase extends AndroidTestCase {
didFinish = true;
REQUEST_LOCK.notify();
}
+ releaseTListLock();
}
@Override
public void httpFailure(int statusCode) {
@@ -287,6 +338,7 @@ public class RSVTestCase extends AndroidTestCase {
didFinish = true;
REQUEST_LOCK.notify();
}
+ releaseTListLock();
}
};
@@ -308,12 +360,14 @@ public class RSVTestCase extends AndroidTestCase {
* Test to check that we can save our last request which actually houses all the previous known sdl enabled apps
*/
public void testRequestChange(){
+ requestTListLock();
+
RouterServiceValidator.setLastRequest(mContext, null);
assertNull(RouterServiceValidator.getLastRequest(mContext));
- String test = "{\"response\": {\"com.livio.sdl\" : { \"versionBlacklist\":[] }, \"com.lexus.tcapp\" : { \"versionBlacklist\":[] }, \"com.toyota.tcapp\" : { \"versionBlacklist\": [] } , \"com.sdl.router\":{\"versionBlacklist\": [] },\"com.ford.fordpass\" : { \"versionBlacklist\":[] } }}";
+
JSONObject object = null;
try {
- object = new JSONObject(test);
+ object = new JSONObject(TEST);
} catch (JSONException e) {
e.printStackTrace();
}
@@ -327,7 +381,7 @@ public class RSVTestCase extends AndroidTestCase {
assertTrue(object.toString().equals(oldRequest));
//Now test a new list
- test = "{\"response\": {\"com.livio.sdl\" : { \"versionBlacklist\":[] }, \"com.lexus.tcapp\" : { \"versionBlacklist\":[] }, \"com.test.test\" : { \"versionBlacklist\":[] },\"com.toyota.tcapp\" : { \"versionBlacklist\": [] } , \"com.sdl.router\":{\"versionBlacklist\": [] },\"com.ford.fordpass\" : { \"versionBlacklist\":[] } }}";
+ String test = "{\"response\": {\"com.livio.sdl\" : { \"versionBlacklist\":[] }, \"com.lexus.tcapp\" : { \"versionBlacklist\":[] }, \"com.test.test\" : { \"versionBlacklist\":[] },\"com.toyota.tcapp\" : { \"versionBlacklist\": [] } , \"com.sdl.router\":{\"versionBlacklist\": [] },\"com.ford.fordpass\" : { \"versionBlacklist\":[] } }}";
object = null;
try {
object = new JSONObject(test);
@@ -339,7 +393,40 @@ public class RSVTestCase extends AndroidTestCase {
//Clear it for next test
RouterServiceValidator.setLastRequest(mContext, null);
+ releaseTListLock();
}
-
+
+ /**
+ * Test app's router validation. Validation should fail when the given context and ComponentName object are from different packages and security setting is not OFF
+ * and app is not on trusted list. Validation should pass when the given context and ComponentName object are from the same package.
+ */
+ public void testAppSelfValidation() {
+
+ class RouterServiceValidatorTest extends RouterServiceValidator{
+ public RouterServiceValidatorTest(Context context){
+ super(context);
+ }
+
+ public RouterServiceValidatorTest(Context context, ComponentName service){
+ super(context, service);
+ }
+
+ // Override this method and simply returning true for the purpose of this test
+ protected boolean isServiceRunning(Context context, ComponentName service){
+ return true;
+ }
+ }
+
+ // Fail, different package name for context and service and app security setting is not OFF and app is not on trusted list
+ RouterServiceValidatorTest rsvpFail = new RouterServiceValidatorTest(this.mContext, new ComponentName("anything", mContext.getClass().getSimpleName()));
+ rsvpFail.setSecurityLevel(MultiplexTransportConfig.FLAG_MULTI_SECURITY_HIGH);
+ assertFalse(rsvpFail.validate());
+
+ // Success, same package name for context and service
+ RouterServiceValidatorTest rsvpPass = new RouterServiceValidatorTest(this.mContext, new ComponentName(mContext.getPackageName(), mContext.getClass().getSimpleName()));
+ rsvpPass.setSecurityLevel(MultiplexTransportConfig.FLAG_MULTI_SECURITY_HIGH);
+ assertTrue(rsvpPass.validate());
+ }
+
}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/transport/RegisteredAppTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/transport/RegisteredAppTests.java
index a4d4e1395..4208c1479 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/transport/RegisteredAppTests.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/transport/RegisteredAppTests.java
@@ -18,47 +18,42 @@ public class RegisteredAppTests extends AndroidTestCase {
public void testHandleMessage() {
- // Run Test in Main Thread
- new Handler(Looper.getMainLooper()).post(new Runnable() {
- @Override
- public void run() {
+ if (Looper.myLooper() == null) {
+ Looper.prepare();
+ }
- // Instantiate SdlRouterService and Registered App class
- SdlRouterService router = new SdlRouterService();
- SdlRouterService.RegisteredApp app = router.new RegisteredApp(APP_ID, messenger);
+ // Instantiate SdlRouterService and Registered App class
+ SdlRouterService router = new SdlRouterService();
+ SdlRouterService.RegisteredApp app = router.new RegisteredApp(APP_ID, messenger);
- // Call Handle Message
- app.handleMessage(TransportConstants.BYTES_TO_SEND_FLAG_LARGE_PACKET_START,bytes);
+ // Call Handle Message
+ app.handleMessage(TransportConstants.BYTES_TO_SEND_FLAG_LARGE_PACKET_START,bytes);
+
+ // Insure that the buffer is not null, if it is the test will fail
+ assertNotNull(app.buffer);
- // Insure that the buffer is not null, if it is the test will fail
- assertNotNull(app.buffer);
- }
- });
}
public void testNullBuffer() {
- // Run Test in Main Thread
- new Handler(Looper.getMainLooper()).post(new Runnable() {
- @Override
- public void run() {
+ if (Looper.myLooper() == null) {
+ Looper.prepare();
+ }
- // Instantiate SdlRouterService and Registered App class
- SdlRouterService router = new SdlRouterService();
- SdlRouterService.RegisteredApp app = router.new RegisteredApp(APP_ID, messenger);
+ // Instantiate SdlRouterService and Registered App class
+ SdlRouterService router = new SdlRouterService();
+ SdlRouterService.RegisteredApp app = router.new RegisteredApp(APP_ID, messenger);
- // Force Null Buffer
- app.buffer = null;
+ // Force Null Buffer
+ app.buffer = null;
- // Call Handle Message - Making sure it doesn't init buffer
- app.handleMessage(TransportConstants.BYTES_TO_SEND_FLAG_NONE,bytes);
+ // Call Handle Message - Making sure it doesn't init buffer
+ app.handleMessage(TransportConstants.BYTES_TO_SEND_FLAG_NONE,bytes);
- // Insure that the buffer is null. and no NPE
- assertNull(app.buffer);
+ // Insure that the buffer is null. and no NPE
+ assertNull(app.buffer);
- }
- });
}
}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/transport/SdlRouterServiceTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/transport/SdlRouterServiceTests.java
new file mode 100644
index 000000000..40fe0e77f
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/transport/SdlRouterServiceTests.java
@@ -0,0 +1,132 @@
+package com.smartdevicelink.transport;
+
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.test.AndroidTestCase;
+import android.util.Log;
+
+import com.smartdevicelink.protocol.SdlPacket;
+
+import junit.framework.Assert;
+
+import java.lang.ref.WeakReference;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+public class SdlRouterServiceTests extends AndroidTestCase {
+
+ public static final String TAG = "SdlRouterServiceTests";
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ //Nothing here for now
+ }
+
+ /**
+ * Test null bundle handling in AltTransportHandler when handling messages. Only test the case of
+ * msg.what == TransportConstants.ROUTER_RECEIVED_PACKET
+ */
+ public void testAlTransportHandlerHandleNullBundle() {
+ if (Looper.myLooper() == null) {
+ Looper.prepare();
+ }
+ class AltTransportHandler extends Handler {
+ ClassLoader loader;
+ final WeakReference<SdlRouterService> provider;
+
+ public AltTransportHandler(SdlRouterService provider) {
+ this.provider = new WeakReference<SdlRouterService>(provider);
+ loader = getClass().getClassLoader();
+ }
+
+ @Override
+ public void handleMessage(Message msg) {
+ SdlRouterService service = this.provider.get();
+ Bundle receivedBundle = msg.getData();
+ switch (msg.what) {
+ case TransportConstants.ROUTER_RECEIVED_PACKET:
+ if (receivedBundle != null) {
+ receivedBundle.setClassLoader(loader);//We do this because loading a custom parceable object isn't possible without it
+ if (receivedBundle.containsKey(TransportConstants.FORMED_PACKET_EXTRA_NAME)) {
+ SdlPacket packet = receivedBundle.getParcelable(TransportConstants.FORMED_PACKET_EXTRA_NAME);
+ if (packet != null && service != null) {
+ service.onPacketRead(packet);
+ } else {
+ Log.w(TAG, "Received null packet from alt transport service");
+ }
+ } else {
+ Log.w(TAG, "Flase positive packet reception");
+ }
+ } else {
+ Log.e(TAG, "Bundle was null while sending packet to router service from alt transport");
+ }
+ break;
+ default:
+ super.handleMessage(msg);
+ }
+
+ }
+ }
+ AltTransportHandler testHandler = new AltTransportHandler(null);
+ Message msg = Message.obtain(null, TransportConstants.ROUTER_RECEIVED_PACKET);
+ //Send a null bundle
+ msg.setData(null);
+ try {
+ testHandler.handleMessage(msg);
+ } catch (Exception e) {
+ Assert.fail("Exception in testAlTransportHandlerHandleNullBundle, " + e);
+ }
+ }
+
+ /**
+ * Test writeBytesToTransport method for handling null byte array in bundle
+ *
+ * @see SdlRouterService#writeBytesToTransport(Bundle)
+ */
+ public void testWriteBytesToTransport() {
+ if (Looper.myLooper() == null) {
+ Looper.prepare();
+ }
+ Method method;
+ Field field = null;
+ Object sdlRouterService = null;
+ try {
+ sdlRouterService = Class.forName("com.smartdevicelink.transport.SdlRouterService").newInstance();
+ //Send a null bundle
+ method = SdlRouterService.class.getDeclaredMethod("writeBytesToTransport", Bundle.class);
+ Bundle bundle = null;
+ method.invoke(sdlRouterService, bundle);
+
+ //Send a non-null bundle with a null bytes array
+ //First, set mSerialService to the correct state so we get to test packet being null
+ MultiplexBluetoothTransport transport = new MultiplexBluetoothTransport(null);
+ transport.setStateManually(MultiplexBluetoothTransport.STATE_CONNECTED);
+ field = SdlRouterService.class.getDeclaredField("mSerialService");
+ field.setAccessible(true);
+ field.set(sdlRouterService, transport);
+ bundle = new Bundle();
+ bundle.putByteArray(TransportConstants.BYTES_TO_SEND_EXTRA_NAME, null);
+ method.invoke(sdlRouterService, bundle);
+ } catch (Exception e) {
+ Assert.fail("Exception in testWriteBytesToTransport, " + e);
+ }
+
+ //Return mSerialService to previous state
+ if (field != null && sdlRouterService != null) {
+ try {
+ field.set(sdlRouterService, null);
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/transport/TransportBrokerTest.java b/sdl_android/src/androidTest/java/com/smartdevicelink/transport/TransportBrokerTest.java
index bbc682fbc..5725b6974 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/transport/TransportBrokerTest.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/transport/TransportBrokerTest.java
@@ -2,11 +2,13 @@ package com.smartdevicelink.transport;
import android.bluetooth.BluetoothAdapter;
import android.os.Handler;
+import android.os.Looper;
import android.os.Message;
import android.os.Messenger;
import android.test.AndroidTestCase;
import com.smartdevicelink.test.SdlUnitTestContants;
+import com.smartdevicelink.test.util.DeviceUtil;
public class TransportBrokerTest extends AndroidTestCase {
RouterServiceValidator rsvp;
@@ -27,68 +29,92 @@ public class TransportBrokerTest extends AndroidTestCase {
}
public void testStart(){
+ if (Looper.myLooper() == null) {
+ Looper.prepare();
+ }
TransportBroker broker = new TransportBroker(mContext, SdlUnitTestContants.TEST_APP_ID,rsvp.getService());
- assertTrue(broker.start());
+ if(!DeviceUtil.isEmulator()){ // Cannot perform MBT operations in emulator
+ assertTrue(broker.start());
+ }
broker.stop();
+
}
public void testSendPacket(){
+ if (Looper.myLooper() == null) {
+ Looper.prepare();
+ }
+
TransportBroker broker = new TransportBroker(mContext, SdlUnitTestContants.TEST_APP_ID,rsvp.getService());
- assertTrue(broker.start());
+
+ if(!DeviceUtil.isEmulator()){ // Cannot perform MBT operations in emulator
+ assertTrue(broker.start());
+ }
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
- assertNotNull(adapter);
- assertTrue(adapter.isEnabled());
-
+ if(!DeviceUtil.isEmulator()){ // Cannot perform BT adapter operations in emulator
+ assertNotNull(adapter);
+ assertTrue(adapter.isEnabled());
+ }
//Not ideal, but not implementing callbacks just for unit tests
int count = 0;
while(broker.routerServiceMessenger == null && count<10){
sleep();
count++;
}
- assertNotNull(broker.routerServiceMessenger);
-
-
+ if(!DeviceUtil.isEmulator()){ // Cannot perform BT adapter operations in emulator
+ assertNotNull(broker.routerServiceMessenger);
+ }
+
//assertFalse(broker.sendPacketToRouterService(null, 0, 0));
//assertFalse(broker.sendPacketToRouterService(new byte[3], -1, 0));
//assertFalse(broker.sendPacketToRouterService(new byte[3], 0, 4));
//assertTrue(broker.sendPacketToRouterService(new byte[3],0, 3));
-
+
broker.stop();
+
}
public void testOnPacketReceived(){
- TransportBroker broker = new TransportBroker(mContext, SdlUnitTestContants.TEST_APP_ID,rsvp.getService());
- assertTrue(broker.start());
+ if (Looper.myLooper() == null) {
+ Looper.prepare();
+ }
+ TransportBroker broker = new TransportBroker(mContext, SdlUnitTestContants.TEST_APP_ID, rsvp.getService());
+ if(!DeviceUtil.isEmulator()){ // Cannot perform MBT operations in emulator
+ assertTrue(broker.start());
+ }
+
}
public void testSendMessageToRouterService(){
- TransportBroker broker = new TransportBroker(mContext, SdlUnitTestContants.TEST_APP_ID,rsvp.getService());
+ if (Looper.myLooper() == null) {
+ Looper.prepare();
+ }
+
+ TransportBroker broker = new TransportBroker(mContext, SdlUnitTestContants.TEST_APP_ID, rsvp.getService());
Handler handler = new Handler();
- Message message = new Message();
+ Message message = new Message();
broker.routerServiceMessenger = null;
broker.isBound = true;
+
assertFalse(broker.sendMessageToRouterService(message));
-
+
broker.routerServiceMessenger = new Messenger(handler); //So it's not ambiguous
+
broker.isBound = false;
+
assertFalse(broker.sendMessageToRouterService(message));
-
+
broker.isBound = true;
broker.registeredWithRouterService = true;
-
+
message = null;
+
assertFalse(broker.sendMessageToRouterService(message));
-
+
message = new Message();
-
+
assertTrue(broker.sendMessageToRouterService(message));
-
-
-
-
}
-
-
}
diff --git a/sdl_android/src/main/AndroidManifest.xml b/sdl_android/src/main/AndroidManifest.xml
index 2cbeacf64..a958fb2fc 100644
--- a/sdl_android/src/main/AndroidManifest.xml
+++ b/sdl_android/src/main/AndroidManifest.xml
@@ -1,4 +1,3 @@
<manifest package="com.smartdevicelink" xmlns:android="http://schemas.android.com/apk/res/android">
<uses-sdk android:minSdkVersion="8"/>
- <application android:debuggable="true"/>
</manifest>
diff --git a/sdl_android/src/main/java/com/smartdevicelink/SdlConnection/SdlSession.java b/sdl_android/src/main/java/com/smartdevicelink/SdlConnection/SdlSession.java
index 1a9d051a6..7c7f9237f 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/SdlConnection/SdlSession.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/SdlConnection/SdlSession.java
@@ -5,6 +5,7 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
+import java.util.HashMap;
import java.util.List;
import java.util.ListIterator;
import java.util.concurrent.CopyOnWriteArrayList;
@@ -22,11 +23,13 @@ import com.smartdevicelink.protocol.heartbeat.IHeartbeatMonitor;
import com.smartdevicelink.protocol.heartbeat.IHeartbeatMonitorListener;
import com.smartdevicelink.proxy.LockScreenManager;
import com.smartdevicelink.proxy.RPCRequest;
+import com.smartdevicelink.proxy.interfaces.ISdlServiceListener;
import com.smartdevicelink.security.ISecurityInitializedListener;
import com.smartdevicelink.security.SdlSecurityBase;
import com.smartdevicelink.streaming.IStreamListener;
import com.smartdevicelink.streaming.StreamPacketizer;
import com.smartdevicelink.streaming.StreamRPCPacketizer;
+import com.smartdevicelink.streaming.VideoStreamingParams;
import com.smartdevicelink.transport.BaseTransportConfig;
import com.smartdevicelink.transport.MultiplexTransport;
import com.smartdevicelink.transport.enums.TransportType;
@@ -51,6 +54,9 @@ public class SdlSession implements ISdlConnectionListener, IHeartbeatMonitorList
SdlEncoder mSdlEncoder = null;
private final static int BUFF_READ_SIZE = 1024;
private int sessionHashId = 0;
+ private HashMap<SessionType, CopyOnWriteArrayList<ISdlServiceListener>> serviceListeners;
+ private VideoStreamingParams desiredVideoParams = null;
+ private VideoStreamingParams acceptedVideoParams = null;
public static SdlSession createSession(byte wiproVersion, ISdlConnectionListener listener, BaseTransportConfig btConfig) {
@@ -482,6 +488,12 @@ public class SdlSession implements ISdlConnectionListener, IHeartbeatMonitorList
if (isEncrypted)
encryptedServices.addIfAbsent(sessionType);
this.sessionListener.onProtocolSessionStarted(sessionType, sessionID, version, correlationID, hashID, isEncrypted);
+ if(serviceListeners != null && serviceListeners.containsKey(sessionType)){
+ CopyOnWriteArrayList<ISdlServiceListener> listeners = serviceListeners.get(sessionType);
+ for(ISdlServiceListener listener:listeners){
+ listener.onServiceStarted(this, sessionType, isEncrypted);
+ }
+ }
//if (version == 3)
initialiseSession();
if (sessionType.eq(SessionType.RPC)){
@@ -493,6 +505,12 @@ public class SdlSession implements ISdlConnectionListener, IHeartbeatMonitorList
public void onProtocolSessionEnded(SessionType sessionType, byte sessionID,
String correlationID) {
this.sessionListener.onProtocolSessionEnded(sessionType, sessionID, correlationID);
+ if(serviceListeners != null && serviceListeners.containsKey(sessionType)){
+ CopyOnWriteArrayList<ISdlServiceListener> listeners = serviceListeners.get(sessionType);
+ for(ISdlServiceListener listener:listeners){
+ listener.onServiceEnded(this, sessionType);
+ }
+ }
encryptedServices.remove(sessionType);
}
@@ -534,14 +552,25 @@ public class SdlSession implements ISdlConnectionListener, IHeartbeatMonitorList
@Override
public void onProtocolSessionStartedNACKed(SessionType sessionType,
byte sessionID, byte version, String correlationID) {
- this.sessionListener.onProtocolSessionStartedNACKed(sessionType, sessionID, version, correlationID);
+ this.sessionListener.onProtocolSessionStartedNACKed(sessionType, sessionID, version, correlationID);
+ if(serviceListeners != null && serviceListeners.containsKey(sessionType)){
+ CopyOnWriteArrayList<ISdlServiceListener> listeners = serviceListeners.get(sessionType);
+ for(ISdlServiceListener listener:listeners){
+ listener.onServiceError(this, sessionType, "Start "+ sessionType.toString() +" Service NACK'ed");
+ }
+ }
}
@Override
public void onProtocolSessionEndedNACKed(SessionType sessionType,
byte sessionID, String correlationID) {
this.sessionListener.onProtocolSessionEndedNACKed(sessionType, sessionID, correlationID);
-
+ if(serviceListeners != null && serviceListeners.containsKey(sessionType)){
+ CopyOnWriteArrayList<ISdlServiceListener> listeners = serviceListeners.get(sessionType);
+ for(ISdlServiceListener listener:listeners){
+ listener.onServiceError(this, sessionType, "End "+ sessionType.toString() +" Service NACK'ed");
+ }
+ }
}
@Override
@@ -596,4 +625,52 @@ public class SdlSession implements ISdlConnectionListener, IHeartbeatMonitorList
public static boolean removeConnection(SdlConnection connection){
return shareConnections.remove(connection);
}
+
+ public void addServiceListener(SessionType serviceType, ISdlServiceListener sdlServiceListener){
+ if(serviceListeners == null){
+ serviceListeners = new HashMap<>();
+ }
+ if(serviceType != null && sdlServiceListener != null){
+ if(!serviceListeners.containsKey(serviceType)){
+ serviceListeners.put(serviceType,new CopyOnWriteArrayList<ISdlServiceListener>());
+ }
+ serviceListeners.get(serviceType).add(sdlServiceListener);
+ }
+ }
+
+ public boolean removeServiceListener(SessionType serviceType, ISdlServiceListener sdlServiceListener){
+ if(serviceListeners!= null && serviceType != null && sdlServiceListener != null && serviceListeners.containsKey(serviceType)){
+ return serviceListeners.get(serviceType).remove(sdlServiceListener);
+ }
+ return false;
+ }
+
+
+ public HashMap<SessionType, CopyOnWriteArrayList<ISdlServiceListener>> getServiceListeners(){
+ return serviceListeners;
+ }
+
+ public void setDesiredVideoParams(VideoStreamingParams params){
+ this.desiredVideoParams = params;
+ }
+
+ /**
+ * Returns the currently set desired video streaming parameters. If there haven't been any set,
+ * the default options will be returned and set for this instance.
+ * @return
+ */
+ public VideoStreamingParams getDesiredVideoParams(){
+ if(desiredVideoParams == null){
+ desiredVideoParams = new VideoStreamingParams();
+ }
+ return desiredVideoParams;
+ }
+
+ public void setAcceptedVideoParams(VideoStreamingParams params){
+ this.acceptedVideoParams = params;
+ }
+
+ public VideoStreamingParams getAcceptedVideoParams(){
+ return acceptedVideoParams;
+ }
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/protocol/BinaryFrameHeader.java b/sdl_android/src/main/java/com/smartdevicelink/protocol/BinaryFrameHeader.java
index eb8f36831..5848b9f5a 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/protocol/BinaryFrameHeader.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/protocol/BinaryFrameHeader.java
@@ -44,7 +44,7 @@ public class BinaryFrameHeader {
System.arraycopy(binHeader, 12 + _jsonSize, _bulkData, 0, _bulkData.length);
msg.setBulkData(_bulkData);
}
- } catch (OutOfMemoryError e){
+ } catch (OutOfMemoryError|ArrayIndexOutOfBoundsException e){
Log.e(TAG, "Unable to process data to form header");
return null;
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/protocol/SdlPacket.java b/sdl_android/src/main/java/com/smartdevicelink/protocol/SdlPacket.java
index 9c7a02852..cc14cdac7 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/protocol/SdlPacket.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/protocol/SdlPacket.java
@@ -1,7 +1,9 @@
package com.smartdevicelink.protocol;
import java.nio.ByteBuffer;
+import java.util.HashMap;
+import com.livio.BSON.BsonEncoder;
import com.smartdevicelink.protocol.enums.FrameType;
import android.os.Parcel;
@@ -65,6 +67,7 @@ public class SdlPacket implements Parcelable{
int messageId;
int priorityCoefficient;
byte[] payload = null;
+ HashMap<String, Object> bsonPayload;
public SdlPacket(int version, boolean encryption, int frameType,
int serviceType, int frameInfo, int sessionId,
@@ -185,7 +188,12 @@ public class SdlPacket implements Parcelable{
return payload;
}
- public byte[] constructPacket(){
+ public byte[] constructPacket() {
+ if (bsonPayload != null && !bsonPayload.isEmpty()) {
+ byte[] bsonBytes = BsonEncoder.encodeToBytes(bsonPayload);
+ payload = bsonBytes;
+ dataSize = bsonBytes.length;
+ }
return constructPacket(version, encryption, frameType,
serviceType, frameInfo, sessionId,
dataSize, messageId, payload);
@@ -219,6 +227,7 @@ public class SdlPacket implements Parcelable{
public static byte[] constructPacket(int version, boolean encryption, int frameType,
int serviceType, int controlFrameInfo, int sessionId,
int dataSize, int messageId, byte[] payload){
+
ByteBuffer builder;
switch(version){
case 1:
@@ -344,6 +353,25 @@ public class SdlPacket implements Parcelable{
}
};
-
-
+
+ public void putTag(String tag, Object data){
+ if(bsonPayload == null){
+ bsonPayload = new HashMap<>();
+ }
+ bsonPayload.put(tag, data);
+ }
+
+ public Object getTag(String tag){
+ if(payload == null){
+ return null;
+ }else if(bsonPayload == null || bsonPayload.isEmpty()){
+ bsonPayload = BsonEncoder.decodeFromBytes(payload);
+ }
+
+ if(bsonPayload == null){
+ return null;
+ }
+
+ return bsonPayload.get(tag);
+ }
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/protocol/WiProProtocol.java b/sdl_android/src/main/java/com/smartdevicelink/protocol/WiProProtocol.java
index 7b36b1689..fa3ab3a32 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/protocol/WiProProtocol.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/protocol/WiProProtocol.java
@@ -4,27 +4,39 @@ import com.smartdevicelink.SdlConnection.SdlConnection;
import com.smartdevicelink.SdlConnection.SdlSession;
import com.smartdevicelink.exception.SdlException;
import com.smartdevicelink.exception.SdlExceptionCause;
+import com.smartdevicelink.protocol.enums.ControlFrameTags;
import com.smartdevicelink.protocol.enums.FrameDataControlFrameType;
import com.smartdevicelink.protocol.enums.FrameType;
import com.smartdevicelink.protocol.enums.MessageType;
import com.smartdevicelink.protocol.enums.SessionType;
+import com.smartdevicelink.proxy.rpc.ImageResolution;
+import com.smartdevicelink.proxy.rpc.VideoStreamingFormat;
+import com.smartdevicelink.proxy.rpc.enums.VideoStreamingCodec;
+import com.smartdevicelink.proxy.rpc.enums.VideoStreamingProtocol;
import com.smartdevicelink.security.SdlSecurityBase;
+import com.smartdevicelink.streaming.VideoStreamingParams;
import com.smartdevicelink.util.BitConverter;
import com.smartdevicelink.util.DebugTool;
+import com.smartdevicelink.util.Version;
import java.io.ByteArrayOutputStream;
+import java.util.HashMap;
import java.util.Hashtable;
+import java.util.List;
public class WiProProtocol extends AbstractProtocol {
- byte _version = 1;
private final static String FailurePropagating_Msg = "Failure propagating ";
+ //If increasing MAX PROTOCOL VERSION major version, make sure to alter it in SdlPsm
+ public static final Version MAX_PROTOCOL_VERSION = new Version("5.0.0");
+ private Version protocolVersion = new Version("1.0.0");
+ byte _version = 1;
public static final int V1_V2_MTU_SIZE = 1500;
public static final int V3_V4_MTU_SIZE = 131072;
public static final int V1_HEADER_SIZE = 8;
public static final int V2_HEADER_SIZE = 12;
private static int HEADER_SIZE = 8;
- private static int MAX_DATA_SIZE = V1_V2_MTU_SIZE - HEADER_SIZE;
+ private static int TLS_MAX_RECORD_SIZE = 16384;
int hashID = 0;
int messageID = 0;
@@ -38,6 +50,7 @@ public class WiProProtocol extends AbstractProtocol {
Hashtable<Integer, MessageFrameAssembler> _assemblerForMessageID = new Hashtable<Integer, MessageFrameAssembler>();
Hashtable<Byte, Hashtable<Integer, MessageFrameAssembler>> _assemblerForSessionID = new Hashtable<Byte, Hashtable<Integer, MessageFrameAssembler>>();
Hashtable<Byte, Object> _messageLocks = new Hashtable<Byte, Object>();
+ private HashMap<SessionType, Long> mtus = new HashMap<SessionType,Long>();
// Hide no-arg ctor
private WiProProtocol() {
@@ -51,6 +64,7 @@ public class WiProProtocol extends AbstractProtocol {
{
sdlconn = (SdlConnection) protocolListener;
}
+ mtus.put(SessionType.RPC, new Long(V1_V2_MTU_SIZE - HEADER_SIZE));
} // end-ctor
/**
@@ -58,49 +72,88 @@ public class WiProProtocol extends AbstractProtocol {
* @return the max transfer unit
*/
public int getMtu(){
- return MAX_DATA_SIZE;
+ return mtus.get(SessionType.RPC).intValue();
}
-
+
+ public long getMtu(SessionType type){
+ Long mtu = mtus.get(type);
+ if(mtu == null){
+ mtu = mtus.get(SessionType.RPC);
+ }
+ return mtu;
+ }
+
+
+ /**
+ * Use getProtocolVersion() or getMajorVersionByte instead.<br>
+ * Returns the Major version of the currently used protocol version
+ */
+ @Deprecated
public byte getVersion() {
- return this._version;
+ return getMajorVersionByte();
}
-
+
+ public Version getProtocolVersion(){
+ return this.protocolVersion;
+ }
+ public byte getMajorVersionByte(){
+ if(_version == 1){
+ _version = new Integer(this.protocolVersion.getMajor()).byteValue();
+ }
+ return _version;
+
+ }
+
+ /**
+ * This method will set the major protocol version that we should use. It will also set the default MTU based on version.
+ * @param version
+ */
public void setVersion(byte version) {
- if (version > 4) {
- this._version = 4; //protect for future, proxy only supports v4 or lower
+ if (version > 5) {
+ this.protocolVersion = new Version("5.0.0"); //protect for future, proxy only supports v5 or lower
+ HEADER_SIZE = 12;
+ mtus.put(SessionType.RPC,new Long(V3_V4_MTU_SIZE) );
+ } else if (version == 5) {
+ this.protocolVersion = new Version("5.0.0");
HEADER_SIZE = 12;
- MAX_DATA_SIZE = V1_V2_MTU_SIZE - HEADER_SIZE; //default to lowest size since capabilities of this version are unknown
- } else if (version == 4) {
- this._version = version;
+ mtus.put(SessionType.RPC,new Long(V3_V4_MTU_SIZE) );
+ }else if (version == 4) {
+ this.protocolVersion = new Version("4.0.0");
HEADER_SIZE = 12;
- MAX_DATA_SIZE = V3_V4_MTU_SIZE; //versions 4 supports 128k MTU
+ mtus.put(SessionType.RPC,new Long(V3_V4_MTU_SIZE) ); //versions 4 supports 128k MTU
} else if (version == 3) {
- this._version = version;
+ this.protocolVersion = new Version("3.0.0");
HEADER_SIZE = 12;
- MAX_DATA_SIZE = V3_V4_MTU_SIZE; //versions 3 supports 128k MTU
+ mtus.put(SessionType.RPC,new Long(V3_V4_MTU_SIZE) ); //versions 3 supports 128k MTU
} else if (version == 2) {
- this._version = version;
+ this.protocolVersion = new Version("2.0.0");
HEADER_SIZE = 12;
- MAX_DATA_SIZE = V1_V2_MTU_SIZE - HEADER_SIZE;
+ mtus.put(SessionType.RPC,new Long(V1_V2_MTU_SIZE - HEADER_SIZE) );
} else if (version == 1){
- this._version = version;
+ this.protocolVersion = new Version("1.0.0");
HEADER_SIZE = 8;
- MAX_DATA_SIZE = V1_V2_MTU_SIZE - HEADER_SIZE;
+ mtus.put(SessionType.RPC,new Long(V1_V2_MTU_SIZE - HEADER_SIZE) );
}
}
public void StartProtocolSession(SessionType sessionType) {
- SdlPacket header = SdlPacketFactory.createStartSession(sessionType, 0x00, _version, (byte) 0x00, false);
+ SdlPacket header = SdlPacketFactory.createStartSession(sessionType, 0x00, getMajorVersionByte(), (byte) 0x00, false);
+ if(sessionType.equals(SessionType.RPC)){ // check for RPC session
+ header.putTag(ControlFrameTags.RPC.StartService.PROTOCOL_VERSION, MAX_PROTOCOL_VERSION.toString());
+ }
handlePacketToSend(header);
} // end-method
private void sendStartProtocolSessionACK(SessionType sessionType, byte sessionID) {
- SdlPacket header = SdlPacketFactory.createStartSessionACK(sessionType, sessionID, 0x00, _version);
+ SdlPacket header = SdlPacketFactory.createStartSessionACK(sessionType, sessionID, 0x00, getMajorVersionByte());
handlePacketToSend(header);
} // end-method
public void EndProtocolSession(SessionType sessionType, byte sessionID, int hashId) {
- SdlPacket header = SdlPacketFactory.createEndSession(sessionType, sessionID, hashID, _version, BitConverter.intToByteArray(hashId));
+ SdlPacket header = SdlPacketFactory.createEndSession(sessionType, sessionID, hashID, getMajorVersionByte(), BitConverter.intToByteArray(hashId));
+ if(sessionType.equals(SessionType.RPC)){ // check for RPC session
+ header.putTag(ControlFrameTags.RPC.EndService.HASH_ID, hashID);
+ }
handlePacketToSend(header);
} // end-method
@@ -111,7 +164,7 @@ public class WiProProtocol extends AbstractProtocol {
byte sessionID = protocolMsg.getSessionID();
byte[] data = null;
- if (_version > 1 && sessionType != SessionType.NAV && sessionType != SessionType.PCM) {
+ if (protocolVersion.getMajor() > 1 && sessionType != SessionType.NAV && sessionType != SessionType.PCM) {
if (sessionType.eq(SessionType.CONTROL)) {
final byte[] secureData = protocolMsg.getData().clone();
data = new byte[HEADER_SIZE + secureData.length];
@@ -147,7 +200,7 @@ public class WiProProtocol extends AbstractProtocol {
if (session == null)
return;
- byte[] dataToRead = new byte[4096];
+ byte[] dataToRead = new byte[TLS_MAX_RECORD_SIZE];
SdlSecurityBase sdlSec = session.getSdlSecurity();
if (sdlSec == null)
return;
@@ -171,13 +224,14 @@ public class WiProProtocol extends AbstractProtocol {
}
synchronized(messageLock) {
- if (data.length > MAX_DATA_SIZE) {
-
+ if (data.length > getMtu(sessionType)) {
+
messageID++;
// Assemble first frame.
- int frameCount = data.length / MAX_DATA_SIZE;
- if (data.length % MAX_DATA_SIZE > 0) {
+ Long mtu = getMtu(sessionType);
+ int frameCount = new Long(data.length / mtu).intValue();
+ if (data.length % mtu > 0) {
frameCount++;
}
//byte[] firstFrameData = new byte[HEADER_SIZE];
@@ -187,7 +241,7 @@ public class WiProProtocol extends AbstractProtocol {
// Second four bytes are frame count.
System.arraycopy(BitConverter.intToByteArray(frameCount), 0, firstFrameData, 4, 4);
- SdlPacket firstHeader = SdlPacketFactory.createMultiSendDataFirst(sessionType, sessionID, messageID, _version,firstFrameData,protocolMsg.getPayloadProtected());
+ SdlPacket firstHeader = SdlPacketFactory.createMultiSendDataFirst(sessionType, sessionID, messageID, getMajorVersionByte(),firstFrameData,protocolMsg.getPayloadProtected());
firstHeader.setPriorityCoefficient(1+protocolMsg.priorityCoefficient);
//Send the first frame
handlePacketToSend(firstHeader);
@@ -209,17 +263,17 @@ public class WiProProtocol extends AbstractProtocol {
} // end-if
int bytesToWrite = data.length - currentOffset;
- if (bytesToWrite > MAX_DATA_SIZE) {
- bytesToWrite = MAX_DATA_SIZE;
+ if (bytesToWrite > mtu) {
+ bytesToWrite = mtu.intValue();
}
- SdlPacket consecHeader = SdlPacketFactory.createMultiSendDataRest(sessionType, sessionID, bytesToWrite, frameSequenceNumber , messageID, _version,data, currentOffset, bytesToWrite, protocolMsg.getPayloadProtected());
+ SdlPacket consecHeader = SdlPacketFactory.createMultiSendDataRest(sessionType, sessionID, bytesToWrite, frameSequenceNumber , messageID, getMajorVersionByte(),data, currentOffset, bytesToWrite, protocolMsg.getPayloadProtected());
consecHeader.setPriorityCoefficient(i+2+protocolMsg.priorityCoefficient);
handlePacketToSend(consecHeader);
currentOffset += bytesToWrite;
}
} else {
messageID++;
- SdlPacket header = SdlPacketFactory.createSingleSendData(sessionType, sessionID, data.length, messageID, _version,data, protocolMsg.getPayloadProtected());
+ SdlPacket header = SdlPacketFactory.createSingleSendData(sessionType, sessionID, data.length, messageID, getMajorVersionByte(),data, protocolMsg.getPayloadProtected());
header.setPriorityCoefficient(protocolMsg.priorityCoefficient);
handlePacketToSend(header);
}
@@ -228,7 +282,7 @@ public class WiProProtocol extends AbstractProtocol {
public void handlePacketReceived(SdlPacket packet){
//Check for a version difference
- if (_version == 1) {
+ if (getMajorVersionByte() == 1) {
setVersion((byte)packet.version);
}
@@ -244,7 +298,7 @@ public class WiProProtocol extends AbstractProtocol {
protected MessageFrameAssembler getFrameAssemblerForFrame(SdlPacket packet) {
Integer iSessionId = Integer.valueOf(packet.getSessionId());
Byte bySessionId = iSessionId.byteValue();
-
+
Hashtable<Integer, MessageFrameAssembler> hashSessionID = _assemblerForSessionID.get(bySessionId);
if (hashSessionID == null) {
hashSessionID = new Hashtable<Integer, MessageFrameAssembler>();
@@ -293,13 +347,13 @@ public class WiProProtocol extends AbstractProtocol {
message.setSessionType(SessionType.valueOf((byte)packet.getServiceType()));
message.setSessionID((byte)packet.getSessionId());
//If it is WiPro 2.0 it must have binary header
- if (_version > 1) {
+ if (protocolVersion.getMajor() > 1) {
BinaryFrameHeader binFrameHeader = BinaryFrameHeader.
parseBinaryHeader(accumulator.toByteArray());
if(binFrameHeader == null) {
return;
}
- message.setVersion(_version);
+ message.setVersion(getMajorVersionByte());
message.setRPCType(binFrameHeader.getRPCType());
message.setFunctionID(binFrameHeader.getFunctionID());
message.setCorrID(binFrameHeader.getCorrID());
@@ -399,21 +453,69 @@ public class WiProProtocol extends AbstractProtocol {
messageLock = new Object();
_messageLocks.put((byte)packet.getSessionId(), messageLock);
}
- int hashID = 0;
- if (_version > 1){
- if (packet.payload!= null && packet.dataSize == 4){ //hashid will be 4 bytes in length
- hashID = BitConverter.intFromByteArray(packet.payload, 0);
+ if(packet.version >= 5){
+ String mtuTag = null;
+ if(serviceType.equals(SessionType.RPC)){
+ mtuTag = ControlFrameTags.RPC.StartServiceACK.MTU;
+ }else if(serviceType.equals(SessionType.PCM)){
+ mtuTag = ControlFrameTags.Audio.StartServiceACK.MTU;
+ }else if(serviceType.equals(SessionType.NAV)){
+ mtuTag = ControlFrameTags.Video.StartServiceACK.MTU;
+ }
+ Object mtu = packet.getTag(mtuTag);
+ if(mtu!=null){
+ mtus.put(serviceType,(Long) packet.getTag(mtuTag));
+ }
+ if(serviceType.equals(SessionType.RPC)){
+ hashID = (Integer) packet.getTag(ControlFrameTags.RPC.StartServiceACK.HASH_ID);
+ Object version = packet.getTag(ControlFrameTags.RPC.StartServiceACK.PROTOCOL_VERSION);
+ if(version!=null){
+ //At this point we have confirmed the negotiated version between the module and the proxy
+ protocolVersion = new Version((String)version);
+ }
+ }else if(serviceType.equals(SessionType.NAV)){
+ SdlSession session = sdlconn.findSessionById((byte) packet.sessionId);
+ if(session != null) {
+ ImageResolution acceptedResolution = new ImageResolution();
+ VideoStreamingFormat acceptedFormat = new VideoStreamingFormat();
+ acceptedResolution.setResolutionHeight((Integer) packet.getTag(ControlFrameTags.Video.StartServiceACK.HEIGHT));
+ acceptedResolution.setResolutionWidth((Integer) packet.getTag(ControlFrameTags.Video.StartServiceACK.WIDTH));
+ acceptedFormat.setCodec(VideoStreamingCodec.valueForString((String) packet.getTag(ControlFrameTags.Video.StartServiceACK.VIDEO_CODEC)));
+ acceptedFormat.setProtocol(VideoStreamingProtocol.valueForString((String) packet.getTag(ControlFrameTags.Video.StartServiceACK.VIDEO_PROTOCOL)));
+ VideoStreamingParams agreedVideoParams = session.getDesiredVideoParams();
+ agreedVideoParams.setResolution(acceptedResolution);
+ agreedVideoParams.setFormat(acceptedFormat);
+ session.setAcceptedVideoParams(agreedVideoParams);
+ }
}
- }
- handleProtocolSessionStarted(serviceType,(byte) packet.getSessionId(), _version, "", hashID, packet.isEncrypted());
+ }else{
+ if (protocolVersion.getMajor() > 1){
+ if (packet.payload!= null && packet.dataSize == 4){ //hashid will be 4 bytes in length
+ hashID = BitConverter.intFromByteArray(packet.payload, 0);
+ }
+ }
+ }
+ handleProtocolSessionStarted(serviceType,(byte) packet.getSessionId(), getMajorVersionByte(), "", hashID, packet.isEncrypted());
} else if (frameInfo == FrameDataControlFrameType.StartSessionNACK.getValue()) {
+ if(packet.version >= 5){
+ String rejectedTag = null;
+ if(serviceType.equals(SessionType.RPC)){
+ rejectedTag = ControlFrameTags.RPC.StartServiceNAK.REJECTED_PARAMS;
+ }else if(serviceType.equals(SessionType.PCM)){
+ rejectedTag = ControlFrameTags.Audio.StartServiceNAK.REJECTED_PARAMS;
+ }else if(serviceType.equals(SessionType.NAV)){
+ rejectedTag = ControlFrameTags.Video.StartServiceNAK.REJECTED_PARAMS;
+ }
+ List<String> rejectedParams = (List<String>) packet.getTag(rejectedTag);
+ // TODO: Pass these back
+ }
if (serviceType.eq(SessionType.NAV) || serviceType.eq(SessionType.PCM)) {
- handleProtocolSessionNACKed(serviceType, (byte)packet.getSessionId(), _version, "");
+ handleProtocolSessionNACKed(serviceType, (byte)packet.getSessionId(), getMajorVersionByte(), "");
} else {
handleProtocolError("Got StartSessionNACK for protocol sessionID=" + packet.getSessionId(), null);
}
} else if (frameInfo == FrameDataControlFrameType.EndSession.getValue()) {
- if (_version > 1) {
+ if (protocolVersion.getMajor() > 1) {
handleProtocolSessionEnded(serviceType, (byte)packet.getSessionId(), "");
} else {
handleProtocolSessionEnded(serviceType, (byte)packet.getSessionId(), "");
@@ -421,6 +523,18 @@ public class WiProProtocol extends AbstractProtocol {
} else if (frameInfo == FrameDataControlFrameType.EndSessionACK.getValue()) {
handleProtocolSessionEnded(serviceType, (byte)packet.getSessionId(), "");
} else if (frameInfo == FrameDataControlFrameType.EndSessionNACK.getValue()) {
+ if(packet.version >= 5){
+ String rejectedTag = null;
+ if(serviceType.equals(SessionType.RPC)){
+ rejectedTag = ControlFrameTags.RPC.EndServiceNAK.REJECTED_PARAMS;
+ }else if(serviceType.equals(SessionType.PCM)){
+ rejectedTag = ControlFrameTags.Audio.EndServiceNAK.REJECTED_PARAMS;
+ }else if(serviceType.equals(SessionType.NAV)){
+ rejectedTag = ControlFrameTags.Video.EndServiceNAK.REJECTED_PARAMS;
+ }
+ List<String> rejectedParams = (List<String>) packet.getTag(rejectedTag);
+ // TODO: Pass these back
+ }
handleProtocolSessionEndedNACK(serviceType, (byte)packet.getSessionId(), "");
} else if (frameInfo == FrameDataControlFrameType.ServiceDataACK.getValue()) {
if (packet.getPayload() != null && packet.getDataSize() == 4) //service data ack will be 4 bytes in length
@@ -445,13 +559,13 @@ public class WiProProtocol extends AbstractProtocol {
message.setSessionID((byte)packet.getSessionId());
//If it is WiPro 2.0 it must have binary header
boolean isControlService = message.getSessionType().equals(SessionType.CONTROL);
- if (_version > 1&& !isControlService) {
+ if (protocolVersion.getMajor() > 1 && !isControlService) {
BinaryFrameHeader binFrameHeader = BinaryFrameHeader.
parseBinaryHeader(packet.payload);
if(binFrameHeader == null) {
return;
}
- message.setVersion(_version);
+ message.setVersion(getMajorVersionByte());
message.setRPCType(binFrameHeader.getRPCType());
message.setFunctionID(binFrameHeader.getFunctionID());
message.setCorrID(binFrameHeader.getCorrID());
@@ -478,9 +592,23 @@ public class WiProProtocol extends AbstractProtocol {
@Override
public void StartProtocolService(SessionType sessionType, byte sessionID, boolean isEncrypted) {
- SdlPacket header = SdlPacketFactory.createStartSession(sessionType, 0x00, _version, sessionID, isEncrypted);
+ SdlPacket header = SdlPacketFactory.createStartSession(sessionType, 0x00, getMajorVersionByte(), sessionID, isEncrypted);
+ if(sessionType.equals(SessionType.NAV)){
+ SdlSession videoSession = sdlconn.findSessionById(sessionID);
+ if(videoSession != null){
+ ImageResolution desiredResolution = videoSession.getDesiredVideoParams().getResolution();
+ VideoStreamingFormat desiredFormat = videoSession.getDesiredVideoParams().getFormat();
+ if(desiredResolution != null){
+ header.putTag(ControlFrameTags.Video.StartService.WIDTH, desiredResolution.getResolutionWidth());
+ header.putTag(ControlFrameTags.Video.StartService.HEIGHT, desiredResolution.getResolutionHeight());
+ }
+ if(desiredFormat != null){
+ header.putTag(ControlFrameTags.Video.StartService.VIDEO_CODEC, desiredFormat.getCodec().toString());
+ header.putTag(ControlFrameTags.Video.StartService.VIDEO_PROTOCOL, desiredFormat.getProtocol().toString());
+ }
+ }
+ }
handlePacketToSend(header);
-
}
@Override
@@ -497,21 +625,20 @@ public class WiProProtocol extends AbstractProtocol {
@Override
public void SendHeartBeat(byte sessionID) {
- final SdlPacket heartbeat = SdlPacketFactory.createHeartbeat(SessionType.CONTROL, sessionID, _version);
+ final SdlPacket heartbeat = SdlPacketFactory.createHeartbeat(SessionType.CONTROL, sessionID, getMajorVersionByte());
handlePacketToSend(heartbeat);
}
@Override
public void SendHeartBeatACK(byte sessionID) {
- final SdlPacket heartbeat = SdlPacketFactory.createHeartbeatACK(SessionType.CONTROL, sessionID, _version);
+ final SdlPacket heartbeat = SdlPacketFactory.createHeartbeatACK(SessionType.CONTROL, sessionID, getMajorVersionByte());
handlePacketToSend(heartbeat);
}
@Override
public void EndProtocolService(SessionType serviceType, byte sessionID) {
- SdlPacket header = SdlPacketFactory.createEndSession(serviceType, sessionID, hashID, _version, new byte[4]);
+ SdlPacket header = SdlPacketFactory.createEndSession(serviceType, sessionID, hashID, getMajorVersionByte(), new byte[4]);
handlePacketToSend(header);
-
}
} // end-class
diff --git a/sdl_android/src/main/java/com/smartdevicelink/protocol/enums/ControlFrameTags.java b/sdl_android/src/main/java/com/smartdevicelink/protocol/enums/ControlFrameTags.java
new file mode 100644
index 000000000..74a001edc
--- /dev/null
+++ b/sdl_android/src/main/java/com/smartdevicelink/protocol/enums/ControlFrameTags.java
@@ -0,0 +1,85 @@
+package com.smartdevicelink.protocol.enums;
+
+/**
+ * Control frame payload tags that relate to the respective services. Each class represents a different service, RPC, Audio, and Video services.
+ */
+public class ControlFrameTags {
+
+ private static class StartServiceACKBase{
+ /** Max transport unit to be used for this service */
+ public static final String MTU = "mtu";
+ }
+
+ private static class NAKBase{
+ /** An array of rejected parameters related to the corresponding request*/
+ public static final String REJECTED_PARAMS = "rejectedParams";
+ }
+
+ /**
+ * Control frame payloads that relate to the Remote Procedure Call (RPC) service.
+ */
+ public static class RPC {
+ public static class StartService {
+ /** The max version of the protocol supported by client requesting service to start.<br>
+ * Must be in the format "Major.Minor.Patch"
+ */
+ public static final String PROTOCOL_VERSION = "protocolVersion";
+ }
+ public static class StartServiceACK extends StartServiceACKBase{
+ /** The negotiated version of the protocol. Must be in the format "Major.Minor.Patch"*/
+ public static final String PROTOCOL_VERSION = StartService.PROTOCOL_VERSION;
+ /** Hash ID to identify this service and used when sending an EndService control frame*/
+ public static final String HASH_ID = "hashId";
+ }
+ public static class StartServiceNAK extends NAKBase{}
+ public static class EndService {
+ /** Hash ID supplied in the StartServiceACK for this service type*/
+ public static final String HASH_ID = RPC.StartServiceACK.HASH_ID;
+ }
+ public static class EndServiceACK {}
+ public static class EndServiceNAK extends NAKBase{}
+ }
+
+ /**
+ * Control frame payloads that relate to the Audio streaming service. This service has also been referred to as the PCM service.
+ */
+ public static class Audio {
+ public static class StartService {}
+ public static class StartServiceACK extends StartServiceACKBase{}
+ public static class StartServiceNAK extends NAKBase{}
+ public static class EndService {}
+ public static class EndServiceACK {}
+ public static class EndServiceNAK extends NAKBase{}
+ }
+
+ /**
+ * Control frame payloads that relate to the Video streaming service. This service has also been referred to as the .h264 service.
+ */
+ public static class Video {
+ public static class StartService {
+ /** Desired height in pixels from the client requesting the video service to start*/
+ public static final String HEIGHT = "height";
+ /** Desired width in pixels from the client requesting the video service to start*/
+ public static final String WIDTH = "width";
+ /** Desired video protocol to be used*/
+ public static final String VIDEO_PROTOCOL = "videoProtocol";
+ /** Desired video codec to be used*/
+ public static final String VIDEO_CODEC = "videoCodec";
+ }
+ public static class StartServiceACK extends StartServiceACKBase{
+ /** Accepted height in pixels from the client requesting the video service to start*/
+ public static final String HEIGHT = StartService.HEIGHT;
+ /** Accepted width in pixels from the client requesting the video service to start*/
+ public static final String WIDTH = StartService.WIDTH;
+ /** Accepted video protocol to be used*/
+ public static final String VIDEO_PROTOCOL = StartService.VIDEO_PROTOCOL;
+ /** Accepted video codec to be used*/
+ public static final String VIDEO_CODEC = StartService.VIDEO_CODEC;
+ }
+
+ public static class StartServiceNAK extends NAKBase{}
+ public static class EndService {}
+ public static class EndServiceACK {}
+ public static class EndServiceNAK extends NAKBase{}
+ }
+}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/protocol/enums/FunctionID.java b/sdl_android/src/main/java/com/smartdevicelink/protocol/enums/FunctionID.java
index e427141cf..06116c5b9 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/protocol/enums/FunctionID.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/protocol/enums/FunctionID.java
@@ -56,6 +56,8 @@ public enum FunctionID{
GET_WAY_POINTS(45, "GetWayPoints"),
SUBSCRIBE_WAY_POINTS(46, "SubscribeWayPoints"),
UNSUBSCRIBE_WAY_POINTS(47, "UnsubscribeWayPoints"),
+ GET_SYSTEM_CAPABILITY(48, "GetSystemCapability"),
+ SEND_HAPTIC_DATA(49, "SendHapticData"),
// NOTIFICATIONS
ON_HMI_STATUS(32768, "OnHMIStatus"),
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/LockScreenManager.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/LockScreenManager.java
index 1188d28b9..28b1d3dfb 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/LockScreenManager.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/LockScreenManager.java
@@ -41,11 +41,15 @@ public class LockScreenManager {
public synchronized void setHMILevel(HMILevel hmiVal)
{
hmiLevel = hmiVal;
-
- if ( (hmiVal.equals(HMILevel.HMI_FULL)) || (hmiVal.equals(HMILevel.HMI_LIMITED)) )
- setUserSelectedStatus(true);
- else if (hmiVal.equals(HMILevel.HMI_NONE))
- setUserSelectedStatus(false);
+
+ if (hmiVal != null) {
+ if ((hmiVal.equals(HMILevel.HMI_FULL)) || (hmiVal.equals(HMILevel.HMI_LIMITED)))
+ setUserSelectedStatus(true);
+ else if (hmiVal.equals(HMILevel.HMI_NONE))
+ setUserSelectedStatus(false);
+ }else{
+ setUserSelectedStatus(false);
+ }
}
public synchronized OnLockScreenStatus getLockObj(/*int SessionID*/)
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCMessage.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCMessage.java
index 9f3fbfbd9..e55292aad 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCMessage.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCMessage.java
@@ -70,17 +70,60 @@ public class RPCMessage extends RPCStruct {
}
return null;
}
+
+ // Generalized Getters and Setters
- public void setParameters(String functionName, Object value) {
+ public void setParameters(String key, Object value) {
if (value != null) {
- parameters.put(functionName, value);
+ parameters.put(key, value);
} else {
- parameters.remove(functionName);
+ parameters.remove(key);
}
}
-
- public Object getParameters(String functionName) {
- return parameters.get(functionName);
+
+ public Object getParameters(String key) {
+ return parameters.get(key);
+ }
+
+ @Override
+ public Object getObject(Class tClass, String key) {
+ Object obj = parameters.get(key);
+ return formatObject(tClass, obj);
+ }
+
+ // Common Object Getters
+
+ @Override
+ public String getString(String key) {
+ return (String) parameters.get(key);
+ }
+
+ @Override
+ public Integer getInteger(String key) {
+ return (Integer) parameters.get(key);
+ }
+
+ @Override
+ public Float getFloat(String key) {
+ return (Float) parameters.get(key);
+ }
+
+ @Override
+ public Double getDouble(String key) {
+ return (Double) parameters.get(key);
}
+ @Override
+ public Boolean getBoolean(String key) { return (Boolean) parameters.get(key); }
+
+ @Override
+ public Long getLong(String key){
+ Object result = parameters.get(key);
+ if (result instanceof Integer) {
+ return ((Integer) result).longValue();
+ }else if(result instanceof Long){
+ return (Long) result;
+ }
+ return null;
+ }
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCStruct.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCStruct.java
index 4aea8e146..116c491df 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCStruct.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCStruct.java
@@ -1,12 +1,17 @@
package com.smartdevicelink.proxy;
-import java.util.Hashtable;
-import java.util.Set;
+import com.smartdevicelink.marshal.JsonRPCMarshaller;
import org.json.JSONException;
import org.json.JSONObject;
-import com.smartdevicelink.marshal.JsonRPCMarshaller;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Set;
public class RPCStruct {
public static final String KEY_BULK_DATA = "bulkData";
@@ -110,4 +115,135 @@ public class RPCStruct {
}
return false;
}
+
+ // Generalized Getters and Setters
+
+ public void setValue(String key, Object value){
+ if (value != null) {
+ store.put(key, value);
+ } else {
+ store.remove(key);
+ }
+ }
+
+ public Object getValue(String key) {
+ return store.get(key);
+ }
+
+ public Object getObject(Class tClass, String key) {
+ Object obj = store.get(key);
+ return formatObject(tClass, obj);
+ }
+
+ // Helper methods
+
+ /**
+ * @param tClass a Class to cast Objects to
+ * @param obj Object returned from a stored hashtable
+ * @return A null object if obj is null or if none of the following is true:
+ * a) obj is an instance of tClass
+ * b) obj is an instance of String and it tClass has a valid `valueForString` method
+ * c) obj is an instance of a Hashtable
+ * d) obj is an instance of a List
+ */
+ protected Object formatObject(Class tClass, Object obj){
+ if(obj == null){
+ return null;
+ } else if (tClass.isInstance(obj)) {
+ return obj;
+ } else if (obj instanceof String) {
+ return getValueForString(tClass, (String) obj);
+ } else if (obj instanceof Hashtable) {
+ try {
+ Constructor constructor = tClass.getConstructor(Hashtable.class);
+ return constructor.newInstance((Hashtable<String, Object>) obj);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else if (obj instanceof List<?>) {
+ List<?> list = (List<?>) obj;
+ if (list != null && list.size() > 0) {
+ Object item = list.get(0);
+ if (tClass.isInstance(item)) {
+ return list;
+ } else if (item instanceof Hashtable) {
+ List<Object> newList = new ArrayList<Object>();
+ for (Object hashObj : list) {
+ try {
+ Constructor constructor = tClass.getConstructor(Hashtable.class);
+ newList.add(constructor.newInstance((Hashtable<String, Object>)hashObj));
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+ return newList;
+ } else if (item instanceof String){
+ List<Object> newList = new ArrayList<Object>();
+ for (Object hashObj : list) {
+ Object toAdd = getValueForString(tClass, (String) hashObj);
+ if (toAdd != null) {
+ newList.add(toAdd);
+ }
+ }
+ return newList;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * @param tClass - a Class with a `valueForString(String s)` method that returns an Object for a given String
+ * @param s - a String to be converted to an Object using a `valueForString(String s)` method
+ * @return An Object converted using a `valueForString(String s)` method in the Class passed in, or a null object if such method does not exist
+ */
+ protected Object getValueForString(Class tClass, String s){
+ Method valueForString = null;
+ try {
+ valueForString = tClass.getDeclaredMethod("valueForString", String.class);
+ } catch (NoSuchMethodException e) {
+ e.printStackTrace();
+ }
+ if(valueForString != null){
+ try {
+ Object value = valueForString.invoke(null, (String) s);
+ return value;
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ } catch (InvocationTargetException e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ // Common Object Getters
+ public String getString(String key) {
+ return (String) store.get(key);
+ }
+
+ public Integer getInteger(String key) {
+ return (Integer) store.get(key);
+ }
+
+ public Double getDouble(String key) {
+ return (Double) store.get(key);
+ }
+
+ public Float getFloat(String key) {
+ return (Float) store.get(key);
+ }
+
+ public Boolean getBoolean(String key) { return (Boolean) store.get(key); }
+
+ public Long getLong(String key){
+ Object result = store.get(key);
+ if (result instanceof Integer) {
+ return ((Integer) result).longValue();
+ }else if(result instanceof Long){
+ return (Long) result;
+ }
+ return null;
+ }
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java
index 7678eaaa6..e71f1d97a 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java
@@ -58,6 +58,7 @@ import com.smartdevicelink.proxy.callbacks.OnServiceNACKed;
import com.smartdevicelink.proxy.interfaces.IProxyListenerALM;
import com.smartdevicelink.proxy.interfaces.IProxyListenerBase;
import com.smartdevicelink.proxy.interfaces.IPutFileResponseListener;
+import com.smartdevicelink.proxy.interfaces.ISdlServiceListener;
import com.smartdevicelink.proxy.rpc.*;
import com.smartdevicelink.proxy.rpc.enums.AppHMIType;
import com.smartdevicelink.proxy.rpc.enums.AudioStreamingState;
@@ -83,12 +84,15 @@ import com.smartdevicelink.proxy.rpc.enums.SpeechCapabilities;
import com.smartdevicelink.proxy.rpc.enums.SystemContext;
import com.smartdevicelink.proxy.rpc.enums.TextAlignment;
import com.smartdevicelink.proxy.rpc.enums.UpdateMode;
+import com.smartdevicelink.proxy.rpc.enums.VideoStreamingCodec;
+import com.smartdevicelink.proxy.rpc.enums.VideoStreamingProtocol;
import com.smartdevicelink.proxy.rpc.enums.VrCapabilities;
import com.smartdevicelink.proxy.rpc.listeners.OnPutFileUpdateListener;
import com.smartdevicelink.proxy.rpc.listeners.OnRPCNotificationListener;
import com.smartdevicelink.proxy.rpc.listeners.OnRPCResponseListener;
import com.smartdevicelink.security.SdlSecurityBase;
import com.smartdevicelink.streaming.StreamRPCPacketizer;
+import com.smartdevicelink.streaming.VideoStreamingParams;
import com.smartdevicelink.trace.SdlTrace;
import com.smartdevicelink.trace.TraceDeviceInfo;
import com.smartdevicelink.trace.enums.InterfaceActivityDirection;
@@ -565,7 +569,7 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
// so we need to fix this, but vulnerability (i.e. two instances of listener) is
// likely harmless.
if (_traceDeviceInterrogator == null) {
- _traceDeviceInterrogator = new TraceDeviceInfo(sdlProxyConfigurationResources.getTelephonyManager());
+ _traceDeviceInterrogator = new TraceDeviceInfo(telephonyManager);
} // end-if
} // end-if
@@ -2831,11 +2835,42 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
_proxyListener.onUpdateTurnListResponse(msg);
onRPCResponseReceived(msg);
}
+ } else if (functionName.equals(FunctionID.GET_SYSTEM_CAPABILITY.toString())) {
+ // GetSystemCapabilityResponse
+ final GetSystemCapabilityResponse msg = new GetSystemCapabilityResponse(hash);
+ if (_callbackToUIThread) {
+ _mainUIHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ _proxyListener.onGetSystemCapabilityResponse(msg);
+ onRPCResponseReceived(msg);
+ }
+ });
+ } else {
+ _proxyListener.onGetSystemCapabilityResponse(msg);
+ onRPCResponseReceived(msg);
+ }
+ }
+ else if (functionName.equals(FunctionID.SEND_HAPTIC_DATA.toString())) {
+ final SendHapticDataResponse msg = new SendHapticDataResponse(hash);
+ if (_callbackToUIThread) {
+ // Run in UI thread
+ _mainUIHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ _proxyListener.onSendHapticDataResponse((SendHapticDataResponse) msg);
+ onRPCResponseReceived(msg);
+ }
+ });
+ } else {
+ _proxyListener.onSendHapticDataResponse((SendHapticDataResponse) msg);
+ onRPCResponseReceived(msg);
+ }
}
else {
if (_sdlMsgVersion != null) {
DebugTool.logError("Unrecognized response Message: " + functionName.toString() +
- "SDL Message Version = " + _sdlMsgVersion);
+ " SDL Message Version = " + _sdlMsgVersion);
} else {
DebugTool.logError("Unrecognized response Message: " + functionName.toString());
}
@@ -3495,7 +3530,19 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
}
public ScheduledExecutorService createScheduler(){
return Executors.newSingleThreadScheduledExecutor();
- }
+ }
+
+ public void startService(SessionType serviceType, boolean isEncrypted){
+ sdlSession.startService(serviceType, sdlSession.getSessionId(), isEncrypted);
+ }
+
+ public void endService(SessionType serviceType){
+ sdlSession.endService(serviceType, sdlSession.getSessionId());
+ }
+
+ public void setDesiredVideoParams(VideoStreamingParams params){
+ sdlSession.setDesiredVideoParams(params);
+ }
/**
*Opens the video service (serviceType 11) and subsequently streams raw H264 video from an InputStream provided by the app
@@ -3834,7 +3881,7 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
private void AudioServiceEndedNACK() {
pcmServiceEndResponseReceived = true;
pcmServiceEndResponse = false;
- }
+ }
public void setAppService(Service mService)
{
@@ -5549,6 +5596,22 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
return sdlSession.isServiceProtected(sType);
}
+
+ public void addServiceListener(SessionType serviceType, ISdlServiceListener sdlServiceListener){
+ if(serviceType != null && sdlSession != null && sdlServiceListener != null){
+ sdlSession.addServiceListener(serviceType, sdlServiceListener);
+ }
+ }
+
+ public void removeServiceListener(SessionType serviceType, ISdlServiceListener sdlServiceListener){
+ if(serviceType != null && sdlSession != null && sdlServiceListener != null){
+ sdlSession.removeServiceListener(serviceType, sdlServiceListener);
+ }
+ }
+
+ public VideoStreamingParams getAcceptedVideoParams(){
+ return sdlSession.getAcceptedVideoParams();
+ }
public IProxyListenerBase getProxyListener()
{
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/interfaces/IProxyListenerBase.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/interfaces/IProxyListenerBase.java
index 8b437e05e..80842cfc2 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/interfaces/IProxyListenerBase.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/interfaces/IProxyListenerBase.java
@@ -17,6 +17,7 @@ import com.smartdevicelink.proxy.rpc.DialNumberResponse;
import com.smartdevicelink.proxy.rpc.EndAudioPassThruResponse;
import com.smartdevicelink.proxy.rpc.GenericResponse;
import com.smartdevicelink.proxy.rpc.GetDTCsResponse;
+import com.smartdevicelink.proxy.rpc.GetSystemCapabilityResponse;
import com.smartdevicelink.proxy.rpc.GetVehicleDataResponse;
import com.smartdevicelink.proxy.rpc.GetWayPointsResponse;
import com.smartdevicelink.proxy.rpc.ListFilesResponse;
@@ -31,9 +32,9 @@ import com.smartdevicelink.proxy.rpc.OnKeyboardInput;
import com.smartdevicelink.proxy.rpc.OnLanguageChange;
import com.smartdevicelink.proxy.rpc.OnLockScreenStatus;
import com.smartdevicelink.proxy.rpc.OnPermissionsChange;
+import com.smartdevicelink.proxy.rpc.OnStreamRPC;
import com.smartdevicelink.proxy.rpc.OnSystemRequest;
import com.smartdevicelink.proxy.rpc.OnTBTClientState;
-import com.smartdevicelink.proxy.rpc.OnStreamRPC;
import com.smartdevicelink.proxy.rpc.OnTouchEvent;
import com.smartdevicelink.proxy.rpc.OnVehicleData;
import com.smartdevicelink.proxy.rpc.OnWayPointChange;
@@ -43,6 +44,7 @@ import com.smartdevicelink.proxy.rpc.PutFileResponse;
import com.smartdevicelink.proxy.rpc.ReadDIDResponse;
import com.smartdevicelink.proxy.rpc.ResetGlobalPropertiesResponse;
import com.smartdevicelink.proxy.rpc.ScrollableMessageResponse;
+import com.smartdevicelink.proxy.rpc.SendHapticDataResponse;
import com.smartdevicelink.proxy.rpc.SendLocationResponse;
import com.smartdevicelink.proxy.rpc.SetAppIconResponse;
import com.smartdevicelink.proxy.rpc.SetDisplayLayoutResponse;
@@ -335,4 +337,8 @@ public interface IProxyListenerBase {
public void onUnsubscribeWayPointsResponse(UnsubscribeWayPointsResponse response);
public void onOnWayPointChange(OnWayPointChange notification);
+
+ public void onGetSystemCapabilityResponse(GetSystemCapabilityResponse response);
+
+ public void onSendHapticDataResponse(SendHapticDataResponse response);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/interfaces/ISdlServiceListener.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/interfaces/ISdlServiceListener.java
new file mode 100644
index 000000000..db5179a73
--- /dev/null
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/interfaces/ISdlServiceListener.java
@@ -0,0 +1,11 @@
+package com.smartdevicelink.proxy.interfaces;
+
+
+import com.smartdevicelink.SdlConnection.SdlSession;
+import com.smartdevicelink.protocol.enums.SessionType;
+
+public interface ISdlServiceListener {
+ public void onServiceStarted(SdlSession session, SessionType type, boolean isEncrypted);
+ public void onServiceEnded(SdlSession session, SessionType type);
+ public void onServiceError(SdlSession session, SessionType type, String reason);
+}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddCommand.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddCommand.java
index 57b58ea5b..c8936edb8 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddCommand.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddCommand.java
@@ -1,11 +1,10 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
-import com.smartdevicelink.util.DebugTool;
+
+import java.util.Hashtable;
+import java.util.List;
/**
*
@@ -119,7 +118,7 @@ public class AddCommand extends RPCRequest {
* @return Integer -an integer representation a Unique Command ID
*/
public Integer getCmdID() {
- return (Integer) parameters.get(KEY_CMD_ID);
+ return getInteger(KEY_CMD_ID);
}
/**
* <p>Sets an Unique Command ID that identifies the command. Is returned in an
@@ -133,11 +132,7 @@ public class AddCommand extends RPCRequest {
* <b>Notes:</b> Min Value: 0; Max Value: 2000000000</p>
*/
public void setCmdID(Integer cmdID) {
- if (cmdID != null) {
- parameters.put(KEY_CMD_ID, cmdID);
- } else {
- parameters.remove(KEY_CMD_ID);
- }
+ setParameters(KEY_CMD_ID, cmdID);
}
/**
* <p>
@@ -150,18 +145,7 @@ public class AddCommand extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public MenuParams getMenuParams() {
- Object obj = parameters.get(KEY_MENU_PARAMS);
- if (obj instanceof MenuParams) {
- return (MenuParams) obj;
- }
- else if (obj instanceof Hashtable) {
- try {
- return new MenuParams((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_MENU_PARAMS, e);
- }
- }
- return null;
+ return (MenuParams) getObject(MenuParams.class, KEY_MENU_PARAMS);
}
/**
* <p>
@@ -175,11 +159,7 @@ public class AddCommand extends RPCRequest {
* a menuParams object
*/
public void setMenuParams(MenuParams menuParams) {
- if (menuParams != null) {
- parameters.put(KEY_MENU_PARAMS, menuParams);
- } else {
- parameters.remove(KEY_MENU_PARAMS);
- }
+ setParameters(KEY_MENU_PARAMS, menuParams);
}
/**
* <p>
@@ -190,16 +170,7 @@ public class AddCommand extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<String> getVrCommands() {
- if (parameters.get(KEY_VR_COMMANDS) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_VR_COMMANDS);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof String) {
- return (List<String>)list;
- }
- }
- }
- return null;
+ return (List<String>) getObject(String.class, KEY_VR_COMMANDS);
}
/**
* <p>
@@ -219,11 +190,7 @@ public class AddCommand extends RPCRequest {
* not zero-length, not whitespace only) element</p>
*/
public void setVrCommands( List<String> vrCommands ) {
- if (vrCommands != null) {
- parameters.put(KEY_VR_COMMANDS, vrCommands );
- } else {
- parameters.remove(KEY_VR_COMMANDS);
- }
+ setParameters(KEY_VR_COMMANDS, vrCommands);
}
/**
@@ -234,17 +201,7 @@ public class AddCommand extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public Image getCmdIcon() {
- Object obj = parameters.get(KEY_CMD_ICON);
- if (obj instanceof Image) {
- return (Image) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new Image((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_CMD_ICON, e);
- }
- }
- return null;
+ return (Image) getObject(Image.class, KEY_CMD_ICON);
}
/**
@@ -259,10 +216,6 @@ public class AddCommand extends RPCRequest {
* @since SmartDeviceLink 2.0
*/
public void setCmdIcon(Image cmdIcon) {
- if (cmdIcon != null) {
- parameters.put(KEY_CMD_ICON, cmdIcon);
- } else {
- parameters.remove(KEY_CMD_ICON);
- }
+ setParameters(KEY_CMD_ICON, cmdIcon);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddSubMenu.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddSubMenu.java
index 2edc70c50..8c55bbd9a 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddSubMenu.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddSubMenu.java
@@ -1,10 +1,10 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
+import java.util.Hashtable;
+
/**
* <p>Add a SubMenu to the Command Menu</p>
*
@@ -90,7 +90,7 @@ public class AddSubMenu extends RPCRequest {
* menu
*/
public Integer getMenuID() {
- return (Integer) parameters.get( KEY_MENU_ID );
+ return getInteger( KEY_MENU_ID );
}
/**
* <p>Sets a Menu ID that identifies a sub menu.</p><p> This value is used in
@@ -104,11 +104,7 @@ public class AddSubMenu extends RPCRequest {
* <p><b>Notes:</b> Min Value: 0; Max Value: 2000000000</p>
*/
public void setMenuID( Integer menuID ) {
- if (menuID != null) {
- parameters.put(KEY_MENU_ID, menuID );
- } else {
- parameters.remove(KEY_MENU_ID);
- }
+ setParameters(KEY_MENU_ID, menuID);
}
/**
* <p>Returns an <i>Integer</i> object representing the position of menu</p>
@@ -117,7 +113,7 @@ public class AddSubMenu extends RPCRequest {
* @return Integer -the value representing the relative position of menus
*/
public Integer getPosition() {
- return (Integer) parameters.get( KEY_POSITION );
+ return getInteger( KEY_POSITION );
}
/**
* Sets a position of menu
@@ -140,11 +136,7 @@ public class AddSubMenu extends RPCRequest {
* </ul>
*/
public void setPosition( Integer position ) {
- if (position != null) {
- parameters.put(KEY_POSITION, position );
- } else {
- parameters.remove(KEY_POSITION);
- }
+ setParameters(KEY_POSITION, position);
}
/**
* Returns String which is displayed representing this submenu item
@@ -152,7 +144,7 @@ public class AddSubMenu extends RPCRequest {
* @return String -a Submenu item's name
*/
public String getMenuName() {
- return (String) parameters.get( KEY_MENU_NAME );
+ return getString( KEY_MENU_NAME );
}
/**
* Sets a menuName which is displayed representing this submenu item
@@ -161,10 +153,6 @@ public class AddSubMenu extends RPCRequest {
* String which will be displayed representing this submenu item
*/
public void setMenuName( String menuName ) {
- if (menuName != null) {
- parameters.put(KEY_MENU_NAME, menuName );
- } else {
- parameters.remove(KEY_MENU_NAME);
- }
+ setParameters(KEY_MENU_NAME, menuName);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AirbagStatus.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AirbagStatus.java
index b80a9c2c4..1c6fb52bb 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AirbagStatus.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AirbagStatus.java
@@ -4,6 +4,10 @@ import java.util.Hashtable;
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.VehicleDataEventStatus;
+
+import static com.smartdevicelink.proxy.constants.Names.driverCurtainAirbagDeployed;
+import static com.smartdevicelink.proxy.constants.Names.driverSideAirbagDeployed;
+
/**
* <p>The status of the air bags.</p>
*
@@ -104,131 +108,51 @@ public class AirbagStatus extends RPCStruct {
}
public void setDriverAirbagDeployed(VehicleDataEventStatus driverAirbagDeployed) {
- if (driverAirbagDeployed != null) {
- store.put(KEY_DRIVER_AIRBAG_DEPLOYED, driverAirbagDeployed);
- } else {
- store.remove(KEY_DRIVER_AIRBAG_DEPLOYED);
- }
+ setValue(KEY_DRIVER_AIRBAG_DEPLOYED, driverAirbagDeployed);
}
public VehicleDataEventStatus getDriverAirbagDeployed() {
- Object obj = store.get(KEY_DRIVER_AIRBAG_DEPLOYED);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_DRIVER_AIRBAG_DEPLOYED);
}
public void setDriverSideAirbagDeployed(VehicleDataEventStatus driverSideAirbagDeployed) {
- if (driverSideAirbagDeployed != null) {
- store.put(KEY_DRIVER_SIDE_AIRBAG_DEPLOYED, driverSideAirbagDeployed);
- } else {
- store.remove(KEY_DRIVER_SIDE_AIRBAG_DEPLOYED);
- }
+ setValue(KEY_DRIVER_SIDE_AIRBAG_DEPLOYED, driverSideAirbagDeployed);
}
public VehicleDataEventStatus getDriverSideAirbagDeployed() {
- Object obj = store.get(KEY_DRIVER_SIDE_AIRBAG_DEPLOYED);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_DRIVER_SIDE_AIRBAG_DEPLOYED);
}
public void setDriverCurtainAirbagDeployed(VehicleDataEventStatus driverCurtainAirbagDeployed) {
- if (driverCurtainAirbagDeployed != null) {
- store.put(KEY_DRIVER_CURTAIN_AIRBAG_DEPLOYED, driverCurtainAirbagDeployed);
- } else {
- store.remove(KEY_DRIVER_CURTAIN_AIRBAG_DEPLOYED);
- }
+ setValue(KEY_DRIVER_CURTAIN_AIRBAG_DEPLOYED, driverCurtainAirbagDeployed);
}
public VehicleDataEventStatus getDriverCurtainAirbagDeployed() {
- Object obj = store.get(KEY_DRIVER_CURTAIN_AIRBAG_DEPLOYED);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_DRIVER_CURTAIN_AIRBAG_DEPLOYED);
}
public void setPassengerAirbagDeployed(VehicleDataEventStatus passengerAirbagDeployed) {
- if (passengerAirbagDeployed != null) {
- store.put(KEY_PASSENGER_AIRBAG_DEPLOYED, passengerAirbagDeployed);
- } else {
- store.remove(KEY_PASSENGER_AIRBAG_DEPLOYED);
- }
+ setValue(KEY_PASSENGER_AIRBAG_DEPLOYED, passengerAirbagDeployed);
}
public VehicleDataEventStatus getPassengerAirbagDeployed() {
- Object obj = store.get(KEY_PASSENGER_AIRBAG_DEPLOYED);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_PASSENGER_AIRBAG_DEPLOYED);
}
public void setPassengerCurtainAirbagDeployed(VehicleDataEventStatus passengerCurtainAirbagDeployed) {
- if (passengerCurtainAirbagDeployed != null) {
- store.put(KEY_PASSENGER_CURTAIN_AIRBAG_DEPLOYED, passengerCurtainAirbagDeployed);
- } else {
- store.remove(KEY_PASSENGER_CURTAIN_AIRBAG_DEPLOYED);
- }
+ setValue(KEY_PASSENGER_CURTAIN_AIRBAG_DEPLOYED, passengerCurtainAirbagDeployed);
}
public VehicleDataEventStatus getPassengerCurtainAirbagDeployed() {
- Object obj = store.get(KEY_PASSENGER_CURTAIN_AIRBAG_DEPLOYED);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_PASSENGER_CURTAIN_AIRBAG_DEPLOYED);
}
public void setDriverKneeAirbagDeployed(VehicleDataEventStatus driverKneeAirbagDeployed) {
- if (driverKneeAirbagDeployed != null) {
- store.put(KEY_DRIVER_KNEE_AIRBAG_DEPLOYED, driverKneeAirbagDeployed);
- } else {
- store.remove(KEY_DRIVER_KNEE_AIRBAG_DEPLOYED);
- }
+ setValue(KEY_DRIVER_KNEE_AIRBAG_DEPLOYED, driverKneeAirbagDeployed);
}
public VehicleDataEventStatus getDriverKneeAirbagDeployed() {
- Object obj = store.get(KEY_DRIVER_KNEE_AIRBAG_DEPLOYED);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_DRIVER_KNEE_AIRBAG_DEPLOYED);
}
public void setPassengerSideAirbagDeployed(VehicleDataEventStatus passengerSideAirbagDeployed) {
- if (passengerSideAirbagDeployed != null) {
- store.put(KEY_PASSENGER_SIDE_AIRBAG_DEPLOYED, passengerSideAirbagDeployed);
- } else {
- store.remove(KEY_PASSENGER_SIDE_AIRBAG_DEPLOYED);
- }
+ setValue(KEY_PASSENGER_SIDE_AIRBAG_DEPLOYED, passengerSideAirbagDeployed);
}
public VehicleDataEventStatus getPassengerSideAirbagDeployed() {
- Object obj = store.get(KEY_PASSENGER_SIDE_AIRBAG_DEPLOYED);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_PASSENGER_SIDE_AIRBAG_DEPLOYED);
}
public void setPassengerKneeAirbagDeployed(VehicleDataEventStatus passengerKneeAirbagDeployed) {
- if (passengerKneeAirbagDeployed != null) {
- store.put(KEY_PASSENGER_KNEE_AIRBAG_DEPLOYED, passengerKneeAirbagDeployed);
- } else {
- store.remove(KEY_PASSENGER_KNEE_AIRBAG_DEPLOYED);
- }
+ setValue(KEY_PASSENGER_KNEE_AIRBAG_DEPLOYED, passengerKneeAirbagDeployed);
}
public VehicleDataEventStatus getPassengerKneeAirbagDeployed() {
- Object obj = store.get(KEY_PASSENGER_KNEE_AIRBAG_DEPLOYED);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_PASSENGER_KNEE_AIRBAG_DEPLOYED);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Alert.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Alert.java
index 811d65a42..d0c4e0400 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Alert.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Alert.java
@@ -1,12 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
+import java.util.Hashtable;
+import java.util.List;
+
/**
* Provides information to the user using either TTS, the Display or both and
* can include a system-generated alert tone
@@ -149,7 +148,7 @@ public class Alert extends RPCRequest {
* in the first field during the Alert
*/
public String getAlertText1() {
- return (String) parameters.get(KEY_ALERT_TEXT_1);
+ return getString(KEY_ALERT_TEXT_1);
}
/**
* Sets the String to be displayed in the first field of the display during
@@ -167,11 +166,7 @@ public class Alert extends RPCRequest {
* </ul>
*/
public void setAlertText1(String alertText1) {
- if (alertText1 != null) {
- parameters.put(KEY_ALERT_TEXT_1, alertText1);
- } else {
- parameters.remove(KEY_ALERT_TEXT_1);
- }
+ setParameters(KEY_ALERT_TEXT_1, alertText1);
}
/**
* Gets the text which is displayed in the second field of the display
@@ -181,7 +176,7 @@ public class Alert extends RPCRequest {
* in the second field during the Alert
*/
public String getAlertText2() {
- return (String) parameters.get(KEY_ALERT_TEXT_2);
+ return getString(KEY_ALERT_TEXT_2);
}
/**
* Sets the String to be displayed in the second field of the display during
@@ -200,11 +195,7 @@ public class Alert extends RPCRequest {
* </ul>
*/
public void setAlertText2(String alertText2) {
- if (alertText2 != null) {
- parameters.put(KEY_ALERT_TEXT_2, alertText2);
- } else {
- parameters.remove(KEY_ALERT_TEXT_2);
- }
+ setParameters(KEY_ALERT_TEXT_2, alertText2);
}
/**
@@ -217,7 +208,7 @@ public class Alert extends RPCRequest {
* @since SmartDeviceLink 2.0
*/
public String getAlertText3() {
- return (String) parameters.get(KEY_ALERT_TEXT_3);
+ return getString(KEY_ALERT_TEXT_3);
}
/**
@@ -239,11 +230,7 @@ public class Alert extends RPCRequest {
* @since SmartDeviceLink 2.0
*/
public void setAlertText3(String alertText3) {
- if (alertText3 != null) {
- parameters.put(KEY_ALERT_TEXT_3, alertText3);
- } else {
- parameters.remove(KEY_ALERT_TEXT_3);
- }
+ setParameters(KEY_ALERT_TEXT_3, alertText3);
}
/**
* Gets TTSChunk[], the Array of type TTSChunk which, taken together,
@@ -254,22 +241,7 @@ public class Alert extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<TTSChunk> getTtsChunks() {
- if (parameters.get(KEY_TTS_CHUNKS) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_TTS_CHUNKS);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof TTSChunk) {
- return (List<TTSChunk>) list;
- } else if (obj instanceof Hashtable) {
- List<TTSChunk> newList = new ArrayList<TTSChunk>();
- for (Object hashObj : list) {
- newList.add(new TTSChunk((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<TTSChunk>) getObject(TTSChunk.class, KEY_TTS_CHUNKS);
}
/**
* Sets array of type TTSChunk which, taken together, specify what is to be
@@ -280,11 +252,7 @@ public class Alert extends RPCRequest {
* <p> <b>Notes: </b>Array must have a least one element</p>
*/
public void setTtsChunks(List<TTSChunk> ttsChunks) {
- if (ttsChunks != null) {
- parameters.put(KEY_TTS_CHUNKS, ttsChunks);
- } else {
- parameters.remove(KEY_TTS_CHUNKS);
- }
+ setParameters(KEY_TTS_CHUNKS, ttsChunks);
}
/**
* Gets the duration of the displayed portion of the alert, in milliseconds
@@ -293,7 +261,7 @@ public class Alert extends RPCRequest {
* displayed portion of the alert, in milliseconds
*/
public Integer getDuration() {
- return (Integer) parameters.get(KEY_DURATION);
+ return getInteger(KEY_DURATION);
}
/**
* <p>Sets the duration of the displayed portion of the alert, in milliseconds.
@@ -313,11 +281,7 @@ public class Alert extends RPCRequest {
* </ul>
*/
public void setDuration(Integer duration) {
- if (duration != null) {
- parameters.put(KEY_DURATION, duration);
- } else {
- parameters.remove(KEY_DURATION);
- }
+ setParameters(KEY_DURATION, duration);
}
/**
* Gets a Boolean value representing the alert tone
@@ -326,7 +290,7 @@ public class Alert extends RPCRequest {
* TTS (if any) is spoken
*/
public Boolean getPlayTone() {
- return (Boolean) parameters.get(KEY_PLAY_TONE);
+ return getBoolean(KEY_PLAY_TONE);
}
/**
* Sets whether the alert tone should be played before the TTS (if any) is
@@ -339,11 +303,7 @@ public class Alert extends RPCRequest {
* <p> <b>Notes: </b>If omitted, default is true</p>
*/
public void setPlayTone(Boolean playTone) {
- if (playTone != null) {
- parameters.put(KEY_PLAY_TONE, playTone);
- } else {
- parameters.remove(KEY_PLAY_TONE);
- }
+ setParameters(KEY_PLAY_TONE, playTone);
}
/**
@@ -355,22 +315,7 @@ public class Alert extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<SoftButton> getSoftButtons() {
- if (parameters.get(KEY_SOFT_BUTTONS) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_SOFT_BUTTONS);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof SoftButton) {
- return (List<SoftButton>) list;
- } else if (obj instanceof Hashtable) {
- List<SoftButton> newList = new ArrayList<SoftButton>();
- for (Object hashObj : list) {
- newList.add(new SoftButton((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<SoftButton>) getObject(SoftButton.class, KEY_SOFT_BUTTONS);
}
/**
@@ -390,24 +335,12 @@ public class Alert extends RPCRequest {
*/
public void setSoftButtons(List<SoftButton> softButtons) {
- if (softButtons != null) {
- parameters.put(KEY_SOFT_BUTTONS, softButtons);
- } else {
- parameters.remove(KEY_SOFT_BUTTONS);
- }
+ setParameters(KEY_SOFT_BUTTONS, softButtons);
}
public Boolean getProgressIndicator() {
- final Object obj = parameters.get(KEY_PROGRESS_INDICATOR);
- if (obj instanceof Boolean) {
- return (Boolean) obj;
- }
- return null;
+ return getBoolean(KEY_PROGRESS_INDICATOR);
}
public void setProgressIndicator(Boolean progressIndicator) {
- if (progressIndicator != null) {
- parameters.put(KEY_PROGRESS_INDICATOR, progressIndicator);
- } else {
- parameters.remove(KEY_PROGRESS_INDICATOR);
- }
- }
+ setParameters(KEY_PROGRESS_INDICATOR, progressIndicator);
+ }
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AlertManeuver.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AlertManeuver.java
index fba595150..4fd218fa8 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AlertManeuver.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AlertManeuver.java
@@ -1,12 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
+import java.util.Hashtable;
+import java.util.List;
+
/**
* <p>This will bring up an alert with information related to the next navigation maneuver including potential voice
* navigation instructions. Shown information will be taken from the ShowConstantTBT function
@@ -51,23 +50,7 @@ public class AlertManeuver extends RPCRequest{
*/
@SuppressWarnings("unchecked")
public List<SoftButton> getSoftButtons(){
- if(parameters.get(KEY_SOFT_BUTTONS) instanceof List<?>){
- List<?> list = (List<?>) parameters.get(KEY_SOFT_BUTTONS);
- if(list != null && list.size() > 0){
- Object obj = list.get(0);
- if(obj instanceof SoftButton){
- return (List<SoftButton>) list;
- }
- else if(obj instanceof Hashtable){
- List<SoftButton> newList = new ArrayList<SoftButton>();
- for(Object hashObj : list){
- newList.add(new SoftButton((Hashtable<String, Object>) hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<SoftButton>) getObject(SoftButton.class, KEY_SOFT_BUTTONS);
}
/**
@@ -86,12 +69,7 @@ public class AlertManeuver extends RPCRequest{
*/
public void setSoftButtons(List<SoftButton> softButtons){
- if(softButtons != null){
- parameters.put(KEY_SOFT_BUTTONS, softButtons);
- }
- else{
- parameters.remove(KEY_SOFT_BUTTONS);
- }
+ setParameters(KEY_SOFT_BUTTONS, softButtons);
}
/**
@@ -101,23 +79,7 @@ public class AlertManeuver extends RPCRequest{
*/
@SuppressWarnings("unchecked")
public List<TTSChunk> getTtsChunks(){
- if(parameters.get(KEY_TTS_CHUNKS) instanceof List<?>){
- List<?> list = (List<?>) parameters.get(KEY_TTS_CHUNKS);
- if(list != null && list.size() > 0){
- Object obj = list.get(0);
- if(obj instanceof TTSChunk){
- return (List<TTSChunk>) list;
- }
- else if(obj instanceof Hashtable){
- List<TTSChunk> newList = new ArrayList<TTSChunk>();
- for(Object hashObj : list){
- newList.add(new TTSChunk((Hashtable<String, Object>) hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<TTSChunk>) getObject(TTSChunk.class, KEY_TTS_CHUNKS);
}
/**
@@ -128,12 +90,7 @@ public class AlertManeuver extends RPCRequest{
* <b>Notes: </b></p>Array must have a least one element
*/
public void setTtsChunks(List<TTSChunk> ttsChunks){
- if(ttsChunks != null){
- parameters.put(KEY_TTS_CHUNKS, ttsChunks);
- }
- else{
- parameters.remove(KEY_TTS_CHUNKS);
- }
+ setParameters(KEY_TTS_CHUNKS, ttsChunks);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AlertResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AlertResponse.java
index cea706d4e..0ecf2579a 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AlertResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AlertResponse.java
@@ -1,10 +1,10 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import java.util.Hashtable;
+
/**
* Alert Response is sent, when Alert has been called
*
@@ -32,13 +32,9 @@ public class AlertResponse extends RPCResponse {
super(hash);
}
public Integer getTryAgainTime() {
- return (Integer) parameters.get(KEY_TRY_AGAIN_TIME);
+ return getInteger(KEY_TRY_AGAIN_TIME);
}
public void setTryAgainTime(Integer tryAgainTime) {
- if (tryAgainTime != null) {
- parameters.put(KEY_TRY_AGAIN_TIME, tryAgainTime);
- } else {
- parameters.remove(KEY_TRY_AGAIN_TIME);
- }
+ setParameters(KEY_TRY_AGAIN_TIME, tryAgainTime);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AudioPassThruCapabilities.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AudioPassThruCapabilities.java
index 48cfd129b..61de1d1f5 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AudioPassThruCapabilities.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AudioPassThruCapabilities.java
@@ -1,11 +1,14 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.AudioType;
import com.smartdevicelink.proxy.rpc.enums.BitsPerSample;
import com.smartdevicelink.proxy.rpc.enums.SamplingRate;
+import com.smartdevicelink.proxy.rpc.enums.VehicleDataEventStatus;
+
+import java.util.Hashtable;
+
+import static com.smartdevicelink.proxy.rpc.AirbagStatus.KEY_DRIVER_CURTAIN_AIRBAG_DEPLOYED;
/**
*<p> Describes different audio type configurations for PerformAudioPassThru, e.g. {8kHz,8-bit,PCM}
@@ -68,11 +71,7 @@ public class AudioPassThruCapabilities extends RPCStruct {
* @param samplingRate the sampling rate for AudioPassThru
*/
public void setSamplingRate(SamplingRate samplingRate) {
- if (samplingRate != null) {
- store.put(KEY_SAMPLING_RATE, samplingRate);
- } else {
- store.remove(KEY_SAMPLING_RATE);
- }
+ setValue(KEY_SAMPLING_RATE, samplingRate);
}
/**
@@ -80,13 +79,7 @@ public class AudioPassThruCapabilities extends RPCStruct {
* @return the sampling rate for AudioPassThru
*/
public SamplingRate getSamplingRate() {
- Object obj = store.get(KEY_SAMPLING_RATE);
- if (obj instanceof SamplingRate) {
- return (SamplingRate) obj;
- } else if (obj instanceof String) {
- return SamplingRate.valueForString((String) obj);
- }
- return null;
+ return (SamplingRate) getObject(SamplingRate.class, KEY_SAMPLING_RATE);
}
/**
@@ -94,11 +87,7 @@ public class AudioPassThruCapabilities extends RPCStruct {
* @param bitsPerSample the sample depth in bit for AudioPassThru
*/
public void setBitsPerSample(BitsPerSample bitsPerSample) {
- if (bitsPerSample != null) {
- store.put(KEY_BITS_PER_SAMPLE, bitsPerSample);
- } else {
- store.remove(KEY_BITS_PER_SAMPLE);
- }
+ setValue(KEY_BITS_PER_SAMPLE, bitsPerSample);
}
/**
@@ -106,13 +95,7 @@ public class AudioPassThruCapabilities extends RPCStruct {
* @return the sample depth in bit for AudioPassThru
*/
public BitsPerSample getBitsPerSample() {
- Object obj = store.get(KEY_BITS_PER_SAMPLE);
- if (obj instanceof BitsPerSample) {
- return (BitsPerSample) obj;
- } else if (obj instanceof String) {
- return BitsPerSample.valueForString((String) obj);
- }
- return null;
+ return (BitsPerSample) getObject(BitsPerSample.class, KEY_BITS_PER_SAMPLE);
}
/**
@@ -120,11 +103,7 @@ public class AudioPassThruCapabilities extends RPCStruct {
* @param audioType the audiotype for AudioPassThru
*/
public void setAudioType(AudioType audioType) {
- if (audioType != null) {
- store.put(KEY_AUDIO_TYPE, audioType);
- } else {
- store.remove(KEY_AUDIO_TYPE);
- }
+ setValue(KEY_AUDIO_TYPE, audioType);
}
/**
@@ -132,12 +111,6 @@ public class AudioPassThruCapabilities extends RPCStruct {
* @return the audiotype for AudioPassThru
*/
public AudioType getAudioType() {
- Object obj = store.get(KEY_AUDIO_TYPE);
- if (obj instanceof AudioType) {
- return (AudioType) obj;
- } else if (obj instanceof String) {
- return AudioType.valueForString((String) obj);
- }
- return null;
+ return (AudioType) getObject(AudioType.class, KEY_AUDIO_TYPE);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/BeltStatus.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/BeltStatus.java
index 71db21640..598cf3adf 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/BeltStatus.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/BeltStatus.java
@@ -4,7 +4,11 @@ import java.util.Hashtable;
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.VehicleDataEventStatus;
-/** The status of the seat belts.
+
+import static com.smartdevicelink.proxy.rpc.AirbagStatus.KEY_DRIVER_AIRBAG_DEPLOYED;
+import static com.smartdevicelink.proxy.rpc.AirbagStatus.KEY_DRIVER_CURTAIN_AIRBAG_DEPLOYED;
+
+/** The status of the seat belts.
*
* <p><b>Parameter List</b></p>
*
@@ -143,243 +147,93 @@ public class BeltStatus extends RPCStruct {
}
public void setDriverBeltDeployed(VehicleDataEventStatus driverBeltDeployed) {
- if (driverBeltDeployed != null) {
- store.put(KEY_DRIVER_BELT_DEPLOYED, driverBeltDeployed);
- } else {
- store.remove(KEY_DRIVER_BELT_DEPLOYED);
- }
+ setValue(KEY_DRIVER_BELT_DEPLOYED, driverBeltDeployed);
}
public VehicleDataEventStatus getDriverBeltDeployed() {
- Object obj = store.get(KEY_DRIVER_BELT_DEPLOYED);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_DRIVER_BELT_DEPLOYED);
}
public void setPassengerBeltDeployed(VehicleDataEventStatus passengerBeltDeployed) {
- if (passengerBeltDeployed != null) {
- store.put(KEY_PASSENGER_BELT_DEPLOYED, passengerBeltDeployed);
- } else {
- store.remove(KEY_PASSENGER_BELT_DEPLOYED);
- }
+ setValue(KEY_PASSENGER_BELT_DEPLOYED, passengerBeltDeployed);
}
public VehicleDataEventStatus getPassengerBeltDeployed() {
- Object obj = store.get(KEY_PASSENGER_BELT_DEPLOYED);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_PASSENGER_BELT_DEPLOYED);
}
public void setPassengerBuckleBelted(VehicleDataEventStatus passengerBuckleBelted) {
- if (passengerBuckleBelted != null) {
- store.put(KEY_PASSENGER_BUCKLE_BELTED, passengerBuckleBelted);
- } else {
- store.remove(KEY_PASSENGER_BUCKLE_BELTED);
- }
+ setValue(KEY_PASSENGER_BUCKLE_BELTED, passengerBuckleBelted);
}
public VehicleDataEventStatus getPassengerBuckleBelted() {
- Object obj = store.get(KEY_PASSENGER_BUCKLE_BELTED);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_PASSENGER_BUCKLE_BELTED);
}
public void setDriverBuckleBelted(VehicleDataEventStatus driverBuckleBelted) {
- if (driverBuckleBelted != null) {
- store.put(KEY_DRIVER_BUCKLE_BELTED, driverBuckleBelted);
- } else {
- store.remove(KEY_DRIVER_BUCKLE_BELTED);
- }
+ setValue(KEY_DRIVER_BUCKLE_BELTED, driverBuckleBelted);
}
public VehicleDataEventStatus getDriverBuckleBelted() {
- Object obj = store.get(KEY_DRIVER_BUCKLE_BELTED);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_DRIVER_BUCKLE_BELTED);
}
public void setLeftRow2BuckleBelted(VehicleDataEventStatus leftRow2BuckleBelted) {
- if (leftRow2BuckleBelted != null) {
- store.put(KEY_LEFT_ROW_2_BUCKLE_BELTED, leftRow2BuckleBelted);
- } else {
- store.remove(KEY_LEFT_ROW_2_BUCKLE_BELTED);
- }
+ setValue(KEY_LEFT_ROW_2_BUCKLE_BELTED, leftRow2BuckleBelted);
}
public VehicleDataEventStatus getLeftRow2BuckleBelted() {
- Object obj = store.get(KEY_LEFT_ROW_2_BUCKLE_BELTED);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_LEFT_ROW_2_BUCKLE_BELTED);
}
public void setPassengerChildDetected(VehicleDataEventStatus passengerChildDetected) {
- if (passengerChildDetected != null) {
- store.put(KEY_PASSENGER_CHILD_DETECTED, passengerChildDetected);
- } else {
- store.remove(KEY_PASSENGER_CHILD_DETECTED);
- }
+ setValue(KEY_PASSENGER_CHILD_DETECTED, passengerChildDetected);
}
public VehicleDataEventStatus getPassengerChildDetected() {
- Object obj = store.get(KEY_PASSENGER_CHILD_DETECTED);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_PASSENGER_CHILD_DETECTED);
}
public void setRightRow2BuckleBelted(VehicleDataEventStatus rightRow2BuckleBelted) {
- if (rightRow2BuckleBelted != null) {
- store.put(KEY_RIGHT_ROW_2_BUCKLE_BELTED, rightRow2BuckleBelted);
- } else {
- store.remove(KEY_RIGHT_ROW_2_BUCKLE_BELTED);
- }
+ setValue(KEY_RIGHT_ROW_2_BUCKLE_BELTED, rightRow2BuckleBelted);
}
public VehicleDataEventStatus getRightRow2BuckleBelted() {
- Object obj = store.get(KEY_RIGHT_ROW_2_BUCKLE_BELTED);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_RIGHT_ROW_2_BUCKLE_BELTED);
}
public void setMiddleRow2BuckleBelted(VehicleDataEventStatus middleRow2BuckleBelted) {
- if (middleRow2BuckleBelted != null) {
- store.put(KEY_MIDDLE_ROW_2_BUCKLE_BELTED, middleRow2BuckleBelted);
- } else {
- store.remove(KEY_MIDDLE_ROW_2_BUCKLE_BELTED);
- }
+ setValue(KEY_MIDDLE_ROW_2_BUCKLE_BELTED, middleRow2BuckleBelted);
}
public VehicleDataEventStatus getMiddleRow2BuckleBelted() {
- Object obj = store.get(KEY_MIDDLE_ROW_2_BUCKLE_BELTED);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_MIDDLE_ROW_2_BUCKLE_BELTED);
}
public void setMiddleRow3BuckleBelted(VehicleDataEventStatus middleRow3BuckleBelted) {
- if (middleRow3BuckleBelted != null) {
- store.put(KEY_MIDDLE_ROW_3_BUCKLE_BELTED, middleRow3BuckleBelted);
- } else {
- store.remove(KEY_MIDDLE_ROW_3_BUCKLE_BELTED);
- }
+ setValue(KEY_MIDDLE_ROW_3_BUCKLE_BELTED, middleRow3BuckleBelted);
}
public VehicleDataEventStatus getMiddleRow3BuckleBelted() {
- Object obj = store.get(KEY_MIDDLE_ROW_3_BUCKLE_BELTED);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_MIDDLE_ROW_3_BUCKLE_BELTED);
}
public void setLeftRow3BuckleBelted(VehicleDataEventStatus leftRow3BuckleBelted) {
- if (leftRow3BuckleBelted != null) {
- store.put(KEY_LEFT_ROW_3_BUCKLE_BELTED, leftRow3BuckleBelted);
- } else {
- store.remove(KEY_LEFT_ROW_3_BUCKLE_BELTED);
- }
+ setValue(KEY_LEFT_ROW_3_BUCKLE_BELTED, leftRow3BuckleBelted);
}
public VehicleDataEventStatus getLeftRow3BuckleBelted() {
- Object obj = store.get(KEY_LEFT_ROW_3_BUCKLE_BELTED);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_LEFT_ROW_3_BUCKLE_BELTED);
}
public void setRightRow3BuckleBelted(VehicleDataEventStatus rightRow3BuckleBelted) {
- if (rightRow3BuckleBelted != null) {
- store.put(KEY_RIGHT_ROW_3_BUCKLE_BELTED, rightRow3BuckleBelted);
- } else {
- store.remove(KEY_RIGHT_ROW_3_BUCKLE_BELTED);
- }
+ setValue(KEY_RIGHT_ROW_3_BUCKLE_BELTED, rightRow3BuckleBelted);
}
public VehicleDataEventStatus getRightRow3BuckleBelted() {
- Object obj = store.get(KEY_RIGHT_ROW_3_BUCKLE_BELTED);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_RIGHT_ROW_3_BUCKLE_BELTED);
}
public void setLeftRearInflatableBelted(VehicleDataEventStatus rearInflatableBelted) {
- if (rearInflatableBelted != null) {
- store.put(KEY_REAR_INFLATABLE_BELTED, rearInflatableBelted);
- } else {
- store.remove(KEY_REAR_INFLATABLE_BELTED);
- }
+ setValue(KEY_REAR_INFLATABLE_BELTED, rearInflatableBelted);
}
public VehicleDataEventStatus getLeftRearInflatableBelted() {
- Object obj = store.get(KEY_REAR_INFLATABLE_BELTED);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_REAR_INFLATABLE_BELTED);
}
public void setRightRearInflatableBelted(VehicleDataEventStatus rightRearInflatableBelted) {
- if (rightRearInflatableBelted != null) {
- store.put(KEY_RIGHT_REAR_INFLATABLE_BELTED, rightRearInflatableBelted);
- } else {
- store.remove(KEY_RIGHT_REAR_INFLATABLE_BELTED);
- }
+ setValue(KEY_RIGHT_REAR_INFLATABLE_BELTED, rightRearInflatableBelted);
}
public VehicleDataEventStatus getRightRearInflatableBelted() {
- Object obj = store.get(KEY_RIGHT_REAR_INFLATABLE_BELTED);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_RIGHT_REAR_INFLATABLE_BELTED);
}
public void setMiddleRow1BeltDeployed(VehicleDataEventStatus middleRow1BeltDeployed) {
- if (middleRow1BeltDeployed != null) {
- store.put(KEY_MIDDLE_ROW_1_BELT_DEPLOYED, middleRow1BeltDeployed);
- } else {
- store.remove(KEY_MIDDLE_ROW_1_BELT_DEPLOYED);
- }
+ setValue(KEY_MIDDLE_ROW_1_BELT_DEPLOYED, middleRow1BeltDeployed);
}
public VehicleDataEventStatus getMiddleRow1BeltDeployed() {
- Object obj = store.get(KEY_MIDDLE_ROW_1_BELT_DEPLOYED);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_MIDDLE_ROW_1_BELT_DEPLOYED);
}
public void setMiddleRow1BuckleBelted(VehicleDataEventStatus middleRow1BuckleBelted) {
- if (middleRow1BuckleBelted != null) {
- store.put(KEY_MIDDLE_ROW_1_BUCKLE_BELTED, middleRow1BuckleBelted);
- } else {
- store.remove(KEY_MIDDLE_ROW_1_BUCKLE_BELTED);
- }
+ setValue(KEY_MIDDLE_ROW_1_BUCKLE_BELTED, middleRow1BuckleBelted);
}
public VehicleDataEventStatus getMiddleRow1BuckleBelted() {
- Object obj = store.get(KEY_MIDDLE_ROW_1_BUCKLE_BELTED);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_MIDDLE_ROW_1_BUCKLE_BELTED);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/BodyInformation.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/BodyInformation.java
index 038b1970e..4f851c383 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/BodyInformation.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/BodyInformation.java
@@ -1,11 +1,15 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.IgnitionStableStatus;
import com.smartdevicelink.proxy.rpc.enums.IgnitionStatus;
-/** The body information including power modes.
+import com.smartdevicelink.proxy.rpc.enums.VehicleDataEventStatus;
+
+import java.util.Hashtable;
+
+import static com.smartdevicelink.proxy.rpc.AirbagStatus.KEY_DRIVER_CURTAIN_AIRBAG_DEPLOYED;
+
+/** The body information including power modes.
*
* <p><b>Note:</b> The structure defines the information about the park brake and ignition.</p>
*
@@ -105,91 +109,51 @@ public class BodyInformation extends RPCStruct {
}
public void setParkBrakeActive(Boolean parkBrakeActive) {
- if (parkBrakeActive != null) {
- store.put(KEY_PARK_BRAKE_ACTIVE, parkBrakeActive);
- } else {
- store.remove(KEY_PARK_BRAKE_ACTIVE);
- }
+ setValue(KEY_PARK_BRAKE_ACTIVE, parkBrakeActive);
}
public Boolean getParkBrakeActive() {
- return (Boolean) store.get(KEY_PARK_BRAKE_ACTIVE);
+ return getBoolean(KEY_PARK_BRAKE_ACTIVE);
}
public void setIgnitionStableStatus(IgnitionStableStatus ignitionStableStatus) {
- if (ignitionStableStatus != null) {
- store.put(KEY_IGNITION_STABLE_STATUS, ignitionStableStatus);
- } else {
- store.remove(KEY_IGNITION_STABLE_STATUS);
- }
+ setValue(KEY_IGNITION_STABLE_STATUS, ignitionStableStatus);
}
public IgnitionStableStatus getIgnitionStableStatus() {
- Object obj = store.get(KEY_IGNITION_STABLE_STATUS);
- if (obj instanceof IgnitionStableStatus) {
- return (IgnitionStableStatus) obj;
- } else if (obj instanceof String) {
- return IgnitionStableStatus.valueForString((String) obj);
- }
- return null;
+ return (IgnitionStableStatus) getObject(IgnitionStableStatus.class, KEY_IGNITION_STABLE_STATUS);
}
public void setIgnitionStatus(IgnitionStatus ignitionStatus) {
- if (ignitionStatus != null) {
- store.put(KEY_IGNITION_STATUS, ignitionStatus);
- } else {
- store.remove(KEY_IGNITION_STATUS);
- }
+ setValue(KEY_IGNITION_STATUS, ignitionStatus);
}
public IgnitionStatus getIgnitionStatus() {
- Object obj = store.get(KEY_IGNITION_STATUS);
- if (obj instanceof IgnitionStatus) {
- return (IgnitionStatus) obj;
- } else if (obj instanceof String) {
- return IgnitionStatus.valueForString((String) obj);
- }
- return null;
+ return (IgnitionStatus) getObject(IgnitionStatus.class, KEY_IGNITION_STATUS);
}
public void setDriverDoorAjar(Boolean driverDoorAjar) {
- if (driverDoorAjar != null) {
- store.put(KEY_DRIVER_DOOR_AJAR, driverDoorAjar);
- } else {
- store.remove(KEY_DRIVER_DOOR_AJAR);
- }
+ setValue(KEY_DRIVER_DOOR_AJAR, driverDoorAjar);
}
public Boolean getDriverDoorAjar() {
- return (Boolean) store.get(KEY_DRIVER_DOOR_AJAR);
+ return getBoolean(KEY_DRIVER_DOOR_AJAR);
}
public void setPassengerDoorAjar(Boolean passengerDoorAjar) {
- if (passengerDoorAjar != null) {
- store.put(KEY_PASSENGER_DOOR_AJAR, passengerDoorAjar);
- } else {
- store.remove(KEY_PASSENGER_DOOR_AJAR);
- }
+ setValue(KEY_PASSENGER_DOOR_AJAR, passengerDoorAjar);
}
public Boolean getPassengerDoorAjar() {
- return (Boolean) store.get(KEY_PASSENGER_DOOR_AJAR);
+ return getBoolean(KEY_PASSENGER_DOOR_AJAR);
}
public void setRearLeftDoorAjar(Boolean rearLeftDoorAjar) {
- if (rearLeftDoorAjar != null) {
- store.put(KEY_REAR_LEFT_DOOR_AJAR, rearLeftDoorAjar);
- } else {
- store.remove(KEY_REAR_LEFT_DOOR_AJAR);
- }
+ setValue(KEY_REAR_LEFT_DOOR_AJAR, rearLeftDoorAjar);
}
public Boolean getRearLeftDoorAjar() {
- return (Boolean) store.get(KEY_REAR_LEFT_DOOR_AJAR);
+ return getBoolean(KEY_REAR_LEFT_DOOR_AJAR);
}
public void setRearRightDoorAjar(Boolean rearRightDoorAjar) {
- if (rearRightDoorAjar != null) {
- store.put(KEY_REAR_RIGHT_DOOR_AJAR, rearRightDoorAjar);
- } else {
- store.remove(KEY_REAR_RIGHT_DOOR_AJAR);
- }
+ setValue(KEY_REAR_RIGHT_DOOR_AJAR, rearRightDoorAjar);
}
public Boolean getRearRightDoorAjar() {
- return (Boolean) store.get(KEY_REAR_RIGHT_DOOR_AJAR);
+ return getBoolean(KEY_REAR_RIGHT_DOOR_AJAR);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ButtonCapabilities.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ButtonCapabilities.java
index 9b15c5be9..5c0ebd779 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ButtonCapabilities.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ButtonCapabilities.java
@@ -80,77 +80,55 @@ public class ButtonCapabilities extends RPCStruct {
* @return ButtonName the name of the Button
*/
public ButtonName getName() {
- Object obj = store.get(KEY_NAME);
- if (obj instanceof ButtonName) {
- return (ButtonName) obj;
- } else if (obj instanceof String) {
- return ButtonName.valueForString((String) obj);
- }
- return null;
+ return (ButtonName) getObject(ButtonName.class, KEY_NAME);
}
/**
* Set the name of theSDL HMI button.
* @param name the name of button
*/
public void setName( ButtonName name ) {
- if (name != null) {
- store.put(KEY_NAME, name );
- } else {
- store.remove(KEY_NAME);
- }
+ setValue(KEY_NAME, name);
}
/**
* Whether the button supports a SHORT press. See <i>{@linkplain com.smartdevicelink.proxy.rpc.enums.ButtonPressMode}</i> for more information.
* @return True if support otherwise False.
*/
public Boolean getShortPressAvailable() {
- return (Boolean) store.get( KEY_SHORT_PRESS_AVAILABLE );
+ return getBoolean( KEY_SHORT_PRESS_AVAILABLE );
}
/**
* Set the button supports a SHORT press. See <i>{@linkplain com.smartdevicelink.proxy.rpc.enums.ButtonPressMode}</i> for more information.
* @param shortPressAvailable True if support otherwise False.
*/
public void setShortPressAvailable( Boolean shortPressAvailable ) {
- if (shortPressAvailable != null) {
- store.put(KEY_SHORT_PRESS_AVAILABLE, shortPressAvailable );
- } else {
- store.remove(KEY_SHORT_PRESS_AVAILABLE);
- }
+ setValue(KEY_SHORT_PRESS_AVAILABLE, shortPressAvailable);
}
/**
* Whether the button supports a LONG press. See <i>{@linkplain com.smartdevicelink.proxy.rpc.enums.ButtonPressMode}</i> for more information.
* @return True if support otherwise False.
*/
public Boolean getLongPressAvailable() {
- return (Boolean) store.get( KEY_LONG_PRESS_AVAILABLE );
+ return getBoolean( KEY_LONG_PRESS_AVAILABLE );
}
/**
* Set the button supports a LONG press. See <i>{@linkplain com.smartdevicelink.proxy.rpc.enums.ButtonPressMode}</i> for more information.
* @param longPressAvailable True if support otherwise False.
*/
public void setLongPressAvailable( Boolean longPressAvailable ) {
- if (longPressAvailable != null) {
- store.put(KEY_LONG_PRESS_AVAILABLE, longPressAvailable );
- } else {
- store.remove(KEY_LONG_PRESS_AVAILABLE);
- }
+ setValue(KEY_LONG_PRESS_AVAILABLE, longPressAvailable);
}
/**
* Whether the button supports "button down" and "button up". When the button is depressed, the <i>{@linkplain OnButtonEvent}</i> notification will be invoked with a value of BUTTONDOWN.
* @return True if support otherwise False.
*/
public Boolean getUpDownAvailable() {
- return (Boolean) store.get( KEY_UP_DOWN_AVAILABLE );
+ return getBoolean( KEY_UP_DOWN_AVAILABLE );
}
/**
* Set the button supports "button down" and "button up". When the button is depressed, the <i>{@linkplain OnButtonEvent}</i> notification will be invoked with a value of BUTTONDOWN.
* @param upDownAvailable True if support otherwise False.
*/
public void setUpDownAvailable( Boolean upDownAvailable ) {
- if (upDownAvailable != null) {
- store.put(KEY_UP_DOWN_AVAILABLE, upDownAvailable );
- } else {
- store.remove(KEY_UP_DOWN_AVAILABLE);
- }
+ setValue(KEY_UP_DOWN_AVAILABLE, upDownAvailable);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ChangeRegistration.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ChangeRegistration.java
index 2b4c69f42..c481e36c6 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ChangeRegistration.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ChangeRegistration.java
@@ -1,13 +1,12 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.Language;
+import java.util.Hashtable;
+import java.util.List;
+
/**
* If the app recognizes during the app registration that the SDL HMI language
* (voice/TTS and/or display) does not match the app language, the app will be
@@ -132,11 +131,7 @@ public class ChangeRegistration extends RPCRequest {
* a language value
*/
public void setLanguage(Language language) {
- if (language != null) {
- parameters.put(KEY_LANGUAGE, language);
- } else {
- parameters.remove(KEY_LANGUAGE);
- }
+ setParameters(KEY_LANGUAGE, language);
}
/**
@@ -145,13 +140,7 @@ public class ChangeRegistration extends RPCRequest {
* @return Language -a Language value
*/
public Language getLanguage() {
- Object obj = parameters.get(KEY_LANGUAGE);
- if (obj instanceof Language) {
- return (Language) obj;
- } else if (obj instanceof String) {
- return Language.valueForString((String) obj);
- }
- return null;
+ return (Language) getObject(Language.class, KEY_LANGUAGE);
}
/**
@@ -161,11 +150,7 @@ public class ChangeRegistration extends RPCRequest {
* a Language value
*/
public void setHmiDisplayLanguage(Language hmiDisplayLanguage) {
- if (hmiDisplayLanguage != null) {
- parameters.put(KEY_HMI_DISPLAY_LANGUAGE, hmiDisplayLanguage);
- } else {
- parameters.remove(KEY_HMI_DISPLAY_LANGUAGE);
- }
+ setParameters(KEY_HMI_DISPLAY_LANGUAGE, hmiDisplayLanguage);
}
/**
@@ -174,13 +159,7 @@ public class ChangeRegistration extends RPCRequest {
* @return Language -a Language value
*/
public Language getHmiDisplayLanguage() {
- Object obj = parameters.get(KEY_HMI_DISPLAY_LANGUAGE);
- if (obj instanceof Language) {
- return (Language) obj;
- } else if (obj instanceof String) {
- return Language.valueForString((String) obj);
- }
- return null;
+ return (Language) getObject(Language.class, KEY_HMI_DISPLAY_LANGUAGE);
}
/**
@@ -189,12 +168,7 @@ public class ChangeRegistration extends RPCRequest {
* @param appName App name to set
*/
public void setAppName(String appName){
- if(appName != null){
- parameters.put(KEY_APP_NAME, appName);
- }
- else{
- parameters.remove(KEY_APP_NAME);
- }
+ setParameters(KEY_APP_NAME, appName);
}
/**
@@ -203,7 +177,7 @@ public class ChangeRegistration extends RPCRequest {
* @return The app name
*/
public String getAppName(){
- return (String) parameters.get(KEY_APP_NAME);
+ return getString(KEY_APP_NAME);
}
/**
@@ -212,12 +186,7 @@ public class ChangeRegistration extends RPCRequest {
* @param ngnAppName The NGN app name
*/
public void setNgnMediaScreenAppName(String ngnAppName){
- if(ngnAppName != null){
- parameters.put(KEY_NGN_MEDIA_SCREEN_NAME, ngnAppName);
- }
- else{
- parameters.remove(KEY_NGN_MEDIA_SCREEN_NAME);
- }
+ setParameters(KEY_NGN_MEDIA_SCREEN_NAME, ngnAppName);
}
/**
@@ -226,7 +195,7 @@ public class ChangeRegistration extends RPCRequest {
* @return The NGN app name
*/
public String getNgnMediaScreenAppName(){
- return (String) parameters.get(KEY_NGN_MEDIA_SCREEN_NAME);
+ return getString(KEY_NGN_MEDIA_SCREEN_NAME);
}
/**
@@ -235,12 +204,7 @@ public class ChangeRegistration extends RPCRequest {
* @param ttsName The TTS name to set
*/
public void setTtsName(List<TTSChunk> ttsName){
- if(ttsName != null){
- parameters.put(KEY_TTS_NAME, ttsName);
- }
- else{
- parameters.remove(KEY_TTS_NAME);
- }
+ setParameters(KEY_TTS_NAME, ttsName);
}
/**
@@ -250,22 +214,7 @@ public class ChangeRegistration extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<TTSChunk> getTtsName(){
- if (parameters.get(KEY_TTS_NAME) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_TTS_NAME);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof TTSChunk) {
- return (List<TTSChunk>) list;
- } else if (obj instanceof Hashtable) {
- List<TTSChunk> newList = new ArrayList<TTSChunk>();
- for (Object hashObj : list) {
- newList.add(new TTSChunk((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<TTSChunk>) getObject(TTSChunk.class, KEY_TTS_NAME);
}
/**
@@ -278,16 +227,7 @@ public class ChangeRegistration extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<String> getVrSynonyms() {
- if (parameters.get(KEY_VR_SYNONYMS) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_VR_SYNONYMS);
- if (list != null && list.size()>0) {
- Object obj = list.get(0);
- if (obj instanceof String) {
- return (List<String>) list;
- }
- }
- }
- return null;
+ return (List<String>) getObject(String.class, KEY_VR_SYNONYMS);
}
/**
@@ -308,10 +248,6 @@ public class ChangeRegistration extends RPCRequest {
* </ul>
*/
public void setVrSynonyms(List<String> vrSynonyms) {
- if (vrSynonyms != null) {
- parameters.put(KEY_VR_SYNONYMS, vrSynonyms);
- } else {
- parameters.remove(KEY_VR_SYNONYMS);
- }
+ setParameters(KEY_VR_SYNONYMS, vrSynonyms);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Choice.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Choice.java
index 2bc59736e..886a88d23 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Choice.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Choice.java
@@ -1,11 +1,10 @@
package com.smartdevicelink.proxy.rpc;
+import com.smartdevicelink.proxy.RPCStruct;
+
import java.util.Hashtable;
import java.util.List;
-import com.smartdevicelink.proxy.RPCStruct;
-import com.smartdevicelink.util.DebugTool;
-
/**
* A choice is an option which a user can select either via the menu or via voice recognition (VR) during an application initiated interaction.
* For example, the application may request for the user`s choice among several suggested ones: Yes, No, Skip.
@@ -79,18 +78,14 @@ public class Choice extends RPCStruct {
* @return choiceID Min: 0; Max: 65535
*/
public Integer getChoiceID() {
- return (Integer) store.get(KEY_CHOICE_ID);
+ return getInteger(KEY_CHOICE_ID);
}
/**
* Set the application-scoped identifier that uniquely identifies this choice.
* @param choiceID Min: 0 Max: 65535
*/
public void setChoiceID(Integer choiceID) {
- if (choiceID != null) {
- store.put(KEY_CHOICE_ID, choiceID);
- } else {
- store.remove(KEY_CHOICE_ID);
- }
+ setValue(KEY_CHOICE_ID, choiceID);
}
/**
* Text which appears in menu, representing this choice.
@@ -99,7 +94,7 @@ public class Choice extends RPCStruct {
* @return menuName the menu name
*/
public String getMenuName() {
- return (String) store.get(KEY_MENU_NAME);
+ return getString(KEY_MENU_NAME);
}
/**
* Text which appears in menu, representing this choice.
@@ -108,11 +103,7 @@ public class Choice extends RPCStruct {
* @param menuName the menu name
*/
public void setMenuName(String menuName) {
- if (menuName != null) {
- store.put(KEY_MENU_NAME, menuName);
- } else {
- store.remove(KEY_MENU_NAME);
- }
+ setValue(KEY_MENU_NAME, menuName);
}
/**
* Get an array of strings to be used as VR synonyms for this choice. If this array is provided, it must have at least one non-empty element
@@ -121,16 +112,7 @@ public class Choice extends RPCStruct {
*/
@SuppressWarnings("unchecked")
public List<String> getVrCommands() {
- if (store.get(KEY_VR_COMMANDS) instanceof List<?>) {
- List<?> list = (List<?>)store.get( KEY_VR_COMMANDS);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof String) {
- return (List<String>) list;
- }
- }
- }
- return null;
+ return (List<String>) getObject(String.class, KEY_VR_COMMANDS);
}
/**
* Set an array of strings to be used as VR synonyms for this choice. If this array is provided, it must have at least one non-empty element
@@ -138,22 +120,14 @@ public class Choice extends RPCStruct {
* @since SmartDeviceLink 2.0
*/
public void setVrCommands(List<String> vrCommands) {
- if (vrCommands != null) {
- store.put(KEY_VR_COMMANDS, vrCommands);
- } else {
- store.remove(KEY_VR_COMMANDS);
- }
+ setValue(KEY_VR_COMMANDS, vrCommands);
}
/**
* Set the image
* @param image the image of the choice
*/
public void setImage(Image image) {
- if (image != null) {
- store.put(KEY_IMAGE, image);
- } else {
- store.remove(KEY_IMAGE);
- }
+ setValue(KEY_IMAGE, image);
}
/**
* Get the image
@@ -161,65 +135,31 @@ public class Choice extends RPCStruct {
*/
@SuppressWarnings("unchecked")
public Image getImage() {
- Object obj = store.get(KEY_IMAGE);
- if (obj instanceof Image) {
- return (Image) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new Image((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_IMAGE, e);
- }
- }
- return null;
+ return (Image) getObject(Image.class, KEY_IMAGE);
}
public String getSecondaryText() {
- return (String) store.get(KEY_SECONDARY_TEXT);
+ return getString(KEY_SECONDARY_TEXT);
}
public void setSecondaryText(String secondaryText) {
- if (secondaryText != null) {
- store.put(KEY_SECONDARY_TEXT, secondaryText);
- }
- else {
- store.remove(KEY_SECONDARY_TEXT);
- }
+ setValue(KEY_SECONDARY_TEXT, secondaryText);
}
public String getTertiaryText() {
- return (String) store.get(KEY_TERTIARY_TEXT);
+ return getString(KEY_TERTIARY_TEXT);
}
public void setTertiaryText(String tertiaryText) {
- if (tertiaryText != null) {
- store.put(KEY_TERTIARY_TEXT, tertiaryText);
- }
- else {
- store.remove(KEY_TERTIARY_TEXT);
- }
+ setValue(KEY_TERTIARY_TEXT, tertiaryText);
}
public void setSecondaryImage(Image image) {
- if (image != null) {
- store.put(KEY_SECONDARY_IMAGE, image);
- } else {
- store.remove(KEY_SECONDARY_IMAGE);
- }
+ setValue(KEY_SECONDARY_IMAGE, image);
}
@SuppressWarnings("unchecked")
public Image getSecondaryImage() {
- Object obj = store.get(KEY_SECONDARY_IMAGE);
- if (obj instanceof Image) {
- return (Image) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new Image((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_SECONDARY_IMAGE, e);
- }
- }
- return null;
+ return (Image) getObject(Image.class, KEY_SECONDARY_IMAGE);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ClusterModeStatus.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ClusterModeStatus.java
index 17e16af65..c58f70b50 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ClusterModeStatus.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ClusterModeStatus.java
@@ -6,6 +6,9 @@ import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.CarModeStatus;
import com.smartdevicelink.proxy.rpc.enums.PowerModeQualificationStatus;
import com.smartdevicelink.proxy.rpc.enums.PowerModeStatus;
+
+import static android.provider.Contacts.SettingsColumns.KEY;
+
/** <p>The status modes of the instrument panel cluster.</p>
*
*
@@ -69,61 +72,27 @@ public class ClusterModeStatus extends RPCStruct {
}
public void setPowerModeActive(Boolean powerModeActive) {
- if (powerModeActive != null) {
- store.put(KEY_POWER_MODE_ACTIVE, powerModeActive);
- } else {
- store.remove(KEY_POWER_MODE_ACTIVE);
- }
+ setValue(KEY_POWER_MODE_ACTIVE, powerModeActive);
}
public Boolean getPowerModeActive() {
- return (Boolean) store.get(KEY_POWER_MODE_ACTIVE);
+ return getBoolean(KEY_POWER_MODE_ACTIVE);
}
public void setPowerModeQualificationStatus(PowerModeQualificationStatus powerModeQualificationStatus) {
- if (powerModeQualificationStatus != null) {
- store.put(KEY_POWER_MODE_QUALIFICATION_STATUS, powerModeQualificationStatus);
- } else {
- store.remove(KEY_POWER_MODE_QUALIFICATION_STATUS);
- }
+ setValue(KEY_POWER_MODE_QUALIFICATION_STATUS, powerModeQualificationStatus);
}
public PowerModeQualificationStatus getPowerModeQualificationStatus() {
- Object obj = store.get(KEY_POWER_MODE_QUALIFICATION_STATUS);
- if (obj instanceof PowerModeQualificationStatus) {
- return (PowerModeQualificationStatus) obj;
- } else if (obj instanceof String) {
- return PowerModeQualificationStatus.valueForString((String) obj);
- }
- return null;
+ return (PowerModeQualificationStatus) getObject(PowerModeQualificationStatus.class, KEY_POWER_MODE_QUALIFICATION_STATUS);
}
public void setCarModeStatus(CarModeStatus carModeStatus) {
- if (carModeStatus != null) {
- store.put(KEY_CAR_MODE_STATUS, carModeStatus);
- } else {
- store.remove(KEY_CAR_MODE_STATUS);
- }
+ setValue(KEY_CAR_MODE_STATUS, carModeStatus);
}
public CarModeStatus getCarModeStatus() {
- Object obj = store.get(KEY_CAR_MODE_STATUS);
- if (obj instanceof CarModeStatus) {
- return (CarModeStatus) obj;
- } else if (obj instanceof String) {
- return CarModeStatus.valueForString((String) obj);
- }
- return null;
+ return (CarModeStatus) getObject(CarModeStatus.class, KEY_CAR_MODE_STATUS);
}
public void setPowerModeStatus(PowerModeStatus powerModeStatus) {
- if (powerModeStatus != null) {
- store.put(KEY_POWER_MODE_STATUS, powerModeStatus);
- } else {
- store.remove(KEY_POWER_MODE_STATUS);
- }
+ setValue(KEY_POWER_MODE_STATUS, powerModeStatus);
}
public PowerModeStatus getPowerModeStatus() {
- Object obj = store.get(KEY_POWER_MODE_STATUS);
- if (obj instanceof PowerModeStatus) {
- return (PowerModeStatus) obj;
- } else if (obj instanceof String) {
- return PowerModeStatus.valueForString((String) obj);
- }
- return null;
+ return (PowerModeStatus) getObject(PowerModeStatus.class, KEY_POWER_MODE_STATUS);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Coordinate.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Coordinate.java
index 7e899168c..433f9540b 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Coordinate.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Coordinate.java
@@ -17,28 +17,20 @@ public class Coordinate extends RPCStruct{
}
public Float getLatitudeDegrees() {
- Object value = store.get(KEY_LATITUDE_DEGREES);
+ Object value = getValue(KEY_LATITUDE_DEGREES);
return SdlDataTypeConverter.objectToFloat(value);
}
public void setLatitudeDegrees(Float latitudeDegrees) {
- if (latitudeDegrees != null) {
- store.put(KEY_LATITUDE_DEGREES, latitudeDegrees);
- } else {
- store.remove(KEY_LATITUDE_DEGREES);
- }
+ setValue(KEY_LATITUDE_DEGREES, latitudeDegrees);
}
public Float getLongitudeDegrees() {
- Object value = store.get(KEY_LONGITUDE_DEGREES);
+ Object value = getValue(KEY_LONGITUDE_DEGREES);
return SdlDataTypeConverter.objectToFloat(value);
}
public void setLongitudeDegrees(Float longitudeDegrees) {
- if (longitudeDegrees != null) {
- store.put(KEY_LONGITUDE_DEGREES, longitudeDegrees);
- } else {
- store.remove(KEY_LONGITUDE_DEGREES);
- }
+ setValue(KEY_LONGITUDE_DEGREES, longitudeDegrees);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/CreateInteractionChoiceSet.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/CreateInteractionChoiceSet.java
index 97793558f..dc813d048 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/CreateInteractionChoiceSet.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/CreateInteractionChoiceSet.java
@@ -1,12 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
+import java.util.Hashtable;
+import java.util.List;
+
/**
* Creates a Choice Set which can be used in subsequent <i>
* {@linkplain PerformInteraction}</i> Operations.
@@ -100,7 +99,7 @@ public class CreateInteractionChoiceSet extends RPCRequest {
* @return Integer -an Integer representing the Choice Set ID
*/
public Integer getInteractionChoiceSetID() {
- return (Integer) parameters.get( KEY_INTERACTION_CHOICE_SET_ID );
+ return getInteger( KEY_INTERACTION_CHOICE_SET_ID );
}
/**
* Sets a unique ID that identifies the Choice Set
@@ -111,11 +110,7 @@ public class CreateInteractionChoiceSet extends RPCRequest {
* <b>Notes: </b>Min Value: 0; Max Value: 2000000000
*/
public void setInteractionChoiceSetID( Integer interactionChoiceSetID ) {
- if (interactionChoiceSetID != null) {
- parameters.put(KEY_INTERACTION_CHOICE_SET_ID, interactionChoiceSetID );
- } else {
- parameters.remove(KEY_INTERACTION_CHOICE_SET_ID);
- }
+ setParameters(KEY_INTERACTION_CHOICE_SET_ID, interactionChoiceSetID);
}
/**
* Gets Choice Set Array of one or more elements
@@ -125,22 +120,7 @@ public class CreateInteractionChoiceSet extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<Choice> getChoiceSet() {
- if (parameters.get(KEY_CHOICE_SET) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_CHOICE_SET);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof Choice) {
- return (List<Choice>) list;
- } else if (obj instanceof Hashtable) {
- List<Choice> newList = new ArrayList<Choice>();
- for (Object hashObj : list) {
- newList.add(new Choice((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<Choice>) getObject(Choice.class, KEY_CHOICE_SET);
}
/**
* Sets a Choice Set that is an Array of one or more elements
@@ -152,10 +132,6 @@ public class CreateInteractionChoiceSet extends RPCRequest {
* <b>Notes: </b>Min Value: 1; Max Value: 100
*/
public void setChoiceSet( List<Choice> choiceSet ) {
- if (choiceSet != null) {
- parameters.put(KEY_CHOICE_SET, choiceSet );
- } else {
- parameters.remove(KEY_CHOICE_SET);
- }
+ setParameters(KEY_CHOICE_SET, choiceSet);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DIDResult.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DIDResult.java
index 84afe2a70..cd9d24c78 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DIDResult.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DIDResult.java
@@ -59,39 +59,21 @@ public class DIDResult extends RPCStruct {
super(hash);
}
public void setResultCode(VehicleDataResultCode resultCode) {
- if (resultCode != null) {
- store.put(KEY_RESULT_CODE, resultCode);
- } else {
- store.remove(KEY_RESULT_CODE);
- }
+ setValue(KEY_RESULT_CODE, resultCode);
}
public VehicleDataResultCode getResultCode() {
- Object obj = store.get(KEY_RESULT_CODE);
- if (obj instanceof VehicleDataResultCode) {
- return (VehicleDataResultCode) obj;
- } else if (obj instanceof String) {
- return VehicleDataResultCode.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataResultCode) getObject(VehicleDataResultCode.class, KEY_RESULT_CODE);
}
public void setDidLocation(Integer didLocation) {
- if (didLocation != null) {
- store.put(KEY_DID_LOCATION, didLocation);
- } else {
- store.remove(KEY_DID_LOCATION);
- }
+ setValue(KEY_DID_LOCATION, didLocation);
}
public Integer getDidLocation() {
- return (Integer) store.get(KEY_DID_LOCATION);
+ return getInteger(KEY_DID_LOCATION);
}
public void setData(String data) {
- if (data != null) {
- store.put(KEY_DATA, data);
- } else {
- store.remove(KEY_DATA);
- }
+ setValue(KEY_DATA, data);
}
public String getData() {
- return (String) store.get(KEY_DATA);
+ return getString(KEY_DATA);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DTC.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DTC.java
index e8ff471d8..57595672e 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DTC.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DTC.java
@@ -1,9 +1,9 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.proxy.RPCStruct;
+import java.util.Hashtable;
+
/**
* String containing hexadecimal identifier as well as other common names.
* <p><b>Parameter List</b></p>
@@ -48,11 +48,7 @@ public class DTC extends RPCStruct {
* @param identifier
*/
public void setIdentifier(String identifier) {
- if (identifier != null) {
- store.put(KEY_IDENTIFIER, identifier);
- } else {
- store.remove(KEY_IDENTIFIER);
- }
+ setValue(KEY_IDENTIFIER, identifier);
}
/**
@@ -60,7 +56,7 @@ public class DTC extends RPCStruct {
* @return identifier
*/
public String getIdentifier() {
- return (String) store.get(KEY_IDENTIFIER);
+ return getString(KEY_IDENTIFIER);
}
/**
@@ -68,11 +64,7 @@ public class DTC extends RPCStruct {
* @param statusByte Hexadecimal byte string
*/
public void setStatusByte(String statusByte) {
- if (statusByte != null) {
- store.put(KEY_STATUS_BYTE, statusByte);
- } else {
- store.remove(KEY_STATUS_BYTE);
- }
+ setValue(KEY_STATUS_BYTE, statusByte);
}
/**
@@ -80,6 +72,6 @@ public class DTC extends RPCStruct {
* @return Hexadecimal byte string
*/
public String getStatusByte() {
- return (String) store.get(KEY_STATUS_BYTE);
+ return getString(KEY_STATUS_BYTE);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DateTime.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DateTime.java
index aeb302ffb..1c3af0e88 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DateTime.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DateTime.java
@@ -30,7 +30,7 @@ public class DateTime extends RPCStruct{
*
*/
public Integer getMilliSecond() {
- return (Integer) store.get(KEY_MILLISECOND);
+ return getInteger(KEY_MILLISECOND);
}
/**
@@ -41,11 +41,7 @@ public class DateTime extends RPCStruct{
*
*/
public void setMilliSecond(Integer milliSecond) {
- if (milliSecond != null) {
- store.put(KEY_MILLISECOND, milliSecond);
- } else {
- store.remove(KEY_MILLISECOND);
- }
+ setValue(KEY_MILLISECOND, milliSecond);
}
@@ -56,7 +52,7 @@ public class DateTime extends RPCStruct{
*
*/
public Integer getSecond() {
- return (Integer) store.get(KEY_SECOND);
+ return getInteger(KEY_SECOND);
}
/**
@@ -67,11 +63,7 @@ public class DateTime extends RPCStruct{
*
*/
public void setSecond(Integer second) {
- if (second != null) {
- store.put(KEY_SECOND, second);
- } else {
- store.remove(KEY_SECOND);
- }
+ setValue(KEY_SECOND, second);
}
@@ -82,7 +74,7 @@ public class DateTime extends RPCStruct{
*
*/
public Integer getMinute() {
- return (Integer) store.get(KEY_MINUTE);
+ return getInteger(KEY_MINUTE);
}
/**
@@ -93,11 +85,7 @@ public class DateTime extends RPCStruct{
*
*/
public void setMinute(Integer minute) {
- if (minute != null) {
- store.put(KEY_MINUTE, minute);
- } else {
- store.remove(KEY_MINUTE);
- }
+ setValue(KEY_MINUTE, minute);
}
/**
@@ -107,7 +95,7 @@ public class DateTime extends RPCStruct{
*
*/
public Integer getHour() {
- return (Integer) store.get(KEY_HOUR);
+ return getInteger(KEY_HOUR);
}
/**
@@ -118,11 +106,7 @@ public class DateTime extends RPCStruct{
*
*/
public void setHour(Integer hour) {
- if (hour != null) {
- store.put(KEY_HOUR, hour);
- } else {
- store.remove(KEY_HOUR);
- }
+ setValue(KEY_HOUR, hour);
}
/**
@@ -132,7 +116,7 @@ public class DateTime extends RPCStruct{
*
*/
public Integer getDay() {
- return (Integer) store.get(KEY_DAY);
+ return getInteger(KEY_DAY);
}
/**
@@ -143,11 +127,7 @@ public class DateTime extends RPCStruct{
*
*/
public void setDay(Integer day) {
- if (day != null) {
- store.put(KEY_DAY, day);
- } else {
- store.remove(KEY_DAY);
- }
+ setValue(KEY_DAY, day);
}
/**
@@ -157,7 +137,7 @@ public class DateTime extends RPCStruct{
*
*/
public Integer getMonth() {
- return (Integer) store.get(KEY_MONTH);
+ return getInteger(KEY_MONTH);
}
/**
@@ -168,11 +148,7 @@ public class DateTime extends RPCStruct{
*
*/
public void setMonth(Integer month) {
- if (month != null) {
- store.put(KEY_MONTH, month);
- } else {
- store.remove(KEY_MONTH);
- }
+ setValue(KEY_MONTH, month);
}
/**
@@ -182,7 +158,7 @@ public class DateTime extends RPCStruct{
*
*/
public Integer getYear() {
- return (Integer) store.get(KEY_YEAR);
+ return getInteger(KEY_YEAR);
}
/**
@@ -193,11 +169,7 @@ public class DateTime extends RPCStruct{
*
*/
public void setYear(Integer year) {
- if (year != null) {
- store.put(KEY_YEAR, year);
- } else {
- store.remove(KEY_YEAR);
- }
+ setValue(KEY_YEAR, year);
}
/**
@@ -207,7 +179,7 @@ public class DateTime extends RPCStruct{
*
*/
public Integer getTzHour() {
- return (Integer) store.get(KEY_TZ_HOUR);
+ return getInteger(KEY_TZ_HOUR);
}
/**
@@ -218,11 +190,7 @@ public class DateTime extends RPCStruct{
*
*/
public void setTzHour(Integer tzHour) {
- if (tzHour != null) {
- store.put(KEY_TZ_HOUR, tzHour);
- } else {
- store.remove(KEY_TZ_HOUR);
- }
+ setValue(KEY_TZ_HOUR, tzHour);
}
/**
@@ -232,7 +200,7 @@ public class DateTime extends RPCStruct{
*
*/
public Integer getTzMinute() {
- return (Integer) store.get(KEY_TZ_MINUTE);
+ return getInteger(KEY_TZ_MINUTE);
}
/**
@@ -242,10 +210,6 @@ public class DateTime extends RPCStruct{
* The time zone offset in Minutes with regard to UTC associated with this DateTime class
*/
public void setTzMinute(Integer tzMinute) {
- if (tzMinute != null) {
- store.put(KEY_TZ_MINUTE, tzMinute);
- } else {
- store.remove(KEY_TZ_MINUTE);
- }
+ setValue(KEY_TZ_MINUTE, tzMinute);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteCommand.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteCommand.java
index 635f85814..5c5820fbd 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteCommand.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteCommand.java
@@ -1,10 +1,10 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
+import java.util.Hashtable;
+
/**
* Removes a command from the Command Menu.
*
@@ -80,7 +80,7 @@ public class DeleteCommand extends RPCRequest {
* the Command to be deleted from Command Menu
*/
public Integer getCmdID() {
- return (Integer) parameters.get( KEY_CMD_ID );
+ return getInteger( KEY_CMD_ID );
}
/**
* Sets the Command ID that identifies the Command to be deleted from Command Menu
@@ -91,10 +91,6 @@ public class DeleteCommand extends RPCRequest {
* <p><b>Notes: </b>Min Value: 0; Max Value: 2000000000</p>
*/
public void setCmdID( Integer cmdID ) {
- if (cmdID != null) {
- parameters.put(KEY_CMD_ID, cmdID );
- } else {
- parameters.remove(KEY_CMD_ID);
- }
+ setParameters(KEY_CMD_ID, cmdID);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteFile.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteFile.java
index 4d35c6fd3..7be0e7859 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteFile.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteFile.java
@@ -1,10 +1,10 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
+import java.util.Hashtable;
+
/**
* Used to delete a file resident on the SDL module in the app's local cache.
* Not supported on first generation SDL vehicles
@@ -71,11 +71,7 @@ public class DeleteFile extends RPCRequest {
* a String value representing a file reference name
*/
public void setSdlFileName(String sdlFileName) {
- if (sdlFileName != null) {
- parameters.put(KEY_SDL_FILE_NAME, sdlFileName);
- } else {
- parameters.remove(KEY_SDL_FILE_NAME);
- }
+ setParameters(KEY_SDL_FILE_NAME, sdlFileName);
}
/**
@@ -84,6 +80,6 @@ public class DeleteFile extends RPCRequest {
* @return String -a String value representing a file reference name
*/
public String getSdlFileName() {
- return (String) parameters.get(KEY_SDL_FILE_NAME);
+ return getString(KEY_SDL_FILE_NAME);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteFileResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteFileResponse.java
index 9916b95dc..499b5e518 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteFileResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteFileResponse.java
@@ -1,10 +1,10 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import java.util.Hashtable;
+
/**
* Delete File Response is sent, when DeleteFile has been called
*
@@ -23,13 +23,9 @@ public class DeleteFileResponse extends RPCResponse {
super(hash);
}
public void setSpaceAvailable(Integer spaceAvailable) {
- if (spaceAvailable != null) {
- parameters.put(KEY_SPACE_AVAILABLE, spaceAvailable);
- } else {
- parameters.remove(KEY_SPACE_AVAILABLE);
- }
+ setParameters(KEY_SPACE_AVAILABLE, spaceAvailable);
}
public Integer getSpaceAvailable() {
- return (Integer) parameters.get(KEY_SPACE_AVAILABLE);
+ return getInteger(KEY_SPACE_AVAILABLE);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteInteractionChoiceSet.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteInteractionChoiceSet.java
index 87f8cdbc3..41e884bce 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteInteractionChoiceSet.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteInteractionChoiceSet.java
@@ -1,10 +1,10 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
+import java.util.Hashtable;
+
/**
* Deletes an existing Choice Set identified by the parameter
* interactionChoiceSetID. If the specified interactionChoiceSetID is currently
@@ -83,7 +83,7 @@ public class DeleteInteractionChoiceSet extends RPCRequest {
* @return Integer -an Integer value representing the unique Choice Set ID
*/
public Integer getInteractionChoiceSetID() {
- return (Integer) parameters.get( KEY_INTERACTION_CHOICE_SET_ID );
+ return getInteger( KEY_INTERACTION_CHOICE_SET_ID );
}
/**
* Sets a unique ID that identifies the Choice Set
@@ -91,10 +91,6 @@ public class DeleteInteractionChoiceSet extends RPCRequest {
* <p><b>Notes: </b>Min Value: 0; Max Value: 2000000000 </p>
*/
public void setInteractionChoiceSetID( Integer interactionChoiceSetID ) {
- if (interactionChoiceSetID != null) {
- parameters.put(KEY_INTERACTION_CHOICE_SET_ID, interactionChoiceSetID );
- } else {
- parameters.remove(KEY_INTERACTION_CHOICE_SET_ID);
- }
+ setParameters(KEY_INTERACTION_CHOICE_SET_ID, interactionChoiceSetID);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteSubMenu.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteSubMenu.java
index aac605f51..db3524aa1 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteSubMenu.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteSubMenu.java
@@ -1,10 +1,10 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
+import java.util.Hashtable;
+
/**
* Deletes a submenu from the Command Menu.
*
@@ -72,7 +72,7 @@ public class DeleteSubMenu extends RPCRequest {
* @return Integer -an Integer value representing menuID that identifies the SubMenu to be delete
*/
public Integer getMenuID() {
- return (Integer) parameters.get( KEY_MENU_ID );
+ return getInteger( KEY_MENU_ID );
}
/**
* Sets the MenuID that identifies the SubMenu to be delete
@@ -81,10 +81,6 @@ public class DeleteSubMenu extends RPCRequest {
* <p><b>Notes: </b>Min Value: 0; Max Value: 2000000000</p>
*/
public void setMenuID( Integer menuID ) {
- if (menuID != null) {
- parameters.put(KEY_MENU_ID, menuID );
- } else {
- parameters.remove(KEY_MENU_ID);
- }
+ setParameters(KEY_MENU_ID, menuID);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeviceInfo.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeviceInfo.java
index b7d8ea5cf..485d859b7 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeviceInfo.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeviceInfo.java
@@ -95,76 +95,51 @@ public class DeviceInfo extends RPCStruct{
}
public void setHardware(String hardware) {
- if (hardware != null) {
- store.put(KEY_HARDWARE, hardware);
- } else {
- store.remove(KEY_HARDWARE);
- }
+ setValue(KEY_HARDWARE, hardware);
}
public String getHardware() {
- return (String) store.get(KEY_HARDWARE);
+ return getString(KEY_HARDWARE);
}
public void setFirmwareRev(String firmwareRev) {
- if (firmwareRev != null) {
- store.put(KEY_FIRMWARE_REV, firmwareRev);
- } else {
- store.remove(KEY_FIRMWARE_REV);
- }
+ setValue(KEY_FIRMWARE_REV, firmwareRev);
}
public String getFirmwareRev() {
- return (String) store.get(KEY_FIRMWARE_REV);
+ return getString(KEY_FIRMWARE_REV);
}
public void setOs(String os) {
- if (os != null) {
- store.put(KEY_OS, os);
- } else {
- store.remove(KEY_OS);
- }
+ setValue(KEY_OS, os);
}
public String getOs() {
- return (String) store.get(KEY_OS);
+ return getString(KEY_OS);
}
public void setOsVersion(String osVersion) {
- if (osVersion != null) {
- store.put(KEY_OS_VERSION, osVersion);
- } else {
- store.remove(KEY_OS_VERSION);
- }
+ setValue(KEY_OS_VERSION, osVersion);
}
public String getOsVersion() {
- return (String) store.get(KEY_OS_VERSION);
+ return getString(KEY_OS_VERSION);
}
public void setCarrier(String carrier) {
- if (carrier != null) {
- store.put(KEY_CARRIER, carrier);
- } else {
- store.remove(KEY_CARRIER);
- }
+ setValue(KEY_CARRIER, carrier);
}
public String getCarrier() {
- return (String) store.get(KEY_CARRIER);
+ return getString(KEY_CARRIER);
}
public Integer getMaxNumberRFCOMMPorts() {
- return (Integer) store.get( KEY_MAX_NUMBER_RFCOMM_PORTS );
+ return getInteger( KEY_MAX_NUMBER_RFCOMM_PORTS );
}
public void setMaxNumberRFCOMMPorts( Integer maxNumberRFCOMMPorts ) {
- if (maxNumberRFCOMMPorts != null) {
- store.put(KEY_MAX_NUMBER_RFCOMM_PORTS, maxNumberRFCOMMPorts );
- }
- else {
- store.remove(KEY_MAX_NUMBER_RFCOMM_PORTS);
- }
+ setValue(KEY_MAX_NUMBER_RFCOMM_PORTS, maxNumberRFCOMMPorts);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeviceStatus.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeviceStatus.java
index 51d5304b4..d90c4631f 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeviceStatus.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeviceStatus.java
@@ -1,11 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.DeviceLevelStatus;
import com.smartdevicelink.proxy.rpc.enums.PrimaryAudioSource;
+import java.util.Hashtable;
+
/**
* Describes the status related to a connected mobile device or SDL and if or how it is represented in the vehicle.
* <p><b>Parameter List</b></p>
@@ -132,11 +132,7 @@ public class DeviceStatus extends RPCStruct {
* @param voiceRecOn
*/
public void setVoiceRecOn(Boolean voiceRecOn) {
- if (voiceRecOn != null) {
- store.put(KEY_VOICE_REC_ON, voiceRecOn);
- } else {
- store.remove(KEY_VOICE_REC_ON);
- }
+ setValue(KEY_VOICE_REC_ON, voiceRecOn);
}
/**
@@ -144,7 +140,7 @@ public class DeviceStatus extends RPCStruct {
* @return whether the voice recognition is on
*/
public Boolean getVoiceRecOn() {
- return (Boolean) store.get(KEY_VOICE_REC_ON);
+ return getBoolean(KEY_VOICE_REC_ON);
}
/**
@@ -152,11 +148,7 @@ public class DeviceStatus extends RPCStruct {
* @param btIconOn the bluetooth connection established
*/
public void setBtIconOn(Boolean btIconOn) {
- if (btIconOn != null) {
- store.put(KEY_BT_ICON_ON, btIconOn);
- } else {
- store.remove(KEY_BT_ICON_ON);
- }
+ setValue(KEY_BT_ICON_ON, btIconOn);
}
/**
@@ -164,7 +156,7 @@ public class DeviceStatus extends RPCStruct {
* @return the bluetooth connection established
*/
public Boolean getBtIconOn() {
- return (Boolean) store.get(KEY_BT_ICON_ON);
+ return getBoolean(KEY_BT_ICON_ON);
}
/**
@@ -172,11 +164,7 @@ public class DeviceStatus extends RPCStruct {
* @param callActive a call is being active
*/
public void setCallActive(Boolean callActive) {
- if (callActive != null) {
- store.put(KEY_CALL_ACTIVE, callActive);
- } else {
- store.remove(KEY_CALL_ACTIVE);
- }
+ setValue(KEY_CALL_ACTIVE, callActive);
}
/**
@@ -184,7 +172,7 @@ public class DeviceStatus extends RPCStruct {
* @return a call is being active
*/
public Boolean getCallActive() {
- return (Boolean) store.get(KEY_CALL_ACTIVE);
+ return getBoolean(KEY_CALL_ACTIVE);
}
/**
@@ -192,11 +180,7 @@ public class DeviceStatus extends RPCStruct {
* @param phoneRoaming the phone is in roaming mode
*/
public void setPhoneRoaming(Boolean phoneRoaming) {
- if (phoneRoaming != null) {
- store.put(KEY_PHONE_ROAMING, phoneRoaming);
- } else {
- store.remove(KEY_PHONE_ROAMING);
- }
+ setValue(KEY_PHONE_ROAMING, phoneRoaming);
}
/**
@@ -204,14 +188,10 @@ public class DeviceStatus extends RPCStruct {
* @return the phone is in roaming mode
*/
public Boolean getPhoneRoaming() {
- return (Boolean) store.get(KEY_PHONE_ROAMING);
+ return getBoolean(KEY_PHONE_ROAMING);
}
public void setTextMsgAvailable(Boolean textMsgAvailable) {
- if (textMsgAvailable != null) {
- store.put(KEY_TEXT_MSG_AVAILABLE, textMsgAvailable);
- } else {
- store.remove(KEY_TEXT_MSG_AVAILABLE);
- }
+ setValue(KEY_TEXT_MSG_AVAILABLE, textMsgAvailable);
}
/**
@@ -219,7 +199,7 @@ public class DeviceStatus extends RPCStruct {
* @return a textmessage is available
*/
public Boolean getTextMsgAvailable() {
- return (Boolean) store.get(KEY_TEXT_MSG_AVAILABLE);
+ return getBoolean(KEY_TEXT_MSG_AVAILABLE);
}
/**
@@ -227,11 +207,7 @@ public class DeviceStatus extends RPCStruct {
* @param battLevelStatus battery level status
*/
public void setBattLevelStatus(DeviceLevelStatus battLevelStatus) {
- if (battLevelStatus != null) {
- store.put(KEY_BATT_LEVEL_STATUS, battLevelStatus);
- } else {
- store.remove(KEY_BATT_LEVEL_STATUS);
- }
+ setValue(KEY_BATT_LEVEL_STATUS, battLevelStatus);
}
/**
@@ -239,13 +215,7 @@ public class DeviceStatus extends RPCStruct {
* @return battery level status
*/
public DeviceLevelStatus getBattLevelStatus() {
- Object obj = store.get(KEY_BATT_LEVEL_STATUS);
- if (obj instanceof DeviceLevelStatus) {
- return (DeviceLevelStatus) obj;
- } else if (obj instanceof String) {
- return DeviceLevelStatus.valueForString((String) obj);
- }
- return null;
+ return (DeviceLevelStatus) getObject(DeviceLevelStatus.class, KEY_BATT_LEVEL_STATUS);
}
/**
@@ -253,11 +223,7 @@ public class DeviceStatus extends RPCStruct {
* @param stereoAudioOutputMuted the status of the stereo audio output channel
*/
public void setStereoAudioOutputMuted(Boolean stereoAudioOutputMuted) {
- if (stereoAudioOutputMuted != null) {
- store.put(KEY_STEREO_AUDIO_OUTPUT_MUTED, stereoAudioOutputMuted);
- } else {
- store.remove(KEY_STEREO_AUDIO_OUTPUT_MUTED);
- }
+ setValue(KEY_STEREO_AUDIO_OUTPUT_MUTED, stereoAudioOutputMuted);
}
/**
@@ -265,7 +231,7 @@ public class DeviceStatus extends RPCStruct {
* @return the status of the stereo audio output channel
*/
public Boolean getStereoAudioOutputMuted() {
- return (Boolean) store.get(KEY_STEREO_AUDIO_OUTPUT_MUTED);
+ return getBoolean(KEY_STEREO_AUDIO_OUTPUT_MUTED);
}
/**
@@ -273,11 +239,7 @@ public class DeviceStatus extends RPCStruct {
* @param monoAudioOutputMuted the status of the mono audio output channel
*/
public void setMonoAudioOutputMuted(Boolean monoAudioOutputMuted) {
- if (monoAudioOutputMuted != null) {
- store.put(KEY_MONO_AUDIO_OUTPUT_MUTED, monoAudioOutputMuted);
- } else {
- store.remove(KEY_MONO_AUDIO_OUTPUT_MUTED);
- }
+ setValue(KEY_MONO_AUDIO_OUTPUT_MUTED, monoAudioOutputMuted);
}
/**
@@ -285,7 +247,7 @@ public class DeviceStatus extends RPCStruct {
* @return the status of the mono audio output channel
*/
public Boolean getMonoAudioOutputMuted() {
- return (Boolean) store.get(KEY_MONO_AUDIO_OUTPUT_MUTED);
+ return getBoolean(KEY_MONO_AUDIO_OUTPUT_MUTED);
}
/**
@@ -293,11 +255,7 @@ public class DeviceStatus extends RPCStruct {
* @param signalLevelStatus signal level status
*/
public void setSignalLevelStatus(DeviceLevelStatus signalLevelStatus) {
- if (signalLevelStatus != null) {
- store.put(KEY_SIGNAL_LEVEL_STATUS, signalLevelStatus);
- } else {
- store.remove(KEY_SIGNAL_LEVEL_STATUS);
- }
+ setValue(KEY_SIGNAL_LEVEL_STATUS, signalLevelStatus);
}
/**
@@ -305,13 +263,7 @@ public class DeviceStatus extends RPCStruct {
* @return signal level status
*/
public DeviceLevelStatus getSignalLevelStatus() {
- Object obj = store.get(KEY_SIGNAL_LEVEL_STATUS);
- if (obj instanceof DeviceLevelStatus) {
- return (DeviceLevelStatus) obj;
- } else if (obj instanceof String) {
- return DeviceLevelStatus.valueForString((String) obj);
- }
- return null;
+ return (DeviceLevelStatus) getObject(DeviceLevelStatus.class, KEY_SIGNAL_LEVEL_STATUS);
}
/**
@@ -319,11 +271,7 @@ public class DeviceStatus extends RPCStruct {
* @param primaryAudioSource the current primary audio source of SDL (if selected).
*/
public void setPrimaryAudioSource(PrimaryAudioSource primaryAudioSource) {
- if (primaryAudioSource != null) {
- store.put(KEY_PRIMARY_AUDIO_SOURCE, primaryAudioSource);
- } else {
- store.remove(KEY_PRIMARY_AUDIO_SOURCE);
- }
+ setValue(KEY_PRIMARY_AUDIO_SOURCE, primaryAudioSource);
}
/**
@@ -331,22 +279,12 @@ public class DeviceStatus extends RPCStruct {
* @return the current primary audio source of SDL (if selected).
*/
public PrimaryAudioSource getPrimaryAudioSource() {
- Object obj = store.get(KEY_PRIMARY_AUDIO_SOURCE);
- if (obj instanceof PrimaryAudioSource) {
- return (PrimaryAudioSource) obj;
- } else if (obj instanceof String) {
- return PrimaryAudioSource.valueForString((String) obj);
- }
- return null;
+ return (PrimaryAudioSource) getObject(PrimaryAudioSource.class, KEY_PRIMARY_AUDIO_SOURCE);
}
public void setECallEventActive(Boolean eCallEventActive) {
- if (eCallEventActive != null) {
- store.put(KEY_E_CALL_EVENT_ACTIVE, eCallEventActive);
- } else {
- store.remove(KEY_E_CALL_EVENT_ACTIVE);
- }
+ setValue(KEY_E_CALL_EVENT_ACTIVE, eCallEventActive);
}
public Boolean getECallEventActive() {
- return (Boolean) store.get(KEY_E_CALL_EVENT_ACTIVE);
+ return getBoolean(KEY_E_CALL_EVENT_ACTIVE);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DiagnosticMessage.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DiagnosticMessage.java
index 0a0d8f997..f83c07735 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DiagnosticMessage.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DiagnosticMessage.java
@@ -1,10 +1,11 @@
package com.smartdevicelink.proxy.rpc;
+import com.smartdevicelink.protocol.enums.FunctionID;
+import com.smartdevicelink.proxy.RPCRequest;
+
import java.util.Hashtable;
import java.util.List;
-import com.smartdevicelink.protocol.enums.FunctionID;
-import com.smartdevicelink.proxy.RPCRequest;
/** Non periodic vehicle diagnostic request.
*
* <p><b>Parameter List</b></p>
@@ -81,11 +82,7 @@ public class DiagnosticMessage extends RPCRequest {
public void setTargetID(Integer targetID) {
- if (targetID != null) {
- parameters.put(KEY_TARGET_ID, targetID);
- } else {
- parameters.remove(KEY_TARGET_ID);
- }
+ setParameters(KEY_TARGET_ID, targetID);
}
/**
* <p>
@@ -96,39 +93,22 @@ public class DiagnosticMessage extends RPCRequest {
*/
public Integer getTargetID() {
- return (Integer) parameters.get(KEY_TARGET_ID);
+ return getInteger(KEY_TARGET_ID);
}
public void setMessageLength(Integer messageLength) {
- if (messageLength != null) {
- parameters.put(KEY_MESSAGE_LENGTH, messageLength);
- } else {
- parameters.remove(KEY_MESSAGE_LENGTH);
- }
+ setParameters(KEY_MESSAGE_LENGTH, messageLength);
}
public Integer getMessageLength() {
- return (Integer) parameters.get(KEY_MESSAGE_LENGTH);
+ return getInteger(KEY_MESSAGE_LENGTH);
}
@SuppressWarnings("unchecked")
public List<Integer> getMessageData() {
- if(parameters.get(KEY_MESSAGE_DATA) instanceof List<?>){
- List<?> list = (List<?>)parameters.get(KEY_MESSAGE_DATA);
- if(list != null && list.size()>0){
- Object obj = list.get(0);
- if(obj instanceof Integer){
- return (List<Integer>) list;
- }
- }
- }
- return null;
+ return (List<Integer>) getObject(Integer.class, KEY_MESSAGE_DATA);
}
public void setMessageData(List<Integer> messageData) {
- if (messageData != null) {
- parameters.put(KEY_MESSAGE_DATA, messageData);
- } else {
- parameters.remove(KEY_MESSAGE_DATA);
- }
+ setParameters(KEY_MESSAGE_DATA, messageData);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DiagnosticMessageResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DiagnosticMessageResponse.java
index 8cb0bc8d4..c478496f7 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DiagnosticMessageResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DiagnosticMessageResponse.java
@@ -1,10 +1,11 @@
package com.smartdevicelink.proxy.rpc;
+import com.smartdevicelink.protocol.enums.FunctionID;
+import com.smartdevicelink.proxy.RPCResponse;
+
import java.util.Hashtable;
import java.util.List;
-import com.smartdevicelink.protocol.enums.FunctionID;
-import com.smartdevicelink.proxy.RPCResponse;
/**
* Diagnostic Message Response is sent, when DiagnosticMessage has been called.
*
@@ -24,23 +25,10 @@ public class DiagnosticMessageResponse extends RPCResponse {
}
@SuppressWarnings("unchecked")
public List<Integer> getMessageDataResult() {
- if(parameters.get(KEY_MESSAGE_DATA_RESULT) instanceof List<?>){
- List<?> list = (List<?>)parameters.get(KEY_MESSAGE_DATA_RESULT);
- if(list != null && list.size()>0){
- Object obj = list.get(0);
- if(obj instanceof Integer){
- return (List<Integer>) list;
- }
- }
- }
- return null;
+ return (List<Integer>) getObject(Integer.class, KEY_MESSAGE_DATA_RESULT);
}
public void setMessageDataResult(List<Integer> messageDataResult) {
- if (messageDataResult != null) {
- parameters.put(KEY_MESSAGE_DATA_RESULT, messageDataResult);
- } else {
- parameters.remove(KEY_MESSAGE_DATA_RESULT);
- }
+ setParameters(KEY_MESSAGE_DATA_RESULT, messageDataResult);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DialNumber.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DialNumber.java
index 4651e1f20..4afc68a0c 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DialNumber.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DialNumber.java
@@ -1,10 +1,10 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
+import java.util.Hashtable;
+
/**
* Dials a phone number and switches to phone application.
*
@@ -34,10 +34,8 @@ public class DialNumber extends RPCRequest {
public void setNumber(String number) {
if (number != null) {
number = number.replaceAll("[^0-9*#,;+]", ""); //This will sanitize the input
- parameters.put(KEY_NUMBER, number);
- } else {
- parameters.remove(KEY_NUMBER);
}
+ setParameters(KEY_NUMBER, number);
}
/**
@@ -46,6 +44,6 @@ public class DialNumber extends RPCRequest {
* @return String - a String value representing a number to dial
*/
public String getNumber() {
- return (String) parameters.get(KEY_NUMBER);
+ return getString(KEY_NUMBER);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DisplayCapabilities.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DisplayCapabilities.java
index f0739e371..69928a128 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DisplayCapabilities.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DisplayCapabilities.java
@@ -1,13 +1,14 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.DisplayType;
import com.smartdevicelink.proxy.rpc.enums.MediaClockFormat;
+import com.smartdevicelink.proxy.rpc.enums.VehicleDataResultCode;
import com.smartdevicelink.util.DebugTool;
+
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.List;
/**
* Contains information about the display for the SDL system to which the application is currently connected.
* <p><b> Parameter List</b></p>
@@ -78,24 +79,14 @@ public class DisplayCapabilities extends RPCStruct {
* @return the type of display
*/
public DisplayType getDisplayType() {
- Object obj = store.get(KEY_DISPLAY_TYPE);
- if (obj instanceof DisplayType) {
- return (DisplayType) obj;
- } else if (obj instanceof String) {
- return DisplayType.valueForString((String) obj);
- }
- return null;
+ return (DisplayType) getObject(DisplayType.class, KEY_DISPLAY_TYPE);
}
/**
* Set the type of display
* @param displayType the display type
*/
public void setDisplayType( DisplayType displayType ) {
- if (displayType != null) {
- store.put(KEY_DISPLAY_TYPE, displayType );
- } else {
- store.remove(KEY_DISPLAY_TYPE);
- }
+ setValue(KEY_DISPLAY_TYPE, displayType);
}
/**
*Get an array of TextField structures, each of which describes a field in the HMI which the application can write to using operations such as <i>{@linkplain Show}</i>, <i>{@linkplain SetMediaClockTimer}</i>, etc.
@@ -104,22 +95,7 @@ public class DisplayCapabilities extends RPCStruct {
*/
@SuppressWarnings("unchecked")
public List<TextField> getTextFields() {
- if (store.get(KEY_TEXT_FIELDS) instanceof List<?>) {
- List<?> list = (List<?>)store.get(KEY_TEXT_FIELDS);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof TextField) {
- return (List<TextField>) list;
- } else if (obj instanceof Hashtable) {
- List<TextField> newList = new ArrayList<TextField>();
- for (Object hashObj : list) {
- newList.add(new TextField((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<TextField>) getObject(TextField.class, KEY_TEXT_FIELDS);
}
/**
* Set an array of TextField structures, each of which describes a field in the HMI which the application can write to using operations such as <i>{@linkplain Show}</i>, <i>{@linkplain SetMediaClockTimer}</i>, etc.
@@ -127,57 +103,26 @@ public class DisplayCapabilities extends RPCStruct {
* @param textFields the List of textFields
*/
public void setTextFields( List<TextField> textFields ) {
- if (textFields != null) {
- store.put(KEY_TEXT_FIELDS, textFields );
- } else {
- store.remove(KEY_TEXT_FIELDS);
- }
+ setValue(KEY_TEXT_FIELDS, textFields);
}
@SuppressWarnings("unchecked")
public List<ImageField> getImageFields() {
- if (store.get(KEY_IMAGE_FIELDS) instanceof List<?>) {
- List<?> list = (List<?>)store.get(KEY_IMAGE_FIELDS);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof ImageField) {
- return (List<ImageField>) list;
- } else if (obj instanceof Hashtable) {
- List<ImageField> newList = new ArrayList<ImageField>();
- for (Object hashObj : list) {
- newList.add(new ImageField((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<ImageField>) getObject(ImageField.class, KEY_IMAGE_FIELDS);
}
public void setImageFields( List<ImageField> imageFields ) {
- if (imageFields != null) {
- store.put(KEY_IMAGE_FIELDS, imageFields );
- }
- else
- {
- store.remove(KEY_IMAGE_FIELDS);
- }
+ setValue(KEY_IMAGE_FIELDS, imageFields);
}
public Integer getNumCustomPresetsAvailable() {
- return (Integer) store.get(KEY_NUM_CUSTOM_PRESETS_AVAILABLE);
+ return getInteger(KEY_NUM_CUSTOM_PRESETS_AVAILABLE);
}
public void setNumCustomPresetsAvailable(Integer numCustomPresetsAvailable) {
- if (numCustomPresetsAvailable != null) {
- store.put(KEY_NUM_CUSTOM_PRESETS_AVAILABLE, numCustomPresetsAvailable);
- }
- else
- {
- store.remove(KEY_NUM_CUSTOM_PRESETS_AVAILABLE);
- }
+ setValue(KEY_NUM_CUSTOM_PRESETS_AVAILABLE, numCustomPresetsAvailable);
}
/**
@@ -186,37 +131,14 @@ public class DisplayCapabilities extends RPCStruct {
*/
@SuppressWarnings("unchecked")
public List<MediaClockFormat> getMediaClockFormats() {
- if (store.get(KEY_MEDIA_CLOCK_FORMATS) instanceof List<?>) {
- List<?> list = (List<?>)store.get(KEY_MEDIA_CLOCK_FORMATS);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof MediaClockFormat) {
- return (List<MediaClockFormat>) list;
- } else if (obj instanceof String) {
- List<MediaClockFormat> newList = new ArrayList<MediaClockFormat>();
- for (Object hashObj : list) {
- String strFormat = (String)hashObj;
- MediaClockFormat toAdd = MediaClockFormat.valueForString(strFormat);
- if (toAdd != null) {
- newList.add(toAdd);
- }
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<MediaClockFormat>) getObject(MediaClockFormat.class, KEY_MEDIA_CLOCK_FORMATS);
}
/**
* Set an array of MediaClockFormat elements, defining the valid string formats used in specifying the contents of the media clock field
* @param mediaClockFormats the List of MediaClockFormat
*/
public void setMediaClockFormats( List<MediaClockFormat> mediaClockFormats ) {
- if (mediaClockFormats != null) {
- store.put(KEY_MEDIA_CLOCK_FORMATS, mediaClockFormats );
- } else {
- store.remove(KEY_MEDIA_CLOCK_FORMATS);
- }
+ setValue(KEY_MEDIA_CLOCK_FORMATS, mediaClockFormats);
}
/**
@@ -225,11 +147,7 @@ public class DisplayCapabilities extends RPCStruct {
* @since SmartDeviceLink 2.0
*/
public void setGraphicSupported(Boolean graphicSupported) {
- if (graphicSupported != null) {
- store.put(KEY_GRAPHIC_SUPPORTED, graphicSupported);
- } else {
- store.remove(KEY_GRAPHIC_SUPPORTED);
- }
+ setValue(KEY_GRAPHIC_SUPPORTED, graphicSupported);
}
/**
@@ -238,53 +156,24 @@ public class DisplayCapabilities extends RPCStruct {
* @since SmartDeviceLink 2.0
*/
public Boolean getGraphicSupported() {
- return (Boolean) store.get(KEY_GRAPHIC_SUPPORTED);
+ return getBoolean(KEY_GRAPHIC_SUPPORTED);
}
@SuppressWarnings("unchecked")
public List<String> getTemplatesAvailable() {
- if (store.get(KEY_TEMPLATES_AVAILABLE) instanceof List<?>) {
- List<?> list = (List<?>)store.get( KEY_TEMPLATES_AVAILABLE);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof String) {
- return (List<String>) list;
- }
- }
- }
- return null;
+ return (List<String>) getObject(String.class, KEY_TEMPLATES_AVAILABLE);
}
public void setTemplatesAvailable(List<String> templatesAvailable) {
- if (templatesAvailable != null) {
- store.put(KEY_TEMPLATES_AVAILABLE, templatesAvailable);
- }
- else
- {
- store.remove(KEY_TEMPLATES_AVAILABLE);
- }
+ setValue(KEY_TEMPLATES_AVAILABLE, templatesAvailable);
}
public void setScreenParams(ScreenParams screenParams) {
- if (screenParams != null) {
- store.put(KEY_SCREEN_PARAMS, screenParams);
- } else {
- store.remove(KEY_SCREEN_PARAMS);
- }
+ setValue(KEY_SCREEN_PARAMS, screenParams);
}
@SuppressWarnings("unchecked")
public ScreenParams getScreenParams() {
- Object obj = store.get(KEY_SCREEN_PARAMS);
- if (obj instanceof ScreenParams) {
- return (ScreenParams) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new ScreenParams((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_SCREEN_PARAMS, e);
- }
- }
- return null;
+ return (ScreenParams) getObject(ScreenParams.class, KEY_SCREEN_PARAMS);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ECallInfo.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ECallInfo.java
index 88eb89e03..da6c37d9a 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ECallInfo.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ECallInfo.java
@@ -1,10 +1,12 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.ECallConfirmationStatus;
import com.smartdevicelink.proxy.rpc.enums.VehicleDataNotificationStatus;
+import com.smartdevicelink.proxy.rpc.enums.VehicleDataResultCode;
+
+import java.util.Hashtable;
+
/** Emergency Call notification and confirmation data.
*
* <p><b>Parameter List</b></p>
@@ -67,51 +69,21 @@ public class ECallInfo extends RPCStruct {
}
public void setECallNotificationStatus(VehicleDataNotificationStatus eCallNotificationStatus) {
- if (eCallNotificationStatus != null) {
- store.put(KEY_E_CALL_NOTIFICATION_STATUS, eCallNotificationStatus);
- } else {
- store.remove(KEY_E_CALL_NOTIFICATION_STATUS);
- }
+ setValue(KEY_E_CALL_NOTIFICATION_STATUS, eCallNotificationStatus);
}
public VehicleDataNotificationStatus getECallNotificationStatus() {
- Object obj = store.get(KEY_E_CALL_NOTIFICATION_STATUS);
- if (obj instanceof VehicleDataNotificationStatus) {
- return (VehicleDataNotificationStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataNotificationStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataNotificationStatus) getObject(VehicleDataNotificationStatus.class, KEY_E_CALL_NOTIFICATION_STATUS);
}
public void setAuxECallNotificationStatus(VehicleDataNotificationStatus auxECallNotificationStatus) {
- if (auxECallNotificationStatus != null) {
- store.put(KEY_AUX_E_CALL_NOTIFICATION_STATUS, auxECallNotificationStatus);
- } else {
- store.remove(KEY_AUX_E_CALL_NOTIFICATION_STATUS);
- }
+ setValue(KEY_AUX_E_CALL_NOTIFICATION_STATUS, auxECallNotificationStatus);
}
public VehicleDataNotificationStatus getAuxECallNotificationStatus() {
- Object obj = store.get(KEY_AUX_E_CALL_NOTIFICATION_STATUS);
- if (obj instanceof VehicleDataNotificationStatus) {
- return (VehicleDataNotificationStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataNotificationStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataNotificationStatus) getObject(VehicleDataNotificationStatus.class, KEY_AUX_E_CALL_NOTIFICATION_STATUS);
}
public void setECallConfirmationStatus(ECallConfirmationStatus eCallConfirmationStatus) {
- if (eCallConfirmationStatus != null) {
- store.put(KEY_E_CALL_CONFIRMATION_STATUS, eCallConfirmationStatus);
- } else {
- store.remove(KEY_E_CALL_CONFIRMATION_STATUS);
- }
+ setValue(KEY_E_CALL_CONFIRMATION_STATUS, eCallConfirmationStatus);
}
public ECallConfirmationStatus getECallConfirmationStatus() {
- Object obj = store.get(KEY_E_CALL_CONFIRMATION_STATUS);
- if (obj instanceof ECallConfirmationStatus) {
- return (ECallConfirmationStatus) obj;
- } else if (obj instanceof String) {
- return ECallConfirmationStatus.valueForString((String) obj);
- }
- return null;
+ return (ECallConfirmationStatus) getObject(ECallConfirmationStatus.class, KEY_E_CALL_CONFIRMATION_STATUS);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/EmergencyEvent.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/EmergencyEvent.java
index 5e1f2ede1..19b8f69bb 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/EmergencyEvent.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/EmergencyEvent.java
@@ -6,6 +6,11 @@ import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.EmergencyEventType;
import com.smartdevicelink.proxy.rpc.enums.FuelCutoffStatus;
import com.smartdevicelink.proxy.rpc.enums.VehicleDataEventStatus;
+
+import static android.provider.Contacts.SettingsColumns.KEY;
+import static com.smartdevicelink.proxy.constants.Names.multipleEvents;
+import static com.smartdevicelink.proxy.rpc.TireStatus.KEY_INNER_RIGHT_REAR;
+
/** Information related to an emergency event (and if it occurred).
*
* <p><b>Parameter List</b></p>
@@ -88,77 +93,33 @@ public class EmergencyEvent extends RPCStruct {
}
public void setEmergencyEventType(EmergencyEventType emergencyEventType) {
- if (emergencyEventType != null) {
- store.put(KEY_EMERGENCY_EVENT_TYPE, emergencyEventType);
- } else {
- store.remove(KEY_EMERGENCY_EVENT_TYPE);
- }
+ setValue(KEY_EMERGENCY_EVENT_TYPE, emergencyEventType);
}
public EmergencyEventType getEmergencyEventType() {
- Object obj = store.get(KEY_EMERGENCY_EVENT_TYPE);
- if (obj instanceof EmergencyEventType) {
- return (EmergencyEventType) obj;
- } else if (obj instanceof String) {
- return EmergencyEventType.valueForString((String) obj);
- }
- return null;
+ return (EmergencyEventType) getObject(EmergencyEventType.class, KEY_EMERGENCY_EVENT_TYPE);
}
public void setFuelCutoffStatus(FuelCutoffStatus fuelCutoffStatus) {
- if (fuelCutoffStatus != null) {
- store.put(KEY_FUEL_CUTOFF_STATUS, fuelCutoffStatus);
- } else {
- store.remove(KEY_FUEL_CUTOFF_STATUS);
- }
+ setValue(KEY_FUEL_CUTOFF_STATUS, fuelCutoffStatus);
}
public FuelCutoffStatus getFuelCutoffStatus() {
- Object obj = store.get(KEY_FUEL_CUTOFF_STATUS);
- if (obj instanceof FuelCutoffStatus) {
- return (FuelCutoffStatus) obj;
- } else if (obj instanceof String) {
- return FuelCutoffStatus.valueForString((String) obj);
- }
- return null;
+ return (FuelCutoffStatus) getObject(FuelCutoffStatus.class, KEY_FUEL_CUTOFF_STATUS);
}
public void setRolloverEvent(VehicleDataEventStatus rolloverEvent) {
- if (rolloverEvent != null) {
- store.put(KEY_ROLLOVER_EVENT, rolloverEvent);
- } else {
- store.remove(KEY_ROLLOVER_EVENT);
- }
+ setValue(KEY_ROLLOVER_EVENT, rolloverEvent);
}
public VehicleDataEventStatus getRolloverEvent() {
- Object obj = store.get(KEY_ROLLOVER_EVENT);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_ROLLOVER_EVENT);
}
public void setMaximumChangeVelocity(Integer maximumChangeVelocity) {
- if (maximumChangeVelocity != null) {
- store.put(KEY_MAXIMUM_CHANGE_VELOCITY, maximumChangeVelocity);
- } else {
- store.remove(KEY_MAXIMUM_CHANGE_VELOCITY);
- }
+ setValue(KEY_MAXIMUM_CHANGE_VELOCITY, maximumChangeVelocity);
}
public Integer getMaximumChangeVelocity() {
- return (Integer) store.get(KEY_MAXIMUM_CHANGE_VELOCITY);
+ return getInteger(KEY_MAXIMUM_CHANGE_VELOCITY);
}
public void setMultipleEvents(VehicleDataEventStatus multipleEvents) {
- if (multipleEvents != null) {
- store.put(KEY_MULTIPLE_EVENTS, multipleEvents);
- } else {
- store.remove(KEY_MULTIPLE_EVENTS);
- }
+ setValue(KEY_MULTIPLE_EVENTS, multipleEvents);
}
public VehicleDataEventStatus getMultipleEvents() {
- Object obj = store.get(KEY_MULTIPLE_EVENTS);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_MULTIPLE_EVENTS);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GPSData.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GPSData.java
index d76b11355..fec91005b 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GPSData.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GPSData.java
@@ -1,11 +1,12 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.CompassDirection;
import com.smartdevicelink.proxy.rpc.enums.Dimension;
import com.smartdevicelink.util.SdlDataTypeConverter;
+
+import java.util.Hashtable;
+
/**
* Describes the GPS data. Not all data will be available on all carlines.
* <p><b>Parameter List</b></p>
@@ -180,11 +181,7 @@ public class GPSData extends RPCStruct {
* @param longitudeDegrees
*/
public void setLongitudeDegrees(Double longitudeDegrees) {
- if (longitudeDegrees != null) {
- store.put(KEY_LONGITUDE_DEGREES, longitudeDegrees);
- } else {
- store.remove(KEY_LONGITUDE_DEGREES);
- }
+ setValue(KEY_LONGITUDE_DEGREES, longitudeDegrees);
}
/**
@@ -192,7 +189,7 @@ public class GPSData extends RPCStruct {
* @return longitude degrees
*/
public Double getLongitudeDegrees() {
- Object object = store.get(KEY_LONGITUDE_DEGREES);
+ Object object = getValue(KEY_LONGITUDE_DEGREES);
return SdlDataTypeConverter.objectToDouble(object);
}
@@ -201,11 +198,7 @@ public class GPSData extends RPCStruct {
* @param latitudeDegrees latitude degrees
*/
public void setLatitudeDegrees(Double latitudeDegrees) {
- if (latitudeDegrees != null) {
- store.put(KEY_LATITUDE_DEGREES, latitudeDegrees);
- } else {
- store.remove(KEY_LATITUDE_DEGREES);
- }
+ setValue(KEY_LATITUDE_DEGREES, latitudeDegrees);
}
/**
@@ -213,7 +206,7 @@ public class GPSData extends RPCStruct {
* @return latitude degrees
*/
public Double getLatitudeDegrees() {
- Object object = store.get(KEY_LATITUDE_DEGREES);
+ Object object = getValue(KEY_LATITUDE_DEGREES);
return SdlDataTypeConverter.objectToDouble(object);
}
@@ -222,11 +215,7 @@ public class GPSData extends RPCStruct {
* @param utcYear utc year
*/
public void setUtcYear(Integer utcYear) {
- if (utcYear != null) {
- store.put(KEY_UTC_YEAR, utcYear);
- } else {
- store.remove(KEY_UTC_YEAR);
- }
+ setValue(KEY_UTC_YEAR, utcYear);
}
/**
@@ -234,7 +223,7 @@ public class GPSData extends RPCStruct {
* @return utc year
*/
public Integer getUtcYear() {
- return (Integer) store.get(KEY_UTC_YEAR);
+ return getInteger(KEY_UTC_YEAR);
}
/**
@@ -242,11 +231,7 @@ public class GPSData extends RPCStruct {
* @param utcMonth utc month
*/
public void setUtcMonth(Integer utcMonth) {
- if (utcMonth != null) {
- store.put(KEY_UTC_MONTH, utcMonth);
- } else {
- store.remove(KEY_UTC_MONTH);
- }
+ setValue(KEY_UTC_MONTH, utcMonth);
}
/**
@@ -254,7 +239,7 @@ public class GPSData extends RPCStruct {
* @return utc month
*/
public Integer getUtcMonth() {
- return (Integer) store.get(KEY_UTC_MONTH);
+ return getInteger(KEY_UTC_MONTH);
}
/**
@@ -262,11 +247,7 @@ public class GPSData extends RPCStruct {
* @param utcDay utc day
*/
public void setUtcDay(Integer utcDay) {
- if (utcDay != null) {
- store.put(KEY_UTC_DAY, utcDay);
- } else {
- store.remove(KEY_UTC_DAY);
- }
+ setValue(KEY_UTC_DAY, utcDay);
}
/**
@@ -274,7 +255,7 @@ public class GPSData extends RPCStruct {
* @return utc day
*/
public Integer getUtcDay() {
- return (Integer) store.get(KEY_UTC_DAY);
+ return getInteger(KEY_UTC_DAY);
}
/**
@@ -282,11 +263,7 @@ public class GPSData extends RPCStruct {
* @param utcHours utc hours
*/
public void setUtcHours(Integer utcHours) {
- if (utcHours != null) {
- store.put(KEY_UTC_HOURS, utcHours);
- } else {
- store.remove(KEY_UTC_HOURS);
- }
+ setValue(KEY_UTC_HOURS, utcHours);
}
/**
@@ -294,7 +271,7 @@ public class GPSData extends RPCStruct {
* @return utc hours
*/
public Integer getUtcHours() {
- return (Integer) store.get(KEY_UTC_HOURS);
+ return getInteger(KEY_UTC_HOURS);
}
/**
@@ -302,11 +279,7 @@ public class GPSData extends RPCStruct {
* @param utcMinutes utc minutes
*/
public void setUtcMinutes(Integer utcMinutes) {
- if (utcMinutes != null) {
- store.put(KEY_UTC_MINUTES, utcMinutes);
- } else {
- store.remove(KEY_UTC_MINUTES);
- }
+ setValue(KEY_UTC_MINUTES, utcMinutes);
}
/**
@@ -314,7 +287,7 @@ public class GPSData extends RPCStruct {
* @return utc minutes
*/
public Integer getUtcMinutes() {
- return (Integer) store.get(KEY_UTC_MINUTES);
+ return getInteger(KEY_UTC_MINUTES);
}
/**
@@ -322,11 +295,7 @@ public class GPSData extends RPCStruct {
* @param utcSeconds utc seconds
*/
public void setUtcSeconds(Integer utcSeconds) {
- if (utcSeconds != null) {
- store.put(KEY_UTC_SECONDS, utcSeconds);
- } else {
- store.remove(KEY_UTC_SECONDS);
- }
+ setValue(KEY_UTC_SECONDS, utcSeconds);
}
/**
@@ -334,23 +303,13 @@ public class GPSData extends RPCStruct {
* @return utc seconds
*/
public Integer getUtcSeconds() {
- return (Integer) store.get(KEY_UTC_SECONDS);
+ return getInteger(KEY_UTC_SECONDS);
}
public void setCompassDirection(CompassDirection compassDirection) {
- if (compassDirection != null) {
- store.put(KEY_COMPASS_DIRECTION, compassDirection);
- } else {
- store.remove(KEY_COMPASS_DIRECTION);
- }
+ setValue(KEY_COMPASS_DIRECTION, compassDirection);
}
public CompassDirection getCompassDirection() {
- Object obj = store.get(KEY_COMPASS_DIRECTION);
- if (obj instanceof CompassDirection) {
- return (CompassDirection) obj;
- } else if (obj instanceof String) {
- return CompassDirection.valueForString((String) obj);
- }
- return null;
+ return (CompassDirection) getObject(CompassDirection.class, KEY_COMPASS_DIRECTION);
}
/**
@@ -358,18 +317,14 @@ public class GPSData extends RPCStruct {
* @param pdop the positional dilution of precision
*/
public void setPdop(Double pdop) {
- if (pdop != null) {
- store.put(KEY_PDOP, pdop);
- } else {
- store.remove(KEY_PDOP);
- }
+ setValue(KEY_PDOP, pdop);
}
/**
* get the positional dilution of precision
*/
public Double getPdop() {
- Object object = store.get(KEY_PDOP);
+ Object object = getValue(KEY_PDOP);
return SdlDataTypeConverter.objectToDouble(object);
}
@@ -378,11 +333,7 @@ public class GPSData extends RPCStruct {
* @param hdop the horizontal dilution of precision
*/
public void setHdop(Double hdop) {
- if (hdop != null) {
- store.put(KEY_HDOP, hdop);
- } else {
- store.remove(KEY_HDOP);
- }
+ setValue(KEY_HDOP, hdop);
}
/**
@@ -390,7 +341,7 @@ public class GPSData extends RPCStruct {
* @return the horizontal dilution of precision
*/
public Double getHdop() {
- Object object = store.get(KEY_HDOP);
+ Object object = getValue(KEY_HDOP);
return SdlDataTypeConverter.objectToDouble(object);
}
@@ -399,11 +350,7 @@ public class GPSData extends RPCStruct {
* @param vdop the vertical dilution of precision
*/
public void setVdop(Double vdop) {
- if (vdop != null) {
- store.put(KEY_VDOP, vdop);
- } else {
- store.remove(KEY_VDOP);
- }
+ setValue(KEY_VDOP, vdop);
}
/**
@@ -411,7 +358,7 @@ public class GPSData extends RPCStruct {
* @return the vertical dilution of precision
*/
public Double getVdop() {
- Object object = store.get(KEY_VDOP);
+ Object object = getValue(KEY_VDOP);
return SdlDataTypeConverter.objectToDouble(object);
}
@@ -420,11 +367,7 @@ public class GPSData extends RPCStruct {
* @param actual True, if coordinates are based on satellites.False, if based on dead reckoning
*/
public void setActual(Boolean actual) {
- if (actual != null) {
- store.put(KEY_ACTUAL, actual);
- } else {
- store.remove(KEY_ACTUAL);
- }
+ setValue(KEY_ACTUAL, actual);
}
/**
@@ -432,7 +375,7 @@ public class GPSData extends RPCStruct {
* @return True, if coordinates are based on satellites.False, if based on dead reckoning
*/
public Boolean getActual() {
- return (Boolean) store.get(KEY_ACTUAL);
+ return getBoolean(KEY_ACTUAL);
}
/**
@@ -440,11 +383,7 @@ public class GPSData extends RPCStruct {
* @param satellites the number of satellites in view
*/
public void setSatellites(Integer satellites) {
- if (satellites != null) {
- store.put(KEY_SATELLITES, satellites);
- } else {
- store.remove(KEY_SATELLITES);
- }
+ setValue(KEY_SATELLITES, satellites);
}
/**
@@ -452,23 +391,13 @@ public class GPSData extends RPCStruct {
* @return the number of satellites in view
*/
public Integer getSatellites() {
- return (Integer) store.get(KEY_SATELLITES);
+ return getInteger(KEY_SATELLITES);
}
public void setDimension(Dimension dimension) {
- if (dimension != null) {
- store.put(KEY_DIMENSION, dimension);
- } else {
- store.remove(KEY_DIMENSION);
- }
+ setValue(KEY_DIMENSION, dimension);
}
public Dimension getDimension() {
- Object obj = store.get(KEY_DIMENSION);
- if (obj instanceof Dimension) {
- return (Dimension) obj;
- } else if (obj instanceof String) {
- return Dimension.valueForString((String) obj);
- }
- return null;
+ return (Dimension) getObject(Dimension.class, KEY_DIMENSION);
}
/**
@@ -476,11 +405,7 @@ public class GPSData extends RPCStruct {
* @param altitude altitude in meters
*/
public void setAltitude(Double altitude) {
- if (altitude != null) {
- store.put(KEY_ALTITUDE, altitude);
- } else {
- store.remove(KEY_ALTITUDE);
- }
+ setValue(KEY_ALTITUDE, altitude);
}
/**
@@ -488,7 +413,7 @@ public class GPSData extends RPCStruct {
* @return altitude in meters
*/
public Double getAltitude() {
- Object object = store.get(KEY_ALTITUDE);
+ Object object = getValue(KEY_ALTITUDE);
return SdlDataTypeConverter.objectToDouble(object);
}
@@ -497,18 +422,14 @@ public class GPSData extends RPCStruct {
* @param heading the heading.
*/
public void setHeading(Double heading) {
- if (heading != null) {
- store.put(KEY_HEADING, heading);
- } else {
- store.remove(KEY_HEADING);
- }
+ setValue(KEY_HEADING, heading);
}
/**
* get the heading
*/
public Double getHeading() {
- Object object = store.get(KEY_HEADING);
+ Object object = getValue(KEY_HEADING);
return SdlDataTypeConverter.objectToDouble(object);
}
@@ -517,11 +438,7 @@ public class GPSData extends RPCStruct {
* @param speed the speed
*/
public void setSpeed(Double speed) {
- if (speed != null) {
- store.put(KEY_SPEED, speed);
- } else {
- store.remove(KEY_SPEED);
- }
+ setValue(KEY_SPEED, speed);
}
/**
@@ -529,7 +446,7 @@ public class GPSData extends RPCStruct {
* @return the speed in KPH
*/
public Double getSpeed() {
- Object object = store.get(KEY_SPEED);
+ Object object = getValue(KEY_SPEED);
return SdlDataTypeConverter.objectToDouble(object);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetDTCs.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetDTCs.java
index fa3ba1c01..83243823e 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetDTCs.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetDTCs.java
@@ -1,10 +1,10 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
+import java.util.Hashtable;
+
/**
* This RPC allows to request diagnostic module trouble codes from a certain
* vehicle module.
@@ -86,11 +86,7 @@ public class GetDTCs extends RPCRequest {
* <b>Notes:</p> </b>Minvalue:0; Maxvalue:65535
*/
public void setEcuName(Integer ecuName) {
- if (ecuName != null) {
- parameters.put(KEY_ECU_NAME, ecuName);
- } else {
- parameters.remove(KEY_ECU_NAME);
- }
+ setParameters(KEY_ECU_NAME, ecuName);
}
/**
@@ -100,16 +96,12 @@ public class GetDTCs extends RPCRequest {
* receive the DTC form
*/
public Integer getEcuName() {
- return (Integer) parameters.get(KEY_ECU_NAME);
+ return getInteger(KEY_ECU_NAME);
}
public void setDtcMask(Integer dtcMask) {
- if (dtcMask != null) {
- parameters.put(KEY_DTC_MASK, dtcMask);
- } else {
- parameters.remove(KEY_DTC_MASK);
- }
+ setParameters(KEY_DTC_MASK, dtcMask);
}
public Integer getDtcMask() {
- return (Integer) parameters.get(KEY_DTC_MASK);
+ return getInteger(KEY_DTC_MASK);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetDTCsResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetDTCsResponse.java
index b3c49b251..02d130db8 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetDTCsResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetDTCsResponse.java
@@ -1,11 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import java.util.Hashtable;
+import java.util.List;
+
/**
* Get DTCs Response is sent, when GetDTCs has been called
*
@@ -26,37 +26,18 @@ public class GetDTCsResponse extends RPCResponse{
@SuppressWarnings("unchecked")
public List<String> getDtc(){
- if(parameters.get(KEY_DTC) instanceof List<?>){
- List<?> list = (List<?>) parameters.get(KEY_DTC);
- if(list != null && list.size() > 0){
- Object obj = list.get(0);
- if(obj instanceof String){
- return (List<String>) list;
- }
- }
- }
- return null;
+ return (List<String>) getObject(String.class, KEY_DTC);
}
public void setDtc(List<String> dtc){
- if(dtc != null){
- parameters.put(KEY_DTC, dtc);
- }
- else{
- parameters.remove(KEY_DTC);
- }
+ setParameters(KEY_DTC, dtc);
}
public Integer getEcuHeader(){
- return (Integer) parameters.get(KEY_ECU_HEADER);
+ return getInteger(KEY_ECU_HEADER);
}
public void setEcuHeader(Integer ecuHeader){
- if(ecuHeader != null){
- parameters.put(KEY_ECU_HEADER, ecuHeader);
- }
- else{
- parameters.remove(KEY_ECU_HEADER);
- }
+ setParameters(KEY_ECU_HEADER, ecuHeader);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetSystemCapability.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetSystemCapability.java
new file mode 100644
index 000000000..190403096
--- /dev/null
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetSystemCapability.java
@@ -0,0 +1,48 @@
+package com.smartdevicelink.proxy.rpc;
+
+import com.smartdevicelink.protocol.enums.FunctionID;
+import com.smartdevicelink.proxy.RPCRequest;
+import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType;
+
+import java.util.Hashtable;
+
+/**
+ * Used to request the corresponding capability object for a given capability.
+ */
+
+public class GetSystemCapability extends RPCRequest {
+ public static final String KEY_SYSTEM_CAPABILITY_TYPE = "systemCapabilityType";
+
+ /**
+ * Constructs a new GetSystemCapability object
+ */
+ public GetSystemCapability(){
+ super(FunctionID.GET_SYSTEM_CAPABILITY.toString());
+ }
+
+ /**
+ * <p>Constructs a new GetSystemCapability object indicated by the Hashtable parameter</p>
+ *
+ * @param hash
+ * The Hashtable to use
+ */
+ public GetSystemCapability(Hashtable<String, Object> hash) {
+ super(hash);
+ }
+
+ /**
+ * Used to get the SystemCapabilityType being requested
+ * @return the SystemCapabilityType being requested
+ */
+ public SystemCapabilityType getSystemCapabilityType(){
+ return (SystemCapabilityType) getObject(SystemCapabilityType.class, KEY_SYSTEM_CAPABILITY_TYPE);
+ }
+
+ /**
+ * Used to set the SystemCapabilityType being requested
+ * @param value SystemCapabilityType being requested
+ */
+ public void setSystemCapabilityType(SystemCapabilityType value){
+ setParameters(KEY_SYSTEM_CAPABILITY_TYPE, value);
+ }
+}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetSystemCapabilityResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetSystemCapabilityResponse.java
new file mode 100644
index 000000000..bccce6331
--- /dev/null
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetSystemCapabilityResponse.java
@@ -0,0 +1,48 @@
+package com.smartdevicelink.proxy.rpc;
+
+import com.smartdevicelink.protocol.enums.FunctionID;
+import com.smartdevicelink.proxy.RPCResponse;
+
+import java.util.Hashtable;
+
+/**
+ * GetSystemCapabilityResponse is sent, when GetSystemCapability has been called
+ */
+
+public class GetSystemCapabilityResponse extends RPCResponse {
+ public static final String KEY_SYSTEM_CAPABILITY = "systemCapability";
+
+ /**
+ * Constructs a new GetSystemCapability object
+ */
+ public GetSystemCapabilityResponse(){
+ super(FunctionID.GET_SYSTEM_CAPABILITY.toString());
+ }
+
+ /**
+ * <p>Constructs a new GetSystemCapability object indicated by the Hashtable parameter</p>
+ *
+ *
+ * @param hash
+ * The Hashtable to use
+ */
+ public GetSystemCapabilityResponse(Hashtable<String, Object> hash) {
+ super(hash);
+ }
+
+ /**
+ * Get the SystemCapability object returned after a GetSystemCapability call
+ * @return SystemCapability object
+ */
+ public SystemCapability getSystemCapability(){
+ return (SystemCapability) getObject(SystemCapability.class, KEY_SYSTEM_CAPABILITY);
+ }
+
+ /**
+ * Set a SystemCapability object in the response
+ * @param value SystemCapability object
+ */
+ public void setSystemCapability(SystemCapability value){
+ setParameters(KEY_SYSTEM_CAPABILITY, value);
+ }
+}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetVehicleData.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetVehicleData.java
index 0c15c02c9..e29f01be0 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetVehicleData.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetVehicleData.java
@@ -4,6 +4,15 @@ import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
+
+import static android.provider.Contacts.SettingsColumns.KEY;
+import static com.smartdevicelink.proxy.constants.Names.choiceSet;
+import static com.smartdevicelink.proxy.constants.Names.externalTemperature;
+import static com.smartdevicelink.proxy.constants.Names.instantFuelConsumption;
+import static com.smartdevicelink.proxy.constants.Names.prndl;
+import static com.smartdevicelink.proxy.constants.Names.vin;
+import static com.smartdevicelink.proxy.rpc.CreateInteractionChoiceSet.KEY_CHOICE_SET;
+
/**
* Non periodic vehicle data read request.
*
@@ -195,7 +204,7 @@ import com.smartdevicelink.proxy.RPCRequest;
* <p> USER_DISALLOWED</p>
*
* @see SubscribeVehicleData
- * @see UnSubscribeVehicleData
+ * @see UnsubscribeVehicleData
* @since SmartDeviceLink 2.0
*
*
@@ -247,44 +256,28 @@ public class GetVehicleData extends RPCRequest {
super(hash);
}
public void setGps(Boolean gps) {
- if (gps != null) {
- parameters.put(KEY_GPS, gps);
- } else {
- parameters.remove(KEY_GPS);
- }
+ setParameters(KEY_GPS, gps);
}
public Boolean getGps() {
- return (Boolean) parameters.get(KEY_GPS);
+ return getBoolean(KEY_GPS);
}
public void setSpeed(Boolean speed) {
- if (speed != null) {
- parameters.put(KEY_SPEED, speed);
- } else {
- parameters.remove(KEY_SPEED);
- }
+ setParameters(KEY_SPEED, speed);
}
public Boolean getSpeed() {
- return (Boolean) parameters.get(KEY_SPEED);
+ return getBoolean(KEY_SPEED);
}
public void setRpm(Boolean rpm) {
- if (rpm != null) {
- parameters.put(KEY_RPM, rpm);
- } else {
- parameters.remove(KEY_RPM);
- }
+ setParameters(KEY_RPM, rpm);
}
public Boolean getRpm() {
- return (Boolean) parameters.get(KEY_RPM);
+ return getBoolean(KEY_RPM);
}
public void setFuelLevel(Boolean fuelLevel) {
- if (fuelLevel != null) {
- parameters.put(KEY_FUEL_LEVEL, fuelLevel);
- } else {
- parameters.remove(KEY_FUEL_LEVEL);
- }
+ setParameters(KEY_FUEL_LEVEL, fuelLevel);
}
public Boolean getFuelLevel() {
- return (Boolean) parameters.get(KEY_FUEL_LEVEL);
+ return getBoolean(KEY_FUEL_LEVEL);
}
@Deprecated
public void setFuelLevel_State(Boolean fuelLevel_State) {
@@ -295,218 +288,134 @@ public class GetVehicleData extends RPCRequest {
return getFuelLevelState();
}
public void setFuelLevelState(Boolean fuelLevelState) {
- if (fuelLevelState != null) {
- parameters.put(KEY_FUEL_LEVEL_STATE, fuelLevelState);
- } else {
- parameters.remove(KEY_FUEL_LEVEL_STATE);
- }
+ setParameters(KEY_FUEL_LEVEL_STATE, fuelLevelState);
}
public Boolean getFuelLevelState() {
- return (Boolean) parameters.get(KEY_FUEL_LEVEL_STATE);
+ return getBoolean(KEY_FUEL_LEVEL_STATE);
}
public void setInstantFuelConsumption(Boolean instantFuelConsumption) {
- if (instantFuelConsumption != null) {
- parameters.put(KEY_INSTANT_FUEL_CONSUMPTION, instantFuelConsumption);
- } else {
- parameters.remove(KEY_INSTANT_FUEL_CONSUMPTION);
- }
+ setParameters(KEY_INSTANT_FUEL_CONSUMPTION, instantFuelConsumption);
}
public Boolean getInstantFuelConsumption() {
- return (Boolean) parameters.get(KEY_INSTANT_FUEL_CONSUMPTION);
+ return getBoolean(KEY_INSTANT_FUEL_CONSUMPTION);
}
public void setExternalTemperature(Boolean externalTemperature) {
- if (externalTemperature != null) {
- parameters.put(KEY_EXTERNAL_TEMPERATURE, externalTemperature);
- } else {
- parameters.remove(KEY_EXTERNAL_TEMPERATURE);
- }
+ setParameters(KEY_EXTERNAL_TEMPERATURE, externalTemperature);
}
public Boolean getExternalTemperature() {
- return (Boolean) parameters.get(KEY_EXTERNAL_TEMPERATURE);
+ return getBoolean(KEY_EXTERNAL_TEMPERATURE);
}
public void setVin(Boolean vin) {
- if (vin != null) {
- parameters.put(KEY_VIN, vin);
- } else {
- parameters.remove(KEY_VIN);
- }
+ setParameters(KEY_VIN, vin);
}
public Boolean getVin() {
- return (Boolean) parameters.get(KEY_VIN);
+ return getBoolean(KEY_VIN);
}
public void setPrndl(Boolean prndl) {
- if (prndl != null) {
- parameters.put(KEY_PRNDL, prndl);
- } else {
- parameters.remove(KEY_PRNDL);
- }
+ setParameters(KEY_PRNDL, prndl);
}
public Boolean getPrndl() {
- return (Boolean) parameters.get(KEY_PRNDL);
+ return getBoolean(KEY_PRNDL);
}
public void setTirePressure(Boolean tirePressure) {
- if (tirePressure != null) {
- parameters.put(KEY_TIRE_PRESSURE, tirePressure);
- } else {
- parameters.remove(KEY_TIRE_PRESSURE);
- }
+ setParameters(KEY_TIRE_PRESSURE, tirePressure);
}
public Boolean getTirePressure() {
- return (Boolean) parameters.get(KEY_TIRE_PRESSURE);
+ return getBoolean(KEY_TIRE_PRESSURE);
}
public void setOdometer(Boolean odometer) {
- if (odometer != null) {
- parameters.put(KEY_ODOMETER, odometer);
- } else {
- parameters.remove(KEY_ODOMETER);
- }
+ setParameters(KEY_ODOMETER, odometer);
}
public Boolean getOdometer() {
- return (Boolean) parameters.get(KEY_ODOMETER);
+ return getBoolean(KEY_ODOMETER);
}
public void setBeltStatus(Boolean beltStatus) {
- if (beltStatus != null) {
- parameters.put(KEY_BELT_STATUS, beltStatus);
- } else {
- parameters.remove(KEY_BELT_STATUS);
- }
+ setParameters(KEY_BELT_STATUS, beltStatus);
}
public Boolean getBeltStatus() {
- return (Boolean) parameters.get(KEY_BELT_STATUS);
+ return getBoolean(KEY_BELT_STATUS);
}
public void setBodyInformation(Boolean bodyInformation) {
- if (bodyInformation != null) {
- parameters.put(KEY_BODY_INFORMATION, bodyInformation);
- } else {
- parameters.remove(KEY_BODY_INFORMATION);
- }
+ setParameters(KEY_BODY_INFORMATION, bodyInformation);
}
public Boolean getBodyInformation() {
- return (Boolean) parameters.get(KEY_BODY_INFORMATION);
+ return getBoolean(KEY_BODY_INFORMATION);
}
public void setDeviceStatus(Boolean deviceStatus) {
- if (deviceStatus != null) {
- parameters.put(KEY_DEVICE_STATUS, deviceStatus);
- } else {
- parameters.remove(KEY_DEVICE_STATUS);
- }
+ setParameters(KEY_DEVICE_STATUS, deviceStatus);
}
public Boolean getDeviceStatus() {
- return (Boolean) parameters.get(KEY_DEVICE_STATUS);
+ return getBoolean(KEY_DEVICE_STATUS);
}
public void setDriverBraking(Boolean driverBraking) {
- if (driverBraking != null) {
- parameters.put(KEY_DRIVER_BRAKING, driverBraking);
- } else {
- parameters.remove(KEY_DRIVER_BRAKING);
- }
+ setParameters(KEY_DRIVER_BRAKING, driverBraking);
}
public Boolean getDriverBraking() {
- return (Boolean) parameters.get(KEY_DRIVER_BRAKING);
+ return getBoolean(KEY_DRIVER_BRAKING);
}
public void setWiperStatus(Boolean wiperStatus) {
- if (wiperStatus != null) {
- parameters.put(KEY_WIPER_STATUS, wiperStatus);
- } else {
- parameters.remove(KEY_WIPER_STATUS);
- }
+ setParameters(KEY_WIPER_STATUS, wiperStatus);
}
public Boolean getWiperStatus() {
- return (Boolean) parameters.get(KEY_WIPER_STATUS);
+ return getBoolean(KEY_WIPER_STATUS);
}
public void setHeadLampStatus(Boolean headLampStatus) {
- if (headLampStatus != null) {
- parameters.put(KEY_HEAD_LAMP_STATUS, headLampStatus);
- } else {
- parameters.remove(KEY_HEAD_LAMP_STATUS);
- }
+ setParameters(KEY_HEAD_LAMP_STATUS, headLampStatus);
}
public Boolean getHeadLampStatus() {
- return (Boolean) parameters.get(KEY_HEAD_LAMP_STATUS);
+ return getBoolean(KEY_HEAD_LAMP_STATUS);
}
public void setEngineTorque(Boolean engineTorque) {
- if (engineTorque != null) {
- parameters.put(KEY_ENGINE_TORQUE, engineTorque);
- } else {
- parameters.remove(KEY_ENGINE_TORQUE);
- }
+ setParameters(KEY_ENGINE_TORQUE, engineTorque);
}
public Boolean getEngineTorque() {
- return (Boolean) parameters.get(KEY_ENGINE_TORQUE);
+ return getBoolean(KEY_ENGINE_TORQUE);
}
public void setAccPedalPosition(Boolean accPedalPosition) {
- if (accPedalPosition != null) {
- parameters.put(KEY_ACC_PEDAL_POSITION, accPedalPosition);
- } else {
- parameters.remove(KEY_ACC_PEDAL_POSITION);
- }
+ setParameters(KEY_ACC_PEDAL_POSITION, accPedalPosition);
}
public Boolean getAccPedalPosition() {
- return (Boolean) parameters.get(KEY_ACC_PEDAL_POSITION);
+ return getBoolean(KEY_ACC_PEDAL_POSITION);
}
public void setSteeringWheelAngle(Boolean steeringWheelAngle) {
- if (steeringWheelAngle != null) {
- parameters.put(KEY_STEERING_WHEEL_ANGLE, steeringWheelAngle);
- } else {
- parameters.remove(KEY_STEERING_WHEEL_ANGLE);
- }
+ setParameters(KEY_STEERING_WHEEL_ANGLE, steeringWheelAngle);
}
public Boolean getSteeringWheelAngle() {
- return (Boolean) parameters.get(KEY_STEERING_WHEEL_ANGLE);
+ return getBoolean(KEY_STEERING_WHEEL_ANGLE);
}
public void setECallInfo(Boolean eCallInfo) {
- if (eCallInfo != null) {
- parameters.put(KEY_E_CALL_INFO, eCallInfo);
- } else {
- parameters.remove(KEY_E_CALL_INFO);
- }
+ setParameters(KEY_E_CALL_INFO, eCallInfo);
}
public Boolean getECallInfo() {
- return (Boolean) parameters.get(KEY_E_CALL_INFO);
+ return getBoolean(KEY_E_CALL_INFO);
}
public void setAirbagStatus(Boolean airbagStatus) {
- if (airbagStatus != null) {
- parameters.put(KEY_AIRBAG_STATUS, airbagStatus);
- } else {
- parameters.remove(KEY_AIRBAG_STATUS);
- }
+ setParameters(KEY_AIRBAG_STATUS, airbagStatus);
}
public Boolean getAirbagStatus() {
- return (Boolean) parameters.get(KEY_AIRBAG_STATUS);
+ return getBoolean(KEY_AIRBAG_STATUS);
}
public void setEmergencyEvent(Boolean emergencyEvent) {
- if (emergencyEvent != null) {
- parameters.put(KEY_EMERGENCY_EVENT, emergencyEvent);
- } else {
- parameters.remove(KEY_EMERGENCY_EVENT);
- }
+ setParameters(KEY_EMERGENCY_EVENT, emergencyEvent);
}
public Boolean getEmergencyEvent() {
- return (Boolean) parameters.get(KEY_EMERGENCY_EVENT);
+ return getBoolean(KEY_EMERGENCY_EVENT);
}
public void setClusterModeStatus(Boolean clusterModeStatus) {
- if (clusterModeStatus != null) {
- parameters.put(KEY_CLUSTER_MODE_STATUS, clusterModeStatus);
- } else {
- parameters.remove(KEY_CLUSTER_MODE_STATUS);
- }
+ setParameters(KEY_CLUSTER_MODE_STATUS, clusterModeStatus);
}
public Boolean getClusterModeStatus() {
- return (Boolean) parameters.get(KEY_CLUSTER_MODE_STATUS);
+ return getBoolean(KEY_CLUSTER_MODE_STATUS);
}
public void setMyKey(Boolean myKey) {
- if (myKey != null) {
- parameters.put(KEY_MY_KEY, myKey);
- } else {
- parameters.remove(KEY_MY_KEY);
- }
+ setParameters(KEY_MY_KEY, myKey);
}
public Boolean getMyKey() {
- return (Boolean) parameters.get(KEY_MY_KEY);
+ return getBoolean(KEY_MY_KEY);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetVehicleDataResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetVehicleDataResponse.java
index 51eb7a4b7..39e33993b 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetVehicleDataResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetVehicleDataResponse.java
@@ -1,17 +1,16 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
import com.smartdevicelink.proxy.rpc.enums.ComponentVolumeStatus;
import com.smartdevicelink.proxy.rpc.enums.PRNDL;
import com.smartdevicelink.proxy.rpc.enums.VehicleDataEventStatus;
import com.smartdevicelink.proxy.rpc.enums.WiperStatus;
-import com.smartdevicelink.util.DebugTool;
import com.smartdevicelink.util.SdlDataTypeConverter;
+import java.util.Hashtable;
+
/**
* Get Vehicle Data Response is sent, when GetVehicleData has been called.
*
@@ -55,58 +54,30 @@ public class GetVehicleDataResponse extends RPCResponse {
super(hash);
}
public void setGps(GPSData gps) {
- if (gps != null) {
- parameters.put(KEY_GPS, gps);
- } else {
- parameters.remove(KEY_GPS);
- }
+ setParameters(KEY_GPS, gps);
}
@SuppressWarnings("unchecked")
public GPSData getGps() {
- Object obj = parameters.get(KEY_GPS);
- if (obj instanceof GPSData) {
- return (GPSData) obj;
- } else if (obj instanceof Hashtable) {
- GPSData theCode = null;
- try {
- theCode = new GPSData((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_GPS, e);
- }
- return theCode;
- }
- return null;
+ return (GPSData) getObject(GPSData.class, KEY_GPS);
}
public void setSpeed(Double speed) {
- if (speed != null) {
- parameters.put(KEY_SPEED, speed);
- } else {
- parameters.remove(KEY_SPEED);
- }
+ setParameters(KEY_SPEED, speed);
}
public Double getSpeed() {
- Object object = parameters.get(KEY_SPEED);
+ Object object = getParameters(KEY_SPEED);
return SdlDataTypeConverter.objectToDouble(object);
}
public void setRpm(Integer rpm) {
- if (rpm != null) {
- parameters.put(KEY_RPM, rpm);
- } else {
- parameters.remove(KEY_RPM);
- }
+ setParameters(KEY_RPM, rpm);
}
public Integer getRpm() {
- return (Integer) parameters.get(KEY_RPM);
+ return getInteger(KEY_RPM);
}
public void setFuelLevel(Double fuelLevel) {
- if (fuelLevel != null) {
- parameters.put(KEY_FUEL_LEVEL, fuelLevel);
- } else {
- parameters.remove(KEY_FUEL_LEVEL);
- }
+ setParameters(KEY_FUEL_LEVEL, fuelLevel);
}
public Double getFuelLevel() {
- Object object = parameters.get(KEY_FUEL_LEVEL);
+ Object object = getParameters(KEY_FUEL_LEVEL);
return SdlDataTypeConverter.objectToDouble(object);
}
@Deprecated
@@ -118,364 +89,150 @@ public class GetVehicleDataResponse extends RPCResponse {
return getFuelLevelState();
}
public void setFuelLevelState(ComponentVolumeStatus fuelLevelState) {
- if (fuelLevelState != null) {
- parameters.put(KEY_FUEL_LEVEL_STATE, fuelLevelState);
- } else {
- parameters.remove(KEY_FUEL_LEVEL_STATE);
- }
+ setParameters(KEY_FUEL_LEVEL_STATE, fuelLevelState);
}
public ComponentVolumeStatus getFuelLevelState() {
- Object obj = parameters.get(KEY_FUEL_LEVEL_STATE);
- if (obj instanceof ComponentVolumeStatus) {
- return (ComponentVolumeStatus) obj;
- } else if (obj instanceof String) {
- ComponentVolumeStatus theCode = null;
- try {
- theCode = ComponentVolumeStatus.valueForString((String) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_FUEL_LEVEL_STATE, e);
- }
- return theCode;
- }
- return null;
+ return (ComponentVolumeStatus) getObject(ComponentVolumeStatus.class, KEY_FUEL_LEVEL_STATE);
}
public void setInstantFuelConsumption(Double instantFuelConsumption) {
- if (instantFuelConsumption != null) {
- parameters.put(KEY_INSTANT_FUEL_CONSUMPTION, instantFuelConsumption);
- } else {
- parameters.remove(KEY_INSTANT_FUEL_CONSUMPTION);
- }
+ setParameters(KEY_INSTANT_FUEL_CONSUMPTION, instantFuelConsumption);
}
public Double getInstantFuelConsumption() {
- Object object = parameters.get(KEY_INSTANT_FUEL_CONSUMPTION);
+ Object object = getParameters(KEY_INSTANT_FUEL_CONSUMPTION);
return SdlDataTypeConverter.objectToDouble(object);
}
public void setExternalTemperature(Double externalTemperature) {
- if (externalTemperature != null) {
- parameters.put(KEY_EXTERNAL_TEMPERATURE, externalTemperature);
- } else {
- parameters.remove(KEY_EXTERNAL_TEMPERATURE);
- }
+ setParameters(KEY_EXTERNAL_TEMPERATURE, externalTemperature);
}
public Double getExternalTemperature() {
- Object object = parameters.get(KEY_EXTERNAL_TEMPERATURE);
+ Object object = getParameters(KEY_EXTERNAL_TEMPERATURE);
return SdlDataTypeConverter.objectToDouble(object);
}
public void setVin(String vin) {
- if (vin != null) {
- parameters.put(KEY_VIN, vin);
- } else {
- parameters.remove(KEY_VIN);
- }
+ setParameters(KEY_VIN, vin);
}
public String getVin() {
- return (String) parameters.get(KEY_VIN);
+ return getString(KEY_VIN);
}
public void setPrndl(PRNDL prndl) {
- if (prndl != null) {
- parameters.put(KEY_PRNDL, prndl);
- } else {
- parameters.remove(KEY_PRNDL);
- }
+ setParameters(KEY_PRNDL, prndl);
}
public PRNDL getPrndl() {
- Object obj = parameters.get(KEY_PRNDL);
- if (obj instanceof PRNDL) {
- return (PRNDL) obj;
- } else if (obj instanceof String) {
- return PRNDL.valueForString((String) obj);
- }
- return null;
+ return (PRNDL) getObject(PRNDL.class, KEY_PRNDL);
}
public void setTirePressure(TireStatus tirePressure) {
- if (tirePressure != null) {
- parameters.put(KEY_TIRE_PRESSURE, tirePressure);
- } else {
- parameters.remove(KEY_TIRE_PRESSURE);
- }
+ setParameters(KEY_TIRE_PRESSURE, tirePressure);
}
@SuppressWarnings("unchecked")
public TireStatus getTirePressure() {
- Object obj = parameters.get(KEY_TIRE_PRESSURE);
- if (obj instanceof TireStatus) {
- return (TireStatus) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new TireStatus((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_TIRE_PRESSURE, e);
- }
- }
- return null;
+ return (TireStatus) getObject(TireStatus.class, KEY_TIRE_PRESSURE);
}
public void setOdometer(Integer odometer) {
- if (odometer != null) {
- parameters.put(KEY_ODOMETER, odometer);
- } else {
- parameters.remove(KEY_ODOMETER);
- }
+ setParameters(KEY_ODOMETER, odometer);
}
public Integer getOdometer() {
- return (Integer) parameters.get(KEY_ODOMETER);
+ return getInteger(KEY_ODOMETER);
}
public void setBeltStatus(BeltStatus beltStatus) {
- if (beltStatus != null) {
- parameters.put(KEY_BELT_STATUS, beltStatus);
- } else {
- parameters.remove(KEY_BELT_STATUS);
- }
+ setParameters(KEY_BELT_STATUS, beltStatus);
}
@SuppressWarnings("unchecked")
public BeltStatus getBeltStatus() {
- Object obj = parameters.get(KEY_BELT_STATUS);
- if (obj instanceof BeltStatus) {
- return (BeltStatus) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new BeltStatus((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_BELT_STATUS, e);
- }
- }
- return null;
+ return (BeltStatus) getObject(BeltStatus.class, KEY_BELT_STATUS);
}
public void setBodyInformation(BodyInformation bodyInformation) {
- if (bodyInformation != null) {
- parameters.put(KEY_BODY_INFORMATION, bodyInformation);
- } else {
- parameters.remove(KEY_BODY_INFORMATION);
- }
+ setParameters(KEY_BODY_INFORMATION, bodyInformation);
}
@SuppressWarnings("unchecked")
public BodyInformation getBodyInformation() {
- Object obj = parameters.get(KEY_BODY_INFORMATION);
- if (obj instanceof BodyInformation) {
- return (BodyInformation) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new BodyInformation((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_BODY_INFORMATION, e);
- }
- }
- return null;
+ return (BodyInformation) getObject(BodyInformation.class, KEY_BODY_INFORMATION);
}
public void setDeviceStatus(DeviceStatus deviceStatus) {
- if (deviceStatus != null) {
- parameters.put(KEY_DEVICE_STATUS, deviceStatus);
- } else {
- parameters.remove(KEY_DEVICE_STATUS);
- }
+ setParameters(KEY_DEVICE_STATUS, deviceStatus);
}
@SuppressWarnings("unchecked")
public DeviceStatus getDeviceStatus() {
- Object obj = parameters.get(KEY_DEVICE_STATUS);
- if (obj instanceof DeviceStatus) {
- return (DeviceStatus) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new DeviceStatus((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_DEVICE_STATUS, e);
- }
- }
- return null;
+ return (DeviceStatus) getObject(DeviceStatus.class, KEY_DEVICE_STATUS);
}
public void setDriverBraking(VehicleDataEventStatus driverBraking) {
- if (driverBraking != null) {
- parameters.put(KEY_DRIVER_BRAKING, driverBraking);
- } else {
- parameters.remove(KEY_DRIVER_BRAKING);
- }
+ setParameters(KEY_DRIVER_BRAKING, driverBraking);
}
public VehicleDataEventStatus getDriverBraking() {
- Object obj = parameters.get(KEY_DRIVER_BRAKING);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_DRIVER_BRAKING);
}
public void setWiperStatus(WiperStatus wiperStatus) {
- if (wiperStatus != null) {
- parameters.put(KEY_WIPER_STATUS, wiperStatus);
- } else {
- parameters.remove(KEY_WIPER_STATUS);
- }
+ setParameters(KEY_WIPER_STATUS, wiperStatus);
}
public WiperStatus getWiperStatus() {
- Object obj = parameters.get(KEY_WIPER_STATUS);
- if (obj instanceof WiperStatus) {
- return (WiperStatus) obj;
- } else if (obj instanceof String) {
- return WiperStatus.valueForString((String) obj);
- }
- return null;
+ return (WiperStatus) getObject(WiperStatus.class, KEY_WIPER_STATUS);
}
public void setHeadLampStatus(HeadLampStatus headLampStatus) {
- if (headLampStatus != null) {
- parameters.put(KEY_HEAD_LAMP_STATUS, headLampStatus);
- } else {
- parameters.remove(KEY_HEAD_LAMP_STATUS);
- }
+ setParameters(KEY_HEAD_LAMP_STATUS, headLampStatus);
}
@SuppressWarnings("unchecked")
public HeadLampStatus getHeadLampStatus() {
- Object obj = parameters.get(KEY_HEAD_LAMP_STATUS);
- if (obj instanceof HeadLampStatus) {
- return (HeadLampStatus) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new HeadLampStatus((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_HEAD_LAMP_STATUS, e);
- }
- }
- return null;
+ return (HeadLampStatus) getObject(HeadLampStatus.class, KEY_HEAD_LAMP_STATUS);
}
public void setEngineTorque(Double engineTorque) {
- if (engineTorque != null) {
- parameters.put(KEY_ENGINE_TORQUE, engineTorque);
- } else {
- parameters.remove(KEY_ENGINE_TORQUE);
- }
+ setParameters(KEY_ENGINE_TORQUE, engineTorque);
}
public Double getEngineTorque() {
- Object object = parameters.get(KEY_ENGINE_TORQUE);
+ Object object = getParameters(KEY_ENGINE_TORQUE);
return SdlDataTypeConverter.objectToDouble(object);
}
public void setAccPedalPosition(Double accPedalPosition) {
- if (accPedalPosition != null) {
- parameters.put(KEY_ACC_PEDAL_POSITION, accPedalPosition);
- } else {
- parameters.remove(KEY_ACC_PEDAL_POSITION);
- }
+ setParameters(KEY_ACC_PEDAL_POSITION, accPedalPosition);
}
public Double getAccPedalPosition() {
- Object object = parameters.get(KEY_ACC_PEDAL_POSITION);
+ Object object = getParameters(KEY_ACC_PEDAL_POSITION);
return SdlDataTypeConverter.objectToDouble(object);
}
public void setSteeringWheelAngle(Double steeringWheelAngle) {
- if (steeringWheelAngle != null) {
- parameters.put(KEY_STEERING_WHEEL_ANGLE, steeringWheelAngle);
- } else {
- parameters.remove(KEY_STEERING_WHEEL_ANGLE);
- }
+ setParameters(KEY_STEERING_WHEEL_ANGLE, steeringWheelAngle);
}
public Double getSteeringWheelAngle() {
- Object object = parameters.get(KEY_STEERING_WHEEL_ANGLE);
+ Object object = getParameters(KEY_STEERING_WHEEL_ANGLE);
return SdlDataTypeConverter.objectToDouble(object);
}
public void setECallInfo(ECallInfo eCallInfo) {
- if (eCallInfo != null) {
- parameters.put(KEY_E_CALL_INFO, eCallInfo);
- } else {
- parameters.remove(KEY_E_CALL_INFO);
- }
+ setParameters(KEY_E_CALL_INFO, eCallInfo);
}
@SuppressWarnings("unchecked")
public ECallInfo getECallInfo() {
- Object obj = parameters.get(KEY_E_CALL_INFO);
- if (obj instanceof ECallInfo) {
- return (ECallInfo) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new ECallInfo((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_E_CALL_INFO, e);
- }
- }
- return null;
+ return (ECallInfo) getObject(ECallInfo.class, KEY_E_CALL_INFO);
}
public void setAirbagStatus(AirbagStatus airbagStatus) {
- if (airbagStatus != null) {
- parameters.put(KEY_AIRBAG_STATUS, airbagStatus);
- } else {
- parameters.remove(KEY_AIRBAG_STATUS);
- }
+ setParameters(KEY_AIRBAG_STATUS, airbagStatus);
}
@SuppressWarnings("unchecked")
public AirbagStatus getAirbagStatus() {
- Object obj = parameters.get(KEY_AIRBAG_STATUS);
- if (obj instanceof AirbagStatus) {
- return (AirbagStatus) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new AirbagStatus((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_AIRBAG_STATUS, e);
- }
- }
- return null;
+ return (AirbagStatus) getObject(AirbagStatus.class, KEY_AIRBAG_STATUS);
}
public void setEmergencyEvent(EmergencyEvent emergencyEvent) {
- if (emergencyEvent != null) {
- parameters.put(KEY_EMERGENCY_EVENT, emergencyEvent);
- } else {
- parameters.remove(KEY_EMERGENCY_EVENT);
- }
+ setParameters(KEY_EMERGENCY_EVENT, emergencyEvent);
}
@SuppressWarnings("unchecked")
public EmergencyEvent getEmergencyEvent() {
- Object obj = parameters.get(KEY_EMERGENCY_EVENT);
- if (obj instanceof EmergencyEvent) {
- return (EmergencyEvent) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new EmergencyEvent((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_EMERGENCY_EVENT, e);
- }
- }
- return null;
+ return (EmergencyEvent) getObject(EmergencyEvent.class, KEY_EMERGENCY_EVENT);
}
public void setClusterModeStatus(ClusterModeStatus clusterModeStatus) {
- if (clusterModeStatus != null) {
- parameters.put(KEY_CLUSTER_MODE_STATUS, clusterModeStatus);
- } else {
- parameters.remove(KEY_CLUSTER_MODE_STATUS);
- }
+ setParameters(KEY_CLUSTER_MODE_STATUS, clusterModeStatus);
}
@SuppressWarnings("unchecked")
public ClusterModeStatus getClusterModeStatus() {
- Object obj = parameters.get(KEY_CLUSTER_MODE_STATUS);
- if (obj instanceof ClusterModeStatus) {
- return (ClusterModeStatus) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new ClusterModeStatus((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_CLUSTER_MODE_STATUS, e);
- }
- }
- return null;
+ return (ClusterModeStatus) getObject(ClusterModeStatus.class, KEY_CLUSTER_MODE_STATUS);
}
public void setMyKey(MyKey myKey) {
- if (myKey != null) {
- parameters.put(KEY_MY_KEY, myKey);
- } else {
- parameters.remove(KEY_MY_KEY);
- }
+ setParameters(KEY_MY_KEY, myKey);
}
@SuppressWarnings("unchecked")
public MyKey getMyKey() {
- Object obj = parameters.get(KEY_MY_KEY);
- if (obj instanceof MyKey) {
- return (MyKey) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new MyKey((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_MY_KEY, e);
- }
- }
- return null;
+ return (MyKey) getObject(MyKey.class, KEY_MY_KEY);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetWayPoints.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetWayPoints.java
index f9832da0e..443e66b3d 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetWayPoints.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetWayPoints.java
@@ -18,20 +18,10 @@ public class GetWayPoints extends RPCRequest {
}
public WayPointType getWayPointType() {
- Object obj = parameters.get(KEY_WAY_POINT_TYPE);
- if (obj instanceof WayPointType) {
- return (WayPointType) obj;
- } else if (obj instanceof String) {
- return WayPointType.valueForString((String) obj);
- }
- return null;
+ return (WayPointType) getObject(WayPointType.class, KEY_WAY_POINT_TYPE);
}
public void setWayPointType(WayPointType wayPointType) {
- if (wayPointType != null) {
- parameters.put(KEY_WAY_POINT_TYPE, wayPointType);
- } else {
- parameters.remove(KEY_WAY_POINT_TYPE);
- }
+ setParameters(KEY_WAY_POINT_TYPE, wayPointType);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetWayPointsResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetWayPointsResponse.java
index 24048c826..13eb85642 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetWayPointsResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetWayPointsResponse.java
@@ -3,7 +3,6 @@ package com.smartdevicelink.proxy.rpc;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
-import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
@@ -18,29 +17,10 @@ public class GetWayPointsResponse extends RPCResponse {
}
public void setWayPoints(List<LocationDetails> wayPoints) {
- if (wayPoints != null) {
- parameters.put(KEY_WAY_POINTS, wayPoints);
- } else {
- parameters.remove(KEY_WAY_POINTS);
- }
+ setParameters(KEY_WAY_POINTS, wayPoints);
}
@SuppressWarnings("unchecked")
public List<LocationDetails> getWayPoints() {
- if (parameters.get(KEY_WAY_POINTS) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_WAY_POINTS);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof LocationDetails) {
- return (List<LocationDetails>) list;
- } else if (obj instanceof Hashtable) {
- List<LocationDetails> newList = new ArrayList<LocationDetails>();
- for (Object hashObj : list) {
- newList.add(new LocationDetails((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<LocationDetails>) getObject(LocationDetails.class, KEY_WAY_POINTS);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HMICapabilities.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HMICapabilities.java
index efc94f57c..77c534c9f 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HMICapabilities.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HMICapabilities.java
@@ -1,21 +1,22 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.proxy.RPCStruct;
+import java.util.Hashtable;
+
public class HMICapabilities extends RPCStruct{
public static final String KEY_NAVIGATION = "navigation";
public static final String KEY_PHONE_CALL = "phoneCall";
-
- public HMICapabilities() { }
+ public static final String KEY_VIDEO_STREAMING = "videoStreaming";
+
+ public HMICapabilities() { }
public HMICapabilities(Hashtable<String, Object> hash) {
super(hash);
}
public boolean isNavigationAvailable(){
- Object available = store.get(KEY_NAVIGATION);
+ Object available = getValue(KEY_NAVIGATION);
if(available == null){
return false;
}
@@ -23,15 +24,11 @@ public class HMICapabilities extends RPCStruct{
}
public void setNavigationAvilable(Boolean available){
- if (available) {
- store.put(KEY_NAVIGATION, available);
- } else {
- store.remove(KEY_NAVIGATION);
- }
+ setValue(KEY_NAVIGATION, available);
}
public boolean isPhoneCallAvailable(){
- Object available = store.get(KEY_PHONE_CALL);
+ Object available = getValue(KEY_PHONE_CALL);
if(available == null){
return false;
}
@@ -39,11 +36,20 @@ public class HMICapabilities extends RPCStruct{
}
public void setPhoneCallAvilable(Boolean available){
- if (available) {
- store.put(KEY_PHONE_CALL, available);
- } else {
- store.remove(KEY_PHONE_CALL);
- }
+ setValue(KEY_PHONE_CALL, available);
}
+ public boolean isVideoStreamingAvailable(){
+ Object available = getValue(KEY_VIDEO_STREAMING);
+ if(available == null){
+ return false;
+ }
+ return (Boolean)available;
+ }
+
+ public void setVideoStreamingAvailable(Boolean available){
+ setValue(KEY_VIDEO_STREAMING, available);
+ }
+
+
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HMIPermissions.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HMIPermissions.java
index d8223279a..bf2184d0c 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HMIPermissions.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HMIPermissions.java
@@ -1,11 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.ArrayList;
+import com.smartdevicelink.proxy.RPCStruct;
+import com.smartdevicelink.proxy.rpc.enums.HMILevel;
+
import java.util.Hashtable;
import java.util.List;
-import com.smartdevicelink.proxy.RPCStruct;
-import com.smartdevicelink.proxy.rpc.enums.HMILevel;
/**
* Defining sets of HMI levels, which are permitted or prohibited for a given RPC.
* <p><b>Parameter List</b></p>
@@ -63,26 +63,7 @@ public class HMIPermissions extends RPCStruct {
*/
@SuppressWarnings("unchecked")
public List<HMILevel> getAllowed() {
- if (store.get(KEY_ALLOWED) instanceof List<?>) {
- List<?> list = (List<?>)store.get(KEY_ALLOWED);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof HMILevel) {
- return (List<HMILevel>) list;
- } else if (obj instanceof String) {
- List<HMILevel> newList = new ArrayList<HMILevel>();
- for (Object hashObj : list) {
- String strFormat = (String)hashObj;
- HMILevel toAdd = HMILevel.valueForString(strFormat);
- if (toAdd != null) {
- newList.add(toAdd);
- }
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<HMILevel>) getObject(HMILevel.class, KEY_ALLOWED);
}
/**
@@ -90,11 +71,7 @@ public class HMIPermissions extends RPCStruct {
* @param allowed HMI level that is permitted for this given RPC
*/
public void setAllowed(List<HMILevel> allowed) {
- if (allowed != null) {
- store.put(KEY_ALLOWED, allowed);
- } else {
- store.remove(KEY_ALLOWED);
- }
+ setValue(KEY_ALLOWED, allowed);
}
/**
@@ -103,26 +80,7 @@ public class HMIPermissions extends RPCStruct {
*/
@SuppressWarnings("unchecked")
public List<HMILevel> getUserDisallowed() {
- if (store.get(KEY_USER_DISALLOWED) instanceof List<?>) {
- List<?> list = (List<?>)store.get(KEY_USER_DISALLOWED);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof HMILevel) {
- return (List<HMILevel>) list;
- } else if (obj instanceof String) {
- List<HMILevel> newList = new ArrayList<HMILevel>();
- for (Object hashObj : list) {
- String strFormat = (String)hashObj;
- HMILevel toAdd = HMILevel.valueForString(strFormat);
- if (toAdd != null) {
- newList.add(toAdd);
- }
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<HMILevel>) getObject(HMILevel.class, KEY_USER_DISALLOWED);
}
/**
@@ -130,10 +88,6 @@ public class HMIPermissions extends RPCStruct {
* @param userDisallowed HMI level that is prohibited for this given RPC
*/
public void setUserDisallowed(List<HMILevel> userDisallowed) {
- if (userDisallowed != null) {
- store.put(KEY_USER_DISALLOWED, userDisallowed);
- } else {
- store.remove(KEY_USER_DISALLOWED);
- }
+ setValue(KEY_USER_DISALLOWED, userDisallowed);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HapticRect.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HapticRect.java
new file mode 100644
index 000000000..64a9f8354
--- /dev/null
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HapticRect.java
@@ -0,0 +1,82 @@
+package com.smartdevicelink.proxy.rpc;
+
+import com.smartdevicelink.proxy.RPCStruct;
+
+import java.util.Hashtable;
+
+/*
+ * Copyright (c) 2017 Livio, 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 Livio 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.
+ */
+
+/**
+ * Defines a haptic rectangle that contains a reference ID and the spatial data of a rectangle UI component.
+ * @since SmartDeviceLink 4.5.0
+ *
+ */
+
+public class HapticRect extends RPCStruct {
+ public static final String KEY_ID = "id";
+ public static final String KEY_RECT = "rect";
+
+ public HapticRect() {}
+
+ public HapticRect(Hashtable<String, Object> hash) {
+ super(hash);
+ }
+
+ /**
+ * Set a user control spatial identifier that references the supplied spatial data
+ */
+ public void setId(Integer id) {
+ setValue(KEY_ID, id);
+ }
+
+ /**
+ * @return a user control spatial identifier that references the supplied spatial data
+ */
+ public Integer getId() {
+ return getInteger(KEY_ID);
+ }
+
+ /**
+ * Set the position of the haptic rectangle to be highlighted. The center of this rectangle will be "touched" when a press occurs.
+ */
+ public void setRect(Rectangle rect) {
+ setValue(KEY_RECT, rect);
+ }
+
+ /**
+ * @return the position of the haptic rectangle to be highlighted. The center of this rectangle will be "touched" when a press occurs.
+ */
+ public Rectangle getRect() {
+ return (Rectangle) getObject(Rectangle.class, KEY_RECT);
+ }
+}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HeadLampStatus.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HeadLampStatus.java
index 46a982fe2..935b8357e 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HeadLampStatus.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HeadLampStatus.java
@@ -55,39 +55,21 @@ public class HeadLampStatus extends RPCStruct {
super(hash);
}
public void setAmbientLightStatus(AmbientLightStatus ambientLightSensorStatus) {
- if (ambientLightSensorStatus != null) {
- store.put(KEY_AMBIENT_LIGHT_SENSOR_STATUS, ambientLightSensorStatus);
- } else {
- store.remove(KEY_AMBIENT_LIGHT_SENSOR_STATUS);
- }
+ setValue(KEY_AMBIENT_LIGHT_SENSOR_STATUS, ambientLightSensorStatus);
}
public AmbientLightStatus getAmbientLightStatus() {
- Object obj = store.get(KEY_AMBIENT_LIGHT_SENSOR_STATUS);
- if (obj instanceof AmbientLightStatus) {
- return (AmbientLightStatus) obj;
- } else if (obj instanceof String) {
- return AmbientLightStatus.valueForString((String) obj);
- }
- return null;
+ return (AmbientLightStatus) getObject(AmbientLightStatus.class, KEY_AMBIENT_LIGHT_SENSOR_STATUS);
}
public void setHighBeamsOn(Boolean highBeamsOn) {
- if (highBeamsOn != null) {
- store.put(KEY_HIGH_BEAMS_ON, highBeamsOn);
- } else {
- store.remove(KEY_HIGH_BEAMS_ON);
- }
+ setValue(KEY_HIGH_BEAMS_ON, highBeamsOn);
}
public Boolean getHighBeamsOn() {
- return (Boolean) store.get(KEY_HIGH_BEAMS_ON);
+ return getBoolean(KEY_HIGH_BEAMS_ON);
}
public void setLowBeamsOn(Boolean lowBeamsOn) {
- if (lowBeamsOn != null) {
- store.put(KEY_LOW_BEAMS_ON, lowBeamsOn);
- } else {
- store.remove(KEY_LOW_BEAMS_ON);
- }
+ setValue(KEY_LOW_BEAMS_ON, lowBeamsOn);
}
public Boolean getLowBeamsOn() {
- return (Boolean) store.get(KEY_LOW_BEAMS_ON);
+ return getBoolean(KEY_LOW_BEAMS_ON);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Headers.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Headers.java
index 2be4f1a17..2ae607100 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Headers.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Headers.java
@@ -1,8 +1,8 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.proxy.RPCStruct;
+
+import java.util.Hashtable;
/**
*
* @since SmartDeviceLink 3.0
@@ -37,123 +37,83 @@ public class Headers extends RPCStruct {
}
public void setContentType(String contenttype) {
- if (contenttype != null) {
- store.put(KEY_CONTENT_TYPE, contenttype);
- } else {
- store.remove(KEY_CONTENT_TYPE);
- }
+ setValue(KEY_CONTENT_TYPE, contenttype);
}
public String getContentType() {
- return (String) store.get(KEY_CONTENT_TYPE);
+ return getString(KEY_CONTENT_TYPE);
}
public void setConnectTimeout(Integer connectiontimeout) {
- if (connectiontimeout != null) {
- store.put(KEY_CONNECT_TIMEOUT, connectiontimeout);
- } else {
- store.remove(KEY_CONNECT_TIMEOUT);
- }
+ setValue(KEY_CONNECT_TIMEOUT, connectiontimeout);
}
public Integer getConnectTimeout() {
- return (Integer) store.get(KEY_CONNECT_TIMEOUT);
+ return getInteger(KEY_CONNECT_TIMEOUT);
}
public void setDoOutput(Boolean dooutput) {
- if (dooutput != null) {
- store.put(KEY_DO_OUTPUT, dooutput);
- } else {
- store.remove(KEY_DO_OUTPUT);
- }
+ setValue(KEY_DO_OUTPUT, dooutput);
}
public Boolean getDoOutput() {
- return (Boolean) store.get(KEY_DO_OUTPUT);
+ return getBoolean(KEY_DO_OUTPUT);
}
- public void setDoInput(Boolean dooutput) {
- if (dooutput != null) {
- store.put(KEY_DO_INPUT, dooutput);
- } else {
- store.remove(KEY_DO_INPUT);
- }
+ public void setDoInput(Boolean doinput) {
+ setValue(KEY_DO_INPUT, doinput);
}
public Boolean getDoInput() {
- return (Boolean) store.get(KEY_DO_INPUT);
+ return getBoolean(KEY_DO_INPUT);
}
public void setUseCaches(Boolean usescaches) {
- if (usescaches != null) {
- store.put(KEY_USE_CACHES, usescaches);
- } else {
- store.remove(KEY_USE_CACHES);
- }
+ setValue(KEY_USE_CACHES, usescaches);
}
public Boolean getUseCaches() {
- return (Boolean) store.get(KEY_USE_CACHES);
+ return getBoolean(KEY_USE_CACHES);
}
public void setRequestMethod(String requestmethod) {
- if (requestmethod != null) {
- store.put(KEY_REQUEST_METHOD, requestmethod);
- } else {
- store.remove(KEY_REQUEST_METHOD);
- }
+ setValue(KEY_REQUEST_METHOD, requestmethod);
}
public String getRequestMethod() {
- return (String) store.get(KEY_REQUEST_METHOD);
+ return getString(KEY_REQUEST_METHOD);
}
public void setReadTimeout(Integer readtimeout) {
- if (readtimeout != null) {
- store.put(KEY_READ_TIMEOUT, readtimeout);
- } else {
- store.remove(KEY_READ_TIMEOUT);
- }
+ setValue(KEY_READ_TIMEOUT, readtimeout);
}
public Integer getReadTimeout() {
- return (Integer) store.get(KEY_READ_TIMEOUT);
+ return getInteger(KEY_READ_TIMEOUT);
}
public void setInstanceFollowRedirects(Boolean instancefollowredirects) {
- if (instancefollowredirects != null) {
- store.put(KEY_INSTANCE_FOLLOW_REDIRECTS, instancefollowredirects);
- } else {
- store.remove(KEY_INSTANCE_FOLLOW_REDIRECTS);
- }
+ setValue(KEY_INSTANCE_FOLLOW_REDIRECTS, instancefollowredirects);
}
public Boolean getInstanceFollowRedirects() {
- return (Boolean) store.get(KEY_INSTANCE_FOLLOW_REDIRECTS);
+ return getBoolean(KEY_INSTANCE_FOLLOW_REDIRECTS);
}
public void setCharset(String charset) {
- if (charset != null) {
- store.put(KEY_CHARSET, charset);
- } else {
- store.remove(KEY_CHARSET);
- }
+ setValue(KEY_CHARSET, charset);
}
public String getCharset() {
- return (String) store.get(KEY_CHARSET);
+ return getString(KEY_CHARSET);
}
public void setContentLength(Integer contentlength) {
- if (contentlength != null) {
- store.put(KEY_CONTENT_LENGTH, contentlength);
- } else {
- store.remove(KEY_CONTENT_LENGTH);
- }
+ setValue(KEY_CONTENT_LENGTH, contentlength);
}
public Integer getContentLength() {
- return (Integer) store.get(KEY_CONTENT_LENGTH);
+ return getInteger(KEY_CONTENT_LENGTH);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Image.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Image.java
index 76ad2d224..8182fc43c 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Image.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Image.java
@@ -1,10 +1,10 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.ImageType;
+import java.util.Hashtable;
+
/**
*Specifies, which image shall be used, e.g. in Alerts or on Softbuttons provided the display supports it.
*<p><b>Parameter List</b></p>
@@ -57,11 +57,7 @@ public class Image extends RPCStruct {
* @param value either the static hex icon value or the binary image file name identifier (sent by PutFile)
*/
public void setValue(String value) {
- if (value != null) {
- store.put(KEY_VALUE, value);
- } else {
- store.remove(KEY_VALUE);
- }
+ setValue(KEY_VALUE, value);
}
/**
@@ -69,7 +65,7 @@ public class Image extends RPCStruct {
* @return either the static hex icon value or the binary image file name identifier (sent by PutFile)
*/
public String getValue() {
- return (String) store.get(KEY_VALUE);
+ return getString(KEY_VALUE);
}
/**
@@ -77,11 +73,7 @@ public class Image extends RPCStruct {
* @param imageType whether it is a static or dynamic image
*/
public void setImageType(ImageType imageType) {
- if (imageType != null) {
- store.put(KEY_IMAGE_TYPE, imageType);
- } else {
- store.remove(KEY_IMAGE_TYPE);
- }
+ setValue(KEY_IMAGE_TYPE, imageType);
}
/**
@@ -89,12 +81,6 @@ public class Image extends RPCStruct {
* @return the image type
*/
public ImageType getImageType() {
- Object obj = store.get(KEY_IMAGE_TYPE);
- if (obj instanceof ImageType) {
- return (ImageType) obj;
- } else if (obj instanceof String) {
- return ImageType.valueForString((String) obj);
- }
- return null;
+ return (ImageType) getObject(ImageType.class, KEY_IMAGE_TYPE);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ImageField.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ImageField.java
index 9e38dc264..1d3b32967 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ImageField.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ImageField.java
@@ -1,13 +1,17 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.proxy.RPCStruct;
+import com.smartdevicelink.proxy.rpc.enums.AmbientLightStatus;
import com.smartdevicelink.proxy.rpc.enums.FileType;
import com.smartdevicelink.proxy.rpc.enums.ImageFieldName;
import com.smartdevicelink.util.DebugTool;
+
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.List;
+
+import static com.smartdevicelink.proxy.rpc.HeadLampStatus.KEY_AMBIENT_LIGHT_SENSOR_STATUS;
+
/** <p>The name that identifies the field.For example AppIcon,SoftButton, LocationImage, etc.</p>
*
* <p><b>Parameter List</b></p>
@@ -68,73 +72,23 @@ public class ImageField extends RPCStruct {
super(hash);
}
public ImageFieldName getName() {
- Object obj = store.get(KEY_NAME);
- if (obj instanceof ImageFieldName) {
- return (ImageFieldName) obj;
- } else if (obj instanceof String) {
- return ImageFieldName.valueForString((String) obj);
- }
- return null;
+ return (ImageFieldName) getObject(ImageFieldName.class, KEY_NAME);
}
public void setName( ImageFieldName name ) {
- if (name != null) {
- store.put(KEY_NAME, name );
- }
- else {
- store.remove(KEY_NAME);
- }
+ setValue(KEY_NAME, name);
}
@SuppressWarnings("unchecked")
public List<FileType> getImageTypeSupported() {
- if (store.get(KEY_IMAGE_TYPE_SUPPORTED) instanceof List<?>) {
- List<?> list = (List<?>)store.get(KEY_IMAGE_TYPE_SUPPORTED);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof FileType) {
- return (List<FileType>) list;
- } else if (obj instanceof String) {
- List<FileType> newList = new ArrayList<FileType>();
- for (Object hashObj : list) {
- String strFormat = (String)hashObj;
- FileType theCode = FileType.valueForString(strFormat);
- if (theCode != null) {
- newList.add(theCode);
- }
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<FileType>) getObject(FileType.class, KEY_IMAGE_TYPE_SUPPORTED);
}
public void setImageTypeSupported( List<FileType> imageTypeSupported ) {
- if (imageTypeSupported != null) {
- store.put(KEY_IMAGE_TYPE_SUPPORTED, imageTypeSupported );
- }
- else {
- store.remove(KEY_IMAGE_TYPE_SUPPORTED);
- }
+ setValue(KEY_IMAGE_TYPE_SUPPORTED, imageTypeSupported);
}
@SuppressWarnings("unchecked")
public ImageResolution getImageResolution() {
- Object obj = store.get(KEY_IMAGE_RESOLUTION);
- if (obj instanceof ImageResolution) {
- return (ImageResolution) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new ImageResolution((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_IMAGE_RESOLUTION, e);
- }
- }
- return null;
+ return (ImageResolution) getObject(ImageResolution.class, KEY_IMAGE_RESOLUTION);
}
public void setImageResolution( ImageResolution imageResolution ) {
- if (imageResolution != null) {
- store.put(KEY_IMAGE_RESOLUTION, imageResolution );
- }
- else {
- store.remove(KEY_IMAGE_RESOLUTION);
- }
+ setValue(KEY_IMAGE_RESOLUTION, imageResolution);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ImageResolution.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ImageResolution.java
index 682092082..d9c85eb8f 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ImageResolution.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ImageResolution.java
@@ -62,26 +62,18 @@ public class ImageResolution extends RPCStruct {
}
public void setResolutionWidth(Integer resolutionWidth) {
- if (resolutionWidth != null) {
- store.put(KEY_RESOLUTION_WIDTH, resolutionWidth);
- } else {
- store.remove(KEY_RESOLUTION_WIDTH);
- }
+ setValue(KEY_RESOLUTION_WIDTH, resolutionWidth);
}
public Integer getResolutionWidth() {
- return (Integer) store.get(KEY_RESOLUTION_WIDTH);
+ return getInteger(KEY_RESOLUTION_WIDTH);
}
public void setResolutionHeight(Integer resolutionHeight) {
- if (resolutionHeight != null) {
- store.put(KEY_RESOLUTION_HEIGHT, resolutionHeight);
- } else {
- store.remove(KEY_RESOLUTION_HEIGHT);
- }
+ setValue(KEY_RESOLUTION_HEIGHT, resolutionHeight);
}
public Integer getResolutionHeight() {
- return (Integer) store.get(KEY_RESOLUTION_HEIGHT);
+ return getInteger(KEY_RESOLUTION_HEIGHT);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/KeyboardProperties.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/KeyboardProperties.java
index fb35dcf24..6f651b832 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/KeyboardProperties.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/KeyboardProperties.java
@@ -1,12 +1,17 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.proxy.RPCStruct;
+import com.smartdevicelink.proxy.rpc.enums.AmbientLightStatus;
import com.smartdevicelink.proxy.rpc.enums.KeyboardLayout;
import com.smartdevicelink.proxy.rpc.enums.KeypressMode;
import com.smartdevicelink.proxy.rpc.enums.Language;
+
+import java.util.Hashtable;
+import java.util.List;
+
+import static android.provider.Contacts.SettingsColumns.KEY;
+import static com.smartdevicelink.proxy.rpc.HeadLampStatus.KEY_AMBIENT_LIGHT_SENSOR_STATUS;
+
/** This mode causes the interaction to immediately display a keyboard entry through the HMI.
*
* <p><b>Parameter List</b></p>
@@ -78,106 +83,62 @@ public class KeyboardProperties extends RPCStruct {
private static final KeypressMode KEYPRESS_MODE_DEFAULT = KeypressMode.RESEND_CURRENT_ENTRY;
public KeyboardProperties() {
- store.put(KEY_KEYPRESS_MODE, KEYPRESS_MODE_DEFAULT);
+ setValue(KEY_KEYPRESS_MODE, KEYPRESS_MODE_DEFAULT);
}
public KeyboardProperties(Hashtable<String, Object> hash) {
super(hash);
if (!store.containsKey(KEY_KEYPRESS_MODE)) {
- store.put(KEY_KEYPRESS_MODE, KEYPRESS_MODE_DEFAULT);
+ setValue(KEY_KEYPRESS_MODE, KEYPRESS_MODE_DEFAULT);
}
}
public Language getLanguage() {
- Object obj = store.get(KEY_LANGUAGE);
- if (obj instanceof Language) {
- return (Language) obj;
- } else if (obj instanceof String) {
- return Language.valueForString((String) obj);
- }
- return null;
+ return (Language) getObject(Language.class, KEY_LANGUAGE);
}
public void setLanguage(Language language) {
- if (language != null) {
- store.put(KEY_LANGUAGE, language);
- } else {
- store.remove(KEY_LANGUAGE);
- }
+ setValue(KEY_LANGUAGE, language);
}
public KeyboardLayout getKeyboardLayout() {
- Object obj = store.get(KEY_KEYBOARD_LAYOUT);
- if (obj instanceof KeyboardLayout) {
- return (KeyboardLayout) obj;
- } else if (obj instanceof String) {
- return KeyboardLayout.valueForString((String) obj);
- }
- return null;
+ return (KeyboardLayout) getObject(KeyboardLayout.class, KEY_KEYBOARD_LAYOUT);
}
public void setKeyboardLayout(KeyboardLayout keyboardLayout) {
- if (keyboardLayout != null) {
- store.put(KEY_KEYBOARD_LAYOUT, keyboardLayout);
- } else {
- store.remove(KEY_KEYBOARD_LAYOUT);
- }
+ setValue(KEY_KEYBOARD_LAYOUT, keyboardLayout);
}
public KeypressMode getKeypressMode() {
- Object obj = store.get(KEY_KEYPRESS_MODE);
- if (obj instanceof KeypressMode) {
- return (KeypressMode) obj;
- } else if (obj instanceof String) {
- return KeypressMode.valueForString((String) obj);
+ KeypressMode kp = (KeypressMode) getObject(KeypressMode.class, KEY_KEYPRESS_MODE);
+ if(kp == null){
+ kp = KEYPRESS_MODE_DEFAULT;
}
- return KEYPRESS_MODE_DEFAULT;
+ return kp;
}
public void setKeypressMode(KeypressMode keypressMode) {
if (keypressMode != null) {
- store.put(KEY_KEYPRESS_MODE, keypressMode);
+ setValue(KEY_KEYPRESS_MODE, keypressMode);
} else {
- store.put(KEY_KEYPRESS_MODE, KEYPRESS_MODE_DEFAULT);
+ setValue(KEY_KEYPRESS_MODE, KEYPRESS_MODE_DEFAULT);
}
}
@SuppressWarnings("unchecked")
public List<String> getLimitedCharacterList() {
- final Object listObj = store.get(KEY_LIMITED_CHARACTER_LIST);
- if (listObj instanceof List<?>) {
- List<?> list = (List<?>) listObj;
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof String) {
- return (List<String>) list;
- }
- }
- }
- return null;
+ return (List<String>) getObject(String.class, KEY_LIMITED_CHARACTER_LIST);
}
public void setLimitedCharacterList(List<String> limitedCharacterList) {
- if (limitedCharacterList != null) {
- store.put(KEY_LIMITED_CHARACTER_LIST, limitedCharacterList);
- } else {
- store.remove(KEY_LIMITED_CHARACTER_LIST);
- }
+ setValue(KEY_LIMITED_CHARACTER_LIST, limitedCharacterList);
}
public String getAutoCompleteText() {
- final Object obj = store.get(KEY_AUTO_COMPLETE_TEXT);
- if (obj instanceof String) {
- return (String) obj;
- }
- return null;
+ return (String) getObject(String.class, KEY_AUTO_COMPLETE_TEXT);
}
public void setAutoCompleteText(String autoCompleteText) {
- if (autoCompleteText != null) {
- store.put(KEY_AUTO_COMPLETE_TEXT, autoCompleteText);
- } else {
- store.remove(KEY_AUTO_COMPLETE_TEXT);
- }
+ setValue(KEY_AUTO_COMPLETE_TEXT, autoCompleteText);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ListFilesResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ListFilesResponse.java
index 2c7a62e3e..f1f77a7df 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ListFilesResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ListFilesResponse.java
@@ -1,11 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import java.util.Hashtable;
+import java.util.List;
+
/**
* List Files Response is sent, when ListFiles has been called
*
@@ -25,33 +25,16 @@ public class ListFilesResponse extends RPCResponse {
super(hash);
}
public void setFilenames(List<String> filenames) {
- if (filenames != null) {
- parameters.put(KEY_FILENAMES, filenames);
- } else {
- parameters.remove(KEY_FILENAMES);
- }
+ setParameters(KEY_FILENAMES, filenames);
}
@SuppressWarnings("unchecked")
public List<String> getFilenames() {
- if (parameters.get(KEY_FILENAMES) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_FILENAMES);
- if (list != null && list.size()>0) {
- Object obj = list.get(0);
- if (obj instanceof String) {
- return (List<String>) list;
- }
- }
- }
- return null;
+ return (List<String>) getObject(String.class, KEY_FILENAMES);
}
public void setSpaceAvailable(Integer spaceAvailable) {
- if (spaceAvailable != null) {
- parameters.put(KEY_SPACE_AVAILABLE, spaceAvailable);
- } else {
- parameters.remove(KEY_SPACE_AVAILABLE);
- }
+ setParameters(KEY_SPACE_AVAILABLE, spaceAvailable);
}
public Integer getSpaceAvailable() {
- return (Integer) parameters.get(KEY_SPACE_AVAILABLE);
+ return getInteger(KEY_SPACE_AVAILABLE);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/LocationDetails.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/LocationDetails.java
index 50dcaf49b..51d150a2b 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/LocationDetails.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/LocationDetails.java
@@ -1,7 +1,6 @@
package com.smartdevicelink.proxy.rpc;
import com.smartdevicelink.proxy.RPCStruct;
-import com.smartdevicelink.util.DebugTool;
import java.util.Hashtable;
import java.util.List;
@@ -24,127 +23,59 @@ public class LocationDetails extends RPCStruct{
@SuppressWarnings("unchecked")
public Coordinate getCoordinate() {
- Object obj = store.get(KEY_COORDINATE);
- if (obj instanceof Coordinate) {
- return (Coordinate) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new Coordinate((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_COORDINATE, e);
- }
- }
- return null;
+ return (Coordinate) getObject(Coordinate.class, KEY_COORDINATE);
}
public void setCoordinate(Coordinate coordinate) {
- if (coordinate != null) {
- store.put(KEY_COORDINATE, coordinate);
- } else {
- store.remove(KEY_COORDINATE);
- }
+ setValue(KEY_COORDINATE, coordinate);
}
public String getLocationName() {
- return (String) store.get(KEY_LOCATION_NAME);
+ return getString(KEY_LOCATION_NAME);
}
public void setLocationName(String locationName) {
- if (locationName != null) {
- store.put(KEY_LOCATION_NAME, locationName);
- } else {
- store.remove(KEY_LOCATION_NAME);
- }
+ setValue(KEY_LOCATION_NAME, locationName);
}
@SuppressWarnings("unchecked")
public List<String> getAddressLines() {
- final Object listObj = store.get(KEY_ADDRESS_LINES);
- if (listObj instanceof List<?>) {
- List<?> list = (List<?>) listObj;
- if (list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof String) {
- return (List<String>) list;
- }
- }
- }
- return null;
+ return (List<String>) getObject(String.class, KEY_ADDRESS_LINES);
}
public void setAddressLines(List<String> addressLines) {
- if (addressLines != null) {
- store.put(KEY_ADDRESS_LINES, addressLines);
- } else {
- store.remove(KEY_ADDRESS_LINES);
- }
+ setValue(KEY_ADDRESS_LINES, addressLines);
}
public String getLocationDescription() {
- return (String) store.get(KEY_LOCATION_DESCRIPTION);
+ return getString(KEY_LOCATION_DESCRIPTION);
}
public void setLocationDescription(String locationDescription) {
- if (locationDescription != null) {
- store.put(KEY_LOCATION_DESCRIPTION, locationDescription);
- } else {
- store.remove(KEY_LOCATION_DESCRIPTION);
- }
+ setValue(KEY_LOCATION_DESCRIPTION, locationDescription);
}
public String getPhoneNumber() {
- return (String) store.get(KEY_PHONE_NUMBER);
+ return getString(KEY_PHONE_NUMBER);
}
public void setPhoneNumber(String phoneNumber) {
- if (phoneNumber != null) {
- store.put(KEY_PHONE_NUMBER, phoneNumber);
- } else {
- store.remove(KEY_PHONE_NUMBER);
- }
+ setValue(KEY_PHONE_NUMBER, phoneNumber);
}
@SuppressWarnings("unchecked")
public Image getLocationImage() {
- Object obj = store.get(KEY_LOCATION_IMAGE);
- if (obj instanceof Image) {
- return (Image) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new Image((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_LOCATION_IMAGE, e);
- }
- }
- return null;
+ return (Image) getObject(Image.class, KEY_LOCATION_IMAGE);
}
public void setLocationImage(Image locationImage) {
- if (locationImage != null) {
- store.put(KEY_LOCATION_IMAGE, locationImage);
- } else {
- store.remove(KEY_LOCATION_IMAGE);
- }
+ setValue(KEY_LOCATION_IMAGE, locationImage);
}
@SuppressWarnings("unchecked")
public OasisAddress getSearchAddress() {
- Object obj = store.get(KEY_SEARCH_ADDRESS);
- if (obj instanceof OasisAddress) {
- return (OasisAddress) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new OasisAddress((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_SEARCH_ADDRESS, e);
- }
- }
- return null;
+ return (OasisAddress) getObject(OasisAddress.class, KEY_SEARCH_ADDRESS);
}
public void setSearchAddress(OasisAddress searchAddress) {
- if (searchAddress != null) {
- store.put(KEY_SEARCH_ADDRESS, searchAddress);
- } else {
- store.remove(KEY_SEARCH_ADDRESS);
- }
+ setValue(KEY_SEARCH_ADDRESS, searchAddress);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MenuParams.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MenuParams.java
index a9f22238a..e096cb7df 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MenuParams.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MenuParams.java
@@ -1,8 +1,8 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.proxy.RPCStruct;
+
+import java.util.Hashtable;
/**
* Used when adding a sub menu to an application menu or existing sub menu.
* <p><b> Parameter List</b></p>
@@ -76,7 +76,7 @@ public class MenuParams extends RPCStruct {
* @return parentID Min: 0 Max: 2000000000
*/
public Integer getParentID() {
- return (Integer) store.get( KEY_PARENT_ID );
+ return getInteger( KEY_PARENT_ID );
}
/**
* Set the unique ID of an existing submenu to which a command will be added.
@@ -84,11 +84,7 @@ public class MenuParams extends RPCStruct {
* @param parentID Min: 0; Max: 2000000000
*/
public void setParentID( Integer parentID ) {
- if (parentID != null) {
- store.put(KEY_PARENT_ID, parentID );
- } else {
- store.remove(KEY_PARENT_ID);
- }
+ setValue(KEY_PARENT_ID, parentID);
}
/**
* Get the position within the items of the parent Command Menu. 0 will insert at the front, 1 will insert after the first existing element, etc.
@@ -102,7 +98,7 @@ public class MenuParams extends RPCStruct {
* @return the position within the items of the parent Command Menu
*/
public Integer getPosition() {
- return (Integer) store.get( KEY_POSITION );
+ return getInteger( KEY_POSITION );
}
/**
* Set the position within the items of the parent Command Menu. 0 will insert at the front, 1 will insert after the first existing element, etc.
@@ -116,11 +112,7 @@ public class MenuParams extends RPCStruct {
* @param position Mix: 0 Max: 1000
*/
public void setPosition( Integer position ) {
- if (position != null) {
- store.put(KEY_POSITION, position );
- } else {
- store.remove(KEY_POSITION);
- }
+ setValue(KEY_POSITION, position);
}
/**
* Get the text which appears in menu, representing this command.
@@ -132,7 +124,7 @@ public class MenuParams extends RPCStruct {
*/
public String getMenuName() {
- return (String) store.get( KEY_MENU_NAME );
+ return getString( KEY_MENU_NAME );
}
/**
* Set text which appears in menu, representing this command.
@@ -144,10 +136,6 @@ public class MenuParams extends RPCStruct {
*/
public void setMenuName( String menuName ) {
- if (menuName != null) {
- store.put(KEY_MENU_NAME, menuName );
- } else {
- store.remove(KEY_MENU_NAME);
- }
+ setValue(KEY_MENU_NAME, menuName);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MetadataTags.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MetadataTags.java
new file mode 100644
index 000000000..dc5a9b5aa
--- /dev/null
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MetadataTags.java
@@ -0,0 +1,116 @@
+package com.smartdevicelink.proxy.rpc;
+
+import com.smartdevicelink.proxy.RPCStruct;
+import com.smartdevicelink.proxy.rpc.enums.MetadataType;
+
+import java.util.Collections;
+import java.util.Hashtable;
+import java.util.List;
+
+public class MetadataTags extends RPCStruct {
+
+ public static final String KEY_MAIN_FIELD_1_TYPE = "mainField1";
+ public static final String KEY_MAIN_FIELD_2_TYPE = "mainField2";
+ public static final String KEY_MAIN_FIELD_3_TYPE = "mainField3";
+ public static final String KEY_MAIN_FIELD_4_TYPE = "mainField4";
+
+ /**
+ * Constructs a newly allocated MetadataTags object
+ */
+ public MetadataTags(){}
+
+ /**
+ * Constructs a newly allocated MetadataTags object indicated by the Hashtable parameter
+ * @param hash The Hashtable to use
+ */
+ public MetadataTags(Hashtable<String, Object> hash){super(hash);}
+
+ /**
+ * Set the metadata types of data contained in the "mainField1" text field
+ */
+ public void setMainField1( List<MetadataType> metadataTypes ) {
+ setValue(KEY_MAIN_FIELD_1_TYPE, metadataTypes);
+ }
+
+ /**
+ * Set the metadata type of data contained in the "mainField1" text field
+ */
+ public void setMainField1(MetadataType metadataType) {
+ setValue(KEY_MAIN_FIELD_1_TYPE, Collections.singletonList(metadataType));
+ }
+
+ /**
+ * @return The type of data contained in the "mainField1" text field
+ */
+ @SuppressWarnings("unchecked")
+ public List<MetadataType> getMainField1() {
+ return (List<MetadataType>) getObject(MetadataType.class, KEY_MAIN_FIELD_1_TYPE);
+ }
+
+ /**
+ * Set the metadata types of data contained in the "mainField2" text field
+ */
+ public void setMainField2( List<MetadataType> metadataTypes ) {
+ setValue(KEY_MAIN_FIELD_2_TYPE, metadataTypes);
+ }
+
+ /**
+ * Set the metadata type of data contained in the "mainField2" text field
+ */
+ public void setMainField2(MetadataType metadataType) {
+ setValue(KEY_MAIN_FIELD_2_TYPE, Collections.singletonList(metadataType));
+ }
+
+ /**
+ * @return The type of data contained in the "mainField2" text field
+ */
+ @SuppressWarnings("unchecked")
+ public List<MetadataType> getMainField2() {
+ return (List<MetadataType>) getObject(MetadataType.class, KEY_MAIN_FIELD_2_TYPE);
+ }
+
+ /**
+ * Set the metadata types of data contained in the "mainField3" text field
+ */
+ public void setMainField3( List<MetadataType> metadataTypes ) {
+ setValue(KEY_MAIN_FIELD_3_TYPE, metadataTypes);
+ }
+
+ /**
+ * Set the metadata type of data contained in the "mainField3" text field
+ */
+ public void setMainField3(MetadataType metadataType) {
+ setValue(KEY_MAIN_FIELD_3_TYPE, Collections.singletonList(metadataType));
+ }
+
+ /**
+ * @return The type of data contained in the "mainField3" text field
+ */
+ @SuppressWarnings("unchecked")
+ public List<MetadataType> getMainField3() {
+ return (List<MetadataType>) getObject(MetadataType.class, KEY_MAIN_FIELD_3_TYPE);
+ }
+
+ /**
+ * Set the metadata types of data contained in the "mainField4" text field
+ */
+ public void setMainField4( List<MetadataType> metadataTypes ) {
+ setValue(KEY_MAIN_FIELD_4_TYPE, metadataTypes);
+ }
+
+ /**
+ * Set the metadata type of data contained in the "mainField4" text field
+ */
+ public void setMainField4(MetadataType metadataType) {
+ setValue(KEY_MAIN_FIELD_4_TYPE, Collections.singletonList(metadataType));
+ }
+
+ /**
+ * @return The type of data contained in the "mainField4" text field
+ */
+ @SuppressWarnings("unchecked")
+ public List<MetadataType> getMainField4() {
+ return (List<MetadataType>) getObject(MetadataType.class, KEY_MAIN_FIELD_4_TYPE);
+ }
+
+}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MyKey.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MyKey.java
index 4936f9fec..f17a6b54c 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MyKey.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MyKey.java
@@ -48,19 +48,9 @@ public class MyKey extends RPCStruct {
}
public void setE911Override(VehicleDataStatus e911Override) {
- if (e911Override != null) {
- store.put(KEY_E_911_OVERRIDE, e911Override);
- } else {
- store.remove(KEY_E_911_OVERRIDE);
- }
+ setValue(KEY_E_911_OVERRIDE, e911Override);
}
public VehicleDataStatus getE911Override() {
- Object obj = store.get(KEY_E_911_OVERRIDE);
- if (obj instanceof VehicleDataStatus) {
- return (VehicleDataStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataStatus) getObject(VehicleDataStatus.class, KEY_E_911_OVERRIDE);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/NavigationCapability.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/NavigationCapability.java
new file mode 100644
index 000000000..c3d0d59f8
--- /dev/null
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/NavigationCapability.java
@@ -0,0 +1,35 @@
+package com.smartdevicelink.proxy.rpc;
+
+import com.smartdevicelink.proxy.RPCStruct;
+
+import java.util.Hashtable;
+
+/*
+ * Extended capabilities for an onboard navigation system
+ */
+public class NavigationCapability extends RPCStruct{
+ public static final String KEY_LOCATION_ENABLED = "sendLocationEnabled";
+ public static final String KEY_GETWAYPOINTS_ENABLED = "getWayPointsEnabled";
+
+ public NavigationCapability(){}
+
+ public NavigationCapability(Hashtable<String, Object> hash) {
+ super(hash);
+ }
+
+ public Boolean getSendLocationEnabled(){
+ return getBoolean(KEY_LOCATION_ENABLED);
+ }
+
+ public void setSendLocationEnabled(Boolean sendLocationEnabled){
+ setValue(KEY_LOCATION_ENABLED, sendLocationEnabled);
+ }
+
+ public Boolean getWayPointsEnabled(){
+ return getBoolean(KEY_GETWAYPOINTS_ENABLED);
+ }
+
+ public void setWayPointsEnabled(Boolean getWayPointsEnabled){
+ setValue(KEY_GETWAYPOINTS_ENABLED, getWayPointsEnabled);
+ }
+}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OasisAddress.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OasisAddress.java
index 131edaa9a..54b95e300 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OasisAddress.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OasisAddress.java
@@ -35,7 +35,7 @@ public class OasisAddress extends RPCStruct{
*
*/
public String getCountryName() {
- return (String) store.get(KEY_COUNTRY_NAME);
+ return getString(KEY_COUNTRY_NAME);
}
/**
@@ -46,11 +46,7 @@ public class OasisAddress extends RPCStruct{
*
*/
public void setCountryName(String countryName) {
- if (countryName != null) {
- store.put(KEY_COUNTRY_NAME, countryName);
- } else {
- store.remove(KEY_COUNTRY_NAME);
- }
+ setValue(KEY_COUNTRY_NAME, countryName);
}
/**
@@ -60,7 +56,7 @@ public class OasisAddress extends RPCStruct{
*
*/
public String getCountryCode() {
- return (String) store.get(KEY_COUNTRY_CODE);
+ return getString(KEY_COUNTRY_CODE);
}
/**
@@ -71,11 +67,7 @@ public class OasisAddress extends RPCStruct{
*
*/
public void setCountryCode(String countryCode) {
- if (countryCode != null) {
- store.put(KEY_COUNTRY_CODE, countryCode);
- } else {
- store.remove(KEY_COUNTRY_CODE);
- }
+ setValue(KEY_COUNTRY_CODE, countryCode);
}
/**
@@ -85,7 +77,7 @@ public class OasisAddress extends RPCStruct{
*
*/
public String getPostalCode() {
- return (String) store.get(KEY_POSTAL_CODE);
+ return getString(KEY_POSTAL_CODE);
}
/**
@@ -96,11 +88,7 @@ public class OasisAddress extends RPCStruct{
*
*/
public void setPostalCode(String postalCode) {
- if (postalCode != null) {
- store.put(KEY_POSTAL_CODE, postalCode);
- } else {
- store.remove(KEY_POSTAL_CODE);
- }
+ setValue(KEY_POSTAL_CODE, postalCode);
}
/**
@@ -110,7 +98,7 @@ public class OasisAddress extends RPCStruct{
*
*/
public String getAdministrativeArea() {
- return (String) store.get(KEY_ADMINISTRATIVE_AREA);
+ return getString(KEY_ADMINISTRATIVE_AREA);
}
/**
@@ -121,11 +109,7 @@ public class OasisAddress extends RPCStruct{
*
*/
public void setAdministrativeArea(String administrativeArea) {
- if (administrativeArea != null) {
- store.put(KEY_ADMINISTRATIVE_AREA, administrativeArea);
- } else {
- store.remove(KEY_ADMINISTRATIVE_AREA);
- }
+ setValue(KEY_ADMINISTRATIVE_AREA, administrativeArea);
}
/**
@@ -135,7 +119,7 @@ public class OasisAddress extends RPCStruct{
*
*/
public String getSubAdministrativeArea() {
- return (String) store.get(KEY_SUB_ADMINISTRATIVE_AREA);
+ return getString(KEY_SUB_ADMINISTRATIVE_AREA);
}
/**
@@ -146,11 +130,7 @@ public class OasisAddress extends RPCStruct{
*
*/
public void setSubAdministrativeArea(String subAdministrativeArea) {
- if (subAdministrativeArea != null) {
- store.put(KEY_SUB_ADMINISTRATIVE_AREA, subAdministrativeArea);
- } else {
- store.remove(KEY_SUB_ADMINISTRATIVE_AREA);
- }
+ setValue(KEY_SUB_ADMINISTRATIVE_AREA, subAdministrativeArea);
}
/**
@@ -160,7 +140,7 @@ public class OasisAddress extends RPCStruct{
*
*/
public String getLocality() {
- return (String) store.get(KEY_LOCALITY);
+ return getString(KEY_LOCALITY);
}
/**
@@ -171,11 +151,7 @@ public class OasisAddress extends RPCStruct{
*
*/
public void setLocality(String locality) {
- if (locality != null) {
- store.put(KEY_LOCALITY, locality);
- } else {
- store.remove(KEY_LOCALITY);
- }
+ setValue(KEY_LOCALITY, locality);
}
/**
@@ -185,7 +161,7 @@ public class OasisAddress extends RPCStruct{
*
*/
public String getSubLocality() {
- return (String) store.get(KEY_SUB_LOCALITY);
+ return getString(KEY_SUB_LOCALITY);
}
/**
@@ -196,11 +172,7 @@ public class OasisAddress extends RPCStruct{
*
*/
public void setSubLocality(String subLocality) {
- if (subLocality != null) {
- store.put(KEY_SUB_LOCALITY, subLocality);
- } else {
- store.remove(KEY_SUB_LOCALITY);
- }
+ setValue(KEY_SUB_LOCALITY, subLocality);
}
/**
@@ -210,7 +182,7 @@ public class OasisAddress extends RPCStruct{
*
*/
public String getThoroughfare() {
- return (String) store.get(KEY_THOROUGH_FARE);
+ return getString(KEY_THOROUGH_FARE);
}
/**
@@ -221,11 +193,7 @@ public class OasisAddress extends RPCStruct{
*
*/
public void setThoroughfare(String thoroughFare) {
- if (thoroughFare != null) {
- store.put(KEY_THOROUGH_FARE, thoroughFare);
- } else {
- store.remove(KEY_THOROUGH_FARE);
- }
+ setValue(KEY_THOROUGH_FARE, thoroughFare);
}
/**
@@ -234,7 +202,7 @@ public class OasisAddress extends RPCStruct{
* @return String - The Sub-Thoroughfare associated with the OasisAddress class.
*/
public String getSubThoroughfare() {
- return (String) store.get(KEY_SUB_THOROUGH_FARE);
+ return getString(KEY_SUB_THOROUGH_FARE);
}
/**
@@ -245,10 +213,6 @@ public class OasisAddress extends RPCStruct{
*
*/
public void setSubThoroughfare(String subThoroughfare) {
- if (subThoroughfare != null) {
- store.put(KEY_SUB_THOROUGH_FARE, subThoroughfare);
- } else {
- store.remove(KEY_SUB_THOROUGH_FARE);
- }
+ setValue(KEY_SUB_THOROUGH_FARE, subThoroughfare);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnAppInterfaceUnregistered.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnAppInterfaceUnregistered.java
index af155226e..0e4a4f7c7 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnAppInterfaceUnregistered.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnAppInterfaceUnregistered.java
@@ -1,11 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.rpc.enums.AppInterfaceUnregisteredReason;
+import java.util.Hashtable;
+
/**
* <p>Notifies an application that its interface registration has been terminated. This means that all SDL resources
* associated with the application are discarded, including the Command Menu, Choice Sets, button subscriptions, etc.</p>
@@ -59,23 +59,13 @@ public class OnAppInterfaceUnregistered extends RPCNotification {
* @return {@linkplain AppInterfaceUnregisteredReason} the reason the application's interface registration was terminated
*/
public AppInterfaceUnregisteredReason getReason() {
- Object obj = parameters.get(KEY_REASON);
- if (obj instanceof AppInterfaceUnregisteredReason) {
- return (AppInterfaceUnregisteredReason) obj;
- } else if (obj instanceof String) {
- return AppInterfaceUnregisteredReason.valueForString((String) obj);
- }
- return null;
+ return (AppInterfaceUnregisteredReason) getObject(AppInterfaceUnregisteredReason.class, KEY_REASON);
}
/**
* <p>Set the reason application's interface was terminated</p>
* @param reason The reason application's interface registration was terminated
*/
public void setReason( AppInterfaceUnregisteredReason reason ) {
- if (reason != null) {
- parameters.put(KEY_REASON, reason );
- } else {
- parameters.remove(KEY_REASON);
- }
+ setParameters(KEY_REASON, reason);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnButtonEvent.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnButtonEvent.java
index 7f9afb627..185493ec7 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnButtonEvent.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnButtonEvent.java
@@ -1,12 +1,12 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.rpc.enums.ButtonEventMode;
import com.smartdevicelink.proxy.rpc.enums.ButtonName;
+import java.util.Hashtable;
+
/**
* Notifies application that user has depressed or released a button to which
* the application has subscribed.Further information about button events
@@ -109,37 +109,21 @@ public class OnButtonEvent extends RPCNotification {
* @return ButtonName Name of the button
*/
public ButtonName getButtonName() {
- Object obj = parameters.get(KEY_BUTTON_NAME);
- if (obj instanceof ButtonName) {
- return (ButtonName) obj;
- } else if (obj instanceof String) {
- return ButtonName.valueForString((String) obj);
- }
- return null;
+ return (ButtonName) getObject(ButtonName.class, KEY_BUTTON_NAME);
}
/**
* <p>Set the button's name</p>
* @param buttonName name of the button
*/
public void setButtonName(ButtonName buttonName) {
- if (buttonName != null) {
- parameters.put(KEY_BUTTON_NAME, buttonName);
- } else {
- parameters.remove(KEY_BUTTON_NAME);
- }
+ setParameters(KEY_BUTTON_NAME, buttonName);
}
/**
* <p>Return <i>{@linkplain ButtonEventMode} indicates the button was depressed or released</i></p>
* @return ButtonEventMode the button depressed or released
*/
public ButtonEventMode getButtonEventMode() {
- Object obj = parameters.get(KEY_BUTTON_EVENT_MODE);
- if (obj instanceof ButtonEventMode) {
- return (ButtonEventMode) obj;
- } else if (obj instanceof String) {
- return ButtonEventMode.valueForString((String) obj);
- }
- return null;
+ return (ButtonEventMode) getObject(ButtonEventMode.class, KEY_BUTTON_EVENT_MODE);
}
/**
* <p> Set the event mode of the button,pressed or released</p>
@@ -147,20 +131,12 @@ public class OnButtonEvent extends RPCNotification {
* @see ButtonEventMode
*/
public void setButtonEventMode(ButtonEventMode buttonEventMode) {
- if (buttonEventMode != null) {
- parameters.put(KEY_BUTTON_EVENT_MODE, buttonEventMode);
- } else {
- parameters.remove(KEY_BUTTON_EVENT_MODE);
- }
+ setParameters(KEY_BUTTON_EVENT_MODE, buttonEventMode);
}
public void setCustomButtonID(Integer customButtonID) {
- if (customButtonID != null) {
- parameters.put(KEY_CUSTOM_BUTTON_ID, customButtonID);
- } else {
- parameters.remove(KEY_CUSTOM_BUTTON_ID);
- }
+ setParameters(KEY_CUSTOM_BUTTON_ID, customButtonID);
}
public Integer getCustomButtonID() {
- return (Integer) parameters.get(KEY_CUSTOM_BUTTON_ID);
+ return getInteger(KEY_CUSTOM_BUTTON_ID);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnButtonPress.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnButtonPress.java
index c881cc297..48562ab2f 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnButtonPress.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnButtonPress.java
@@ -1,12 +1,12 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.rpc.enums.ButtonName;
import com.smartdevicelink.proxy.rpc.enums.ButtonPressMode;
+import java.util.Hashtable;
+
/**
* <p>
* Notifies application of button press events for buttons to which the
@@ -114,56 +114,32 @@ public class OnButtonPress extends RPCNotification {
* @return ButtonName Name of the button
*/
public ButtonName getButtonName() {
- Object obj = parameters.get(KEY_BUTTON_NAME);
- if (obj instanceof ButtonName) {
- return (ButtonName) obj;
- } else if (obj instanceof String) {
- return ButtonName.valueForString((String) obj);
- }
- return null;
+ return (ButtonName) getObject(ButtonName.class, KEY_BUTTON_NAME);
}
/**
* <p>Set the button's name</p>
* @param buttonName name of the button
*/
public void setButtonName( ButtonName buttonName ) {
- if (buttonName != null) {
- parameters.put(KEY_BUTTON_NAME, buttonName );
- } else {
- parameters.remove(KEY_BUTTON_NAME);
- }
+ setParameters(KEY_BUTTON_NAME, buttonName);
}
/**<p>Returns <i>{@linkplain ButtonPressMode}</i></p>
* @return ButtonPressMode whether this is a long or short button press event
*/
public ButtonPressMode getButtonPressMode() {
- Object obj = parameters.get(KEY_BUTTON_PRESS_MODE);
- if (obj instanceof ButtonPressMode) {
- return (ButtonPressMode) obj;
- } else if (obj instanceof String) {
- return ButtonPressMode.valueForString((String) obj);
- }
- return null;
+ return (ButtonPressMode) getObject(ButtonPressMode.class, KEY_BUTTON_PRESS_MODE);
}
/**
* <p>Set the button press mode of the event</p>
* @param buttonPressMode indicates whether this is a short or long press
*/
public void setButtonPressMode( ButtonPressMode buttonPressMode ) {
- if (buttonPressMode != null) {
- parameters.put(KEY_BUTTON_PRESS_MODE, buttonPressMode );
- } else {
- parameters.remove(KEY_BUTTON_PRESS_MODE);
- }
+ setParameters(KEY_BUTTON_PRESS_MODE, buttonPressMode);
}
public void setCustomButtonName(Integer customButtonID) {
- if (customButtonID != null) {
- parameters.put(KEY_CUSTOM_BUTTON_ID, customButtonID);
- } else {
- parameters.remove(KEY_CUSTOM_BUTTON_ID);
- }
+ setParameters(KEY_CUSTOM_BUTTON_ID, customButtonID);
}
public Integer getCustomButtonName() {
- return (Integer) parameters.get(KEY_CUSTOM_BUTTON_ID);
+ return getInteger(KEY_CUSTOM_BUTTON_ID);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnCommand.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnCommand.java
index eae7e77f8..0ce4ef7b7 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnCommand.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnCommand.java
@@ -1,11 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.rpc.enums.TriggerSource;
+import java.util.Hashtable;
+
/**
* This is called when a command was selected via VR after pressing the PTT button, or selected from the menu after
* pressing the MENU button. <p>
@@ -72,31 +72,21 @@ public class OnCommand extends RPCNotification {
* @return Integer an integer representation of this object
*/
public Integer getCmdID() {
- return (Integer) parameters.get( KEY_CMD_ID );
+ return getInteger( KEY_CMD_ID );
}
/**
* <p>Sets a Command ID</p>
* @param cmdID an integer object representing a Command ID
*/
public void setCmdID( Integer cmdID ) {
- if (cmdID != null) {
- parameters.put(KEY_CMD_ID, cmdID );
- } else {
- parameters.remove(KEY_CMD_ID);
- }
+ setParameters(KEY_CMD_ID, cmdID);
}
/**
* <p>Returns a <I>TriggerSource</I> object which will be shown in the HMI</p>
* @return TriggerSource a TriggerSource object
*/
public TriggerSource getTriggerSource() {
- Object obj = parameters.get(KEY_TRIGGER_SOURCE);
- if (obj instanceof TriggerSource) {
- return (TriggerSource) obj;
- } else if (obj instanceof String) {
- return TriggerSource.valueForString((String) obj);
- }
- return null;
+ return (TriggerSource) getObject(TriggerSource.class, KEY_TRIGGER_SOURCE);
}
/**
* <p>Sets TriggerSource</p>
@@ -104,10 +94,6 @@ public class OnCommand extends RPCNotification {
* @param triggerSource a TriggerSource object
*/
public void setTriggerSource( TriggerSource triggerSource ) {
- if (triggerSource != null) {
- parameters.put(KEY_TRIGGER_SOURCE, triggerSource );
- } else {
- parameters.remove(KEY_TRIGGER_SOURCE);
- }
+ setParameters(KEY_TRIGGER_SOURCE, triggerSource);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnDriverDistraction.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnDriverDistraction.java
index 69280ad21..82517ca28 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnDriverDistraction.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnDriverDistraction.java
@@ -1,11 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.rpc.enums.DriverDistractionState;
+import java.util.Hashtable;
+
/**
* <p>Notifies the application of the current driver distraction state (whether driver distraction rules are in effect, or
* not).</p>
@@ -58,23 +58,13 @@ public class OnDriverDistraction extends RPCNotification {
* @return {@linkplain DriverDistractionState} the Current driver distraction state.
*/
public DriverDistractionState getState() {
- Object obj = parameters.get(KEY_STATE);
- if (obj instanceof DriverDistractionState) {
- return (DriverDistractionState)obj;
- } else if(obj instanceof String) {
- return DriverDistractionState.valueForString((String) obj);
- }
- return null;
+ return (DriverDistractionState) getObject(DriverDistractionState.class, KEY_STATE);
}
/**
* <p>Called to set the driver distraction state(i.e. whether driver distraction rules are in effect, or not)</p>
* @param state the current driver distraction state
*/
public void setState( DriverDistractionState state ) {
- if (state != null) {
- parameters.put(KEY_STATE, state );
- } else {
- parameters.remove(KEY_STATE);
- }
+ setParameters(KEY_STATE, state);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnHMIStatus.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnHMIStatus.java
index 31161f2f1..930e742f5 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnHMIStatus.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnHMIStatus.java
@@ -1,12 +1,13 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.rpc.enums.AudioStreamingState;
import com.smartdevicelink.proxy.rpc.enums.HMILevel;
import com.smartdevicelink.proxy.rpc.enums.SystemContext;
+
+import java.util.Hashtable;
+
/**
* <p>Notifies an application that HMI conditions have changed for the application. This indicates whether the application
* can speak phrases, display text, perform interactions, receive button presses and events, stream audio, etc. This
@@ -86,61 +87,35 @@ public class OnHMIStatus extends RPCNotification {
* @return {@linkplain HMILevel} the current HMI Level in effect for the application
*/
public HMILevel getHmiLevel() {
- Object obj = parameters.get(KEY_HMI_LEVEL);
- if (obj instanceof HMILevel) {
- return (HMILevel) obj;
- } else if (obj instanceof String) {
- return HMILevel.valueForString((String) obj);
- }
- return null;
+ return (HMILevel) getObject(HMILevel.class, KEY_HMI_LEVEL);
}
/**
* <p>Set the HMILevel of OnHMIStatus</p>
* @param hmiLevel the HMILevel to set
*/
public void setHmiLevel( HMILevel hmiLevel ) {
- if (hmiLevel != null) {
- parameters.put(KEY_HMI_LEVEL, hmiLevel );
- } else {
- parameters.remove(KEY_HMI_LEVEL);
- }
+ setParameters(KEY_HMI_LEVEL, hmiLevel);
}
/**
* <p>Get current state of audio streaming for the application</p>
* @return {@linkplain AudioStreamingState} Returns current state of audio streaming for the application
*/
public AudioStreamingState getAudioStreamingState() {
- Object obj = parameters.get(KEY_AUDIO_STREAMING_STATE);
- if (obj instanceof AudioStreamingState) {
- return (AudioStreamingState) obj;
- } else if (obj instanceof String) {
- return AudioStreamingState.valueForString((String) obj);
- }
- return null;
+ return (AudioStreamingState) getObject(AudioStreamingState.class, KEY_AUDIO_STREAMING_STATE);
}
/**
* <p>Set the audio streaming state</p>
* @param audioStreamingState the state of audio streaming of the application
*/
public void setAudioStreamingState( AudioStreamingState audioStreamingState ) {
- if (audioStreamingState != null) {
- parameters.put(KEY_AUDIO_STREAMING_STATE, audioStreamingState );
- } else {
- parameters.remove(KEY_AUDIO_STREAMING_STATE);
- }
+ setParameters(KEY_AUDIO_STREAMING_STATE, audioStreamingState);
}
/**
* <p>Get the System Context</p>
* @return {@linkplain SystemContext} whether a user-initiated interaction is in-progress (VRSESSION or MENU), or not (MAIN).
*/
public SystemContext getSystemContext() {
- Object obj = parameters.get(KEY_SYSTEM_CONTEXT);
- if (obj instanceof SystemContext) {
- return (SystemContext) obj;
- } else if (obj instanceof String) {
- return SystemContext.valueForString((String) obj);
- }
- return null;
+ return (SystemContext) getObject(SystemContext.class, KEY_SYSTEM_CONTEXT);
}
/**
* <p>Set the System Context of OnHMIStatus</p>
@@ -148,11 +123,7 @@ public class OnHMIStatus extends RPCNotification {
* (VRSESSION or MENU), or not (MAIN)
*/
public void setSystemContext( SystemContext systemContext ) {
- if (systemContext != null) {
- parameters.put(KEY_SYSTEM_CONTEXT, systemContext );
- } else {
- parameters.remove(KEY_SYSTEM_CONTEXT);
- }
+ setParameters(KEY_SYSTEM_CONTEXT, systemContext);
}
/**
* <p>Query whether it's the first run</p>
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnHashChange.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnHashChange.java
index 776d69e4a..7ac4df083 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnHashChange.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnHashChange.java
@@ -1,9 +1,10 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
+
+import java.util.Hashtable;
+
/**
* Notification containing an updated hashID which can be used over connection cycles (i.e. loss of connection, ignition cycles, etc.).
* Sent after initial registration and subsequently after any change in the calculated hash of all persisted app data.
@@ -54,15 +55,11 @@ public class OnHashChange extends RPCNotification {
}
public String getHashID() {
- return (String) parameters.get(KEY_HASH_ID);
+ return getString(KEY_HASH_ID);
}
public void setHashID(String hashID) {
- if (hashID != null) {
- parameters.put(KEY_HASH_ID, hashID);
- } else {
- parameters.remove(KEY_HASH_ID);
- }
+ setParameters(KEY_HASH_ID, hashID);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnKeyboardInput.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnKeyboardInput.java
index e71cda0a8..900091dc2 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnKeyboardInput.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnKeyboardInput.java
@@ -1,11 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.rpc.enums.KeyboardEvent;
+import java.util.Hashtable;
+
/**
* On-screen keyboard event. Can be full string or individual keypresses depending on keyboard mode.
* <p></p>
@@ -65,32 +65,18 @@ public class OnKeyboardInput extends RPCNotification {
}
public KeyboardEvent getEvent() {
- Object obj = parameters.get(KEY_EVENT);
- if (obj instanceof KeyboardEvent) {
- return (KeyboardEvent) obj;
- } else if (obj instanceof String) {
- return KeyboardEvent.valueForString((String) obj);
- }
- return null;
+ return (KeyboardEvent) getObject(KeyboardEvent.class, KEY_EVENT);
}
public void setEvent(KeyboardEvent event) {
- if (event != null) {
- parameters.put(KEY_EVENT, event);
- } else {
- parameters.remove(KEY_EVENT);
- }
+ setParameters(KEY_EVENT, event);
}
public void setData(String data) {
- if (data != null) {
- parameters.put(KEY_DATA, data);
- } else {
- parameters.remove(KEY_DATA);
- }
+ setParameters(KEY_DATA, data);
}
public String getData() {
- Object obj = parameters.get(KEY_DATA);
+ Object obj = getParameters(KEY_DATA);
if (obj instanceof String) {
return (String) obj;
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnLanguageChange.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnLanguageChange.java
index 4f39d55cb..1b514f1cd 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnLanguageChange.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnLanguageChange.java
@@ -1,11 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.rpc.enums.Language;
+import java.util.Hashtable;
+
/**
* Provides information to what language the Sdl HMI language was changed
* <p>
@@ -77,47 +77,27 @@ public class OnLanguageChange extends RPCNotification {
* @param language language that current SDL voice engine(VR+TTS) use
*/
public void setLanguage(Language language) {
- if (language != null) {
- parameters.put(KEY_LANGUAGE, language);
- } else {
- parameters.remove(KEY_LANGUAGE);
- }
+ setParameters(KEY_LANGUAGE, language);
}
/**
* <p>Returns language that current SDL voice engine(VR+TTS) use</p>
* @return {@linkplain Language} language that current SDL voice engine(VR+TTS) use
*/
public Language getLanguage() {
- Object obj = parameters.get(KEY_LANGUAGE);
- if (obj instanceof Language) {
- return (Language) obj;
- } else if (obj instanceof String) {
- return Language.valueForString((String) obj);
- }
- return null;
+ return (Language) getObject(Language.class, KEY_LANGUAGE);
}
/**
* <p>Sets language that current display use</p>
* @param hmiDisplayLanguage language that current SDL voice engine(VR+TTS) use
*/
public void setHmiDisplayLanguage(Language hmiDisplayLanguage) {
- if (hmiDisplayLanguage != null) {
- parameters.put(KEY_HMI_DISPLAY_LANGUAGE, hmiDisplayLanguage);
- } else {
- parameters.remove(KEY_HMI_DISPLAY_LANGUAGE);
- }
+ setParameters(KEY_HMI_DISPLAY_LANGUAGE, hmiDisplayLanguage);
}
/**
* <p>Returns language that current display use</p>
* @return {@linkplain Language} language that current display use
*/
public Language getHmiDisplayLanguage() {
- Object obj = parameters.get(KEY_HMI_DISPLAY_LANGUAGE);
- if (obj instanceof Language) {
- return (Language) obj;
- } else if (obj instanceof String) {
- return Language.valueForString((String) obj);
- }
- return null;
+ return (Language) getObject(Language.class, KEY_HMI_DISPLAY_LANGUAGE);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnLockScreenStatus.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnLockScreenStatus.java
index 11f6469ef..21a5c3520 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnLockScreenStatus.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnLockScreenStatus.java
@@ -4,7 +4,9 @@ import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.rpc.enums.HMILevel;
import com.smartdevicelink.proxy.rpc.enums.LockScreenStatus;
-import com.smartdevicelink.proxy.rpc.OnHMIStatus;
+
+import static com.smartdevicelink.proxy.rpc.OnHMIStatus.KEY_HMI_LEVEL;
+
/**
* The lockscreen must perform the following:
* Limit all application control usability from the mobile device with a full-screen static image overlay or separate view.
@@ -27,16 +29,11 @@ public class OnLockScreenStatus extends RPCNotification {
*/
public Boolean getDriverDistractionStatus() {
- return (Boolean)parameters.get(KEY_DRIVER_DISTRACTION);
+ return getBoolean(KEY_DRIVER_DISTRACTION);
}
public void setDriverDistractionStatus(Boolean driverDistractionStatus) {
-
- if (driverDistractionStatus != null){
- parameters.put(KEY_DRIVER_DISTRACTION, driverDistractionStatus);
- } else {
- parameters.remove(KEY_DRIVER_DISTRACTION);
- }
+ setParameters(KEY_DRIVER_DISTRACTION, driverDistractionStatus);
}
/**
* <p>Get the {@linkplain LockScreenStatus} enumeration, indicating if the lockscreen should be required, optional or off </p>
@@ -44,15 +41,11 @@ public class OnLockScreenStatus extends RPCNotification {
*/
public LockScreenStatus getShowLockScreen() {
- return (LockScreenStatus)parameters.get(KEY_SHOW_LOCK_SCREEN);
+ return (LockScreenStatus) getParameters(KEY_SHOW_LOCK_SCREEN);
}
public void setShowLockScreen(LockScreenStatus showLockScreen) {
- if (showLockScreen != null) {
- parameters.put(KEY_SHOW_LOCK_SCREEN, showLockScreen );
- } else {
- parameters.remove(KEY_SHOW_LOCK_SCREEN);
- }
+ setParameters(KEY_SHOW_LOCK_SCREEN, showLockScreen);
}
/**
* <p>Get user selection status for the application (has the app been selected via hmi or voice command)</p>
@@ -60,15 +53,11 @@ public class OnLockScreenStatus extends RPCNotification {
*/
public Boolean getUserSelected() {
- return (Boolean)parameters.get(KEY_USER_SELECTED);
+ return getBoolean(KEY_USER_SELECTED);
}
public void setUserSelected(Boolean userSelected) {
- if (userSelected != null) {
- parameters.put(KEY_USER_SELECTED, userSelected );
- } else {
- parameters.remove(KEY_USER_SELECTED);
- }
+ setParameters(KEY_USER_SELECTED, userSelected);
}
/**
* <p>Get HMILevel in effect for the application</p>
@@ -76,14 +65,10 @@ public class OnLockScreenStatus extends RPCNotification {
*/
public HMILevel getHMILevel() {
- return (HMILevel)parameters.get(OnHMIStatus.KEY_HMI_LEVEL);
+ return (HMILevel) getParameters(KEY_HMI_LEVEL);
}
public void setHMILevel(HMILevel setHMILevel) {
- if (setHMILevel != null) {
- parameters.put(OnHMIStatus.KEY_HMI_LEVEL, setHMILevel );
- } else {
- parameters.remove(OnHMIStatus.KEY_HMI_LEVEL);
- }
+ setParameters(KEY_HMI_LEVEL, setHMILevel);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnPermissionsChange.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnPermissionsChange.java
index 4c88c9baa..a98d69fb5 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnPermissionsChange.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnPermissionsChange.java
@@ -1,12 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
+import java.util.Hashtable;
+import java.util.List;
+
/**
* Provides update to app of which sets of functions are available
* <p>
@@ -69,30 +68,13 @@ public class OnPermissionsChange extends RPCNotification {
*/
@SuppressWarnings("unchecked")
public List<PermissionItem> getPermissionItem() {
- List<?> list = (List<?>)parameters.get(KEY_PERMISSION_ITEM);
- if (list != null && list.size()>0) {
- Object obj = list.get(0);
- if(obj instanceof PermissionItem){
- return (List<PermissionItem>) list;
- } else if(obj instanceof Hashtable) {
- List<PermissionItem> newList = new ArrayList<PermissionItem>();
- for (Object hash:list) {
- newList.add(new PermissionItem((Hashtable<String, Object>)hash));
- }
- return newList;
- }
- }
- return null;
+ return (List<PermissionItem>) getObject(PermissionItem.class, KEY_PERMISSION_ITEM);
}
/**
* <p>Sets PermissionItems describing change in permissions for a given set of RPCs</p>
* @param permissionItem an List of PermissionItem describing change in permissions for a given set of RPCs
*/
public void setPermissionItem(List<PermissionItem> permissionItem) {
- if (permissionItem != null) {
- parameters.put(KEY_PERMISSION_ITEM, permissionItem);
- } else {
- parameters.remove(KEY_PERMISSION_ITEM);
- }
+ setParameters(KEY_PERMISSION_ITEM, permissionItem);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnSdlChoiceChosen.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnSdlChoiceChosen.java
index a878ade77..5eec2db91 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnSdlChoiceChosen.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnSdlChoiceChosen.java
@@ -1,12 +1,12 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.rpc.enums.TriggerSource;
+import java.util.Hashtable;
+import java.util.List;
+
public class OnSdlChoiceChosen extends RPCNotification {
public static final String KEY_SDL_CHOICE = "sdlChoice";
public static final String KEY_TRIGGER_SOURCE = "triggerSource";
@@ -144,29 +144,15 @@ public class OnSdlChoiceChosen extends RPCNotification {
super(hash);
}
public SdlChoice getSdlChoice() {
- return (SdlChoice) parameters.get(KEY_SDL_CHOICE);
+ return (SdlChoice) getParameters(KEY_SDL_CHOICE);
}
public void setSdlChoice(SdlChoice sdlChoice) {
- if (sdlChoice != null) {
- parameters.put(KEY_SDL_CHOICE, sdlChoice);
- } else {
- parameters.remove(KEY_SDL_CHOICE);
- }
+ setParameters(KEY_SDL_CHOICE, sdlChoice);
}
public TriggerSource getTriggerSource() {
- Object obj = parameters.get(KEY_TRIGGER_SOURCE);
- if (obj instanceof TriggerSource) {
- return (TriggerSource) obj;
- } else if (obj instanceof String) {
- return TriggerSource.valueForString((String) obj);
- }
- return null;
+ return (TriggerSource) getObject(TriggerSource.class, KEY_TRIGGER_SOURCE);
}
public void setTriggerSource( TriggerSource triggerSource ) {
- if (triggerSource != null) {
- parameters.put(KEY_TRIGGER_SOURCE, triggerSource );
- } else {
- parameters.remove(KEY_TRIGGER_SOURCE);
- }
+ setParameters(KEY_TRIGGER_SOURCE, triggerSource);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnStreamRPC.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnStreamRPC.java
index bb4bcc324..679596026 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnStreamRPC.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnStreamRPC.java
@@ -13,35 +13,23 @@ public class OnStreamRPC extends RPCNotification {
}
public void setFileName(String fileName) {
- if (fileName != null) {
- parameters.put(KEY_FILENAME, fileName);
- } else {
- parameters.remove(KEY_FILENAME);
- }
+ setParameters(KEY_FILENAME, fileName);
}
public String getFileName() {
- return (String) parameters.get(KEY_FILENAME);
+ return getString(KEY_FILENAME);
}
public void setBytesComplete(Long bytesComplete) {
- if (bytesComplete != null) {
- parameters.put(KEY_BYTESCOMPLETE, bytesComplete);
- } else {
- parameters.remove(KEY_BYTESCOMPLETE);
- }
+ setParameters(KEY_BYTESCOMPLETE, bytesComplete);
}
public Long getBytesComplete() {
- return (Long) parameters.get(KEY_BYTESCOMPLETE);
+ return getLong(KEY_BYTESCOMPLETE);
}
public void setFileSize(Long fileSize) {
- if (fileSize != null) {
- parameters.put(KEY_FILESIZE, fileSize);
- } else {
- parameters.remove(KEY_FILESIZE);
- }
+ setParameters(KEY_FILESIZE, fileSize);
}
public Long getFileSize() {
- return (Long) parameters.get(KEY_FILESIZE);
+ return getLong(KEY_FILESIZE);
}
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnSystemRequest.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnSystemRequest.java
index a034626a9..271f94f7f 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnSystemRequest.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnSystemRequest.java
@@ -1,11 +1,5 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-import java.util.List;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
import android.util.Log;
import com.smartdevicelink.marshal.JsonRPCMarshaller;
@@ -14,6 +8,13 @@ import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.FileType;
import com.smartdevicelink.proxy.rpc.enums.RequestType;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Hashtable;
+import java.util.List;
+
/**
* An asynchronous request from the system for specific data from the device or the cloud or response to a request from the device or cloud. Binary data can be included in hybrid part of message for some requests (such as Authentication request responses)
*
@@ -198,16 +199,7 @@ public class OnSystemRequest extends RPCNotification {
@SuppressWarnings("unchecked")
public List<String> getLegacyData() {
- if (parameters.get(KEY_DATA) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_DATA);
- if (list != null && list.size()>0) {
- Object obj = list.get(0);
- if (obj instanceof String) {
- return (List<String>)list;
- }
- }
- }
- return null;
+ return (List<String>) getObject(String.class, KEY_DATA);
}
public String getBody(){
@@ -227,30 +219,19 @@ public class OnSystemRequest extends RPCNotification {
}
public RequestType getRequestType() {
- Object obj = parameters.get(KEY_REQUEST_TYPE);
- if (obj == null) return null;
- if (obj instanceof RequestType) {
- return (RequestType) obj;
- } else if (obj instanceof String) {
- return RequestType.valueForString((String) obj);
- }
- return null;
+ return (RequestType) getObject(RequestType.class, KEY_REQUEST_TYPE);
}
public void setRequestType(RequestType requestType) {
- if (requestType != null) {
- parameters.put(KEY_REQUEST_TYPE, requestType);
- } else {
- parameters.remove(KEY_REQUEST_TYPE);
- }
+ setParameters(KEY_REQUEST_TYPE, requestType);
}
public String getUrl() {
- Object o = parameters.get(KEY_URL);
+ Object o = getParameters(KEY_URL);
if (o == null)
{
//try again for gen 1.1
- o = parameters.get(KEY_URL_V1);
+ o = getParameters(KEY_URL_V1);
}
if (o == null)
return null;
@@ -262,30 +243,15 @@ public class OnSystemRequest extends RPCNotification {
}
public void setUrl(String url) {
- if (url != null) {
- parameters.put(KEY_URL, url);
- } else {
- parameters.remove(KEY_URL);
- }
+ setParameters(KEY_URL, url);
}
public FileType getFileType() {
- Object obj = parameters.get(KEY_FILE_TYPE);
- if (obj == null) return null;
- if (obj instanceof FileType) {
- return (FileType) obj;
- } else if (obj instanceof String) {
- return FileType.valueForString((String) obj);
- }
- return null;
+ return (FileType) getObject(FileType.class, KEY_FILE_TYPE);
}
public void setFileType(FileType fileType) {
- if (fileType != null) {
- parameters.put(KEY_FILE_TYPE, fileType);
- } else {
- parameters.remove(KEY_FILE_TYPE);
- }
+ setParameters(KEY_FILE_TYPE, fileType);
}
/**
@@ -301,7 +267,7 @@ public class OnSystemRequest extends RPCNotification {
}
public Long getOffset() {
- final Object o = parameters.get(KEY_OFFSET);
+ final Object o = getParameters(KEY_OFFSET);
if (o == null){
return null;
@@ -316,18 +282,14 @@ public class OnSystemRequest extends RPCNotification {
}
public void setOffset(Long offset) {
- if (offset != null) {
- parameters.put(KEY_OFFSET, offset);
- } else {
- parameters.remove(KEY_OFFSET);
- }
+ setParameters(KEY_OFFSET, offset);
}
public Integer getTimeout() {
- Object o = parameters.get(KEY_TIMEOUT);
+ Object o = getParameters(KEY_TIMEOUT);
if (o == null){
- o = parameters.get(KEY_TIMEOUT_V1);
+ o = getParameters(KEY_TIMEOUT_V1);
if (o == null) return null;
}
@@ -338,15 +300,11 @@ public class OnSystemRequest extends RPCNotification {
}
public void setTimeout(Integer timeout) {
- if (timeout != null) {
- parameters.put(KEY_TIMEOUT, timeout);
- } else {
- parameters.remove(KEY_TIMEOUT);
- }
+ setParameters(KEY_TIMEOUT, timeout);
}
public Long getLength() {
- final Object o = parameters.get(KEY_LENGTH);
+ final Object o = getParameters(KEY_LENGTH);
if (o == null){
return null;
}
@@ -372,10 +330,6 @@ public class OnSystemRequest extends RPCNotification {
}
public void setLength(Long length) {
- if (length != null) {
- parameters.put(KEY_LENGTH, length);
- } else {
- parameters.remove(KEY_LENGTH);
- }
+ setParameters(KEY_LENGTH, length);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnTBTClientState.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnTBTClientState.java
index 26965c891..a8f05a291 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnTBTClientState.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnTBTClientState.java
@@ -1,11 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.rpc.enums.TBTState;
+import java.util.Hashtable;
+
/**
* <p>Notifies the application of the current TBT client status on the module.</p>
*
@@ -58,23 +58,13 @@ public class OnTBTClientState extends RPCNotification {
* @return {@linkplain TBTState} the current state of TBT client
*/
public TBTState getState() {
- Object obj = parameters.get(KEY_STATE);
- if (obj instanceof TBTState) {
- return (TBTState)obj;
- } else if(obj instanceof String) {
- return TBTState.valueForString((String) obj);
- }
- return null;
+ return (TBTState) getObject(TBTState.class, KEY_STATE);
}
/**
* <p>Called to set the current state of TBT client</p>
* @param state current state of TBT client
*/
public void setState( TBTState state ) {
- if (state != null) {
- parameters.put(KEY_STATE, state );
- } else {
- parameters.remove(KEY_STATE);
- }
+ setParameters(KEY_STATE, state);
}
} // end-class
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnTouchEvent.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnTouchEvent.java
index bfb31d789..36905aad6 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnTouchEvent.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnTouchEvent.java
@@ -1,13 +1,12 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.rpc.enums.TouchType;
+import java.util.Hashtable;
+import java.util.List;
+
/**
*
* Notifies about touch events on the screen's prescribed area.
@@ -69,48 +68,19 @@ public class OnTouchEvent extends RPCNotification {
}
public void setType(TouchType type) {
- if (type != null) {
- parameters.put(KEY_TYPE, type);
- } else {
- parameters.remove(KEY_TYPE);
- }
+ setParameters(KEY_TYPE, type);
}
public TouchType getType() {
- Object obj = parameters.get(KEY_TYPE);
- if (obj instanceof TouchType) {
- return (TouchType) obj;
- } else if (obj instanceof String) {
- return TouchType.valueForString((String) obj);
- }
- return null;
+ return (TouchType) getObject(TouchType.class, KEY_TYPE);
}
public void setEvent(List<TouchEvent> event) {
- if (event != null) {
- parameters.put(KEY_EVENT, event);
- } else {
- parameters.remove(KEY_EVENT);
- }
+ setParameters(KEY_EVENT, event);
}
@SuppressWarnings("unchecked")
public List<TouchEvent> getEvent() {
- if (parameters.get(KEY_EVENT) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_EVENT);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof TouchEvent) {
- return (List<TouchEvent>) list;
- } else if (obj instanceof Hashtable) {
- List<TouchEvent> newList = new ArrayList<TouchEvent>();
- for (Object hashObj : list) {
- newList.add(new TouchEvent((Hashtable<String, Object>) hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<TouchEvent>) getObject(TouchEvent.class, KEY_EVENT);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnVehicleData.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnVehicleData.java
index 1a6baefef..32dba7500 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnVehicleData.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnVehicleData.java
@@ -10,6 +10,9 @@ import com.smartdevicelink.proxy.rpc.enums.VehicleDataEventStatus;
import com.smartdevicelink.proxy.rpc.enums.WiperStatus;
import com.smartdevicelink.util.DebugTool;
import com.smartdevicelink.util.SdlDataTypeConverter;
+
+import static com.smartdevicelink.proxy.constants.Names.timeout;
+
/**
*Individual requested DID result and data.
*
@@ -277,58 +280,30 @@ public class OnVehicleData extends RPCNotification {
super(hash);
}
public void setGps(GPSData gps) {
- if (gps != null) {
- parameters.put(KEY_GPS, gps);
- } else {
- parameters.remove(KEY_GPS);
- }
+ setParameters(KEY_GPS, gps);
}
@SuppressWarnings("unchecked")
public GPSData getGps() {
- Object obj = parameters.get(KEY_GPS);
- if (obj instanceof GPSData) {
- return (GPSData) obj;
- } else if (obj instanceof Hashtable) {
- GPSData theCode = null;
- try {
- theCode = new GPSData((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_GPS, e);
- }
- return theCode;
- }
- return null;
+ return (GPSData) getObject(GPSData.class, KEY_GPS);
}
public void setSpeed(Double speed) {
- if (speed != null) {
- parameters.put(KEY_SPEED, speed);
- } else {
- parameters.remove(KEY_SPEED);
- }
+ setParameters(KEY_SPEED, speed);
}
public Double getSpeed() {
- Object object = parameters.get(KEY_SPEED);
+ Object object = getParameters(KEY_SPEED);
return SdlDataTypeConverter.objectToDouble(object);
}
public void setRpm(Integer rpm) {
- if (rpm != null) {
- parameters.put(KEY_RPM, rpm);
- } else {
- parameters.remove(KEY_RPM);
- }
+ setParameters(KEY_RPM, rpm);
}
public Integer getRpm() {
- return (Integer) parameters.get(KEY_RPM);
+ return getInteger(KEY_RPM);
}
public void setFuelLevel(Double fuelLevel) {
- if (fuelLevel != null) {
- parameters.put(KEY_FUEL_LEVEL, fuelLevel);
- } else {
- parameters.remove(KEY_FUEL_LEVEL);
- }
+ setParameters(KEY_FUEL_LEVEL, fuelLevel);
}
public Double getFuelLevel() {
- Object object = parameters.get(KEY_FUEL_LEVEL);
+ Object object = getParameters(KEY_FUEL_LEVEL);
return SdlDataTypeConverter.objectToDouble(object);
}
@Deprecated
@@ -340,358 +315,144 @@ public class OnVehicleData extends RPCNotification {
return getFuelLevelState();
}
public void setFuelLevelState(ComponentVolumeStatus fuelLevelState) {
- if (fuelLevelState != null) {
- parameters.put(KEY_FUEL_LEVEL_STATE, fuelLevelState);
- } else {
- parameters.remove(KEY_FUEL_LEVEL_STATE);
- }
+ setParameters(KEY_FUEL_LEVEL_STATE, fuelLevelState);
}
public ComponentVolumeStatus getFuelLevelState() {
- Object obj = parameters.get(KEY_FUEL_LEVEL_STATE);
- if (obj instanceof ComponentVolumeStatus) {
- return (ComponentVolumeStatus) obj;
- } else if (obj instanceof String) {
- ComponentVolumeStatus theCode = null;
- try {
- theCode = ComponentVolumeStatus.valueForString((String) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_FUEL_LEVEL_STATE, e);
- }
- return theCode;
- }
- return null;
+ return (ComponentVolumeStatus) getObject(ComponentVolumeStatus.class, KEY_FUEL_LEVEL_STATE);
}
public void setInstantFuelConsumption(Double instantFuelConsumption) {
- if (instantFuelConsumption != null) {
- parameters.put(KEY_INSTANT_FUEL_CONSUMPTION, instantFuelConsumption);
- } else {
- parameters.remove(KEY_INSTANT_FUEL_CONSUMPTION);
- }
+ setParameters(KEY_INSTANT_FUEL_CONSUMPTION, instantFuelConsumption);
}
public Double getInstantFuelConsumption() {
- Object object = parameters.get(KEY_INSTANT_FUEL_CONSUMPTION);
+ Object object = getParameters(KEY_INSTANT_FUEL_CONSUMPTION);
return SdlDataTypeConverter.objectToDouble(object);
}
public void setExternalTemperature(Double externalTemperature) {
- if (externalTemperature != null) {
- parameters.put(KEY_EXTERNAL_TEMPERATURE, externalTemperature);
- } else {
- parameters.remove(KEY_EXTERNAL_TEMPERATURE);
- }
+ setParameters(KEY_EXTERNAL_TEMPERATURE, externalTemperature);
}
public Double getExternalTemperature() {
- Object object = parameters.get(KEY_EXTERNAL_TEMPERATURE);
+ Object object = getParameters(KEY_EXTERNAL_TEMPERATURE);
return SdlDataTypeConverter.objectToDouble(object);
}
public void setVin(String vin) {
- if (vin != null) {
- parameters.put(KEY_VIN, vin);
- } else {
- parameters.remove(KEY_VIN);
- }
+ setParameters(KEY_VIN, vin);
}
public String getVin() {
- return (String) parameters.get(KEY_VIN);
+ return getString(KEY_VIN);
}
public void setPrndl(PRNDL prndl) {
- if (prndl != null) {
- parameters.put(KEY_PRNDL, prndl);
- } else {
- parameters.remove(KEY_PRNDL);
- }
+ setParameters(KEY_PRNDL, prndl);
}
public PRNDL getPrndl() {
- Object obj = parameters.get(KEY_PRNDL);
- if (obj instanceof PRNDL) {
- return (PRNDL) obj;
- } else if (obj instanceof String) {
- return PRNDL.valueForString((String) obj);
- }
- return null;
+ return (PRNDL) getObject(PRNDL.class, KEY_PRNDL);
}
public void setTirePressure(TireStatus tirePressure) {
- if (tirePressure != null) {
- parameters.put(KEY_TIRE_PRESSURE, tirePressure);
- } else {
- parameters.remove(KEY_TIRE_PRESSURE);
- }
+ setParameters(KEY_TIRE_PRESSURE, tirePressure);
}
@SuppressWarnings("unchecked")
public TireStatus getTirePressure() {
- Object obj = parameters.get(KEY_TIRE_PRESSURE);
- if (obj instanceof TireStatus) {
- return (TireStatus) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new TireStatus((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_TIRE_PRESSURE, e);
- }
- }
- return null;
+ return (TireStatus) getObject(TireStatus.class, KEY_TIRE_PRESSURE);
}
public void setOdometer(Integer odometer) {
- if (odometer != null) {
- parameters.put(KEY_ODOMETER, odometer);
- } else {
- parameters.remove(KEY_ODOMETER);
- }
+ setParameters(KEY_ODOMETER, odometer);
}
public Integer getOdometer() {
- return (Integer) parameters.get(KEY_ODOMETER);
+ return getInteger(KEY_ODOMETER);
}
public void setBeltStatus(BeltStatus beltStatus) {
- if (beltStatus != null) {
- parameters.put(KEY_BELT_STATUS, beltStatus);
- } else {
- parameters.remove(KEY_BELT_STATUS);
- }
+ setParameters(KEY_BELT_STATUS, beltStatus);
}
@SuppressWarnings("unchecked")
public BeltStatus getBeltStatus() {
- Object obj = parameters.get(KEY_BELT_STATUS);
- if (obj instanceof BeltStatus) {
- return (BeltStatus) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new BeltStatus((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_BELT_STATUS, e);
- }
- }
- return null;
+ return (BeltStatus) getObject(BeltStatus.class, KEY_BELT_STATUS);
}
public void setBodyInformation(BodyInformation bodyInformation) {
- if (bodyInformation != null) {
- parameters.put(KEY_BODY_INFORMATION, bodyInformation);
- } else {
- parameters.remove(KEY_BODY_INFORMATION);
- }
+ setParameters(KEY_BODY_INFORMATION, bodyInformation);
}
@SuppressWarnings("unchecked")
public BodyInformation getBodyInformation() {
- Object obj = parameters.get(KEY_BODY_INFORMATION);
- if (obj instanceof BodyInformation) {
- return (BodyInformation) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new BodyInformation((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_BODY_INFORMATION, e);
- }
- }
- return null;
+ return (BodyInformation) getObject(BodyInformation.class, KEY_BODY_INFORMATION);
}
public void setDeviceStatus(DeviceStatus deviceStatus) {
- if (deviceStatus != null) {
- parameters.put(KEY_DEVICE_STATUS, deviceStatus);
- } else {
- parameters.remove(KEY_DEVICE_STATUS);
- }
+ setParameters(KEY_DEVICE_STATUS, deviceStatus);
}
@SuppressWarnings("unchecked")
public DeviceStatus getDeviceStatus() {
- Object obj = parameters.get(KEY_DEVICE_STATUS);
- if (obj instanceof DeviceStatus) {
- return (DeviceStatus) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new DeviceStatus((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_DEVICE_STATUS, e);
- }
- }
- return null;
+ return (DeviceStatus) getObject(DeviceStatus.class, KEY_DEVICE_STATUS);
}
public void setDriverBraking(VehicleDataEventStatus driverBraking) {
- if (driverBraking != null) {
- parameters.put(KEY_DRIVER_BRAKING, driverBraking);
- } else {
- parameters.remove(KEY_DRIVER_BRAKING);
- }
+ setParameters(KEY_DRIVER_BRAKING, driverBraking);
}
public VehicleDataEventStatus getDriverBraking() {
- Object obj = parameters.get(KEY_DRIVER_BRAKING);
- if (obj instanceof VehicleDataEventStatus) {
- return (VehicleDataEventStatus) obj;
- } else if (obj instanceof String) {
- return VehicleDataEventStatus.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_DRIVER_BRAKING);
}
public void setWiperStatus(WiperStatus wiperStatus) {
- if (wiperStatus != null) {
- parameters.put(KEY_WIPER_STATUS, wiperStatus);
- } else {
- parameters.remove(KEY_WIPER_STATUS);
- }
+ setParameters(KEY_WIPER_STATUS, wiperStatus);
}
public WiperStatus getWiperStatus() {
- Object obj = parameters.get(KEY_WIPER_STATUS);
- if (obj instanceof WiperStatus) {
- return (WiperStatus) obj;
- } else if (obj instanceof String) {
- return WiperStatus.valueForString((String) obj);
- }
- return null;
+ return (WiperStatus) getObject(WiperStatus.class, KEY_WIPER_STATUS);
}
public void setHeadLampStatus(HeadLampStatus headLampStatus) {
- if (headLampStatus != null) {
- parameters.put(KEY_HEAD_LAMP_STATUS, headLampStatus);
- } else {
- parameters.remove(KEY_HEAD_LAMP_STATUS);
- }
+ setParameters(KEY_HEAD_LAMP_STATUS, headLampStatus);
}
@SuppressWarnings("unchecked")
public HeadLampStatus getHeadLampStatus() {
- Object obj = parameters.get(KEY_HEAD_LAMP_STATUS);
- if (obj instanceof HeadLampStatus) {
- return (HeadLampStatus) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new HeadLampStatus((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_HEAD_LAMP_STATUS, e);
- }
- }
- return null;
+ return (HeadLampStatus) getObject(HeadLampStatus.class, KEY_HEAD_LAMP_STATUS);
}
public void setEngineTorque(Double engineTorque) {
- if (engineTorque != null) {
- parameters.put(KEY_ENGINE_TORQUE, engineTorque);
- } else {
- parameters.remove(KEY_ENGINE_TORQUE);
- }
+ setParameters(KEY_ENGINE_TORQUE, engineTorque);
}
public Double getEngineTorque() {
- Object object = parameters.get(KEY_ENGINE_TORQUE);
+ Object object = getParameters(KEY_ENGINE_TORQUE);
return SdlDataTypeConverter.objectToDouble(object);
}
public void setAccPedalPosition(Double accPedalPosition) {
- if (accPedalPosition != null) {
- parameters.put(KEY_ACC_PEDAL_POSITION, accPedalPosition);
- } else {
- parameters.remove(KEY_ACC_PEDAL_POSITION);
- }
+ setParameters(KEY_ACC_PEDAL_POSITION, accPedalPosition);
}
public Double getAccPedalPosition() {
- Object object = parameters.get(KEY_ACC_PEDAL_POSITION);
+ Object object = getParameters(KEY_ACC_PEDAL_POSITION);
return SdlDataTypeConverter.objectToDouble(object);
}
public void setSteeringWheelAngle(Double steeringWheelAngle) {
- if (steeringWheelAngle != null) {
- parameters.put(KEY_STEERING_WHEEL_ANGLE, steeringWheelAngle);
- } else {
- parameters.remove(KEY_STEERING_WHEEL_ANGLE);
- }
+ setParameters(KEY_STEERING_WHEEL_ANGLE, steeringWheelAngle);
}
public Double getSteeringWheelAngle() {
- Object object = parameters.get(KEY_STEERING_WHEEL_ANGLE);
+ Object object = getParameters(KEY_STEERING_WHEEL_ANGLE);
return SdlDataTypeConverter.objectToDouble(object);
}
public void setECallInfo(ECallInfo eCallInfo) {
- if (eCallInfo != null) {
- parameters.put(KEY_E_CALL_INFO, eCallInfo);
- } else {
- parameters.remove(KEY_E_CALL_INFO);
- }
+ setParameters(KEY_E_CALL_INFO, eCallInfo);
}
@SuppressWarnings("unchecked")
public ECallInfo getECallInfo() {
- Object obj = parameters.get(KEY_E_CALL_INFO);
- if (obj instanceof ECallInfo) {
- return (ECallInfo) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new ECallInfo((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_E_CALL_INFO, e);
- }
- }
- return null;
+ return (ECallInfo) getObject(ECallInfo.class, KEY_E_CALL_INFO);
}
public void setAirbagStatus(AirbagStatus airbagStatus) {
- if (airbagStatus != null) {
- parameters.put(KEY_AIRBAG_STATUS, airbagStatus);
- } else {
- parameters.remove(KEY_AIRBAG_STATUS);
- }
+ setParameters(KEY_AIRBAG_STATUS, airbagStatus);
}
@SuppressWarnings("unchecked")
public AirbagStatus getAirbagStatus() {
- Object obj = parameters.get(KEY_AIRBAG_STATUS);
- if (obj instanceof AirbagStatus) {
- return (AirbagStatus) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new AirbagStatus((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_AIRBAG_STATUS, e);
- }
- }
- return null;
+ return (AirbagStatus) getObject(AirbagStatus.class, KEY_AIRBAG_STATUS);
}
public void setEmergencyEvent(EmergencyEvent emergencyEvent) {
- if (emergencyEvent != null) {
- parameters.put(KEY_EMERGENCY_EVENT, emergencyEvent);
- } else {
- parameters.remove(KEY_EMERGENCY_EVENT);
- }
+ setParameters(KEY_EMERGENCY_EVENT, emergencyEvent);
}
@SuppressWarnings("unchecked")
public EmergencyEvent getEmergencyEvent() {
- Object obj = parameters.get(KEY_EMERGENCY_EVENT);
- if (obj instanceof EmergencyEvent) {
- return (EmergencyEvent) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new EmergencyEvent((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_EMERGENCY_EVENT, e);
- }
- }
- return null;
+ return (EmergencyEvent) getObject(EmergencyEvent.class, KEY_EMERGENCY_EVENT);
}
public void setClusterModeStatus(ClusterModeStatus clusterModeStatus) {
- if (clusterModeStatus != null) {
- parameters.put(KEY_CLUSTER_MODE_STATUS, clusterModeStatus);
- } else {
- parameters.remove(KEY_CLUSTER_MODE_STATUS);
- }
+ setParameters(KEY_CLUSTER_MODE_STATUS, clusterModeStatus);
}
@SuppressWarnings("unchecked")
public ClusterModeStatus getClusterModeStatus() {
- Object obj = parameters.get(KEY_CLUSTER_MODE_STATUS);
- if (obj instanceof ClusterModeStatus) {
- return (ClusterModeStatus) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new ClusterModeStatus((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_CLUSTER_MODE_STATUS, e);
- }
- }
- return null;
+ return (ClusterModeStatus) getObject(ClusterModeStatus.class, KEY_CLUSTER_MODE_STATUS);
}
public void setMyKey(MyKey myKey) {
- if (myKey != null) {
- parameters.put(KEY_MY_KEY, myKey);
- } else {
- parameters.remove(KEY_MY_KEY);
- }
+ setParameters(KEY_MY_KEY, myKey);
}
@SuppressWarnings("unchecked")
public MyKey getMyKey() {
- Object obj = parameters.get(KEY_MY_KEY);
- if (obj instanceof MyKey) {
- return (MyKey) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new MyKey((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_MY_KEY, e);
- }
- }
- return null;
+ return (MyKey) getObject(MyKey.class, KEY_MY_KEY);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnWayPointChange.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnWayPointChange.java
index 4e197b3eb..5f102dce0 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnWayPointChange.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnWayPointChange.java
@@ -3,7 +3,6 @@ package com.smartdevicelink.proxy.rpc;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
-import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
@@ -20,29 +19,10 @@ public class OnWayPointChange extends RPCNotification {
@SuppressWarnings("unchecked")
public List<LocationDetails> getWayPoints() {
- if (parameters.get(KEY_WAY_POINTS) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_WAY_POINTS);
- if (list != null && list.size()>0) {
- Object obj = list.get(0);
- if(obj instanceof LocationDetails){
- return (List<LocationDetails>) list;
- } else if(obj instanceof Hashtable) {
- List<LocationDetails> newList = new ArrayList<LocationDetails>();
- for (Object hash:list) {
- newList.add(new LocationDetails((Hashtable<String, Object>)hash));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<LocationDetails>) getObject(LocationDetails.class, KEY_WAY_POINTS);
}
public void setWayPoints(List<LocationDetails> wayPoints) {
- if (wayPoints != null) {
- parameters.put(KEY_WAY_POINTS, wayPoints);
- } else {
- parameters.remove(KEY_WAY_POINTS);
- }
+ setParameters(KEY_WAY_POINTS, wayPoints);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ParameterPermissions.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ParameterPermissions.java
index 996de27ac..244b73b89 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ParameterPermissions.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ParameterPermissions.java
@@ -1,10 +1,10 @@
package com.smartdevicelink.proxy.rpc;
+import com.smartdevicelink.proxy.RPCStruct;
+
import java.util.Hashtable;
import java.util.List;
-import com.smartdevicelink.proxy.RPCStruct;
-
/**
* Defining sets of parameters, which are permitted or prohibited for a given RPC.
* <p><b>Parameter List</b></p>
@@ -65,16 +65,7 @@ public class ParameterPermissions extends RPCStruct {
*/
@SuppressWarnings("unchecked")
public List<String> getAllowed() {
- if (store.get(KEY_ALLOWED) instanceof List<?>) {
- List<?> list = (List<?>)store.get( KEY_ALLOWED);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof String) {
- return (List<String>) list;
- }
- }
- }
- return null;
+ return (List<String>) getObject(String.class, KEY_ALLOWED);
}
/**
@@ -82,11 +73,7 @@ public class ParameterPermissions extends RPCStruct {
* @param allowed parameter that is permitted for this given RPC
*/
public void setAllowed(List<String> allowed) {
- if (allowed != null) {
- store.put(KEY_ALLOWED, allowed);
- } else {
- store.remove(KEY_ALLOWED);
- }
+ setValue(KEY_ALLOWED, allowed);
}
/**
@@ -95,16 +82,7 @@ public class ParameterPermissions extends RPCStruct {
*/
@SuppressWarnings("unchecked")
public List<String> getUserDisallowed() {
- if (store.get(KEY_USER_DISALLOWED) instanceof List<?>) {
- List<?> list = (List<?>)store.get( KEY_USER_DISALLOWED);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof String) {
- return (List<String>) list;
- }
- }
- }
- return null;
+ return (List<String>) getObject(String.class, KEY_USER_DISALLOWED);
}
/**
@@ -112,10 +90,6 @@ public class ParameterPermissions extends RPCStruct {
* @param userDisallowed paramter that is prohibited for this given RPC
*/
public void setUserDisallowed(List<String> userDisallowed) {
- if (userDisallowed != null) {
- store.put(KEY_USER_DISALLOWED, userDisallowed);
- } else {
- store.remove(KEY_USER_DISALLOWED);
- }
+ setValue(KEY_USER_DISALLOWED, userDisallowed);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformAudioPassThru.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformAudioPassThru.java
index 0e663f63d..5f2d27e1c 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformAudioPassThru.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformAudioPassThru.java
@@ -1,15 +1,14 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.AudioType;
import com.smartdevicelink.proxy.rpc.enums.BitsPerSample;
import com.smartdevicelink.proxy.rpc.enums.SamplingRate;
+import java.util.Hashtable;
+import java.util.List;
+
/**
* This will open an audio pass thru session. By doing so the app can receive
* audio data through the vehicles microphone
@@ -141,11 +140,7 @@ public class PerformAudioPassThru extends RPCRequest {
* </ul>
*/
public void setInitialPrompt(List<TTSChunk> initialPrompt) {
- if (initialPrompt != null) {
- parameters.put(KEY_INITIAL_PROMPT, initialPrompt);
- } else {
- parameters.remove(KEY_INITIAL_PROMPT);
- }
+ setParameters(KEY_INITIAL_PROMPT, initialPrompt);
}
/**
@@ -158,22 +153,7 @@ public class PerformAudioPassThru extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<TTSChunk> getInitialPrompt() {
- if (parameters.get(KEY_INITIAL_PROMPT) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_INITIAL_PROMPT);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof TTSChunk) {
- return (List<TTSChunk>) list;
- } else if (obj instanceof Hashtable) {
- List<TTSChunk> newList = new ArrayList<TTSChunk>();
- for (Object hashObj : list) {
- newList.add(new TTSChunk((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<TTSChunk>) getObject(TTSChunk.class, KEY_INITIAL_PROMPT);
}
/**
@@ -186,11 +166,7 @@ public class PerformAudioPassThru extends RPCRequest {
* <b>Notes: </b>Maxlength=500
*/
public void setAudioPassThruDisplayText1(String audioPassThruDisplayText1) {
- if (audioPassThruDisplayText1 != null) {
- parameters.put(KEY_AUDIO_PASS_THRU_DISPLAY_TEXT_1, audioPassThruDisplayText1);
- } else {
- parameters.remove(KEY_AUDIO_PASS_THRU_DISPLAY_TEXT_1);
- }
+ setParameters(KEY_AUDIO_PASS_THRU_DISPLAY_TEXT_1, audioPassThruDisplayText1);
}
/**
@@ -200,7 +176,7 @@ public class PerformAudioPassThru extends RPCRequest {
* displayed during audio capture
*/
public String getAudioPassThruDisplayText1() {
- return (String) parameters.get(KEY_AUDIO_PASS_THRU_DISPLAY_TEXT_1);
+ return getString(KEY_AUDIO_PASS_THRU_DISPLAY_TEXT_1);
}
/**
@@ -213,11 +189,7 @@ public class PerformAudioPassThru extends RPCRequest {
* <b>Notes: </b>Maxlength=500
*/
public void setAudioPassThruDisplayText2(String audioPassThruDisplayText2) {
- if (audioPassThruDisplayText2 != null) {
- parameters.put(KEY_AUDIO_PASS_THRU_DISPLAY_TEXT_2, audioPassThruDisplayText2);
- } else {
- parameters.remove(KEY_AUDIO_PASS_THRU_DISPLAY_TEXT_2);
- }
+ setParameters(KEY_AUDIO_PASS_THRU_DISPLAY_TEXT_2, audioPassThruDisplayText2);
}
/**
@@ -227,7 +199,7 @@ public class PerformAudioPassThru extends RPCRequest {
* displayed during audio capture
*/
public String getAudioPassThruDisplayText2() {
- return (String) parameters.get(KEY_AUDIO_PASS_THRU_DISPLAY_TEXT_2);
+ return getString(KEY_AUDIO_PASS_THRU_DISPLAY_TEXT_2);
}
/**
@@ -237,11 +209,7 @@ public class PerformAudioPassThru extends RPCRequest {
* a SamplingRate value representing a 8 or 16 or 22 or 24 khz
*/
public void setSamplingRate(SamplingRate samplingRate) {
- if (samplingRate != null) {
- parameters.put(KEY_SAMPLING_RATE, samplingRate);
- } else {
- parameters.remove(KEY_SAMPLING_RATE);
- }
+ setParameters(KEY_SAMPLING_RATE, samplingRate);
}
/**
@@ -250,13 +218,7 @@ public class PerformAudioPassThru extends RPCRequest {
* @return SamplingRate -a SamplingRate value
*/
public SamplingRate getSamplingRate() {
- Object obj = parameters.get(KEY_SAMPLING_RATE);
- if (obj instanceof SamplingRate) {
- return (SamplingRate) obj;
- } else if (obj instanceof String) {
- return SamplingRate.valueForString((String) obj);
- }
- return null;
+ return (SamplingRate) getObject(SamplingRate.class, KEY_SAMPLING_RATE);
}
/**
@@ -269,11 +231,7 @@ public class PerformAudioPassThru extends RPCRequest {
* <b>Notes: </b>Minvalue:1; Maxvalue:1000000
*/
public void setMaxDuration(Integer maxDuration) {
- if (maxDuration != null) {
- parameters.put(KEY_MAX_DURATION, maxDuration);
- } else {
- parameters.remove(KEY_MAX_DURATION);
- }
+ setParameters(KEY_MAX_DURATION, maxDuration);
}
/**
@@ -283,7 +241,7 @@ public class PerformAudioPassThru extends RPCRequest {
* recording in milliseconds
*/
public Integer getMaxDuration() {
- return (Integer) parameters.get(KEY_MAX_DURATION);
+ return getInteger(KEY_MAX_DURATION);
}
/**
@@ -293,11 +251,7 @@ public class PerformAudioPassThru extends RPCRequest {
* a BitsPerSample value representing 8 bit or 16 bit
*/
public void setBitsPerSample(BitsPerSample audioQuality) {
- if (audioQuality != null) {
- parameters.put(KEY_BITS_PER_SAMPLE, audioQuality);
- } else {
- parameters.remove(KEY_BITS_PER_SAMPLE);
- }
+ setParameters(KEY_BITS_PER_SAMPLE, audioQuality);
}
/**
@@ -306,13 +260,7 @@ public class PerformAudioPassThru extends RPCRequest {
* @return BitsPerSample -a BitsPerSample value
*/
public BitsPerSample getBitsPerSample() {
- Object obj = parameters.get(KEY_BITS_PER_SAMPLE);
- if (obj instanceof BitsPerSample) {
- return (BitsPerSample) obj;
- } else if (obj instanceof String) {
- return BitsPerSample.valueForString((String) obj);
- }
- return null;
+ return (BitsPerSample) getObject(BitsPerSample.class, KEY_BITS_PER_SAMPLE);
}
/**
@@ -322,11 +270,7 @@ public class PerformAudioPassThru extends RPCRequest {
* an audioType
*/
public void setAudioType(AudioType audioType) {
- if (audioType != null) {
- parameters.put(KEY_AUDIO_TYPE, audioType);
- } else {
- parameters.remove(KEY_AUDIO_TYPE);
- }
+ setParameters(KEY_AUDIO_TYPE, audioType);
}
/**
@@ -335,13 +279,7 @@ public class PerformAudioPassThru extends RPCRequest {
* @return AudioType -an AudioType
*/
public AudioType getAudioType() {
- Object obj = parameters.get(KEY_AUDIO_TYPE);
- if (obj instanceof AudioType) {
- return (AudioType) obj;
- } else if (obj instanceof String) {
- return AudioType.valueForString((String) obj);
- }
- return null;
+ return (AudioType) getObject(AudioType.class, KEY_AUDIO_TYPE);
}
/**
@@ -353,7 +291,7 @@ public class PerformAudioPassThru extends RPCRequest {
* should be muted during the APT session
*/
public Boolean getMuteAudio() {
- return (Boolean) parameters.get(KEY_MUTE_AUDIO);
+ return getBoolean(KEY_MUTE_AUDIO);
}
/**
@@ -368,10 +306,6 @@ public class PerformAudioPassThru extends RPCRequest {
* should be muted during the APT session
*/
public void setMuteAudio(Boolean muteAudio) {
- if (muteAudio != null) {
- parameters.put(KEY_MUTE_AUDIO, muteAudio);
- } else {
- parameters.remove(KEY_MUTE_AUDIO);
- }
+ setParameters(KEY_MUTE_AUDIO, muteAudio);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformInteraction.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformInteraction.java
index 9ad8c1034..d8aeee70d 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformInteraction.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformInteraction.java
@@ -1,13 +1,13 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.InteractionMode;
import com.smartdevicelink.proxy.rpc.enums.LayoutMode;
+
+import java.util.Hashtable;
+import java.util.List;
+
/**
* Performs an application-initiated interaction in which the user can select a
* {@linkplain Choice} from among the specified Choice Sets. For instance, an
@@ -144,7 +144,7 @@ public class PerformInteraction extends RPCRequest {
* @return String -the text displayed when the interaction begins
*/
public String getInitialText() {
- return (String) parameters.get(KEY_INITIAL_TEXT);
+ return getString(KEY_INITIAL_TEXT);
}
/**
* Sets the Text that Displayed when the interaction begins. This text may
@@ -156,11 +156,7 @@ public class PerformInteraction extends RPCRequest {
* a String value that Displayed when the interaction begins
*/
public void setInitialText(String initialText) {
- if (initialText != null) {
- parameters.put(KEY_INITIAL_TEXT, initialText);
- } else {
- parameters.remove(KEY_INITIAL_TEXT);
- }
+ setParameters(KEY_INITIAL_TEXT, initialText);
}
/**
* Gets an An array of one or more TTSChunks that, taken together, specify
@@ -171,22 +167,7 @@ public class PerformInteraction extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<TTSChunk> getInitialPrompt() {
- if (parameters.get(KEY_INITIAL_PROMPT) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_INITIAL_PROMPT);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof TTSChunk) {
- return (List<TTSChunk>) list;
- } else if (obj instanceof Hashtable) {
- List<TTSChunk> newList = new ArrayList<TTSChunk>();
- for (Object hashObj : list) {
- newList.add(new TTSChunk((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<TTSChunk>) getObject(TTSChunk.class, KEY_INITIAL_PROMPT);
}
/**
* Sets An array of one or more TTSChunks that, taken together, specify what
@@ -197,11 +178,7 @@ public class PerformInteraction extends RPCRequest {
* user at the start of an interaction
*/
public void setInitialPrompt(List<TTSChunk> initialPrompt) {
- if (initialPrompt != null) {
- parameters.put(KEY_INITIAL_PROMPT, initialPrompt);
- } else {
- parameters.remove(KEY_INITIAL_PROMPT);
- }
+ setParameters(KEY_INITIAL_PROMPT, initialPrompt);
}
/**
* Gets the Indicates mode that indicate how user selects interaction
@@ -212,13 +189,7 @@ public class PerformInteraction extends RPCRequest {
* (VR_ONLY, MANUAL_ONLY or BOTH)
*/
public InteractionMode getInteractionMode() {
- Object obj = parameters.get(KEY_INTERACTION_MODE);
- if (obj instanceof InteractionMode) {
- return (InteractionMode) obj;
- } else if (obj instanceof String) {
- return InteractionMode.valueForString((String) obj);
- }
- return null;
+ return (InteractionMode) getObject(InteractionMode.class, KEY_INTERACTION_MODE);
}
/**
* Sets the Indicates mode that indicate how user selects interaction
@@ -230,11 +201,7 @@ public class PerformInteraction extends RPCRequest {
* MANUAL_ONLY or BOTH)
*/
public void setInteractionMode(InteractionMode interactionMode) {
- if (interactionMode != null) {
- parameters.put(KEY_INTERACTION_MODE, interactionMode);
- } else {
- parameters.remove(KEY_INTERACTION_MODE);
- }
+ setParameters(KEY_INTERACTION_MODE, interactionMode);
}
/**
* Gets a List<Integer> value representing an Array of one or more Choice
@@ -246,16 +213,7 @@ public class PerformInteraction extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<Integer> getInteractionChoiceSetIDList() {
- if(parameters.get(KEY_INTERACTION_CHOICE_SET_ID_LIST) instanceof List<?>){
- List<?> list = (List<?>)parameters.get(KEY_INTERACTION_CHOICE_SET_ID_LIST);
- if(list != null && list.size()>0){
- Object obj = list.get(0);
- if(obj instanceof Integer){
- return (List<Integer>) list;
- }
- }
- }
- return null;
+ return (List<Integer>) getObject(Integer.class, KEY_INTERACTION_CHOICE_SET_ID_LIST);
}
/**
* Sets a List<Integer> representing an Array of one or more Choice Set
@@ -269,11 +227,7 @@ public class PerformInteraction extends RPCRequest {
* <b>Notes: </b>Min Value: 0; Max Vlaue: 2000000000
*/
public void setInteractionChoiceSetIDList(List<Integer> interactionChoiceSetIDList) {
- if (interactionChoiceSetIDList != null) {
- parameters.put(KEY_INTERACTION_CHOICE_SET_ID_LIST, interactionChoiceSetIDList);
- } else {
- parameters.remove(KEY_INTERACTION_CHOICE_SET_ID_LIST);
- }
+ setParameters(KEY_INTERACTION_CHOICE_SET_ID_LIST, interactionChoiceSetIDList);
}
/**
* Gets a List<TTSChunk> which taken together, specify the help phrase to
@@ -285,22 +239,7 @@ public class PerformInteraction extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<TTSChunk> getHelpPrompt() {
- if(parameters.get(KEY_HELP_PROMPT) instanceof List<?>){
- List<?> list = (List<?>)parameters.get(KEY_HELP_PROMPT);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof TTSChunk) {
- return (List<TTSChunk>) list;
- } else if (obj instanceof Hashtable) {
- List<TTSChunk> newList = new ArrayList<TTSChunk>();
- for (Object hashObj : list) {
- newList.add(new TTSChunk((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<TTSChunk>) getObject(TTSChunk.class, KEY_HELP_PROMPT);
}
/**
* Sets An array of TTSChunks which, taken together, specify the help phrase
@@ -319,11 +258,7 @@ public class PerformInteraction extends RPCRequest {
* session
*/
public void setHelpPrompt(List<TTSChunk> helpPrompt) {
- if (helpPrompt != null) {
- parameters.put(KEY_HELP_PROMPT, helpPrompt);
- } else {
- parameters.remove(KEY_HELP_PROMPT);
- }
+ setParameters(KEY_HELP_PROMPT, helpPrompt);
}
/**
* Gets An array of TTSChunks which, taken together, specify the phrase to
@@ -334,22 +269,7 @@ public class PerformInteraction extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<TTSChunk> getTimeoutPrompt() {
- if (parameters.get(KEY_TIMEOUT_PROMPT) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_TIMEOUT_PROMPT);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof TTSChunk) {
- return (List<TTSChunk>) list;
- } else if (obj instanceof Hashtable) {
- List<TTSChunk> newList = new ArrayList<TTSChunk>();
- for (Object hashObj : list) {
- newList.add(new TTSChunk((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<TTSChunk>) getObject(TTSChunk.class, KEY_TIMEOUT_PROMPT);
}
/**
* Sets An array of TTSChunks which, taken together, specify the phrase to
@@ -363,11 +283,7 @@ public class PerformInteraction extends RPCRequest {
* listen times out during the VR session
*/
public void setTimeoutPrompt(List<TTSChunk> timeoutPrompt) {
- if (timeoutPrompt != null) {
- parameters.put(KEY_TIMEOUT_PROMPT, timeoutPrompt);
- } else {
- parameters.remove(KEY_TIMEOUT_PROMPT);
- }
+ setParameters(KEY_TIMEOUT_PROMPT, timeoutPrompt);
}
/**
* Gets a Integer value representing the amount of time, in milliseconds,
@@ -378,7 +294,7 @@ public class PerformInteraction extends RPCRequest {
* Menu)
*/
public Integer getTimeout() {
- return (Integer) parameters.get(KEY_TIMEOUT);
+ return getInteger(KEY_TIMEOUT);
}
/**
* Sets the amount of time, in milliseconds, SDL will wait for the user to
@@ -397,11 +313,7 @@ public class PerformInteraction extends RPCRequest {
* <b>Notes: </b>Min Value: 5000; Max Value: 100000
*/
public void setTimeout(Integer timeout) {
- if (timeout != null) {
- parameters.put(KEY_TIMEOUT, timeout);
- } else {
- parameters.remove(KEY_TIMEOUT);
- }
+ setParameters(KEY_TIMEOUT, timeout);
}
/**
@@ -414,22 +326,7 @@ public class PerformInteraction extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<VrHelpItem> getVrHelp() {
- if (parameters.get(KEY_VR_HELP) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_VR_HELP);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof VrHelpItem) {
- return (List<VrHelpItem>) list;
- } else if (obj instanceof Hashtable) {
- List<VrHelpItem> newList = new ArrayList<VrHelpItem>();
- for (Object hashObj : list) {
- newList.add(new VrHelpItem((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<VrHelpItem>) getObject(VrHelpItem.class, KEY_VR_HELP);
}
/**
@@ -444,29 +341,14 @@ public class PerformInteraction extends RPCRequest {
* @since SmartDeviceLink 2.0
*/
public void setVrHelp(List<VrHelpItem> vrHelp) {
- if (vrHelp != null) {
- parameters.put(KEY_VR_HELP, vrHelp);
- } else {
- parameters.remove(KEY_VR_HELP);
- }
+ setParameters(KEY_VR_HELP, vrHelp);
}
public LayoutMode getInteractionLayout() {
- Object obj = parameters.get(KEY_INTERACTION_LAYOUT);
- if (obj instanceof LayoutMode) {
- return (LayoutMode) obj;
- } else if (obj instanceof String) {
- return LayoutMode.valueForString((String) obj);
- }
- return null;
+ return (LayoutMode) getObject(LayoutMode.class, KEY_INTERACTION_LAYOUT);
}
public void setInteractionLayout( LayoutMode interactionLayout ) {
- if (interactionLayout != null) {
- parameters.put(KEY_INTERACTION_LAYOUT, interactionLayout );
- }
- else {
- parameters.remove(KEY_INTERACTION_LAYOUT);
- }
+ setParameters(KEY_INTERACTION_LAYOUT, interactionLayout);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformInteractionResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformInteractionResponse.java
index c2b56dcd0..3e4b10b1c 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformInteractionResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformInteractionResponse.java
@@ -1,11 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
import com.smartdevicelink.proxy.rpc.enums.TriggerSource;
+import java.util.Hashtable;
+
/**
* PerformInteraction Response is sent, when PerformInteraction has been called
*
@@ -39,31 +39,21 @@ public class PerformInteractionResponse extends RPCResponse {
* @return choiceID Min: 0 Max: 65535
*/
public Integer getChoiceID() {
- return (Integer) parameters.get( KEY_CHOICE_ID );
+ return getInteger( KEY_CHOICE_ID );
}
/**
* Sets the application-scoped identifier that uniquely identifies this choice.
* @param choiceID Min: 0 Max: 65535
*/
public void setChoiceID( Integer choiceID ) {
- if (choiceID != null) {
- parameters.put(KEY_CHOICE_ID, choiceID );
- } else {
- parameters.remove(KEY_CHOICE_ID);
- }
+ setParameters(KEY_CHOICE_ID, choiceID);
}
/**
* <p>Returns a <I>TriggerSource</I> object which will be shown in the HMI</p>
* @return TriggerSource a TriggerSource object
*/
public TriggerSource getTriggerSource() {
- Object obj = parameters.get(KEY_TRIGGER_SOURCE);
- if (obj instanceof TriggerSource) {
- return (TriggerSource) obj;
- } else if (obj instanceof String) {
- return TriggerSource.valueForString((String) obj);
- }
- return null;
+ return (TriggerSource) getObject(TriggerSource.class, KEY_TRIGGER_SOURCE);
}
/**
* <p>Sets TriggerSource
@@ -71,21 +61,13 @@ public class PerformInteractionResponse extends RPCResponse {
* @param triggerSource a TriggerSource object
*/
public void setTriggerSource( TriggerSource triggerSource ) {
- if (triggerSource != null) {
- parameters.put(KEY_TRIGGER_SOURCE, triggerSource );
- } else {
- parameters.remove(KEY_TRIGGER_SOURCE);
- }
+ setParameters(KEY_TRIGGER_SOURCE, triggerSource);
}
public void setManualTextEntry(String manualTextEntry) {
- if (manualTextEntry != null) {
- parameters.put(KEY_MANUAL_TEXT_ENTRY, manualTextEntry);
- } else {
- parameters.remove(KEY_MANUAL_TEXT_ENTRY);
- }
+ setParameters(KEY_MANUAL_TEXT_ENTRY, manualTextEntry);
}
public String getManualTextEntry() {
- return (String) parameters.get(KEY_MANUAL_TEXT_ENTRY);
+ return getString(KEY_MANUAL_TEXT_ENTRY);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PermissionItem.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PermissionItem.java
index 7776c12b7..59b6a347a 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PermissionItem.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PermissionItem.java
@@ -4,6 +4,7 @@ package com.smartdevicelink.proxy.rpc;
import java.util.Hashtable;
import com.smartdevicelink.proxy.RPCStruct;
+import com.smartdevicelink.proxy.rpc.enums.HMILevel;
import com.smartdevicelink.util.DebugTool;
/**
* Change in permissions for a given set of RPCs
@@ -66,55 +67,23 @@ public class PermissionItem extends RPCStruct {
super(hash);
}
public String getRpcName() {
- return (String) store.get(KEY_RPC_NAME);
+ return getString(KEY_RPC_NAME);
}
public void setRpcName(String rpcName) {
- if (rpcName != null) {
- store.put(KEY_RPC_NAME, rpcName);
- } else {
- store.remove(KEY_RPC_NAME);
- }
+ setValue(KEY_RPC_NAME, rpcName);
}
@SuppressWarnings("unchecked")
public HMIPermissions getHMIPermissions() {
- Object obj = store.get(KEY_HMI_PERMISSIONS);
- if (obj instanceof HMIPermissions) {
- return (HMIPermissions) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new HMIPermissions((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_HMI_PERMISSIONS, e);
- }
- }
- return null;
+ return (HMIPermissions) getObject(HMIPermissions.class, KEY_HMI_PERMISSIONS);
}
public void setHMIPermissions(HMIPermissions hmiPermissions) {
- if (hmiPermissions != null) {
- store.put(KEY_HMI_PERMISSIONS, hmiPermissions);
- } else {
- store.remove(KEY_HMI_PERMISSIONS);
- }
+ setValue(KEY_HMI_PERMISSIONS, hmiPermissions);
}
@SuppressWarnings("unchecked")
public ParameterPermissions getParameterPermissions() {
- Object obj = store.get(KEY_PARAMETER_PERMISSIONS);
- if (obj instanceof ParameterPermissions) {
- return (ParameterPermissions) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new ParameterPermissions((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_PARAMETER_PERMISSIONS, e);
- }
- }
- return null;
+ return (ParameterPermissions) getObject(ParameterPermissions.class, KEY_PARAMETER_PERMISSIONS);
}
public void setParameterPermissions(ParameterPermissions parameterPermissions) {
- if (parameterPermissions != null) {
- store.put(KEY_PARAMETER_PERMISSIONS, parameterPermissions);
- } else {
- store.remove(KEY_PARAMETER_PERMISSIONS);
- }
+ setValue(KEY_PARAMETER_PERMISSIONS, parameterPermissions);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PhoneCapability.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PhoneCapability.java
new file mode 100644
index 000000000..c317e0eb9
--- /dev/null
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PhoneCapability.java
@@ -0,0 +1,27 @@
+package com.smartdevicelink.proxy.rpc;
+
+import com.smartdevicelink.proxy.RPCStruct;
+
+import java.util.Hashtable;
+
+/**
+ * Extended capabilities of the module's phone feature
+ */
+
+public class PhoneCapability extends RPCStruct {
+ public static final String KEY_DIALNUMBER_ENABLED = "dialNumberEnabled";
+
+ public PhoneCapability(){}
+
+ public PhoneCapability(Hashtable<String, Object> hash) {
+ super(hash);
+ }
+
+ public Boolean getDialNumberEnabled(){
+ return getBoolean(KEY_DIALNUMBER_ENABLED);
+ }
+
+ public void setDialNumberEnabled(Boolean dialNumberEnabled){
+ setValue(KEY_DIALNUMBER_ENABLED, dialNumberEnabled);
+ }
+}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PresetBankCapabilities.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PresetBankCapabilities.java
index df28213c7..211586da9 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PresetBankCapabilities.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PresetBankCapabilities.java
@@ -1,9 +1,9 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.proxy.RPCStruct;
+import java.util.Hashtable;
+
/**
* Contains information about on-screen preset capabilities.
* <p><b>Parameter List</b></p>
@@ -45,11 +45,7 @@ public class PresetBankCapabilities extends RPCStruct {
* @param onScreenPresetsAvailable if Onscreen custom presets are available.
*/
public void setOnScreenPresetsAvailable(Boolean onScreenPresetsAvailable) {
- if (onScreenPresetsAvailable != null) {
- store.put(KEY_ON_SCREEN_PRESETS_AVAILABLE, onScreenPresetsAvailable);
- } else {
- store.remove(KEY_ON_SCREEN_PRESETS_AVAILABLE);
- }
+ setValue(KEY_ON_SCREEN_PRESETS_AVAILABLE, onScreenPresetsAvailable);
}
/**
@@ -57,6 +53,6 @@ public class PresetBankCapabilities extends RPCStruct {
* @return if Onscreen custom presets are available
*/
public Boolean onScreenPresetsAvailable() {
- return (Boolean) store.get(KEY_ON_SCREEN_PRESETS_AVAILABLE);
+ return getBoolean(KEY_ON_SCREEN_PRESETS_AVAILABLE);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PutFile.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PutFile.java
index 065ad14d5..a0be90fbd 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PutFile.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PutFile.java
@@ -1,13 +1,13 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.FileType;
import com.smartdevicelink.proxy.rpc.listeners.OnPutFileUpdateListener;
import com.smartdevicelink.proxy.rpc.listeners.OnRPCResponseListener;
+import java.util.Hashtable;
+
/**
* Used to push a binary data onto the SDL module from a mobile device, such as
* icons and album art.
@@ -143,14 +143,10 @@ public class PutFile extends RPCRequest {
* @param sdlFileName
* a String value representing a file reference name
* <p></p>
- * <b>Notes: </b>Maxlength=500
+ * <b>Notes: </b>Maxlength=500, however the max file name length may vary based on remote filesystem limitations
*/
public void setSdlFileName(String sdlFileName) {
- if (sdlFileName != null) {
- parameters.put(KEY_SDL_FILE_NAME, sdlFileName);
- } else {
- parameters.remove(KEY_SDL_FILE_NAME);
- }
+ setParameters(KEY_SDL_FILE_NAME, sdlFileName);
}
/**
@@ -159,7 +155,7 @@ public class PutFile extends RPCRequest {
* @return String - a String value representing a file reference name
*/
public String getSdlFileName() {
- return (String) parameters.get(KEY_SDL_FILE_NAME);
+ return getString(KEY_SDL_FILE_NAME);
}
/**
@@ -169,11 +165,7 @@ public class PutFile extends RPCRequest {
* a FileType value representing a selected file type
*/
public void setFileType(FileType fileType) {
- if (fileType != null) {
- parameters.put(KEY_FILE_TYPE, fileType);
- } else {
- parameters.remove(KEY_FILE_TYPE);
- }
+ setParameters(KEY_FILE_TYPE, fileType);
}
/**
@@ -182,13 +174,7 @@ public class PutFile extends RPCRequest {
* @return FileType -a FileType value representing a selected file type
*/
public FileType getFileType() {
- Object obj = parameters.get(KEY_FILE_TYPE);
- if (obj instanceof FileType) {
- return (FileType) obj;
- } else if (obj instanceof String) {
- return FileType.valueForString((String) obj);
- }
- return null;
+ return (FileType) getObject(FileType.class, KEY_FILE_TYPE);
}
/**
@@ -205,11 +191,7 @@ public class PutFile extends RPCRequest {
* a Boolean value
*/
public void setPersistentFile(Boolean persistentFile) {
- if (persistentFile != null) {
- parameters.put(KEY_PERSISTENT_FILE, persistentFile);
- } else {
- parameters.remove(KEY_PERSISTENT_FILE);
- }
+ setParameters(KEY_PERSISTENT_FILE, persistentFile);
}
/**
@@ -220,7 +202,7 @@ public class PutFile extends RPCRequest {
* persist between sessions / ignition cycles
*/
public Boolean getPersistentFile() {
- return (Boolean) parameters.get(KEY_PERSISTENT_FILE);
+ return getBoolean(KEY_PERSISTENT_FILE);
}
public void setFileData(byte[] fileData) {
setBulkData(fileData);
@@ -242,15 +224,11 @@ public class PutFile extends RPCRequest {
}
public void setOffset(Long offset) {
- if (offset != null) {
- parameters.put(KEY_OFFSET, offset);
- } else {
- parameters.remove(KEY_OFFSET);
- }
+ setParameters(KEY_OFFSET, offset);
}
public Long getOffset() {
- final Object o = parameters.get(KEY_OFFSET);
+ final Object o = getParameters(KEY_OFFSET);
if (o == null){
return null;
}
@@ -277,15 +255,11 @@ public class PutFile extends RPCRequest {
}
public void setLength(Long length) {
- if (length != null) {
- parameters.put(KEY_LENGTH, length);
- } else {
- parameters.remove(KEY_LENGTH);
- }
+ setParameters(KEY_LENGTH, length);
}
public Long getLength() {
- final Object o = parameters.get(KEY_LENGTH);
+ final Object o = getParameters(KEY_LENGTH);
if (o == null){
return null;
}
@@ -299,15 +273,11 @@ public class PutFile extends RPCRequest {
}
public void setSystemFile(Boolean systemFile) {
- if (systemFile != null) {
- parameters.put(KEY_SYSTEM_FILE, systemFile);
- } else {
- parameters.remove(KEY_SYSTEM_FILE);
- }
+ setParameters(KEY_SYSTEM_FILE, systemFile);
}
public Boolean getSystemFile() {
- final Object o = parameters.get(KEY_SYSTEM_FILE);
+ final Object o = getParameters(KEY_SYSTEM_FILE);
if (o instanceof Boolean) {
return (Boolean) o;
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PutFileResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PutFileResponse.java
index b9195981b..87425547a 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PutFileResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PutFileResponse.java
@@ -1,10 +1,10 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import java.util.Hashtable;
+
/**
* Put File Response is sent, when PutFile has been called
*
@@ -32,13 +32,9 @@ public class PutFileResponse extends RPCResponse {
super(hash);
}
public void setSpaceAvailable(Integer spaceAvailable) {
- if (spaceAvailable != null) {
- parameters.put(KEY_SPACE_AVAILABLE, spaceAvailable);
- } else {
- parameters.remove(KEY_SPACE_AVAILABLE);
- }
+ setParameters(KEY_SPACE_AVAILABLE, spaceAvailable);
}
public Integer getSpaceAvailable() {
- return (Integer) parameters.get(KEY_SPACE_AVAILABLE);
+ return getInteger(KEY_SPACE_AVAILABLE);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ReadDID.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ReadDID.java
index 285416881..ec198e54c 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ReadDID.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ReadDID.java
@@ -1,11 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
+import java.util.Hashtable;
+import java.util.List;
+
/**
* <p>Non periodic vehicle data read request. This is an RPC to get diagnostics
* data from certain vehicle modules. DIDs of a certain module might differ from
@@ -98,11 +98,7 @@ public class ReadDID extends RPCRequest {
* <b>Notes: </b>Minvalue:0; Maxvalue:65535
*/
public void setEcuName(Integer ecuName) {
- if (ecuName != null) {
- parameters.put(KEY_ECU_NAME, ecuName);
- } else {
- parameters.remove(KEY_ECU_NAME);
- }
+ setParameters(KEY_ECU_NAME, ecuName);
}
/**
@@ -112,7 +108,7 @@ public class ReadDID extends RPCRequest {
* module
*/
public Integer getEcuName() {
- return (Integer) parameters.get(KEY_ECU_NAME);
+ return getInteger(KEY_ECU_NAME);
}
/**
@@ -129,11 +125,7 @@ public class ReadDID extends RPCRequest {
* </ul>
*/
public void setDidLocation(List<Integer> didLocation) {
- if (didLocation != null) {
- parameters.put(KEY_DID_LOCATION, didLocation);
- } else {
- parameters.remove(KEY_DID_LOCATION);
- }
+ setParameters(KEY_DID_LOCATION, didLocation);
}
/**
@@ -144,15 +136,6 @@ public class ReadDID extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<Integer> getDidLocation() {
- if (parameters.get(KEY_DID_LOCATION) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_DID_LOCATION);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof Integer) {
- return (List<Integer>) list;
- }
- }
- }
- return null;
+ return (List<Integer>) getObject(Integer.class, KEY_DID_LOCATION);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ReadDIDResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ReadDIDResponse.java
index b21395b48..e0633198c 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ReadDIDResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ReadDIDResponse.java
@@ -1,12 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import java.util.Hashtable;
+import java.util.List;
+
/**
* Read DID Response is sent, when ReadDID has been called
*
@@ -22,29 +21,10 @@ public class ReadDIDResponse extends RPCResponse {
super(hash);
}
public void setDidResult(List<DIDResult> didResult) {
- if (didResult != null) {
- parameters.put(KEY_DID_RESULT, didResult);
- } else {
- parameters.remove(KEY_DID_RESULT);
- }
+ setParameters(KEY_DID_RESULT, didResult);
}
@SuppressWarnings("unchecked")
public List<DIDResult> getDidResult() {
- if (parameters.get(KEY_DID_RESULT) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_DID_RESULT);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof DIDResult) {
- return (List<DIDResult>) list;
- } else if (obj instanceof Hashtable) {
- List<DIDResult> newList = new ArrayList<DIDResult>();
- for (Object hashObj : list) {
- newList.add(new DIDResult((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<DIDResult>) getObject(DIDResult.class, KEY_DID_RESULT);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Rectangle.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Rectangle.java
new file mode 100644
index 000000000..e0d50e073
--- /dev/null
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Rectangle.java
@@ -0,0 +1,109 @@
+package com.smartdevicelink.proxy.rpc;
+
+import com.smartdevicelink.proxy.RPCStruct;
+
+import java.util.Hashtable;
+/*
+ * Copyright (c) 2017 Livio, 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 Livio 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.
+ */
+
+/**
+ * Defines Rectangle for each user control object for video streaming application
+ * @since SmartDeviceLink 4.5.0
+ */
+
+public class Rectangle extends RPCStruct {
+ public static final String KEY_X = "x";
+ public static final String KEY_Y = "y";
+ public static final String KEY_WIDTH = "width";
+ public static final String KEY_HEIGHT = "height";
+
+ public Rectangle() {}
+ public Rectangle(Hashtable<String, Object> hash) {
+ super(hash);
+ }
+
+ /**
+ * Set the X-coordinate pixel in of the user control that starts in the upper left corner
+ */
+ public void setX(Float x) {
+ setValue(KEY_X, x);
+ }
+
+ /**
+ * @return the X-coordinate pixel of the user control that starts in the upper left corner
+ */
+ public Float getX() {
+ return getFloat(KEY_X);
+ }
+
+ /**
+ * Set the Y-coordinate pixel of the user control that starts in the upper left corner
+ */
+ public void setY(Float y) {
+ setValue(KEY_Y, y);
+ }
+
+ /**
+ * @return the Y-coordinate pixel of the user control that starts in the upper left corner
+ */
+ public Float getY() {
+ return getFloat(KEY_Y);
+ }
+
+ /**
+ * Set the width in pixels of the user control's bounding rectangle in pixels
+ */
+ public void setWidth(Float width) {
+ setValue(KEY_WIDTH, width);
+ }
+
+ /**
+ * @return the width in pixels of the user control's bounding rectangle in pixels
+ */
+ public Float getWidth() {
+ return getFloat(KEY_WIDTH);
+ }
+
+ /**
+ * The height in pixels of the user control's bounding rectangle
+ */
+ public void setHeight(Float height) {
+ setValue(KEY_HEIGHT, height);
+ }
+
+ /**
+ * @return the width in pixels of the user control's bounding rectangle in pixels
+ */
+ public Float getHeight() {
+ return getFloat(KEY_HEIGHT);
+ }
+}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RegisterAppInterface.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RegisterAppInterface.java
index 99bcba01a..0f02ecca0 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RegisterAppInterface.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RegisterAppInterface.java
@@ -1,13 +1,12 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.AppHMIType;
import com.smartdevicelink.proxy.rpc.enums.Language;
+
+import java.util.Hashtable;
+import java.util.List;
/**
* Registers the application's interface with SDL&reg;, declaring properties of
* the registration, including the messaging interface version, the app name,
@@ -252,13 +251,7 @@ public class RegisterAppInterface extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public SdlMsgVersion getSdlMsgVersion() {
- Object obj = parameters.get(KEY_SDL_MSG_VERSION);
- if (obj instanceof SdlMsgVersion) {
- return (SdlMsgVersion) obj;
- } else if (obj instanceof Hashtable) {
- return new SdlMsgVersion((Hashtable<String, Object>) obj);
- }
- return null;
+ return (SdlMsgVersion) getObject(SdlMsgVersion.class, KEY_SDL_MSG_VERSION);
}
/**
* Sets the version of the SDL&reg; SmartDeviceLink interface
@@ -280,30 +273,16 @@ public class RegisterAppInterface extends RPCRequest {
* request) is ignored by SDL&reg;
*/
public void setSdlMsgVersion(SdlMsgVersion sdlMsgVersion) {
- if (sdlMsgVersion != null) {
- parameters.put(KEY_SDL_MSG_VERSION, sdlMsgVersion);
- } else {
- parameters.remove(KEY_SDL_MSG_VERSION);
- }
+ setParameters(KEY_SDL_MSG_VERSION, sdlMsgVersion);
}
@SuppressWarnings("unchecked")
public DeviceInfo getDeviceInfo() {
- Object obj = parameters.get(KEY_DEVICE_INFO);
- if (obj instanceof DeviceInfo) {
- return (DeviceInfo) obj;
- } else if (obj instanceof Hashtable) {
- return new DeviceInfo((Hashtable<String, Object>) obj);
- }
- return null;
+ return (DeviceInfo) getObject(DeviceInfo.class, KEY_DEVICE_INFO);
}
public void setDeviceInfo(DeviceInfo deviceInfo) {
- if (deviceInfo != null) {
- parameters.put(KEY_DEVICE_INFO, deviceInfo);
- } else {
- parameters.remove(KEY_DEVICE_INFO);
- }
+ setParameters(KEY_DEVICE_INFO, deviceInfo);
}
/**
* Gets Mobile Application's Name
@@ -311,7 +290,7 @@ public class RegisterAppInterface extends RPCRequest {
* @return String -a String representing the Mobile Application's Name
*/
public String getAppName() {
- return (String) parameters.get(KEY_APP_NAME);
+ return getString(KEY_APP_NAME);
}
/**
* Sets Mobile Application's Name, This name is displayed in the SDL&reg;
@@ -330,11 +309,7 @@ public class RegisterAppInterface extends RPCRequest {
* </ul>
*/
public void setAppName(String appName) {
- if (appName != null) {
- parameters.put(KEY_APP_NAME, appName);
- } else {
- parameters.remove(KEY_APP_NAME);
- }
+ setParameters(KEY_APP_NAME, appName);
}
/**
@@ -345,22 +320,7 @@ public class RegisterAppInterface extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<TTSChunk> getTtsName() {
- if (parameters.get(KEY_TTS_NAME) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_TTS_NAME);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof TTSChunk) {
- return (List<TTSChunk>) list;
- } else if (obj instanceof Hashtable) {
- List<TTSChunk> newList = new ArrayList<TTSChunk>();
- for (Object hashObj : list) {
- newList.add(new TTSChunk((Hashtable<String, Object>) hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<TTSChunk>) getObject(TTSChunk.class, KEY_TTS_NAME);
}
/**
@@ -382,11 +342,7 @@ public class RegisterAppInterface extends RPCRequest {
* @since SmartDeviceLink 2.0
*/
public void setTtsName(List<TTSChunk> ttsName) {
- if (ttsName != null) {
- parameters.put(KEY_TTS_NAME, ttsName);
- } else {
- parameters.remove(KEY_TTS_NAME);
- }
+ setParameters(KEY_TTS_NAME, ttsName);
}
/**
* Gets a String representing an abbreviated version of the mobile
@@ -397,7 +353,7 @@ public class RegisterAppInterface extends RPCRequest {
* mobile applincation's name
*/
public String getNgnMediaScreenAppName() {
- return (String) parameters.get(KEY_NGN_MEDIA_SCREEN_APP_NAME);
+ return getString(KEY_NGN_MEDIA_SCREEN_APP_NAME);
}
/**
* Sets a String representing an abbreviated version of the mobile
@@ -416,11 +372,7 @@ public class RegisterAppInterface extends RPCRequest {
* </ul>
*/
public void setNgnMediaScreenAppName(String ngnMediaScreenAppName) {
- if (ngnMediaScreenAppName != null) {
- parameters.put(KEY_NGN_MEDIA_SCREEN_APP_NAME, ngnMediaScreenAppName);
- } else {
- parameters.remove(KEY_NGN_MEDIA_SCREEN_APP_NAME);
- }
+ setParameters(KEY_NGN_MEDIA_SCREEN_APP_NAME, ngnMediaScreenAppName);
}
/**
* Gets the List<String> representing the an array of 1-100 elements, each
@@ -432,16 +384,7 @@ public class RegisterAppInterface extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<String> getVrSynonyms() {
- if (parameters.get(KEY_VR_SYNONYMS) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_VR_SYNONYMS);
- if (list != null && list.size()>0) {
- Object obj = list.get(0);
- if (obj instanceof String) {
- return (List<String>) list;
- }
- }
- }
- return null;
+ return (List<String>) getObject(String.class, KEY_VR_SYNONYMS);
}
/**
* Sets a vrSynonyms representing the an array of 1-100 elements, each
@@ -461,11 +404,7 @@ public class RegisterAppInterface extends RPCRequest {
* </ul>
*/
public void setVrSynonyms(List<String> vrSynonyms) {
- if (vrSynonyms != null) {
- parameters.put(KEY_VR_SYNONYMS, vrSynonyms);
- } else {
- parameters.remove(KEY_VR_SYNONYMS);
- }
+ setParameters(KEY_VR_SYNONYMS, vrSynonyms);
}
/**
* Gets a Boolean representing MediaApplication
@@ -474,7 +413,7 @@ public class RegisterAppInterface extends RPCRequest {
* a media application or not
*/
public Boolean getIsMediaApplication() {
- return (Boolean) parameters.get(KEY_IS_MEDIA_APPLICATION);
+ return getBoolean(KEY_IS_MEDIA_APPLICATION);
}
/**
* Sets a Boolean to indicate a mobile application that is a media
@@ -484,11 +423,7 @@ public class RegisterAppInterface extends RPCRequest {
* a Boolean value
*/
public void setIsMediaApplication(Boolean isMediaApplication) {
- if (isMediaApplication != null) {
- parameters.put(KEY_IS_MEDIA_APPLICATION, isMediaApplication);
- } else {
- parameters.remove(KEY_IS_MEDIA_APPLICATION);
- }
+ setParameters(KEY_IS_MEDIA_APPLICATION, isMediaApplication);
}
/**
* Gets a Language enumeration indicating what language the application
@@ -497,13 +432,7 @@ public class RegisterAppInterface extends RPCRequest {
* @return Enumeration -a language enumeration
*/
public Language getLanguageDesired() {
- Object obj = parameters.get(KEY_LANGUAGE_DESIRED);
- if (obj instanceof Language) {
- return (Language) obj;
- } else if (obj instanceof String) {
- return Language.valueForString((String) obj);
- }
- return null;
+ return (Language) getObject(Language.class, KEY_LANGUAGE_DESIRED);
}
/**
* Sets an enumeration indicating what language the application intends to
@@ -515,11 +444,7 @@ public class RegisterAppInterface extends RPCRequest {
*
*/
public void setLanguageDesired(Language languageDesired) {
- if (languageDesired != null) {
- parameters.put(KEY_LANGUAGE_DESIRED, languageDesired);
- } else {
- parameters.remove(KEY_LANGUAGE_DESIRED);
- }
+ setParameters(KEY_LANGUAGE_DESIRED, languageDesired);
}
/**
@@ -532,13 +457,7 @@ public class RegisterAppInterface extends RPCRequest {
* @since SmartDeviceLink 2.0
*/
public Language getHmiDisplayLanguageDesired() {
- Object obj = parameters.get(KEY_HMI_DISPLAY_LANGUAGE_DESIRED);
- if (obj instanceof Language) {
- return (Language) obj;
- } else if (obj instanceof String) {
- return Language.valueForString((String) obj);
- }
- return null;
+ return (Language) getObject(Language.class, KEY_HMI_DISPLAY_LANGUAGE_DESIRED);
}
/**
@@ -549,11 +468,7 @@ public class RegisterAppInterface extends RPCRequest {
* @since SmartDeviceLink 2.0
*/
public void setHmiDisplayLanguageDesired(Language hmiDisplayLanguageDesired) {
- if (hmiDisplayLanguageDesired != null) {
- parameters.put(KEY_HMI_DISPLAY_LANGUAGE_DESIRED, hmiDisplayLanguageDesired);
- } else {
- parameters.remove(KEY_HMI_DISPLAY_LANGUAGE_DESIRED);
- }
+ setParameters(KEY_HMI_DISPLAY_LANGUAGE_DESIRED, hmiDisplayLanguageDesired);
}
/**
@@ -568,26 +483,7 @@ public class RegisterAppInterface extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<AppHMIType> getAppHMIType() {
- if (parameters.get(KEY_APP_HMI_TYPE) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_APP_HMI_TYPE);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof AppHMIType) {
- return (List<AppHMIType>) list;
- } else if (obj instanceof String) {
- List<AppHMIType> newList = new ArrayList<AppHMIType>();
- for (Object hashObj : list) {
- String strFormat = (String)hashObj;
- AppHMIType toAdd = AppHMIType.valueForString(strFormat);
- if (toAdd != null) {
- newList.add(toAdd);
- }
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<AppHMIType>) getObject(AppHMIType.class, KEY_APP_HMI_TYPE);
}
/**
@@ -606,23 +502,15 @@ public class RegisterAppInterface extends RPCRequest {
* @since SmartDeviceLink 2.0
*/
public void setAppHMIType(List<AppHMIType> appHMIType) {
- if (appHMIType != null) {
- parameters.put(KEY_APP_HMI_TYPE, appHMIType);
- } else {
- parameters.remove(KEY_APP_HMI_TYPE);
- }
+ setParameters(KEY_APP_HMI_TYPE, appHMIType);
}
public String getHashID() {
- return (String) parameters.get(KEY_HASH_ID);
+ return getString(KEY_HASH_ID);
}
public void setHashID(String hashID) {
- if (hashID != null) {
- parameters.put(KEY_HASH_ID, hashID);
- } else {
- parameters.remove(KEY_HASH_ID);
- }
+ setParameters(KEY_HASH_ID, hashID);
}
/**
@@ -633,7 +521,7 @@ public class RegisterAppInterface extends RPCRequest {
* @since SmartDeviceLink 2.0
*/
public String getAppID() {
- return (String) parameters.get(KEY_APP_ID);
+ return getString(KEY_APP_ID);
}
/**
@@ -647,10 +535,6 @@ public class RegisterAppInterface extends RPCRequest {
* @since SmartDeviceLink 2.0
*/
public void setAppID(String appID) {
- if (appID != null) {
- parameters.put(KEY_APP_ID, appID);
- } else {
- parameters.remove(KEY_APP_ID);
- }
+ setParameters(KEY_APP_ID, appID);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RegisterAppInterfaceResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RegisterAppInterfaceResponse.java
index f89e1a8b8..df5c3f531 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RegisterAppInterfaceResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RegisterAppInterfaceResponse.java
@@ -1,9 +1,5 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
import com.smartdevicelink.proxy.Version;
@@ -13,6 +9,9 @@ import com.smartdevicelink.proxy.rpc.enums.PrerecordedSpeech;
import com.smartdevicelink.proxy.rpc.enums.SpeechCapabilities;
import com.smartdevicelink.proxy.rpc.enums.VrCapabilities;
+import java.util.Hashtable;
+import java.util.List;
+
/**
* Register AppInterface Response is sent, when RegisterAppInterface has been called
*
@@ -65,13 +64,7 @@ public class RegisterAppInterfaceResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public SdlMsgVersion getSdlMsgVersion() {
- Object obj = parameters.get(KEY_SDL_MSG_VERSION);
- if (obj instanceof SdlMsgVersion) {
- return (SdlMsgVersion)obj;
- } else if (obj instanceof Hashtable) {
- return new SdlMsgVersion((Hashtable<String, Object>)obj);
- }
- return null;
+ return (SdlMsgVersion) getObject(SdlMsgVersion.class, KEY_SDL_MSG_VERSION);
}
/**
@@ -94,11 +87,7 @@ public class RegisterAppInterfaceResponse extends RPCResponse {
* request) is ignored by SDL&reg;
*/
public void setSdlMsgVersion(SdlMsgVersion sdlMsgVersion) {
- if (sdlMsgVersion != null) {
- parameters.put(KEY_SDL_MSG_VERSION, sdlMsgVersion);
- } else {
- parameters.remove(KEY_SDL_MSG_VERSION);
- }
+ setParameters(KEY_SDL_MSG_VERSION, sdlMsgVersion);
}
/**
@@ -108,13 +97,7 @@ public class RegisterAppInterfaceResponse extends RPCResponse {
* @return Enumeration -a language enumeration
*/
public Language getLanguage() {
- Object obj = parameters.get(KEY_LANGUAGE);
- if (obj instanceof Language) {
- return (Language) obj;
- } else if (obj instanceof String) {
- return Language.valueForString((String) obj);
- }
- return null;
+ return (Language) getObject(Language.class, KEY_LANGUAGE);
}
/**
@@ -127,11 +110,7 @@ public class RegisterAppInterfaceResponse extends RPCResponse {
*
*/
public void setLanguage(Language language) {
- if (language != null) {
- parameters.put(KEY_LANGUAGE, language);
- } else {
- parameters.remove(KEY_LANGUAGE);
- }
+ setParameters(KEY_LANGUAGE, language);
}
/**
@@ -144,13 +123,7 @@ public class RegisterAppInterfaceResponse extends RPCResponse {
* @since SmartDeviceLink 2.0
*/
public Language getHmiDisplayLanguage() {
- Object obj = parameters.get(KEY_HMI_DISPLAY_LANGUAGE);
- if (obj instanceof Language) {
- return (Language) obj;
- } else if (obj instanceof String) {
- return Language.valueForString((String) obj);
- }
- return null;
+ return (Language) getObject(Language.class, KEY_HMI_DISPLAY_LANGUAGE);
}
/**
@@ -161,11 +134,7 @@ public class RegisterAppInterfaceResponse extends RPCResponse {
* @since SmartDeviceLink 2.0
*/
public void setHmiDisplayLanguage(Language hmiDisplayLanguage) {
- if (hmiDisplayLanguage != null) {
- parameters.put(KEY_HMI_DISPLAY_LANGUAGE, hmiDisplayLanguage);
- } else {
- parameters.remove(KEY_HMI_DISPLAY_LANGUAGE);
- }
+ setParameters(KEY_HMI_DISPLAY_LANGUAGE, hmiDisplayLanguage);
}
/**
@@ -175,24 +144,14 @@ public class RegisterAppInterfaceResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public DisplayCapabilities getDisplayCapabilities() {
- Object obj = parameters.get(KEY_DISPLAY_CAPABILITIES);
- if (obj instanceof DisplayCapabilities) {
- return (DisplayCapabilities)obj;
- } else if (obj instanceof Hashtable) {
- return new DisplayCapabilities((Hashtable<String, Object>)obj);
- }
- return null;
+ return (DisplayCapabilities) getObject(DisplayCapabilities.class, KEY_DISPLAY_CAPABILITIES);
}
/**
* Sets Display Capabilities
* @param displayCapabilities
*/
public void setDisplayCapabilities(DisplayCapabilities displayCapabilities) {
- if (displayCapabilities != null) {
- parameters.put(KEY_DISPLAY_CAPABILITIES, displayCapabilities);
- } else {
- parameters.remove(KEY_DISPLAY_CAPABILITIES);
- }
+ setParameters(KEY_DISPLAY_CAPABILITIES, displayCapabilities);
}
/**
@@ -202,33 +161,14 @@ public class RegisterAppInterfaceResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public List<ButtonCapabilities> getButtonCapabilities() {
- if (parameters.get(KEY_BUTTON_CAPABILITIES) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_BUTTON_CAPABILITIES);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof ButtonCapabilities) {
- return (List<ButtonCapabilities>) list;
- } else if (obj instanceof Hashtable) {
- List<ButtonCapabilities> newList = new ArrayList<ButtonCapabilities>();
- for (Object hashObj : list) {
- newList.add(new ButtonCapabilities((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<ButtonCapabilities>) getObject(ButtonCapabilities.class, KEY_BUTTON_CAPABILITIES);
}
/**
* Sets Button Capabilities
* @param buttonCapabilities
*/
public void setButtonCapabilities(List<ButtonCapabilities> buttonCapabilities) {
- if (buttonCapabilities != null) {
- parameters.put(KEY_BUTTON_CAPABILITIES, buttonCapabilities);
- } else {
- parameters.remove(KEY_BUTTON_CAPABILITIES);
- }
+ setParameters(KEY_BUTTON_CAPABILITIES, buttonCapabilities);
}
/**
* Gets getSoftButtonCapabilities set when application interface is registered.
@@ -237,33 +177,14 @@ public class RegisterAppInterfaceResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public List<SoftButtonCapabilities> getSoftButtonCapabilities() {
- if (parameters.get(KEY_SOFT_BUTTON_CAPABILITIES) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_SOFT_BUTTON_CAPABILITIES);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof SoftButtonCapabilities) {
- return (List<SoftButtonCapabilities>) list;
- } else if (obj instanceof Hashtable) {
- List<SoftButtonCapabilities> newList = new ArrayList<SoftButtonCapabilities>();
- for (Object hashObj : list) {
- newList.add(new SoftButtonCapabilities((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<SoftButtonCapabilities>) getObject(SoftButtonCapabilities.class, KEY_SOFT_BUTTON_CAPABILITIES);
}
/**
* Sets softButtonCapabilities
* @param softButtonCapabilities
*/
public void setSoftButtonCapabilities(List<SoftButtonCapabilities> softButtonCapabilities) {
- if (softButtonCapabilities != null) {
- parameters.put(KEY_SOFT_BUTTON_CAPABILITIES, softButtonCapabilities);
- } else {
- parameters.remove(KEY_SOFT_BUTTON_CAPABILITIES);
- }
+ setParameters(KEY_SOFT_BUTTON_CAPABILITIES, softButtonCapabilities);
}
/**
@@ -273,24 +194,14 @@ public class RegisterAppInterfaceResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public PresetBankCapabilities getPresetBankCapabilities() {
- Object obj = parameters.get(KEY_PRESET_BANK_CAPABILITIES);
- if (obj instanceof PresetBankCapabilities) {
- return (PresetBankCapabilities)obj;
- } else if (obj instanceof Hashtable) {
- return new PresetBankCapabilities((Hashtable<String, Object>)obj);
- }
- return null;
+ return (PresetBankCapabilities) getObject(PresetBankCapabilities.class, KEY_PRESET_BANK_CAPABILITIES);
}
/**
* Sets presetBankCapabilities
* @param presetBankCapabilities
*/
public void setPresetBankCapabilities(PresetBankCapabilities presetBankCapabilities) {
- if (presetBankCapabilities != null) {
- parameters.put(KEY_PRESET_BANK_CAPABILITIES, presetBankCapabilities);
- } else {
- parameters.remove(KEY_PRESET_BANK_CAPABILITIES);
- }
+ setParameters(KEY_PRESET_BANK_CAPABILITIES, presetBankCapabilities);
}
/**
@@ -300,37 +211,14 @@ public class RegisterAppInterfaceResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public List<HmiZoneCapabilities> getHmiZoneCapabilities() {
- if (parameters.get(KEY_HMI_ZONE_CAPABILITIES) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_HMI_ZONE_CAPABILITIES);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof HmiZoneCapabilities) {
- return (List<HmiZoneCapabilities>) list;
- } else if (obj instanceof String) {
- List<HmiZoneCapabilities> newList = new ArrayList<HmiZoneCapabilities>();
- for (Object hashObj : list) {
- String strFormat = (String)hashObj;
- HmiZoneCapabilities toAdd = HmiZoneCapabilities.valueForString(strFormat);
- if (toAdd != null) {
- newList.add(toAdd);
- }
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<HmiZoneCapabilities>) getObject(HmiZoneCapabilities.class, KEY_HMI_ZONE_CAPABILITIES);
}
/**
* Sets hmiZoneCapabilities
* @param hmiZoneCapabilities
*/
public void setHmiZoneCapabilities(List<HmiZoneCapabilities> hmiZoneCapabilities) {
- if (hmiZoneCapabilities != null) {
- parameters.put(KEY_HMI_ZONE_CAPABILITIES, hmiZoneCapabilities);
- } else {
- parameters.remove(KEY_HMI_ZONE_CAPABILITIES);
- }
+ setParameters(KEY_HMI_ZONE_CAPABILITIES, hmiZoneCapabilities);
}
/**
@@ -340,70 +228,24 @@ public class RegisterAppInterfaceResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public List<SpeechCapabilities> getSpeechCapabilities() {
- if (parameters.get(KEY_SPEECH_CAPABILITIES) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_SPEECH_CAPABILITIES);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof SpeechCapabilities) {
- return (List<SpeechCapabilities>) list;
- } else if (obj instanceof String) {
- List<SpeechCapabilities> newList = new ArrayList<SpeechCapabilities>();
- for (Object hashObj : list) {
- String strFormat = (String)hashObj;
- SpeechCapabilities toAdd = SpeechCapabilities.valueForString(strFormat);
- if (toAdd != null) {
- newList.add(toAdd);
- }
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<SpeechCapabilities>) getObject(SpeechCapabilities.class, KEY_SPEECH_CAPABILITIES);
}
/**
* Sets speechCapabilities
* @param speechCapabilities
*/
public void setSpeechCapabilities(List<SpeechCapabilities> speechCapabilities) {
- if (speechCapabilities != null) {
- parameters.put(KEY_SPEECH_CAPABILITIES, speechCapabilities);
- } else {
- parameters.remove(KEY_SPEECH_CAPABILITIES);
- }
+ setParameters(KEY_SPEECH_CAPABILITIES, speechCapabilities);
}
@SuppressWarnings("unchecked")
public List<PrerecordedSpeech> getPrerecordedSpeech() {
- if (parameters.get(KEY_PRERECORDED_SPEECH) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_PRERECORDED_SPEECH);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof PrerecordedSpeech) {
- return (List<PrerecordedSpeech>) list;
- } else if (obj instanceof String) {
- List<PrerecordedSpeech> newList = new ArrayList<PrerecordedSpeech>();
- for (Object hashObj : list) {
- String strFormat = (String)hashObj;
- PrerecordedSpeech toAdd = PrerecordedSpeech.valueForString(strFormat);
- if (toAdd != null) {
- newList.add(toAdd);
- }
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<PrerecordedSpeech>) getObject(PrerecordedSpeech.class, KEY_PRERECORDED_SPEECH);
}
public void setPrerecordedSpeech(List<PrerecordedSpeech> prerecordedSpeech) {
- if (prerecordedSpeech != null) {
- parameters.put(KEY_PRERECORDED_SPEECH, prerecordedSpeech);
- } else {
- parameters.remove(KEY_PRERECORDED_SPEECH);
- }
+ setParameters(KEY_PRERECORDED_SPEECH, prerecordedSpeech);
}
@@ -414,37 +256,14 @@ public class RegisterAppInterfaceResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public List<VrCapabilities> getVrCapabilities() {
- if (parameters.get(KEY_VR_CAPABILITIES) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_VR_CAPABILITIES);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof VrCapabilities) {
- return (List<VrCapabilities>) list;
- } else if (obj instanceof String) {
- List<VrCapabilities> newList = new ArrayList<VrCapabilities>();
- for (Object hashObj : list) {
- String strFormat = (String)hashObj;
- VrCapabilities toAdd = VrCapabilities.valueForString(strFormat);
- if (toAdd != null) {
- newList.add(toAdd);
- }
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<VrCapabilities>) getObject(VrCapabilities.class, KEY_VR_CAPABILITIES);
}
/**
* Sets VrCapabilities
* @param vrCapabilities
*/
public void setVrCapabilities(List<VrCapabilities> vrCapabilities) {
- if (vrCapabilities != null) {
- parameters.put(KEY_VR_CAPABILITIES, vrCapabilities);
- } else {
- parameters.remove(KEY_VR_CAPABILITIES);
- }
+ setParameters(KEY_VR_CAPABILITIES, vrCapabilities);
}
/**
@@ -454,24 +273,14 @@ public class RegisterAppInterfaceResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleType getVehicleType() {
- Object obj = parameters.get(KEY_VEHICLE_TYPE);
- if (obj instanceof VehicleType) {
- return (VehicleType)obj;
- } else if (obj instanceof Hashtable) {
- return new VehicleType((Hashtable<String, Object>)obj);
- }
- return null;
+ return (VehicleType) getObject(VehicleType.class, KEY_VEHICLE_TYPE);
}
/**
* Sets vehicleType
* @param vehicleType
*/
public void setVehicleType(VehicleType vehicleType) {
- if (vehicleType != null) {
- parameters.put(KEY_VEHICLE_TYPE, vehicleType);
- } else {
- parameters.remove(KEY_VEHICLE_TYPE);
- }
+ setParameters(KEY_VEHICLE_TYPE, vehicleType);
}
/**
@@ -481,33 +290,14 @@ public class RegisterAppInterfaceResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public List<AudioPassThruCapabilities> getAudioPassThruCapabilities() {
- if (parameters.get(KEY_AUDIO_PASS_THRU_CAPABILITIES) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_AUDIO_PASS_THRU_CAPABILITIES);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof AudioPassThruCapabilities) {
- return (List<AudioPassThruCapabilities>) list;
- } else if (obj instanceof Hashtable) {
- List<AudioPassThruCapabilities> newList = new ArrayList<AudioPassThruCapabilities>();
- for (Object hashObj : list) {
- newList.add(new AudioPassThruCapabilities((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<AudioPassThruCapabilities>) getObject(AudioPassThruCapabilities.class, KEY_AUDIO_PASS_THRU_CAPABILITIES);
}
/**
* Sets AudioPassThruCapabilities
* @param audioPassThruCapabilities
*/
public void setAudioPassThruCapabilities(List<AudioPassThruCapabilities> audioPassThruCapabilities) {
- if (audioPassThruCapabilities != null) {
- parameters.put(KEY_AUDIO_PASS_THRU_CAPABILITIES, audioPassThruCapabilities);
- } else {
- parameters.remove(KEY_AUDIO_PASS_THRU_CAPABILITIES);
- }
+ setParameters(KEY_AUDIO_PASS_THRU_CAPABILITIES, audioPassThruCapabilities);
}
public String getProxyVersionInfo() {
if (Version.VERSION != null)
@@ -516,70 +306,36 @@ public class RegisterAppInterfaceResponse extends RPCResponse {
return null;
}
public void setSupportedDiagModes(List<Integer> supportedDiagModes) {
- if (supportedDiagModes != null) {
- parameters.put(KEY_SUPPORTED_DIAG_MODES, supportedDiagModes);
- }
- else
- {
- parameters.remove(KEY_SUPPORTED_DIAG_MODES);
- }
+ setParameters(KEY_SUPPORTED_DIAG_MODES, supportedDiagModes);
}
@SuppressWarnings("unchecked")
public List<Integer> getSupportedDiagModes() {
-
- if (parameters.get(KEY_SUPPORTED_DIAG_MODES) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get( KEY_SUPPORTED_DIAG_MODES);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof Integer) {
- return (List<Integer>) list;
- }
- }
- }
- return null;
+ return (List<Integer>) getObject(Integer.class, KEY_SUPPORTED_DIAG_MODES);
}
public void setHmiCapabilities(HMICapabilities hmiCapabilities) {
- if (hmiCapabilities != null) {
- parameters.put(KEY_HMI_CAPABILITIES, hmiCapabilities);
- }else{
- parameters.remove(KEY_HMI_CAPABILITIES);
- }
+ setParameters(KEY_HMI_CAPABILITIES, hmiCapabilities);
}
@SuppressWarnings("unchecked")
public HMICapabilities getHmiCapabilities() {
- Object obj = parameters.get(KEY_HMI_CAPABILITIES);
- if (obj instanceof HMICapabilities) {
- return (HMICapabilities)obj;
- } else if (obj instanceof Hashtable) {
- return new HMICapabilities((Hashtable<String, Object>)obj);
- }
- return null;
+ return (HMICapabilities) getObject(HMICapabilities.class, KEY_HMI_CAPABILITIES);
}
public void setSdlVersion(String sdlVersion) {
- if (sdlVersion != null) {
- parameters.put(KEY_SDL_VERSION, sdlVersion);
- }else{
- parameters.remove(KEY_SDL_VERSION);
- }
+ setParameters(KEY_SDL_VERSION, sdlVersion);
}
public String getSdlVersion() {
- return (String) parameters.get(KEY_SDL_VERSION);
+ return getString(KEY_SDL_VERSION);
}
public void setSystemSoftwareVersion(String systemSoftwareVersion) {
- if (systemSoftwareVersion != null) {
- parameters.put(KEY_SYSTEM_SOFTWARE_VERSION, systemSoftwareVersion);
- }else{
- parameters.remove(KEY_SYSTEM_SOFTWARE_VERSION);
- }
+ setParameters(KEY_SYSTEM_SOFTWARE_VERSION, systemSoftwareVersion);
}
public String getSystemSoftwareVersion() {
- return (String) parameters.get(KEY_SYSTEM_SOFTWARE_VERSION);
+ return getString(KEY_SYSTEM_SOFTWARE_VERSION);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ResetGlobalProperties.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ResetGlobalProperties.java
index 4a9f18d7f..664eb33a9 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ResetGlobalProperties.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ResetGlobalProperties.java
@@ -1,12 +1,12 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.GlobalProperty;
+
+import java.util.Hashtable;
+import java.util.List;
+
/**
* Resets the passed global properties to their default values as defined by
* SDL
@@ -85,26 +85,7 @@ public class ResetGlobalProperties extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<GlobalProperty> getProperties() {
- if (parameters.get(KEY_PROPERTIES) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_PROPERTIES);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof GlobalProperty) {
- return (List<GlobalProperty>) list;
- } else if (obj instanceof String) {
- List<GlobalProperty> newList = new ArrayList<GlobalProperty>();
- for (Object hashObj : list) {
- String strFormat = (String)hashObj;
- GlobalProperty toAdd = GlobalProperty.valueForString(strFormat);
- if (toAdd != null) {
- newList.add(toAdd);
- }
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<GlobalProperty>) getObject(GlobalProperty.class, KEY_PROPERTIES);
}
/**
* Sets an array of one or more GlobalProperty enumeration elements
@@ -118,10 +99,6 @@ public class ResetGlobalProperties extends RPCRequest {
* <b>Notes: </b>Array must have at least one element
*/
public void setProperties( List<GlobalProperty> properties ) {
- if (properties != null) {
- parameters.put(KEY_PROPERTIES, properties );
- } else {
- parameters.remove(KEY_PROPERTIES);
- }
+ setParameters(KEY_PROPERTIES, properties);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScreenParams.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScreenParams.java
index fe2c626a0..a821264e6 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScreenParams.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScreenParams.java
@@ -1,11 +1,8 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.proxy.RPCStruct;
-import com.smartdevicelink.proxy.rpc.ImageResolution;
-import com.smartdevicelink.proxy.rpc.TouchEventCapabilities;
-import com.smartdevicelink.util.DebugTool;
+
+import java.util.Hashtable;
/** The resolution of the prescribed screen area.
*
* <p><b>Parameter List</b></p>
@@ -64,46 +61,16 @@ public class ScreenParams extends RPCStruct {
@SuppressWarnings("unchecked")
public ImageResolution getImageResolution() {
- Object obj = store.get(KEY_RESOLUTION);
- if (obj instanceof ImageResolution) {
- return (ImageResolution) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new ImageResolution((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_RESOLUTION, e);
- }
- }
- return null;
+ return (ImageResolution) getObject(ImageResolution.class, KEY_RESOLUTION);
}
public void setImageResolution( ImageResolution resolution ) {
- if (resolution != null) {
- store.put(KEY_RESOLUTION, resolution );
- }
- else {
- store.remove(KEY_RESOLUTION);
- }
+ setValue(KEY_RESOLUTION, resolution);
}
@SuppressWarnings("unchecked")
public TouchEventCapabilities getTouchEventAvailable() {
- Object obj = store.get(KEY_TOUCH_EVENT_AVAILABLE);
- if (obj instanceof TouchEventCapabilities) {
- return (TouchEventCapabilities) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new TouchEventCapabilities((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_TOUCH_EVENT_AVAILABLE, e);
- }
- }
- return null;
+ return (TouchEventCapabilities) getObject(TouchEventCapabilities.class, KEY_TOUCH_EVENT_AVAILABLE);
}
public void setTouchEventAvailable( TouchEventCapabilities touchEventAvailable ) {
- if (touchEventAvailable != null) {
- store.put(KEY_TOUCH_EVENT_AVAILABLE, touchEventAvailable );
- }
- else {
- store.remove(KEY_TOUCH_EVENT_AVAILABLE);
- }
+ setValue(KEY_TOUCH_EVENT_AVAILABLE, touchEventAvailable);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScrollableMessage.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScrollableMessage.java
index 2fae92ec5..971b68712 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScrollableMessage.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScrollableMessage.java
@@ -1,12 +1,13 @@
package com.smartdevicelink.proxy.rpc;
+import com.smartdevicelink.protocol.enums.FunctionID;
+import com.smartdevicelink.proxy.RPCRequest;
+import com.smartdevicelink.proxy.rpc.enums.Language;
+
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
-import com.smartdevicelink.protocol.enums.FunctionID;
-import com.smartdevicelink.proxy.RPCRequest;
-
/**
* Creates a full screen overlay containing a large block of formatted text that
* can be scrolled with up to 8 SoftButtons defined
@@ -101,11 +102,7 @@ public class ScrollableMessage extends RPCRequest {
* <b>Notes: </b>Maxlength=500
*/
public void setScrollableMessageBody(String scrollableMessageBody) {
- if (scrollableMessageBody != null) {
- parameters.put(KEY_SCROLLABLE_MESSAGE_BODY, scrollableMessageBody);
- } else {
- parameters.remove(KEY_SCROLLABLE_MESSAGE_BODY);
- }
+ setParameters(KEY_SCROLLABLE_MESSAGE_BODY, scrollableMessageBody);
}
/**
@@ -114,7 +111,7 @@ public class ScrollableMessage extends RPCRequest {
* @return String -a String value
*/
public String getScrollableMessageBody() {
- return (String) parameters.get(KEY_SCROLLABLE_MESSAGE_BODY);
+ return getString(KEY_SCROLLABLE_MESSAGE_BODY);
}
/**
@@ -127,11 +124,7 @@ public class ScrollableMessage extends RPCRequest {
* <b>Notes</b>:Minval=0; Maxval=65535;Default=30000
*/
public void setTimeout(Integer timeout) {
- if (timeout != null) {
- parameters.put(KEY_TIMEOUT, timeout);
- } else {
- parameters.remove(KEY_TIMEOUT);
- }
+ setParameters(KEY_TIMEOUT, timeout);
}
/**
@@ -140,7 +133,7 @@ public class ScrollableMessage extends RPCRequest {
* @return Integer -an Integer value representing an App defined timeout
*/
public Integer getTimeout() {
- return (Integer) parameters.get(KEY_TIMEOUT);
+ return getInteger(KEY_TIMEOUT);
}
/**
@@ -154,11 +147,7 @@ public class ScrollableMessage extends RPCRequest {
* <b>Notes: </b>Minsize=0, Maxsize=8
*/
public void setSoftButtons(List<SoftButton> softButtons) {
- if (softButtons != null) {
- parameters.put(KEY_SOFT_BUTTONS, softButtons);
- } else {
- parameters.remove(KEY_SOFT_BUTTONS);
- }
+ setParameters(KEY_SOFT_BUTTONS, softButtons);
}
/**
@@ -167,21 +156,6 @@ public class ScrollableMessage extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<SoftButton> getSoftButtons() {
- if (parameters.get(KEY_SOFT_BUTTONS) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_SOFT_BUTTONS);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof SoftButton) {
- return (List<SoftButton>) list;
- } else if (obj instanceof Hashtable) {
- List<SoftButton> newList = new ArrayList<SoftButton>();
- for (Object hashObj : list) {
- newList.add(new SoftButton((Hashtable<String, Object>) hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<SoftButton>) getObject(SoftButton.class, KEY_SOFT_BUTTONS);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SdlMsgVersion.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SdlMsgVersion.java
index cb5df057d..2221972c1 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SdlMsgVersion.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SdlMsgVersion.java
@@ -1,9 +1,9 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.proxy.RPCStruct;
+import java.util.Hashtable;
+
/**
* Specifies the version number of the SDL V4 interface. This is used by both the application and SDL to declare what interface version each is using.
* <p><b> Parameter List</b></p>
@@ -42,6 +42,7 @@ import com.smartdevicelink.proxy.RPCStruct;
public class SdlMsgVersion extends RPCStruct {
public static final String KEY_MAJOR_VERSION = "majorVersion";
public static final String KEY_MINOR_VERSION = "minorVersion";
+ public static final String KEY_PATCH_VERSION = "patchVersion";
/**
* Constructs a newly allocated SdlMsgVersion object
@@ -63,7 +64,7 @@ public class SdlMsgVersion extends RPCStruct {
* @return the major version
*/
public Integer getMajorVersion() {
- return (Integer) store.get( KEY_MAJOR_VERSION );
+ return getInteger( KEY_MAJOR_VERSION );
}
/**
* Set major version
@@ -74,11 +75,7 @@ public class SdlMsgVersion extends RPCStruct {
* @param majorVersion minvalue="1" and maxvalue="10"
*/
public void setMajorVersion( Integer majorVersion ) {
- if (majorVersion != null) {
- store.put(KEY_MAJOR_VERSION, majorVersion );
- } else {
- store.remove(KEY_MAJOR_VERSION);
- }
+ setValue(KEY_MAJOR_VERSION, majorVersion);
}
/**
* Get minor version
@@ -89,7 +86,7 @@ public class SdlMsgVersion extends RPCStruct {
* @return the minor version
*/
public Integer getMinorVersion() {
- return (Integer) store.get( KEY_MINOR_VERSION );
+ return getInteger( KEY_MINOR_VERSION );
}
/**
* Set minor version
@@ -100,10 +97,30 @@ public class SdlMsgVersion extends RPCStruct {
* @param minorVersion min: 0; max: 1000
*/
public void setMinorVersion( Integer minorVersion ) {
- if (minorVersion != null) {
- store.put(KEY_MINOR_VERSION, minorVersion );
- } else {
- store.remove(KEY_MINOR_VERSION);
- }
+ setValue(KEY_MINOR_VERSION, minorVersion);
+ }
+
+ /**
+ * Get patch version
+ * <ul>
+ * <li>minvalue="0"</li>
+ * <li>maxvalue="1000"</li>
+ * </ul>
+ * @return the patch version
+ */
+ public Integer getPatchVersion() {
+ return getInteger( KEY_PATCH_VERSION );
+ }
+ /**
+ * Set patch version
+ * <ul>
+ * <li>minvalue="0"</li>
+ * <li>maxvalue="1000"</li>
+ * </ul>
+ * @param patchVersion min: 0; max: 1000
+ */
+ public void setPatchVersion( Integer patchVersion ) {
+ setValue(KEY_PATCH_VERSION, patchVersion);
}
+
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SendHapticData.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SendHapticData.java
new file mode 100644
index 000000000..a93fd2b98
--- /dev/null
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SendHapticData.java
@@ -0,0 +1,86 @@
+package com.smartdevicelink.proxy.rpc;
+
+import com.smartdevicelink.protocol.enums.FunctionID;
+import com.smartdevicelink.proxy.RPCRequest;
+
+import java.util.Hashtable;
+import java.util.List;
+
+/*
+ * Copyright (c) 2017 Livio, 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 Livio 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.
+ */
+
+/**
+ * Request to describe UI elements boundaries to a connected modules.
+ * @since SmartDeviceLink 4.5.0
+ */
+public class SendHapticData extends RPCRequest {
+
+ public static final String KEY_HAPTIC_RECT_DATA = "hapticRectData";
+
+ /**
+ * Constructs a new SendHapticData object
+ */
+ public SendHapticData(){
+ super(FunctionID.SEND_HAPTIC_DATA.toString());
+ }
+
+ /**
+ * <p>
+ * Send the spatial data gathered from SDLCarWindow or VirtualDisplayEncoder to the HMI.
+ * This data will be utilized by the HMI to determine how and when haptic events should occur
+ * </p>
+ *
+ * @param hash The Hashtable to use
+ */
+ public SendHapticData(Hashtable<String, Object> hash){
+ super(hash);
+ }
+
+ /**
+ * Array of spatial data structures that represent the locations of all user controls present on the app's layout.
+ * This data should be updated if/when the application presents a new screen.
+ * When a request is sent, if successful, it will replace all spatial data previously sent through RPC.
+ * If an empty array is sent, the existing spatial data will be cleared
+ */
+ public void setHapticRectData(List<HapticRect> hapticRectData) {
+ setParameters(KEY_HAPTIC_RECT_DATA, hapticRectData);
+ }
+
+ @SuppressWarnings("unchecked")
+ /**
+ * @return array of spatial data structures that represent the locations of all user controls present on the app's layout.
+ */
+ public List<HapticRect> getHapticRectData() {
+ return (List<HapticRect>) getObject(HapticRect.class, KEY_HAPTIC_RECT_DATA);
+ }
+
+}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SendHapticDataResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SendHapticDataResponse.java
new file mode 100644
index 000000000..e7c0c7d30
--- /dev/null
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SendHapticDataResponse.java
@@ -0,0 +1,54 @@
+package com.smartdevicelink.proxy.rpc;
+
+import com.smartdevicelink.protocol.enums.FunctionID;
+import com.smartdevicelink.proxy.RPCResponse;
+
+import java.util.Hashtable;
+
+/*
+ * Copyright (c) 2017 Livio, 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 Livio 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.
+ */
+
+/**
+ * Response to request that described UI elements boundaries to a connected modules.
+ * @since SmartDeviceLink 4.5.0
+ */
+
+public class SendHapticDataResponse extends RPCResponse {
+
+ public SendHapticDataResponse(){
+ super(FunctionID.SEND_HAPTIC_DATA.toString());
+ }
+
+ public SendHapticDataResponse(Hashtable<String, Object> hash){
+ super(hash);
+ }
+}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SendLocation.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SendLocation.java
index 2a9108e47..c25f57648 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SendLocation.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SendLocation.java
@@ -1,14 +1,13 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.DeliveryMode;
-import com.smartdevicelink.util.DebugTool;
import com.smartdevicelink.util.SdlDataTypeConverter;
+import java.util.Hashtable;
+import java.util.List;
+
/**
* Sends a location to the head-unit to display on a map or list.
@@ -59,7 +58,7 @@ public class SendLocation extends RPCRequest{
* @return The longitude of the location
*/
public Double getLongitudeDegrees(){
- Object value = parameters.get(KEY_LON_DEGREES);
+ Object value = getParameters(KEY_LON_DEGREES);
return SdlDataTypeConverter.objectToDouble(value);
}
@@ -68,12 +67,7 @@ public class SendLocation extends RPCRequest{
* @param longitudeDegrees
*/
public void setLongitudeDegrees(Double longitudeDegrees){
- if(longitudeDegrees != null){
- parameters.put(KEY_LON_DEGREES, longitudeDegrees);
- }
- else{
- parameters.remove(KEY_LON_DEGREES);
- }
+ setParameters(KEY_LON_DEGREES, longitudeDegrees);
}
/**
@@ -87,7 +81,7 @@ public class SendLocation extends RPCRequest{
* @return The latitude of the location
*/
public Double getLatitudeDegrees(){
- Object value = parameters.get(KEY_LAT_DEGREES);
+ Object value = getParameters(KEY_LAT_DEGREES);
return SdlDataTypeConverter.objectToDouble(value);
}
@@ -96,12 +90,7 @@ public class SendLocation extends RPCRequest{
* @param latitudeDegrees
*/
public void setLatitudeDegrees(Double latitudeDegrees){
- if(latitudeDegrees != null){
- parameters.put(KEY_LAT_DEGREES, latitudeDegrees);
- }
- else{
- parameters.remove(KEY_LAT_DEGREES);
- }
+ setParameters(KEY_LAT_DEGREES, latitudeDegrees);
}
/**
@@ -109,7 +98,7 @@ public class SendLocation extends RPCRequest{
* @return The name of the location
*/
public String getLocationName(){
- return (String) parameters.get(KEY_LOCATION_NAME);
+ return getString(KEY_LOCATION_NAME);
}
/**
@@ -117,12 +106,7 @@ public class SendLocation extends RPCRequest{
* @param locationName The name of the location
*/
public void setLocationName(String locationName){
- if(locationName != null){
- parameters.put(KEY_LOCATION_NAME, locationName);
- }
- else{
- parameters.remove(KEY_LOCATION_NAME);
- }
+ setParameters(KEY_LOCATION_NAME, locationName);
}
/**
@@ -130,7 +114,7 @@ public class SendLocation extends RPCRequest{
* @return The description of the location to send
*/
public String getLocationDescription(){
- return (String) parameters.get(KEY_LOCATION_DESCRIPTION);
+ return getString(KEY_LOCATION_DESCRIPTION);
}
/**
@@ -138,12 +122,7 @@ public class SendLocation extends RPCRequest{
* @param locationDescription The description of the location
*/
public void setLocationDescription(String locationDescription){
- if(locationDescription != null){
- parameters.put(KEY_LOCATION_DESCRIPTION, locationDescription);
- }
- else{
- parameters.remove(KEY_LOCATION_DESCRIPTION);
- }
+ setParameters(KEY_LOCATION_DESCRIPTION, locationDescription);
}
/**
@@ -151,7 +130,7 @@ public class SendLocation extends RPCRequest{
* @return
*/
public String getPhoneNumber(){
- return (String) parameters.get(KEY_PHONE_NUMBER);
+ return getString(KEY_PHONE_NUMBER);
}
/**
@@ -159,12 +138,7 @@ public class SendLocation extends RPCRequest{
* @param phoneNumber The phone number of the location
*/
public void setPhoneNumber(String phoneNumber){
- if(phoneNumber != null){
- parameters.put(KEY_PHONE_NUMBER, phoneNumber);
- }
- else{
- parameters.remove(KEY_PHONE_NUMBER);
- }
+ setParameters(KEY_PHONE_NUMBER, phoneNumber);
}
/**
@@ -173,16 +147,7 @@ public class SendLocation extends RPCRequest{
*/
@SuppressWarnings("unchecked")
public List<String> getAddressLines(){
- if(parameters.get(KEY_ADDRESS_LINES) instanceof List<?>){
- List<?> list = (List<?>) parameters.get(KEY_ADDRESS_LINES);
- if(list != null && list.size() > 0){
- Object obj = list.get(0);
- if(obj instanceof String){
- return (List<String>) list;
- }
- }
- }
- return null;
+ return (List<String>) getObject(String.class, KEY_ADDRESS_LINES);
}
/**
@@ -190,12 +155,7 @@ public class SendLocation extends RPCRequest{
* @param addressLines The address lines of the location
*/
public void setAddressLines(List<String> addressLines){
- if(addressLines != null){
- parameters.put(KEY_ADDRESS_LINES, addressLines);
- }
- else{
- parameters.remove(KEY_ADDRESS_LINES);
- }
+ setParameters(KEY_ADDRESS_LINES, addressLines);
}
/**
@@ -204,13 +164,7 @@ public class SendLocation extends RPCRequest{
*/
@SuppressWarnings("unchecked")
public Image getLocationImage(){
- Object obj = parameters.get(KEY_LOCATION_IMAGE);
- if (obj instanceof Image) {
- return (Image) obj;
- } else if (obj instanceof Hashtable) {
- return new Image((Hashtable<String, Object>) obj);
- }
- return null;
+ return (Image) getObject(Image.class, KEY_LOCATION_IMAGE);
}
/**
@@ -218,75 +172,32 @@ public class SendLocation extends RPCRequest{
* @param locationImage The image of the location to send
*/
public void setLocationImage(Image locationImage){
- if(locationImage != null){
- parameters.put(KEY_LOCATION_IMAGE, locationImage);
- }
- else{
- parameters.remove(KEY_LOCATION_IMAGE);
- }
+ setParameters(KEY_LOCATION_IMAGE, locationImage);
}
public DeliveryMode getDeliveryMode() {
- Object obj = parameters.get(KEY_DELIVERY_MODE);
- if (obj instanceof DeliveryMode) {
- return (DeliveryMode) obj;
- } else if (obj instanceof String) {
- return DeliveryMode.valueForString((String) obj);
- }
- return null;
+ return (DeliveryMode) getObject(DeliveryMode.class, KEY_DELIVERY_MODE);
}
public void setDeliveryMode(DeliveryMode deliveryMode) {
- if (deliveryMode != null) {
- parameters.put(KEY_DELIVERY_MODE, deliveryMode);
- } else {
- parameters.remove(KEY_DELIVERY_MODE);
- }
+ setParameters(KEY_DELIVERY_MODE, deliveryMode);
}
@SuppressWarnings("unchecked")
public DateTime getTimeStamp() {
- Object obj = parameters.get(KEY_TIME_STAMP);
- if (obj instanceof DateTime) {
- return (DateTime) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new DateTime((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_TIME_STAMP, e);
- }
- }
- return null;
+ return (DateTime) getObject(DateTime.class, KEY_TIME_STAMP);
}
public void setTimeStamp(DateTime timeStamp) {
- if (timeStamp != null) {
- parameters.put(KEY_TIME_STAMP, timeStamp);
- } else {
- parameters.remove(KEY_TIME_STAMP);
- }
+ setParameters(KEY_TIME_STAMP, timeStamp);
}
@SuppressWarnings("unchecked")
public OasisAddress getAddress() {
- Object obj = parameters.get(KEY_ADDRESS);
- if (obj instanceof OasisAddress) {
- return (OasisAddress) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new OasisAddress((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_ADDRESS, e);
- }
- }
- return null;
+ return (OasisAddress) getObject(OasisAddress.class, KEY_ADDRESS);
}
public void setAddress(OasisAddress address) {
- if (address != null) {
- parameters.put(KEY_ADDRESS, address);
- } else {
- parameters.remove(KEY_ADDRESS);
- }
+ setParameters(KEY_ADDRESS, address);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetAppIcon.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetAppIcon.java
index 2cb5aef31..2063303d9 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetAppIcon.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetAppIcon.java
@@ -1,10 +1,10 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
+import java.util.Hashtable;
+
/**
* Used to set existing local file on SDL as the app's icon. Not supported on
* first generation SDL vehicles
@@ -71,14 +71,10 @@ public class SetAppIcon extends RPCRequest {
* @param sdlFileName
* a String value representing a file reference name
* <p></p>
- * <b>Notes: </b>Maxlength=500
+ * <b>Notes: </b>Maxlength=500, however the max file name length may vary based on remote filesystem limitations
*/
public void setSdlFileName(String sdlFileName) {
- if (sdlFileName != null) {
- parameters.put(KEY_SDL_FILE_NAME, sdlFileName);
- } else {
- parameters.remove(KEY_SDL_FILE_NAME);
- }
+ setParameters(KEY_SDL_FILE_NAME, sdlFileName);
}
/**
@@ -86,6 +82,6 @@ public class SetAppIcon extends RPCRequest {
* @return String -a String value
*/
public String getSdlFileName() {
- return (String) parameters.get(KEY_SDL_FILE_NAME);
+ return getString(KEY_SDL_FILE_NAME);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetDisplayLayout.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetDisplayLayout.java
index 2a3fd9d4b..e137e7f5b 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetDisplayLayout.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetDisplayLayout.java
@@ -1,10 +1,10 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
+import java.util.Hashtable;
+
/**
* Used to set an alternate display layout. If not sent, default screen for
* given platform will be shown
@@ -73,17 +73,13 @@ public class SetDisplayLayout extends RPCRequest {
* a String value representing a diaply layout
*/
public void setDisplayLayout(String displayLayout) {
- if (displayLayout != null) {
- parameters.put(KEY_DISPLAY_LAYOUT, displayLayout);
- } else {
- parameters.remove(KEY_DISPLAY_LAYOUT);
- }
+ setParameters(KEY_DISPLAY_LAYOUT, displayLayout);
}
/**
* Gets a display layout.
*/
public String getDisplayLayout() {
- return (String) parameters.get(KEY_DISPLAY_LAYOUT);
+ return getString(KEY_DISPLAY_LAYOUT);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetDisplayLayoutResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetDisplayLayoutResponse.java
index b9947a4ac..36e9fb7db 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetDisplayLayoutResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetDisplayLayoutResponse.java
@@ -1,12 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import java.util.Hashtable;
+import java.util.List;
+
/**
* Set Display Layout Response is sent, when SetDisplayLayout has been called
*
@@ -39,96 +38,38 @@ public class SetDisplayLayoutResponse extends RPCResponse {
@SuppressWarnings("unchecked")
public DisplayCapabilities getDisplayCapabilities() {
- Object obj = parameters.get(KEY_DISPLAY_CAPABILITIES);
- if (obj instanceof DisplayCapabilities) {
- return (DisplayCapabilities)obj;
- } else if (obj instanceof Hashtable) {
- return new DisplayCapabilities((Hashtable<String, Object>)obj);
- }
- return null;
+ return (DisplayCapabilities) getObject(DisplayCapabilities.class, KEY_DISPLAY_CAPABILITIES);
}
public void setDisplayCapabilities(DisplayCapabilities displayCapabilities) {
- if (displayCapabilities != null) {
- parameters.put(KEY_DISPLAY_CAPABILITIES, displayCapabilities);
- } else {
- parameters.remove(KEY_DISPLAY_CAPABILITIES);
- }
+ setParameters(KEY_DISPLAY_CAPABILITIES, displayCapabilities);
}
@SuppressWarnings("unchecked")
public List<ButtonCapabilities> getButtonCapabilities() {
- if (parameters.get(KEY_BUTTON_CAPABILITIES) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_BUTTON_CAPABILITIES);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof ButtonCapabilities) {
- return (List<ButtonCapabilities>) list;
- } else if (obj instanceof Hashtable) {
- List<ButtonCapabilities> newList = new ArrayList<ButtonCapabilities>();
- for (Object hashObj : list) {
- newList.add(new ButtonCapabilities((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<ButtonCapabilities>) getObject(ButtonCapabilities.class, KEY_BUTTON_CAPABILITIES);
}
public void setButtonCapabilities(List<ButtonCapabilities> buttonCapabilities) {
- if (buttonCapabilities != null) {
- parameters.put(KEY_BUTTON_CAPABILITIES, buttonCapabilities);
- } else {
- parameters.remove(KEY_BUTTON_CAPABILITIES);
- }
+ setParameters(KEY_BUTTON_CAPABILITIES, buttonCapabilities);
}
@SuppressWarnings("unchecked")
public List<SoftButtonCapabilities> getSoftButtonCapabilities() {
- if (parameters.get(KEY_SOFT_BUTTON_CAPABILITIES) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_SOFT_BUTTON_CAPABILITIES);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof SoftButtonCapabilities) {
- return (List<SoftButtonCapabilities>) list;
- } else if (obj instanceof Hashtable) {
- List<SoftButtonCapabilities> newList = new ArrayList<SoftButtonCapabilities>();
- for (Object hashObj : list) {
- newList.add(new SoftButtonCapabilities((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<SoftButtonCapabilities>) getObject(SoftButtonCapabilities.class, KEY_SOFT_BUTTON_CAPABILITIES);
}
public void setSoftButtonCapabilities(List<SoftButtonCapabilities> softButtonCapabilities) {
- if (softButtonCapabilities != null) {
- parameters.put(KEY_SOFT_BUTTON_CAPABILITIES, softButtonCapabilities);
- } else {
- parameters.remove(KEY_SOFT_BUTTON_CAPABILITIES);
- }
+ setParameters(KEY_SOFT_BUTTON_CAPABILITIES, softButtonCapabilities);
}
@SuppressWarnings("unchecked")
public PresetBankCapabilities getPresetBankCapabilities() {
- Object obj = parameters.get(KEY_PRESET_BANK_CAPABILITIES);
- if (obj instanceof PresetBankCapabilities) {
- return (PresetBankCapabilities)obj;
- } else if (obj instanceof Hashtable) {
- return new PresetBankCapabilities((Hashtable<String, Object>)obj);
- }
- return null;
+ return (PresetBankCapabilities) getObject(PresetBankCapabilities.class, KEY_PRESET_BANK_CAPABILITIES);
}
public void setPresetBankCapabilities(PresetBankCapabilities presetBankCapabilities) {
- if (presetBankCapabilities != null) {
- parameters.put(KEY_PRESET_BANK_CAPABILITIES, presetBankCapabilities);
- } else {
- parameters.remove(KEY_PRESET_BANK_CAPABILITIES);
- }
+ setParameters(KEY_PRESET_BANK_CAPABILITIES, presetBankCapabilities);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetGlobalProperties.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetGlobalProperties.java
index 7f597cafe..edd943494 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetGlobalProperties.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetGlobalProperties.java
@@ -1,12 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.ArrayList;
+import com.smartdevicelink.protocol.enums.FunctionID;
+import com.smartdevicelink.proxy.RPCRequest;
+
import java.util.Hashtable;
import java.util.List;
-import com.smartdevicelink.protocol.enums.FunctionID;
-import com.smartdevicelink.proxy.RPCRequest;
-import com.smartdevicelink.util.DebugTool;
/**
* Sets value(s) for the specified global property(ies)
*
@@ -141,22 +140,7 @@ public class SetGlobalProperties extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<TTSChunk> getHelpPrompt() {
- if (parameters.get(KEY_HELP_PROMPT) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_HELP_PROMPT);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof TTSChunk) {
- return (List<TTSChunk>) list;
- } else if (obj instanceof Hashtable) {
- List<TTSChunk> newList = new ArrayList<TTSChunk>();
- for (Object hashObj : list) {
- newList.add(new TTSChunk((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<TTSChunk>) getObject(TTSChunk.class, KEY_HELP_PROMPT);
}
/**
* Sets a List<TTSChunk> for Help Prompt that Array of one or more
@@ -173,11 +157,7 @@ public class SetGlobalProperties extends RPCRequest {
* </ul>
*/
public void setHelpPrompt(List<TTSChunk> helpPrompt) {
- if (helpPrompt != null) {
- parameters.put(KEY_HELP_PROMPT, helpPrompt);
- } else {
- parameters.remove(KEY_HELP_PROMPT);
- }
+ setParameters(KEY_HELP_PROMPT, helpPrompt);
}
/**
* Gets a List<TTSChunk> for Timeout Prompt representing Array of one or
@@ -189,22 +169,7 @@ public class SetGlobalProperties extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<TTSChunk> getTimeoutPrompt() {
- if (parameters.get(KEY_TIMEOUT_PROMPT) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_TIMEOUT_PROMPT);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof TTSChunk) {
- return (List<TTSChunk>) list;
- } else if (obj instanceof Hashtable) {
- List<TTSChunk> newList = new ArrayList<TTSChunk>();
- for (Object hashObj : list) {
- newList.add(new TTSChunk((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<TTSChunk>) getObject(TTSChunk.class, KEY_TIMEOUT_PROMPT);
}
/**
* Sets a List<TTSChunk> for Timeout Prompt representing Array of one or
@@ -213,11 +178,7 @@ public class SetGlobalProperties extends RPCRequest {
*
*/
public void setTimeoutPrompt(List<TTSChunk> timeoutPrompt) {
- if (timeoutPrompt != null) {
- parameters.put(KEY_TIMEOUT_PROMPT, timeoutPrompt);
- } else {
- parameters.remove(KEY_TIMEOUT_PROMPT);
- }
+ setParameters(KEY_TIMEOUT_PROMPT, timeoutPrompt);
}
/**
@@ -228,7 +189,7 @@ public class SetGlobalProperties extends RPCRequest {
* @since SmartDeviceLink 2.0
*/
public String getVrHelpTitle() {
- return (String) parameters.get(KEY_VR_HELP_TITLE);
+ return getString(KEY_VR_HELP_TITLE);
}
/**
@@ -248,11 +209,7 @@ public class SetGlobalProperties extends RPCRequest {
* @since SmartDeviceLink 2.0
*/
public void setVrHelpTitle(String vrHelpTitle) {
- if (vrHelpTitle != null) {
- parameters.put(KEY_VR_HELP_TITLE, vrHelpTitle);
- } else {
- parameters.remove(KEY_VR_HELP_TITLE);
- }
+ setParameters(KEY_VR_HELP_TITLE, vrHelpTitle);
}
/**
@@ -265,22 +222,7 @@ public class SetGlobalProperties extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<VrHelpItem> getVrHelp() {
- if (parameters.get(KEY_VR_HELP) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_VR_HELP);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof VrHelpItem) {
- return (List<VrHelpItem>) list;
- } else if (obj instanceof Hashtable) {
- List<VrHelpItem> newList = new ArrayList<VrHelpItem>();
- for (Object hashObj : list) {
- newList.add(new VrHelpItem((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<VrHelpItem>) getObject(VrHelpItem.class, KEY_VR_HELP);
}
/**
@@ -305,69 +247,33 @@ public class SetGlobalProperties extends RPCRequest {
* @since SmartDeviceLink 2.0
*/
public void setVrHelp(List<VrHelpItem> vrHelp) {
- if (vrHelp != null) {
- parameters.put(KEY_VR_HELP, vrHelp);
- } else {
- parameters.remove(KEY_VR_HELP);
- }
+ setParameters(KEY_VR_HELP, vrHelp);
}
public String getMenuTitle() {
- return (String) parameters.get(KEY_MENU_TITLE);
+ return getString(KEY_MENU_TITLE);
}
public void setMenuTitle(String menuTitle) {
- if (menuTitle != null) {
- parameters.put(KEY_MENU_TITLE, menuTitle);
- } else {
- parameters.remove(KEY_MENU_TITLE);
- }
+ setParameters(KEY_MENU_TITLE, menuTitle);
}
public void setMenuIcon(Image menuIcon) {
- if (menuIcon != null) {
- parameters.put(KEY_MENU_ICON, menuIcon);
- } else {
- parameters.remove(KEY_MENU_ICON);
- }
+ setParameters(KEY_MENU_ICON, menuIcon);
}
@SuppressWarnings("unchecked")
public Image getMenuIcon() {
- Object obj = parameters.get(KEY_MENU_ICON);
- if (obj instanceof Image) {
- return (Image) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new Image((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_MENU_ICON, e);
- }
- }
- return null;
+ return (Image) getObject(Image.class, KEY_MENU_ICON);
}
public void setKeyboardProperties(KeyboardProperties keyboardProperties) {
- if (keyboardProperties != null) {
- parameters.put(KEY_KEYBOARD_PROPERTIES, keyboardProperties);
- } else {
- parameters.remove(KEY_KEYBOARD_PROPERTIES);
- }
+ setParameters(KEY_KEYBOARD_PROPERTIES, keyboardProperties);
}
@SuppressWarnings("unchecked")
public KeyboardProperties getKeyboardProperties() {
- Object obj = parameters.get(KEY_KEYBOARD_PROPERTIES);
- if (obj instanceof KeyboardProperties) {
- return (KeyboardProperties) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new KeyboardProperties((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_KEYBOARD_PROPERTIES, e);
- }
- }
- return null;
+ return (KeyboardProperties) getObject(KeyboardProperties.class, KEY_KEYBOARD_PROPERTIES);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimer.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimer.java
index bd6bac324..bcef52745 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimer.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimer.java
@@ -1,10 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.UpdateMode;
+
+import java.util.Hashtable;
+
/**
* Sets the media clock/timer value and the update method (e.g.count-up,
* count-down, etc.)
@@ -98,13 +99,7 @@ public class SetMediaClockTimer extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public StartTime getStartTime() {
- Object obj = parameters.get(KEY_START_TIME);
- if (obj instanceof StartTime) {
- return (StartTime)obj;
- } else if (obj instanceof Hashtable) {
- return new StartTime((Hashtable<String, Object>)obj);
- }
- return null;
+ return (StartTime) getObject(StartTime.class, KEY_START_TIME);
}
/**
* Sets a Start Time with specifying hour, minute, second values
@@ -120,30 +115,16 @@ public class SetMediaClockTimer extends RPCRequest {
* </ul>
*/
public void setStartTime( StartTime startTime ) {
- if (startTime != null) {
- parameters.put(KEY_START_TIME, startTime );
- } else {
- parameters.remove(KEY_START_TIME);
- }
+ setParameters(KEY_START_TIME, startTime);
}
@SuppressWarnings("unchecked")
public StartTime getEndTime() {
- Object obj = parameters.get(KEY_END_TIME);
- if (obj instanceof StartTime) {
- return (StartTime)obj;
- } else if (obj instanceof Hashtable) {
- return new StartTime((Hashtable<String, Object>)obj);
- }
- return null;
+ return (StartTime) getObject(StartTime.class, KEY_END_TIME);
}
public void setEndTime( StartTime endTime ) {
- if (endTime != null) {
- parameters.put(KEY_END_TIME, endTime );
- } else {
- parameters.remove(KEY_END_TIME);
- }
+ setParameters(KEY_END_TIME, endTime);
}
/**
@@ -152,13 +133,7 @@ public class SetMediaClockTimer extends RPCRequest {
* @return UpdateMode -a Enumeration value (COUNTUP/COUNTDOWN/PAUSE/RESUME)
*/
public UpdateMode getUpdateMode() {
- Object obj = parameters.get(KEY_UPDATE_MODE);
- if (obj instanceof UpdateMode) {
- return (UpdateMode) obj;
- } else if (obj instanceof String) {
- return UpdateMode.valueForString((String) obj);
- }
- return null;
+ return (UpdateMode) getObject(UpdateMode.class, KEY_UPDATE_MODE);
}
/**
* Sets the media clock/timer update mode (COUNTUP/COUNTDOWN/PAUSE/RESUME)
@@ -175,10 +150,6 @@ public class SetMediaClockTimer extends RPCRequest {
* </ul>
*/
public void setUpdateMode( UpdateMode updateMode ) {
- if (updateMode != null) {
- parameters.put(KEY_UPDATE_MODE, updateMode );
- } else {
- parameters.remove(KEY_UPDATE_MODE);
- }
+ setParameters(KEY_UPDATE_MODE, updateMode);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Show.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Show.java
index 24307c9de..6a42fe1a8 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Show.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Show.java
@@ -1,13 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.TextAlignment;
-import com.smartdevicelink.util.DebugTool;
+
+import java.util.Hashtable;
+import java.util.List;
/**
* Updates the application's display text area, regardless of whether or not
@@ -166,6 +164,7 @@ public class Show extends RPCRequest {
public static final String KEY_MEDIA_TRACK = "mediaTrack";
public static final String KEY_SECONDARY_GRAPHIC = "secondaryGraphic";
public static final String KEY_SOFT_BUTTONS = "softButtons";
+ public static final String KEY_METADATA_TAGS = "metadataTags";
/**
* Constructs a new Show object
*/
@@ -191,7 +190,7 @@ public class Show extends RPCRequest {
* display
*/
public String getMainField1() {
- return (String) parameters.get(KEY_MAIN_FIELD_1);
+ return getString(KEY_MAIN_FIELD_1);
}
/**
* Sets the text displayed in a single-line display, or in the upper display
@@ -211,11 +210,7 @@ public class Show extends RPCRequest {
* </ul>
*/
public void setMainField1(String mainField1) {
- if (mainField1 != null) {
- parameters.put(KEY_MAIN_FIELD_1, mainField1);
- } else {
- parameters.remove(KEY_MAIN_FIELD_1);
- }
+ setParameters(KEY_MAIN_FIELD_1, mainField1);
}
/**
* Gets the text displayed on the second display line of a two-line display
@@ -224,7 +219,7 @@ public class Show extends RPCRequest {
* second display line of a two-line display
*/
public String getMainField2() {
- return (String) parameters.get(KEY_MAIN_FIELD_2);
+ return getString(KEY_MAIN_FIELD_2);
}
/**
* Sets the text displayed on the second display line of a two-line display
@@ -245,11 +240,7 @@ public class Show extends RPCRequest {
* </ul>
*/
public void setMainField2(String mainField2) {
- if (mainField2 != null) {
- parameters.put(KEY_MAIN_FIELD_2, mainField2);
- } else {
- parameters.remove(KEY_MAIN_FIELD_2);
- }
+ setParameters(KEY_MAIN_FIELD_2, mainField2);
}
/**
@@ -260,7 +251,7 @@ public class Show extends RPCRequest {
* @since SmartDeviceLink 2.0
*/
public String getMainField3() {
- return (String) parameters.get(KEY_MAIN_FIELD_3);
+ return getString(KEY_MAIN_FIELD_3);
}
/**
@@ -283,11 +274,7 @@ public class Show extends RPCRequest {
* @since SmartDeviceLink 2.0
*/
public void setMainField3(String mainField3) {
- if (mainField3 != null) {
- parameters.put(KEY_MAIN_FIELD_3, mainField3);
- } else {
- parameters.remove(KEY_MAIN_FIELD_3);
- }
+ setParameters(KEY_MAIN_FIELD_3, mainField3);
}
/**
@@ -298,7 +285,7 @@ public class Show extends RPCRequest {
* @since SmartDeviceLink 2.0
*/
public String getMainField4() {
- return (String) parameters.get(KEY_MAIN_FIELD_4);
+ return getString(KEY_MAIN_FIELD_4);
}
/**
@@ -321,11 +308,7 @@ public class Show extends RPCRequest {
* @since SmartDeviceLink 2.0
*/
public void setMainField4(String mainField4) {
- if (mainField4 != null) {
- parameters.put(KEY_MAIN_FIELD_4, mainField4);
- } else {
- parameters.remove(KEY_MAIN_FIELD_4);
- }
+ setParameters(KEY_MAIN_FIELD_4, mainField4);
}
/**
* Gets the alignment that Specifies how mainField1 and mainField2 text
@@ -334,13 +317,7 @@ public class Show extends RPCRequest {
* @return TextAlignment -an Enumeration value
*/
public TextAlignment getAlignment() {
- Object obj = parameters.get(KEY_ALIGNMENT);
- if (obj instanceof TextAlignment) {
- return (TextAlignment) obj;
- } else if (obj instanceof String) {
- return TextAlignment.valueForString((String) obj);
- }
- return null;
+ return (TextAlignment) getObject(TextAlignment.class, KEY_ALIGNMENT);
}
/**
* Sets the alignment that Specifies how mainField1 and mainField2 text
@@ -359,11 +336,7 @@ public class Show extends RPCRequest {
* </ul>
*/
public void setAlignment(TextAlignment alignment) {
- if (alignment != null) {
- parameters.put(KEY_ALIGNMENT, alignment);
- } else {
- parameters.remove(KEY_ALIGNMENT);
- }
+ setParameters(KEY_ALIGNMENT, alignment);
}
/**
* Gets text in the Status Bar
@@ -371,7 +344,7 @@ public class Show extends RPCRequest {
* @return String -the value in the Status Bar
*/
public String getStatusBar() {
- return (String) parameters.get(KEY_STATUS_BAR);
+ return getString(KEY_STATUS_BAR);
}
/**
* Sets text in the Status Bar
@@ -392,11 +365,7 @@ public class Show extends RPCRequest {
* </ul>
*/
public void setStatusBar(String statusBar) {
- if (statusBar != null) {
- parameters.put(KEY_STATUS_BAR, statusBar);
- } else {
- parameters.remove(KEY_STATUS_BAR);
- }
+ setParameters(KEY_STATUS_BAR, statusBar);
}
/**
* Gets the String value of the MediaClock
@@ -405,7 +374,7 @@ public class Show extends RPCRequest {
*/
@Deprecated
public String getMediaClock() {
- return (String) parameters.get(KEY_MEDIA_CLOCK);
+ return getString(KEY_MEDIA_CLOCK);
}
/**
* Sets the value for the MediaClock field using a format described in the
@@ -425,11 +394,7 @@ public class Show extends RPCRequest {
*/
@Deprecated
public void setMediaClock(String mediaClock) {
- if (mediaClock != null) {
- parameters.put(KEY_MEDIA_CLOCK, mediaClock);
- } else {
- parameters.remove(KEY_MEDIA_CLOCK);
- }
+ setParameters(KEY_MEDIA_CLOCK, mediaClock);
}
/**
* Gets the text in the track field
@@ -437,7 +402,7 @@ public class Show extends RPCRequest {
* @return String -a String displayed in the track field
*/
public String getMediaTrack() {
- return (String) parameters.get(KEY_MEDIA_TRACK);
+ return getString(KEY_MEDIA_TRACK);
}
/**
* Sets the text in the track field
@@ -453,11 +418,7 @@ public class Show extends RPCRequest {
* </ul>
*/
public void setMediaTrack(String mediaTrack) {
- if (mediaTrack != null) {
- parameters.put(KEY_MEDIA_TRACK, mediaTrack);
- } else {
- parameters.remove(KEY_MEDIA_TRACK);
- }
+ setParameters(KEY_MEDIA_TRACK, mediaTrack);
}
/**
@@ -471,11 +432,7 @@ public class Show extends RPCRequest {
* @since SmartDeviceLink 2.0
*/
public void setGraphic(Image graphic) {
- if (graphic != null) {
- parameters.put(KEY_GRAPHIC, graphic);
- } else {
- parameters.remove(KEY_GRAPHIC);
- }
+ setParameters(KEY_GRAPHIC, graphic);
}
/**
@@ -487,42 +444,18 @@ public class Show extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public Image getGraphic() {
- Object obj = parameters.get(KEY_GRAPHIC);
- if (obj instanceof Image) {
- return (Image) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new Image((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_GRAPHIC, e);
- }
- }
- return null;
+ return (Image) getObject(Image.class, KEY_GRAPHIC);
}
public void setSecondaryGraphic(Image secondaryGraphic) {
- if (secondaryGraphic != null) {
- parameters.put(KEY_SECONDARY_GRAPHIC, secondaryGraphic);
- } else {
- parameters.remove(KEY_SECONDARY_GRAPHIC);
- }
+ setParameters(KEY_SECONDARY_GRAPHIC, secondaryGraphic);
}
@SuppressWarnings("unchecked")
public Image getSecondaryGraphic() {
- Object obj = parameters.get(KEY_SECONDARY_GRAPHIC);
- if (obj instanceof Image) {
- return (Image) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new Image((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_SECONDARY_GRAPHIC, e);
- }
- }
- return null;
+ return (Image) getObject(Image.class, KEY_SECONDARY_GRAPHIC);
}
@@ -535,22 +468,7 @@ public class Show extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<SoftButton> getSoftButtons() {
- if (parameters.get(KEY_SOFT_BUTTONS) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_SOFT_BUTTONS);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof SoftButton) {
- return (List<SoftButton>) list;
- } else if (obj instanceof Hashtable) {
- List<SoftButton> newList = new ArrayList<SoftButton>();
- for (Object hashObj : list) {
- newList.add(new SoftButton((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<SoftButton>) getObject(SoftButton.class, KEY_SOFT_BUTTONS);
}
/**
@@ -571,11 +489,7 @@ public class Show extends RPCRequest {
* @since SmartDeviceLink 2.0
*/
public void setSoftButtons(List<SoftButton> softButtons) {
- if (softButtons != null) {
- parameters.put(KEY_SOFT_BUTTONS, softButtons);
- } else {
- parameters.remove(KEY_SOFT_BUTTONS);
- }
+ setParameters(KEY_SOFT_BUTTONS, softButtons);
}
/**
@@ -587,16 +501,7 @@ public class Show extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<String> getCustomPresets() {
- if (parameters.get(KEY_CUSTOM_PRESETS) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_CUSTOM_PRESETS);
- if (list != null && list.size()>0) {
- Object obj = list.get(0);
- if (obj instanceof String) {
- return (List<String>) list;
- }
- }
- }
- return null;
+ return (List<String>) getObject(String.class, KEY_CUSTOM_PRESETS);
}
/**
@@ -614,10 +519,31 @@ public class Show extends RPCRequest {
* @since SmartDeviceLink 2.0
*/
public void setCustomPresets(List<String> customPresets) {
- if (customPresets != null) {
- parameters.put(KEY_CUSTOM_PRESETS, customPresets);
- } else {
- parameters.remove(KEY_CUSTOM_PRESETS);
- }
+ setParameters(KEY_CUSTOM_PRESETS, customPresets);
}
+
+ /**
+ * Sets text field metadata defined by the App
+ *
+ * @param metadataTags
+ * A Struct containing metadata pertaining to the main text fields
+ * <p></p>
+ * <ul>
+ * @since SmartDeviceLink 4.5.0
+ */
+ public void setMetadataTags(MetadataTags metadataTags){
+ setParameters(KEY_METADATA_TAGS, metadataTags);
+ }
+
+ /**
+ * Gets text field metadata defined by the App
+ *
+ * @return metadataTags - App defined metadata information. See MetadataTags. Uses mainField1, mainField2, mainField3, mainField4.
+ * If omitted on supported displays, the currently set metadata tags will not change.
+ * If any text field contains no tags or the none tag, the metadata tag for that textfield should be removed.
+ * @since SmartDeviceLink 4.5.0
+ */
+ public MetadataTags getMetadataTags() {
+ return (MetadataTags) getObject(MetadataTags.class, KEY_METADATA_TAGS);
+ }
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ShowConstantTbt.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ShowConstantTbt.java
index f65e1a100..6a44b9068 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ShowConstantTbt.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ShowConstantTbt.java
@@ -1,12 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
+import java.util.Hashtable;
+import java.util.List;
+
/**
* <p>This RPC is used to update the user with navigation information for the constantly shown screen (base screen), but
* also for the alert type screen</p>
@@ -61,12 +60,7 @@ public class ShowConstantTbt extends RPCRequest{
* <b>Notes: </b>Maxlength=500
*/
public void setNavigationText1(String navigationText1){
- if(navigationText1 != null){
- parameters.put(KEY_TEXT1, navigationText1);
- }
- else{
- parameters.remove(KEY_TEXT1);
- }
+ setParameters(KEY_TEXT1, navigationText1);
}
/**
@@ -75,7 +69,7 @@ public class ShowConstantTbt extends RPCRequest{
* @return String -a String value representing a text for navigation text field 1
*/
public String getNavigationText1(){
- return (String) parameters.get(KEY_TEXT1);
+ return getString(KEY_TEXT1);
}
/**
@@ -87,12 +81,7 @@ public class ShowConstantTbt extends RPCRequest{
* <b>Notes: </b>Maxlength=500
*/
public void setNavigationText2(String navigationText2){
- if(navigationText2 != null){
- parameters.put(KEY_TEXT2, navigationText2);
- }
- else{
- parameters.remove(KEY_TEXT2);
- }
+ setParameters(KEY_TEXT2, navigationText2);
}
/**
@@ -101,7 +90,7 @@ public class ShowConstantTbt extends RPCRequest{
* @return String -a String value representing a text for navigation text field 2
*/
public String getNavigationText2(){
- return (String) parameters.get(KEY_TEXT2);
+ return getString(KEY_TEXT2);
}
/**
@@ -113,12 +102,7 @@ public class ShowConstantTbt extends RPCRequest{
* <b>Notes: </b>Maxlength=500
*/
public void setEta(String eta){
- if(eta != null){
- parameters.put(KEY_ETA, eta);
- }
- else{
- parameters.remove(KEY_ETA);
- }
+ setParameters(KEY_ETA, eta);
}
/**
@@ -127,7 +111,7 @@ public class ShowConstantTbt extends RPCRequest{
* @return String -a String value representing a text field for estimated time of arrival
*/
public String getEta(){
- return (String) parameters.get(KEY_ETA);
+ return getString(KEY_ETA);
}
/**
@@ -139,12 +123,7 @@ public class ShowConstantTbt extends RPCRequest{
* <b>Notes: </b>Maxlength=500
*/
public void setTotalDistance(String totalDistance){
- if(totalDistance != null){
- parameters.put(KEY_TOTAL_DISTANCE, totalDistance);
- }
- else{
- parameters.remove(KEY_TOTAL_DISTANCE);
- }
+ setParameters(KEY_TOTAL_DISTANCE, totalDistance);
}
/**
@@ -153,7 +132,7 @@ public class ShowConstantTbt extends RPCRequest{
* @return String -a String value representing a text field for total distance
*/
public String getTotalDistance(){
- return (String) parameters.get(KEY_TOTAL_DISTANCE);
+ return getString(KEY_TOTAL_DISTANCE);
}
/**
@@ -163,12 +142,7 @@ public class ShowConstantTbt extends RPCRequest{
* an Image value
*/
public void setTurnIcon(Image turnIcon){
- if(turnIcon != null){
- parameters.put(KEY_MANEUVER_IMAGE, turnIcon);
- }
- else{
- parameters.remove(KEY_MANEUVER_IMAGE);
- }
+ setParameters(KEY_MANEUVER_IMAGE, turnIcon);
}
/**
@@ -178,13 +152,7 @@ public class ShowConstantTbt extends RPCRequest{
*/
@SuppressWarnings("unchecked")
public Image getTurnIcon(){
- Object obj = parameters.get(KEY_MANEUVER_IMAGE);
- if (obj instanceof Image) {
- return (Image) obj;
- } else if (obj instanceof Hashtable) {
- return new Image((Hashtable<String, Object>) obj);
- }
- return null;
+ return (Image) getObject(Image.class, KEY_MANEUVER_IMAGE);
}
/**
@@ -194,12 +162,7 @@ public class ShowConstantTbt extends RPCRequest{
* an Image value
*/
public void setNextTurnIcon(Image nextTurnIcon){
- if(nextTurnIcon != null){
- parameters.put(KEY_NEXT_MANEUVER_IMAGE, nextTurnIcon);
- }
- else{
- parameters.remove(KEY_NEXT_MANEUVER_IMAGE);
- }
+ setParameters(KEY_NEXT_MANEUVER_IMAGE, nextTurnIcon);
}
/**
@@ -209,13 +172,7 @@ public class ShowConstantTbt extends RPCRequest{
*/
@SuppressWarnings("unchecked")
public Image getNextTurnIcon(){
- Object obj = parameters.get(KEY_NEXT_MANEUVER_IMAGE);
- if (obj instanceof Image) {
- return (Image) obj;
- } else if (obj instanceof Hashtable) {
- return new Image((Hashtable<String, Object>) obj);
- }
- return null;
+ return (Image) getObject(Image.class, KEY_NEXT_MANEUVER_IMAGE);
}
/**
@@ -227,12 +184,7 @@ public class ShowConstantTbt extends RPCRequest{
* <b>Notes: </b>Minvalue=0; Maxvalue=1000000000
*/
public void setDistanceToManeuver(Double distanceToManeuver){
- if(distanceToManeuver != null){
- parameters.put(KEY_MANEUVER_DISTANCE, distanceToManeuver);
- }
- else{
- parameters.remove(KEY_MANEUVER_DISTANCE);
- }
+ setParameters(KEY_MANEUVER_DISTANCE, distanceToManeuver);
}
/**
@@ -241,7 +193,7 @@ public class ShowConstantTbt extends RPCRequest{
* @return Double -a Double value representing a Fraction of distance till next maneuver
*/
public Double getDistanceToManeuver(){
- return (Double) parameters.get(KEY_MANEUVER_DISTANCE);
+ return getDouble(KEY_MANEUVER_DISTANCE);
}
/**
@@ -253,12 +205,7 @@ public class ShowConstantTbt extends RPCRequest{
* <b>Notes: </b>Minvalue=0; Maxvalue=1000000000
*/
public void setDistanceToManeuverScale(Double distanceToManeuverScale){
- if(distanceToManeuverScale != null){
- parameters.put(KEY_MANEUVER_DISTANCE_SCALE, distanceToManeuverScale);
- }
- else{
- parameters.remove(KEY_MANEUVER_DISTANCE_SCALE);
- }
+ setParameters(KEY_MANEUVER_DISTANCE_SCALE, distanceToManeuverScale);
}
/**
@@ -267,7 +214,7 @@ public class ShowConstantTbt extends RPCRequest{
* @return Double -a Double value representing a Distance till next maneuver (starting from) from previous maneuver
*/
public Double getDistanceToManeuverScale(){
- return (Double) parameters.get(KEY_MANEUVER_DISTANCE_SCALE);
+ return getDouble(KEY_MANEUVER_DISTANCE_SCALE);
}
/**
@@ -280,12 +227,7 @@ public class ShowConstantTbt extends RPCRequest{
* a Boolean value
*/
public void setManeuverComplete(Boolean maneuverComplete){
- if(maneuverComplete != null){
- parameters.put(KEY_MANEUVER_COMPLETE, maneuverComplete);
- }
- else{
- parameters.remove(KEY_MANEUVER_COMPLETE);
- }
+ setParameters(KEY_MANEUVER_COMPLETE, maneuverComplete);
}
/**
@@ -294,7 +236,7 @@ public class ShowConstantTbt extends RPCRequest{
* @return Boolean -a Boolean value
*/
public Boolean getManeuverComplete(){
- return (Boolean) parameters.get(KEY_MANEUVER_COMPLETE);
+ return getBoolean(KEY_MANEUVER_COMPLETE);
}
/**
@@ -307,12 +249,7 @@ public class ShowConstantTbt extends RPCRequest{
* a List<SoftButton> value
*/
public void setSoftButtons(List<SoftButton> softButtons){
- if(softButtons != null){
- parameters.put(KEY_SOFT_BUTTONS, softButtons);
- }
- else{
- parameters.remove(KEY_SOFT_BUTTONS);
- }
+ setParameters(KEY_SOFT_BUTTONS, softButtons);
}
/**
@@ -323,34 +260,14 @@ public class ShowConstantTbt extends RPCRequest{
*/
@SuppressWarnings("unchecked")
public List<SoftButton> getSoftButtons(){
- if (parameters.get(KEY_SOFT_BUTTONS) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_SOFT_BUTTONS);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof SoftButton) {
- return (List<SoftButton>) list;
- } else if (obj instanceof Hashtable) {
- List<SoftButton> newList = new ArrayList<SoftButton>();
- for (Object hashObj : list) {
- newList.add(new SoftButton((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<SoftButton>) getObject(SoftButton.class, KEY_SOFT_BUTTONS);
}
public void setTimeToDestination(String timeToDestination){
- if(timeToDestination != null){
- parameters.put(KEY_TIME_TO_DESTINATION, timeToDestination);
- }
- else{
- parameters.remove(KEY_TIME_TO_DESTINATION);
- }
+ setParameters(KEY_TIME_TO_DESTINATION, timeToDestination);
}
public String getTimeToDestination(){
- return (String) parameters.get(KEY_TIME_TO_DESTINATION);
+ return getString(KEY_TIME_TO_DESTINATION);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SingleTireStatus.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SingleTireStatus.java
index ab30ff365..4b8722ea5 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SingleTireStatus.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SingleTireStatus.java
@@ -1,10 +1,10 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.ComponentVolumeStatus;
+import java.util.Hashtable;
+
/**
* Tire pressure status of a single tire.
* <p><b>Parameter List</b></p>
@@ -47,11 +47,7 @@ public class SingleTireStatus extends RPCStruct {
* @param status the volume status of a single tire
*/
public void setStatus(ComponentVolumeStatus status) {
- if (status != null) {
- store.put(KEY_STATUS, status);
- } else {
- store.remove(KEY_STATUS);
- }
+ setValue(KEY_STATUS, status);
}
/**
@@ -59,12 +55,6 @@ public class SingleTireStatus extends RPCStruct {
* @return the volume status of a single tire
*/
public ComponentVolumeStatus getStatus() {
- Object obj = store.get(KEY_STATUS);
- if (obj instanceof ComponentVolumeStatus) {
- return (ComponentVolumeStatus) obj;
- } else if (obj instanceof String) {
- return ComponentVolumeStatus.valueForString((String) obj);
- }
- return null;
+ return (ComponentVolumeStatus) getObject(ComponentVolumeStatus.class, KEY_STATUS);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Slider.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Slider.java
index 16da80dcb..31fb55b1e 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Slider.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Slider.java
@@ -1,11 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
+import java.util.Hashtable;
+import java.util.List;
+
/**
* <p>Creates a full screen or pop-up overlay (depending on platform) with a single
* user controlled slider.</p>
@@ -119,11 +119,7 @@ public class Slider extends RPCRequest {
* <b>Notes: </b>Minvalue=2; Maxvalue=26
*/
public void setNumTicks(Integer numTicks) {
- if (numTicks != null) {
- parameters.put(KEY_NUM_TICKS, numTicks);
- } else {
- parameters.remove(KEY_NUM_TICKS);
- }
+ setParameters(KEY_NUM_TICKS, numTicks);
}
/**
@@ -133,7 +129,7 @@ public class Slider extends RPCRequest {
* items on a horizontal axis
*/
public Integer getNumTicks() {
- return (Integer) parameters.get(KEY_NUM_TICKS);
+ return getInteger(KEY_NUM_TICKS);
}
/**
@@ -146,11 +142,7 @@ public class Slider extends RPCRequest {
* <b>Notes: </b>Minvalue=1; Maxvalue=26
*/
public void setPosition(Integer position) {
- if (position != null) {
- parameters.put(KEY_POSITION, position);
- } else {
- parameters.remove(KEY_POSITION);
- }
+ setParameters(KEY_POSITION, position);
}
/**
@@ -160,7 +152,7 @@ public class Slider extends RPCRequest {
* slider control
*/
public Integer getPosition() {
- return (Integer) parameters.get(KEY_POSITION);
+ return getInteger(KEY_POSITION);
}
/**
@@ -172,11 +164,7 @@ public class Slider extends RPCRequest {
* <b>Notes: </b>Maxlength=500
*/
public void setSliderHeader(String sliderHeader) {
- if (sliderHeader != null) {
- parameters.put(KEY_SLIDER_HEADER, sliderHeader);
- } else {
- parameters.remove(KEY_SLIDER_HEADER);
- }
+ setParameters(KEY_SLIDER_HEADER, sliderHeader);
}
/**
@@ -185,7 +173,7 @@ public class Slider extends RPCRequest {
* @return String -a String value representing a text header to display
*/
public String getSliderHeader() {
- return (String) parameters.get(KEY_SLIDER_HEADER);
+ return getString(KEY_SLIDER_HEADER);
}
/**
@@ -197,11 +185,7 @@ public class Slider extends RPCRequest {
* <b>Notes: </b>Maxlength=500; Minvalue=1; Maxvalue=26
*/
public void setSliderFooter(List<String> sliderFooter) {
- if (sliderFooter != null) {
- parameters.put(KEY_SLIDER_FOOTER, sliderFooter);
- } else {
- parameters.remove(KEY_SLIDER_FOOTER);
- }
+ setParameters(KEY_SLIDER_FOOTER, sliderFooter);
}
/**
@@ -211,16 +195,7 @@ public class Slider extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<String> getSliderFooter() {
- if (parameters.get(KEY_SLIDER_FOOTER) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_SLIDER_FOOTER);
- if (list != null && list.size()>0) {
- Object obj = list.get(0);
- if (obj instanceof String) {
- return (List<String>) list;
- }
- }
- }
- return null;
+ return (List<String>) getObject(String.class, KEY_SLIDER_FOOTER);
}
/**
@@ -232,11 +207,7 @@ public class Slider extends RPCRequest {
* <b>Notes: </b>Minvalue=0; Maxvalue=65535; Defvalue=10000
*/
public void setTimeout(Integer timeout) {
- if (timeout != null) {
- parameters.put(KEY_TIMEOUT, timeout);
- } else {
- parameters.remove(KEY_TIMEOUT);
- }
+ setParameters(KEY_TIMEOUT, timeout);
}
/**
@@ -244,6 +215,6 @@ public class Slider extends RPCRequest {
* @return Integer -an Integer value representing an App defined timeout
*/
public Integer getTimeout() {
- return (Integer) parameters.get(KEY_TIMEOUT);
+ return getInteger(KEY_TIMEOUT);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SliderResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SliderResponse.java
index 0d8487d12..8d226d72c 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SliderResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SliderResponse.java
@@ -1,10 +1,10 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import java.util.Hashtable;
+
/**
* Slider Response is sent, when Slider has been called
*
@@ -36,17 +36,13 @@ public class SliderResponse extends RPCResponse {
* @param sliderPosition
*/
public void setSliderPosition(Integer sliderPosition) {
- if (sliderPosition != null) {
- parameters.put(KEY_SLIDER_POSITION, sliderPosition);
- } else {
- parameters.remove(KEY_SLIDER_POSITION);
- }
+ setParameters(KEY_SLIDER_POSITION, sliderPosition);
}
/**
* Gets an Initial position of slider control
* @return Integer
*/
public Integer getSliderPosition() {
- return (Integer) parameters.get(KEY_SLIDER_POSITION);
+ return getInteger(KEY_SLIDER_POSITION);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SoftButton.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SoftButton.java
index e010a08da..23e31316d 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SoftButton.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SoftButton.java
@@ -95,86 +95,40 @@ public class SoftButton extends RPCStruct {
super(hash);
}
public void setType(SoftButtonType type) {
- if (type != null) {
- store.put(KEY_TYPE, type);
- } else {
- store.remove(KEY_TYPE);
- }
+ setValue(KEY_TYPE, type);
}
public SoftButtonType getType() {
- Object obj = store.get(KEY_TYPE);
- if (obj instanceof SoftButtonType) {
- return (SoftButtonType) obj;
- } else if (obj instanceof String) {
- return SoftButtonType.valueForString((String) obj);
- }
- return null;
+ return (SoftButtonType) getObject(SoftButtonType.class, KEY_TYPE);
}
public void setText(String text) {
- if (text != null) {
- store.put(KEY_TEXT, text);
- } else {
- store.remove(KEY_TEXT);
- }
+ setValue(KEY_TEXT, text);
}
public String getText() {
- return (String) store.get(KEY_TEXT);
+ return getString(KEY_TEXT);
}
public void setImage(Image image) {
- if (image != null) {
- store.put(KEY_IMAGE, image);
- } else {
- store.remove(KEY_IMAGE);
- }
+ setValue(KEY_IMAGE, image);
}
@SuppressWarnings("unchecked")
public Image getImage() {
- Object obj = store.get(KEY_IMAGE);
- if (obj instanceof Image) {
- return (Image) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new Image((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_IMAGE, e);
- }
- }
- return null;
+ return (Image) getObject(Image.class, KEY_IMAGE);
}
public void setIsHighlighted(Boolean isHighlighted) {
- if (isHighlighted != null) {
- store.put(KEY_IS_HIGHLIGHTED, isHighlighted);
- } else {
- store.remove(KEY_IS_HIGHLIGHTED);
- }
+ setValue(KEY_IS_HIGHLIGHTED, isHighlighted);
}
public Boolean getIsHighlighted() {
- return (Boolean) store.get(KEY_IS_HIGHLIGHTED);
+ return getBoolean(KEY_IS_HIGHLIGHTED);
}
public void setSoftButtonID(Integer softButtonID) {
- if (softButtonID != null) {
- store.put(KEY_SOFT_BUTTON_ID, softButtonID);
- } else {
- store.remove(KEY_SOFT_BUTTON_ID);
- }
+ setValue(KEY_SOFT_BUTTON_ID, softButtonID);
}
public Integer getSoftButtonID() {
- return (Integer) store.get(KEY_SOFT_BUTTON_ID);
+ return getInteger(KEY_SOFT_BUTTON_ID);
}
public void setSystemAction(SystemAction systemAction) {
- if (systemAction != null) {
- store.put(KEY_SYSTEM_ACTION, systemAction);
- } else {
- store.remove(KEY_SYSTEM_ACTION);
- }
+ setValue(KEY_SYSTEM_ACTION, systemAction);
}
public SystemAction getSystemAction() {
- Object obj = store.get(KEY_SYSTEM_ACTION);
- if (obj instanceof SystemAction) {
- return (SystemAction) obj;
- } else if (obj instanceof String) {
- return SystemAction.valueForString((String) obj);
- }
- return null;
+ return (SystemAction) getObject(SystemAction.class, KEY_SYSTEM_ACTION);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SoftButtonCapabilities.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SoftButtonCapabilities.java
index e2849086c..205dfe74c 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SoftButtonCapabilities.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SoftButtonCapabilities.java
@@ -1,9 +1,9 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.proxy.RPCStruct;
+import java.util.Hashtable;
+
/**
* <p>Contains information about a SoftButton's capabilities.</p>
* <p><b>Parameter List</b></p>
@@ -72,11 +72,7 @@ public class SoftButtonCapabilities extends RPCStruct {
* @param shortPressAvailable whether the button supports a short press.
*/
public void setShortPressAvailable(Boolean shortPressAvailable) {
- if (shortPressAvailable != null) {
- store.put(KEY_SHORT_PRESS_AVAILABLE, shortPressAvailable);
- } else {
- store.remove(KEY_SHORT_PRESS_AVAILABLE);
- }
+ setValue(KEY_SHORT_PRESS_AVAILABLE, shortPressAvailable);
}
/**
@@ -84,7 +80,7 @@ public class SoftButtonCapabilities extends RPCStruct {
* @return whether the button supports a short press
*/
public Boolean getShortPressAvailable() {
- return (Boolean) store.get( KEY_SHORT_PRESS_AVAILABLE);
+ return getBoolean( KEY_SHORT_PRESS_AVAILABLE);
}
/**
@@ -92,11 +88,7 @@ public class SoftButtonCapabilities extends RPCStruct {
* @param longPressAvailable whether the button supports a long press
*/
public void setLongPressAvailable(Boolean longPressAvailable) {
- if (longPressAvailable != null) {
- store.put(KEY_LONG_PRESS_AVAILABLE, longPressAvailable);
- } else {
- store.remove(KEY_LONG_PRESS_AVAILABLE);
- }
+ setValue(KEY_LONG_PRESS_AVAILABLE, longPressAvailable);
}
/**
@@ -104,7 +96,7 @@ public class SoftButtonCapabilities extends RPCStruct {
* @return whether the button supports a LONG press
*/
public Boolean getLongPressAvailable() {
- return (Boolean) store.get( KEY_LONG_PRESS_AVAILABLE);
+ return getBoolean( KEY_LONG_PRESS_AVAILABLE);
}
/**
@@ -112,11 +104,7 @@ public class SoftButtonCapabilities extends RPCStruct {
* @param upDownAvailable the button supports "button down" and "button up".
*/
public void setUpDownAvailable(Boolean upDownAvailable) {
- if (upDownAvailable != null) {
- store.put(KEY_UP_DOWN_AVAILABLE, upDownAvailable);
- } else {
- store.remove(KEY_UP_DOWN_AVAILABLE);
- }
+ setValue(KEY_UP_DOWN_AVAILABLE, upDownAvailable);
}
/**
@@ -124,7 +112,7 @@ public class SoftButtonCapabilities extends RPCStruct {
* @return the button supports "button down" and "button up".
*/
public Boolean getUpDownAvailable() {
- return (Boolean) store.get( KEY_UP_DOWN_AVAILABLE);
+ return getBoolean( KEY_UP_DOWN_AVAILABLE);
}
/**
@@ -132,11 +120,7 @@ public class SoftButtonCapabilities extends RPCStruct {
* @param imageSupported whether the button supports referencing a static or dynamic image.
*/
public void setImageSupported(Boolean imageSupported) {
- if (imageSupported != null) {
- store.put(KEY_IMAGE_SUPPORTED, imageSupported);
- } else {
- store.remove(KEY_IMAGE_SUPPORTED);
- }
+ setValue(KEY_IMAGE_SUPPORTED, imageSupported);
}
/**
@@ -144,6 +128,6 @@ public class SoftButtonCapabilities extends RPCStruct {
* @return the button supports referencing a static or dynamic image.
*/
public Boolean getImageSupported() {
- return (Boolean) store.get( KEY_IMAGE_SUPPORTED);
+ return getBoolean( KEY_IMAGE_SUPPORTED);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Speak.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Speak.java
index b5e775f06..347960731 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Speak.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Speak.java
@@ -1,12 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
+import java.util.Hashtable;
+import java.util.List;
+
/**
* Speaks a phrase over the vehicle audio system using SDL's TTS
* (text-to-speech) engine. The provided text to be spoken can be simply a text
@@ -135,22 +134,7 @@ public class Speak extends RPCRequest {
*/
@SuppressWarnings("unchecked")
public List<TTSChunk> getTtsChunks() {
- if (parameters.get(KEY_TTS_CHUNKS) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_TTS_CHUNKS);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof TTSChunk) {
- return (List<TTSChunk>) list;
- } else if (obj instanceof Hashtable) {
- List<TTSChunk> newList = new ArrayList<TTSChunk>();
- for (Object hashObj : list) {
- newList.add(new TTSChunk((Hashtable<String, Object>)hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<TTSChunk>) getObject(TTSChunk.class, KEY_TTS_CHUNKS);
}
/**
* Sets a List<TTSChunk> representing an array of 1-100 TTSChunk structs
@@ -169,10 +153,6 @@ public class Speak extends RPCRequest {
* </ul>
*/
public void setTtsChunks( List<TTSChunk> ttsChunks ) {
- if (ttsChunks != null) {
- parameters.put(KEY_TTS_CHUNKS, ttsChunks );
- } else {
- parameters.remove(KEY_TTS_CHUNKS);
- }
+ setParameters(KEY_TTS_CHUNKS, ttsChunks);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/StartTime.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/StartTime.java
index bce0b9fc1..ec515ad46 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/StartTime.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/StartTime.java
@@ -1,9 +1,9 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.proxy.RPCStruct;
+import java.util.Hashtable;
+
/**
* Describes the hour, minute and second values used to set the media clock.
* <p><b> Parameter List</b></p>
@@ -59,7 +59,7 @@ public class StartTime extends RPCStruct {
* @return hours Minvalue="0", maxvalue="59"
*/
public Integer getHours() {
- return (Integer) store.get( KEY_HOURS );
+ return getInteger( KEY_HOURS );
}
/**
* Set the hour. Minvalue="0", maxvalue="59"
@@ -67,46 +67,34 @@ public class StartTime extends RPCStruct {
* @param hours min: 0; max: 59
*/
public void setHours( Integer hours ) {
- if (hours != null) {
- store.put(KEY_HOURS, hours );
- } else {
- store.remove(KEY_HOURS);
- }
+ setValue(KEY_HOURS, hours);
}
/**
* Get the minute. Minvalue="0", maxvalue="59".
* @return minutes Minvalue="0", maxvalue="59"
*/
public Integer getMinutes() {
- return (Integer) store.get( KEY_MINUTES );
+ return getInteger( KEY_MINUTES );
}
/**
* Set the minute. Minvalue="0", maxvalue="59".
* @param minutes min: 0; max: 59
*/
public void setMinutes( Integer minutes ) {
- if (minutes != null) {
- store.put(KEY_MINUTES, minutes );
- } else {
- store.remove(KEY_MINUTES);
- }
+ setValue(KEY_MINUTES, minutes);
}
/**
* Get the second. Minvalue="0", maxvalue="59".
* @return seconds. Minvalue="0", maxvalue="59".
*/
public Integer getSeconds() {
- return (Integer) store.get( KEY_SECONDS );
+ return getInteger( KEY_SECONDS );
}
/**
* Set the second. Minvalue="0", maxvalue="59".
* @param seconds min: 0 max: 59
*/
public void setSeconds( Integer seconds ) {
- if (seconds != null) {
- store.put(KEY_SECONDS, seconds );
- } else {
- store.remove(KEY_SECONDS);
- }
+ setValue(KEY_SECONDS, seconds);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/StreamRPCResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/StreamRPCResponse.java
index bd75bef6d..d1de24993 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/StreamRPCResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/StreamRPCResponse.java
@@ -1,10 +1,10 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import java.util.Hashtable;
+
public class StreamRPCResponse extends RPCResponse {
public static final String KEY_FILENAME = "fileName";
public static final String KEY_FILESIZE = "fileSize";
@@ -17,25 +17,17 @@ public class StreamRPCResponse extends RPCResponse {
}
public void setFileName(String fileName) {
- if (fileName != null) {
- parameters.put(KEY_FILENAME, fileName);
- } else {
- parameters.remove(KEY_FILENAME);
- }
+ setParameters(KEY_FILENAME, fileName);
}
public String getFileName() {
- return (String) parameters.get(KEY_FILENAME);
+ return getString(KEY_FILENAME);
}
public void setFileSize(Long fileSize) {
- if (fileSize != null) {
- parameters.put(KEY_FILESIZE, fileSize);
- } else {
- parameters.remove(KEY_FILESIZE);
- }
+ setParameters(KEY_FILESIZE, fileSize);
}
public Long getFileSize() {
- return (Long) parameters.get(KEY_FILESIZE);
+ return getLong(KEY_FILESIZE);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeButton.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeButton.java
index 7f1f92bae..4eedfcb47 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeButton.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeButton.java
@@ -1,10 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.ButtonName;
+
+import java.util.Hashtable;
+
/**
*<p> Establishes a subscription to button notifications for HMI buttons. Buttons
* are not necessarily physical buttons, but can also be "soft" buttons on a
@@ -98,23 +99,13 @@ public class SubscribeButton extends RPCRequest {
* @return ButtonName -an enum value, see <i>{@linkplain com.smartdevicelink.proxy.rpc.enums.ButtonName}</i>
*/
public ButtonName getButtonName() {
- Object obj = parameters.get(KEY_BUTTON_NAME);
- if (obj instanceof ButtonName) {
- return (ButtonName) obj;
- } else if (obj instanceof String) {
- return ButtonName.valueForString((String) obj);
- }
- return null;
+ return (ButtonName) getObject(ButtonName.class, KEY_BUTTON_NAME);
}
/**
* Sets a name of the button to subscribe to
* @param buttonName a <i>{@linkplain com.smartdevicelink.proxy.rpc.enums.ButtonName}</i> value
*/
public void setButtonName( ButtonName buttonName ) {
- if (buttonName != null) {
- parameters.put(KEY_BUTTON_NAME, buttonName );
- } else {
- parameters.remove(KEY_BUTTON_NAME);
- }
+ setParameters(KEY_BUTTON_NAME, buttonName);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeVehicleData.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeVehicleData.java
index 6b934ef21..ddbf54c4a 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeVehicleData.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeVehicleData.java
@@ -1,10 +1,10 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
+import java.util.Hashtable;
+
/**
* Subscribes for specific published vehicle data items. The data will be only
* sent, if it has changed. The application will be notified by the
@@ -289,11 +289,7 @@ public class SubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setGps(Boolean gps) {
- if (gps != null) {
- parameters.put(KEY_GPS, gps);
- } else {
- parameters.remove(KEY_GPS);
- }
+ setParameters(KEY_GPS, gps);
}
/**
@@ -303,7 +299,7 @@ public class SubscribeVehicleData extends RPCRequest {
* subscribed.
*/
public Boolean getGps() {
- return (Boolean) parameters.get(KEY_GPS);
+ return getBoolean(KEY_GPS);
}
/**
@@ -313,11 +309,7 @@ public class SubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setSpeed(Boolean speed) {
- if (speed != null) {
- parameters.put(KEY_SPEED, speed);
- } else {
- parameters.remove(KEY_SPEED);
- }
+ setParameters(KEY_SPEED, speed);
}
/**
@@ -327,7 +319,7 @@ public class SubscribeVehicleData extends RPCRequest {
* subscribed.
*/
public Boolean getSpeed() {
- return (Boolean) parameters.get(KEY_SPEED);
+ return getBoolean(KEY_SPEED);
}
/**
@@ -337,11 +329,7 @@ public class SubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setRpm(Boolean rpm) {
- if (rpm != null) {
- parameters.put(KEY_RPM, rpm);
- } else {
- parameters.remove(KEY_RPM);
- }
+ setParameters(KEY_RPM, rpm);
}
/**
@@ -351,7 +339,7 @@ public class SubscribeVehicleData extends RPCRequest {
* subscribed.
*/
public Boolean getRpm() {
- return (Boolean) parameters.get(KEY_RPM);
+ return getBoolean(KEY_RPM);
}
/**
@@ -361,11 +349,7 @@ public class SubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setFuelLevel(Boolean fuelLevel) {
- if (fuelLevel != null) {
- parameters.put(KEY_FUEL_LEVEL, fuelLevel);
- } else {
- parameters.remove(KEY_FUEL_LEVEL);
- }
+ setParameters(KEY_FUEL_LEVEL, fuelLevel);
}
/**
@@ -376,7 +360,7 @@ public class SubscribeVehicleData extends RPCRequest {
* been subscribed.
*/
public Boolean getFuelLevel() {
- return (Boolean) parameters.get(KEY_FUEL_LEVEL);
+ return getBoolean(KEY_FUEL_LEVEL);
}
/**
@@ -409,11 +393,7 @@ public class SubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setFuelLevelState(Boolean fuelLevelState) {
- if (fuelLevelState != null) {
- parameters.put(KEY_FUEL_LEVEL_STATE, fuelLevelState);
- } else {
- parameters.remove(KEY_FUEL_LEVEL_STATE);
- }
+ setParameters(KEY_FUEL_LEVEL_STATE, fuelLevelState);
}
/**
@@ -424,7 +404,7 @@ public class SubscribeVehicleData extends RPCRequest {
* has been subscribed.
*/
public Boolean getFuelLevelState() {
- return (Boolean) parameters.get(KEY_FUEL_LEVEL_STATE);
+ return getBoolean(KEY_FUEL_LEVEL_STATE);
}
/**
@@ -434,11 +414,7 @@ public class SubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setInstantFuelConsumption(Boolean instantFuelConsumption) {
- if (instantFuelConsumption != null) {
- parameters.put(KEY_INSTANT_FUEL_CONSUMPTION, instantFuelConsumption);
- } else {
- parameters.remove(KEY_INSTANT_FUEL_CONSUMPTION);
- }
+ setParameters(KEY_INSTANT_FUEL_CONSUMPTION, instantFuelConsumption);
}
/**
@@ -449,7 +425,7 @@ public class SubscribeVehicleData extends RPCRequest {
* has been subscribed.
*/
public Boolean getInstantFuelConsumption() {
- return (Boolean) parameters.get(KEY_INSTANT_FUEL_CONSUMPTION);
+ return getBoolean(KEY_INSTANT_FUEL_CONSUMPTION);
}
/**
@@ -459,11 +435,7 @@ public class SubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setExternalTemperature(Boolean externalTemperature) {
- if (externalTemperature != null) {
- parameters.put(KEY_EXTERNAL_TEMPERATURE, externalTemperature);
- } else {
- parameters.remove(KEY_EXTERNAL_TEMPERATURE);
- }
+ setParameters(KEY_EXTERNAL_TEMPERATURE, externalTemperature);
}
/**
@@ -474,7 +446,7 @@ public class SubscribeVehicleData extends RPCRequest {
* has been subscribed.
*/
public Boolean getExternalTemperature() {
- return (Boolean) parameters.get(KEY_EXTERNAL_TEMPERATURE);
+ return getBoolean(KEY_EXTERNAL_TEMPERATURE);
}
/**
@@ -484,11 +456,7 @@ public class SubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setPrndl(Boolean prndl) {
- if (prndl != null) {
- parameters.put(KEY_PRNDL, prndl);
- } else {
- parameters.remove(KEY_PRNDL);
- }
+ setParameters(KEY_PRNDL, prndl);
}
/**
@@ -499,7 +467,7 @@ public class SubscribeVehicleData extends RPCRequest {
* has been subscribed.
*/
public Boolean getPrndl() {
- return (Boolean) parameters.get(KEY_PRNDL);
+ return getBoolean(KEY_PRNDL);
}
/**
@@ -509,11 +477,7 @@ public class SubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setTirePressure(Boolean tirePressure) {
- if (tirePressure != null) {
- parameters.put(KEY_TIRE_PRESSURE, tirePressure);
- } else {
- parameters.remove(KEY_TIRE_PRESSURE);
- }
+ setParameters(KEY_TIRE_PRESSURE, tirePressure);
}
/**
@@ -524,7 +488,7 @@ public class SubscribeVehicleData extends RPCRequest {
* has been subscribed.
*/
public Boolean getTirePressure() {
- return (Boolean) parameters.get(KEY_TIRE_PRESSURE);
+ return getBoolean(KEY_TIRE_PRESSURE);
}
/**
@@ -534,11 +498,7 @@ public class SubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setOdometer(Boolean odometer) {
- if (odometer != null) {
- parameters.put(KEY_ODOMETER, odometer);
- } else {
- parameters.remove(KEY_ODOMETER);
- }
+ setParameters(KEY_ODOMETER, odometer);
}
/**
@@ -549,7 +509,7 @@ public class SubscribeVehicleData extends RPCRequest {
* has been subscribed.
*/
public Boolean getOdometer() {
- return (Boolean) parameters.get(KEY_ODOMETER);
+ return getBoolean(KEY_ODOMETER);
}
/**
@@ -559,11 +519,7 @@ public class SubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setBeltStatus(Boolean beltStatus) {
- if (beltStatus != null) {
- parameters.put(KEY_BELT_STATUS, beltStatus);
- } else {
- parameters.remove(KEY_BELT_STATUS);
- }
+ setParameters(KEY_BELT_STATUS, beltStatus);
}
/**
@@ -574,7 +530,7 @@ public class SubscribeVehicleData extends RPCRequest {
* has been subscribed.
*/
public Boolean getBeltStatus() {
- return (Boolean) parameters.get(KEY_BELT_STATUS);
+ return getBoolean(KEY_BELT_STATUS);
}
/**
@@ -584,11 +540,7 @@ public class SubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setBodyInformation(Boolean bodyInformation) {
- if (bodyInformation != null) {
- parameters.put(KEY_BODY_INFORMATION, bodyInformation);
- } else {
- parameters.remove(KEY_BODY_INFORMATION);
- }
+ setParameters(KEY_BODY_INFORMATION, bodyInformation);
}
/**
@@ -599,7 +551,7 @@ public class SubscribeVehicleData extends RPCRequest {
* has been subscribed.
*/
public Boolean getBodyInformation() {
- return (Boolean) parameters.get(KEY_BODY_INFORMATION);
+ return getBoolean(KEY_BODY_INFORMATION);
}
/**
@@ -609,11 +561,7 @@ public class SubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setDeviceStatus(Boolean deviceStatus) {
- if (deviceStatus != null) {
- parameters.put(KEY_DEVICE_STATUS, deviceStatus);
- } else {
- parameters.remove(KEY_DEVICE_STATUS);
- }
+ setParameters(KEY_DEVICE_STATUS, deviceStatus);
}
/**
@@ -624,7 +572,7 @@ public class SubscribeVehicleData extends RPCRequest {
* has been subscribed.
*/
public Boolean getDeviceStatus() {
- return (Boolean) parameters.get(KEY_DEVICE_STATUS);
+ return getBoolean(KEY_DEVICE_STATUS);
}
/**
@@ -634,11 +582,7 @@ public class SubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setDriverBraking(Boolean driverBraking) {
- if (driverBraking != null) {
- parameters.put(KEY_DRIVER_BRAKING, driverBraking);
- } else {
- parameters.remove(KEY_DRIVER_BRAKING);
- }
+ setParameters(KEY_DRIVER_BRAKING, driverBraking);
}
/**
@@ -649,7 +593,7 @@ public class SubscribeVehicleData extends RPCRequest {
* has been subscribed.
*/
public Boolean getDriverBraking() {
- return (Boolean) parameters.get(KEY_DRIVER_BRAKING);
+ return getBoolean(KEY_DRIVER_BRAKING);
}
/**
@@ -659,11 +603,7 @@ public class SubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setWiperStatus(Boolean wiperStatus) {
- if (wiperStatus != null) {
- parameters.put(KEY_WIPER_STATUS, wiperStatus);
- } else {
- parameters.remove(KEY_WIPER_STATUS);
- }
+ setParameters(KEY_WIPER_STATUS, wiperStatus);
}
/**
@@ -674,7 +614,7 @@ public class SubscribeVehicleData extends RPCRequest {
* has been subscribed.
*/
public Boolean getWiperStatus() {
- return (Boolean) parameters.get(KEY_WIPER_STATUS);
+ return getBoolean(KEY_WIPER_STATUS);
}
/**
@@ -684,11 +624,7 @@ public class SubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setHeadLampStatus(Boolean headLampStatus) {
- if (headLampStatus != null) {
- parameters.put(KEY_HEAD_LAMP_STATUS, headLampStatus);
- } else {
- parameters.remove(KEY_HEAD_LAMP_STATUS);
- }
+ setParameters(KEY_HEAD_LAMP_STATUS, headLampStatus);
}
/**
@@ -699,7 +635,7 @@ public class SubscribeVehicleData extends RPCRequest {
* has been subscribed.
*/
public Boolean getHeadLampStatus() {
- return (Boolean) parameters.get(KEY_HEAD_LAMP_STATUS);
+ return getBoolean(KEY_HEAD_LAMP_STATUS);
}
/**
@@ -709,11 +645,7 @@ public class SubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setEngineTorque(Boolean engineTorque) {
- if (engineTorque != null) {
- parameters.put(KEY_ENGINE_TORQUE, engineTorque);
- } else {
- parameters.remove(KEY_ENGINE_TORQUE);
- }
+ setParameters(KEY_ENGINE_TORQUE, engineTorque);
}
/**
@@ -724,7 +656,7 @@ public class SubscribeVehicleData extends RPCRequest {
* has been subscribed.
*/
public Boolean getEngineTorque() {
- return (Boolean) parameters.get(KEY_ENGINE_TORQUE);
+ return getBoolean(KEY_ENGINE_TORQUE);
}
/**
@@ -734,11 +666,7 @@ public class SubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setAccPedalPosition(Boolean accPedalPosition) {
- if (accPedalPosition != null) {
- parameters.put(KEY_ACC_PEDAL_POSITION, accPedalPosition);
- } else {
- parameters.remove(KEY_ACC_PEDAL_POSITION);
- }
+ setParameters(KEY_ACC_PEDAL_POSITION, accPedalPosition);
}
/**
@@ -749,69 +677,45 @@ public class SubscribeVehicleData extends RPCRequest {
* has been subscribed.
*/
public Boolean getAccPedalPosition() {
- return (Boolean) parameters.get(KEY_ACC_PEDAL_POSITION);
+ return getBoolean(KEY_ACC_PEDAL_POSITION);
}
public void setSteeringWheelAngle(Boolean steeringWheelAngle) {
- if (steeringWheelAngle != null) {
- parameters.put(KEY_STEERING_WHEEL_ANGLE, steeringWheelAngle);
- } else {
- parameters.remove(KEY_STEERING_WHEEL_ANGLE);
- }
+ setParameters(KEY_STEERING_WHEEL_ANGLE, steeringWheelAngle);
}
public Boolean getSteeringWheelAngle() {
- return (Boolean) parameters.get(KEY_STEERING_WHEEL_ANGLE);
+ return getBoolean(KEY_STEERING_WHEEL_ANGLE);
}
public void setECallInfo(Boolean eCallInfo) {
- if (eCallInfo != null) {
- parameters.put(KEY_E_CALL_INFO, eCallInfo);
- } else {
- parameters.remove(KEY_E_CALL_INFO);
- }
+ setParameters(KEY_E_CALL_INFO, eCallInfo);
}
public Boolean getECallInfo() {
- return (Boolean) parameters.get(KEY_E_CALL_INFO);
+ return getBoolean(KEY_E_CALL_INFO);
}
public void setAirbagStatus(Boolean airbagStatus) {
- if (airbagStatus != null) {
- parameters.put(KEY_AIRBAG_STATUS, airbagStatus);
- } else {
- parameters.remove(KEY_AIRBAG_STATUS);
- }
+ setParameters(KEY_AIRBAG_STATUS, airbagStatus);
}
public Boolean getAirbagStatus() {
- return (Boolean) parameters.get(KEY_AIRBAG_STATUS);
+ return getBoolean(KEY_AIRBAG_STATUS);
}
public void setEmergencyEvent(Boolean emergencyEvent) {
- if (emergencyEvent != null) {
- parameters.put(KEY_EMERGENCY_EVENT, emergencyEvent);
- } else {
- parameters.remove(KEY_EMERGENCY_EVENT);
- }
+ setParameters(KEY_EMERGENCY_EVENT, emergencyEvent);
}
public Boolean getEmergencyEvent() {
- return (Boolean) parameters.get(KEY_EMERGENCY_EVENT);
+ return getBoolean(KEY_EMERGENCY_EVENT);
}
public void setClusterModeStatus(Boolean clusterModeStatus) {
- if (clusterModeStatus != null) {
- parameters.put(KEY_CLUSTER_MODE_STATUS, clusterModeStatus);
- } else {
- parameters.remove(KEY_CLUSTER_MODE_STATUS);
- }
+ setParameters(KEY_CLUSTER_MODE_STATUS, clusterModeStatus);
}
public Boolean getClusterModeStatus() {
- return (Boolean) parameters.get(KEY_CLUSTER_MODE_STATUS);
+ return getBoolean(KEY_CLUSTER_MODE_STATUS);
}
public void setMyKey(Boolean myKey) {
- if (myKey != null) {
- parameters.put(KEY_MY_KEY, myKey);
- } else {
- parameters.remove(KEY_MY_KEY);
- }
+ setParameters(KEY_MY_KEY, myKey);
}
public Boolean getMyKey() {
- return (Boolean) parameters.get(KEY_MY_KEY);
+ return getBoolean(KEY_MY_KEY);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeVehicleDataResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeVehicleDataResponse.java
index f8092cae8..3c2a245ee 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeVehicleDataResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeVehicleDataResponse.java
@@ -1,10 +1,9 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
-import com.smartdevicelink.util.DebugTool;
+
+import java.util.Hashtable;
/**
* Subscribe Vehicle Data Response is sent, when SubscribeVehicleData has been called
@@ -60,11 +59,7 @@ public class SubscribeVehicleDataResponse extends RPCResponse {
* @param gps
*/
public void setGps(VehicleDataResult gps) {
- if (gps != null) {
- parameters.put(KEY_GPS, gps);
- } else {
- parameters.remove(KEY_GPS);
- }
+ setParameters(KEY_GPS, gps);
}
/**
* Gets gps
@@ -72,28 +67,14 @@ public class SubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getGps() {
- Object obj = parameters.get(KEY_GPS);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_GPS, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_GPS);
}
/**
* Sets speed
* @param speed
*/
public void setSpeed(VehicleDataResult speed) {
- if (speed != null) {
- parameters.put(KEY_SPEED, speed);
- } else {
- parameters.remove(KEY_SPEED);
- }
+ setParameters(KEY_SPEED, speed);
}
/**
* Gets speed
@@ -101,28 +82,14 @@ public class SubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getSpeed() {
- Object obj = parameters.get(KEY_SPEED);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_SPEED, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_SPEED);
}
/**
* Sets rpm
* @param rpm
*/
public void setRpm(VehicleDataResult rpm) {
- if (rpm != null) {
- parameters.put(KEY_RPM, rpm);
- } else {
- parameters.remove(KEY_RPM);
- }
+ setParameters(KEY_RPM, rpm);
}
/**
* Gets rpm
@@ -130,28 +97,14 @@ public class SubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getRpm() {
- Object obj = parameters.get(KEY_RPM);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_RPM, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_RPM);
}
/**
* Sets Fuel Level
* @param fuelLevel
*/
public void setFuelLevel(VehicleDataResult fuelLevel) {
- if (fuelLevel != null) {
- parameters.put(KEY_FUEL_LEVEL, fuelLevel);
- } else {
- parameters.remove(KEY_FUEL_LEVEL);
- }
+ setParameters(KEY_FUEL_LEVEL, fuelLevel);
}
/**
* Gets Fuel Level
@@ -159,17 +112,7 @@ public class SubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getFuelLevel() {
- Object obj = parameters.get(KEY_FUEL_LEVEL);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_FUEL_LEVEL, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_FUEL_LEVEL);
}
/**
* Sets Fuel Level State
@@ -192,11 +135,7 @@ public class SubscribeVehicleDataResponse extends RPCResponse {
* @param fuelLevelState
*/
public void setFuelLevelState(VehicleDataResult fuelLevelState) {
- if (fuelLevelState != null) {
- parameters.put(KEY_FUEL_LEVEL_STATE, fuelLevelState);
- } else {
- parameters.remove(KEY_FUEL_LEVEL_STATE);
- }
+ setParameters(KEY_FUEL_LEVEL_STATE, fuelLevelState);
}
/**
* Gets Fuel Level State
@@ -204,24 +143,14 @@ public class SubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getFuelLevelState() {
- Object obj = parameters.get(KEY_FUEL_LEVEL_STATE);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_FUEL_LEVEL_STATE);
}
/**
* Sets Instant Fuel Comsumption
* @param instantFuelConsumption
*/
public void setInstantFuelConsumption(VehicleDataResult instantFuelConsumption) {
- if (instantFuelConsumption != null) {
- parameters.put(KEY_INSTANT_FUEL_CONSUMPTION, instantFuelConsumption);
- } else {
- parameters.remove(KEY_INSTANT_FUEL_CONSUMPTION);
- }
+ setParameters(KEY_INSTANT_FUEL_CONSUMPTION, instantFuelConsumption);
}
/**
* Gets Instant Fuel Consumption
@@ -229,28 +158,14 @@ public class SubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getInstantFuelConsumption() {
- Object obj = parameters.get(KEY_INSTANT_FUEL_CONSUMPTION);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_INSTANT_FUEL_CONSUMPTION, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_INSTANT_FUEL_CONSUMPTION);
}
/**
* Sets External Temperature
* @param externalTemperature
*/
public void setExternalTemperature(VehicleDataResult externalTemperature) {
- if (externalTemperature != null) {
- parameters.put(KEY_EXTERNAL_TEMPERATURE, externalTemperature);
- } else {
- parameters.remove(KEY_EXTERNAL_TEMPERATURE);
- }
+ setParameters(KEY_EXTERNAL_TEMPERATURE, externalTemperature);
}
/**
* Gets External Temperature
@@ -258,28 +173,14 @@ public class SubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getExternalTemperature() {
- Object obj = parameters.get(KEY_EXTERNAL_TEMPERATURE);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_EXTERNAL_TEMPERATURE, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_EXTERNAL_TEMPERATURE);
}
/**
* Sets currently selected gear data
* @param prndl
*/
public void setPrndl(VehicleDataResult prndl) {
- if (prndl != null) {
- parameters.put(KEY_PRNDL, prndl);
- } else {
- parameters.remove(KEY_PRNDL);
- }
+ setParameters(KEY_PRNDL, prndl);
}
/**
* Gets currently selected gear data
@@ -287,28 +188,14 @@ public class SubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getPrndl() {
- Object obj = parameters.get(KEY_PRNDL);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_PRNDL, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_PRNDL);
}
/**
* Sets Tire Pressure
* @param tirePressure
*/
public void setTirePressure(VehicleDataResult tirePressure) {
- if (tirePressure != null) {
- parameters.put(KEY_TIRE_PRESSURE, tirePressure);
- } else {
- parameters.remove(KEY_TIRE_PRESSURE);
- }
+ setParameters(KEY_TIRE_PRESSURE, tirePressure);
}
/**
* Gets Tire Pressure
@@ -316,28 +203,14 @@ public class SubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getTirePressure() {
- Object obj = parameters.get(KEY_TIRE_PRESSURE);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_TIRE_PRESSURE, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_TIRE_PRESSURE);
}
/**
* Sets Odometer
* @param odometer
*/
public void setOdometer(VehicleDataResult odometer) {
- if (odometer != null) {
- parameters.put(KEY_ODOMETER, odometer);
- } else {
- parameters.remove(KEY_ODOMETER);
- }
+ setParameters(KEY_ODOMETER, odometer);
}
/**
* Gets Odometer
@@ -345,28 +218,14 @@ public class SubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getOdometer() {
- Object obj = parameters.get(KEY_ODOMETER);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_ODOMETER, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_ODOMETER);
}
/**
* Sets Belt Status
* @param beltStatus
*/
public void setBeltStatus(VehicleDataResult beltStatus) {
- if (beltStatus != null) {
- parameters.put(KEY_BELT_STATUS, beltStatus);
- } else {
- parameters.remove(KEY_BELT_STATUS);
- }
+ setParameters(KEY_BELT_STATUS, beltStatus);
}
/**
* Gets Belt Status
@@ -374,28 +233,14 @@ public class SubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getBeltStatus() {
- Object obj = parameters.get(KEY_BELT_STATUS);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_BELT_STATUS, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_BELT_STATUS);
}
/**
* Sets Body Information
* @param bodyInformation
*/
public void setBodyInformation(VehicleDataResult bodyInformation) {
- if (bodyInformation != null) {
- parameters.put(KEY_BODY_INFORMATION, bodyInformation);
- } else {
- parameters.remove(KEY_BODY_INFORMATION);
- }
+ setParameters(KEY_BODY_INFORMATION, bodyInformation);
}
/**
* Gets Body Information
@@ -403,28 +248,14 @@ public class SubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getBodyInformation() {
- Object obj = parameters.get(KEY_BODY_INFORMATION);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_BODY_INFORMATION, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_BODY_INFORMATION);
}
/**
* Sets Device Status
* @param deviceStatus
*/
public void setDeviceStatus(VehicleDataResult deviceStatus) {
- if (deviceStatus != null) {
- parameters.put(KEY_DEVICE_STATUS, deviceStatus);
- } else {
- parameters.remove(KEY_DEVICE_STATUS);
- }
+ setParameters(KEY_DEVICE_STATUS, deviceStatus);
}
/**
* Gets Device Status
@@ -432,28 +263,14 @@ public class SubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getDeviceStatus() {
- Object obj = parameters.get(KEY_DEVICE_STATUS);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_DEVICE_STATUS, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_DEVICE_STATUS);
}
/**
* Sets Driver Barking
* @param driverBraking
*/
public void setDriverBraking(VehicleDataResult driverBraking) {
- if (driverBraking != null) {
- parameters.put(KEY_DRIVER_BRAKING, driverBraking);
- } else {
- parameters.remove(KEY_DRIVER_BRAKING);
- }
+ setParameters(KEY_DRIVER_BRAKING, driverBraking);
}
/**
* Gets Driver Barking
@@ -461,28 +278,14 @@ public class SubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getDriverBraking() {
- Object obj = parameters.get(KEY_DRIVER_BRAKING);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_DRIVER_BRAKING, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_DRIVER_BRAKING);
}
/**
* Sets wiper Status
* @param wiperStatus
*/
public void setWiperStatus(VehicleDataResult wiperStatus) {
- if (wiperStatus != null) {
- parameters.put(KEY_WIPER_STATUS, wiperStatus);
- } else {
- parameters.remove(KEY_WIPER_STATUS);
- }
+ setParameters(KEY_WIPER_STATUS, wiperStatus);
}
/**
* Gets Wiper Status
@@ -490,28 +293,14 @@ public class SubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getWiperStatus() {
- Object obj = parameters.get(KEY_WIPER_STATUS);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_WIPER_STATUS, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_WIPER_STATUS);
}
/**
* Sets Head Lamp Status
* @param headLampStatus
*/
public void setHeadLampStatus(VehicleDataResult headLampStatus) {
- if (headLampStatus != null) {
- parameters.put(KEY_HEAD_LAMP_STATUS, headLampStatus);
- } else {
- parameters.remove(KEY_HEAD_LAMP_STATUS);
- }
+ setParameters(KEY_HEAD_LAMP_STATUS, headLampStatus);
}
/**
* Gets Head Lamp Status
@@ -519,28 +308,14 @@ public class SubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getHeadLampStatus() {
- Object obj = parameters.get(KEY_HEAD_LAMP_STATUS);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_HEAD_LAMP_STATUS, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_HEAD_LAMP_STATUS);
}
/**
* Sets Engine Torque
* @param engineTorque
*/
public void setEngineTorque(VehicleDataResult engineTorque) {
- if (engineTorque != null) {
- parameters.put(KEY_ENGINE_TORQUE, engineTorque);
- } else {
- parameters.remove(KEY_ENGINE_TORQUE);
- }
+ setParameters(KEY_ENGINE_TORQUE, engineTorque);
}
/**
* Gets Engine Torque
@@ -548,28 +323,14 @@ public class SubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getEngineTorque() {
- Object obj = parameters.get(KEY_ENGINE_TORQUE);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_ENGINE_TORQUE, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_ENGINE_TORQUE);
}
/**
* Sets AccPedal Position
* @param accPedalPosition
*/
public void setAccPedalPosition(VehicleDataResult accPedalPosition) {
- if (accPedalPosition != null) {
- parameters.put(KEY_ACC_PEDAL_POSITION, accPedalPosition);
- } else {
- parameters.remove(KEY_ACC_PEDAL_POSITION);
- }
+ setParameters(KEY_ACC_PEDAL_POSITION, accPedalPosition);
}
/**
* Gets AccPedal Position
@@ -577,145 +338,51 @@ public class SubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getAccPedalPosition() {
- Object obj = parameters.get(KEY_ACC_PEDAL_POSITION);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_ACC_PEDAL_POSITION, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_ACC_PEDAL_POSITION);
}
public void setSteeringWheelAngle(VehicleDataResult steeringWheelAngle) {
- if (steeringWheelAngle != null) {
- parameters.put(KEY_STEERING_WHEEL_ANGLE, steeringWheelAngle);
- } else {
- parameters.remove(KEY_STEERING_WHEEL_ANGLE);
- }
+ setParameters(KEY_STEERING_WHEEL_ANGLE, steeringWheelAngle);
}
@SuppressWarnings("unchecked")
public VehicleDataResult getSteeringWheelAngle() {
- Object obj = parameters.get(KEY_STEERING_WHEEL_ANGLE);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_STEERING_WHEEL_ANGLE, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_STEERING_WHEEL_ANGLE);
}
public void setECallInfo(VehicleDataResult eCallInfo) {
- if (eCallInfo != null) {
- parameters.put(KEY_E_CALL_INFO, eCallInfo);
- } else {
- parameters.remove(KEY_E_CALL_INFO);
- }
+ setParameters(KEY_E_CALL_INFO, eCallInfo);
}
@SuppressWarnings("unchecked")
public VehicleDataResult getECallInfo() {
- Object obj = parameters.get(KEY_E_CALL_INFO);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_E_CALL_INFO, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_E_CALL_INFO);
}
public void setAirbagStatus(VehicleDataResult airbagStatus) {
- if (airbagStatus != null) {
- parameters.put(KEY_AIRBAG_STATUS, airbagStatus);
- } else {
- parameters.remove(KEY_AIRBAG_STATUS);
- }
+ setParameters(KEY_AIRBAG_STATUS, airbagStatus);
}
@SuppressWarnings("unchecked")
public VehicleDataResult getAirbagStatus() {
- Object obj = parameters.get(KEY_AIRBAG_STATUS);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_AIRBAG_STATUS, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_AIRBAG_STATUS);
}
public void setEmergencyEvent(VehicleDataResult emergencyEvent) {
- if (emergencyEvent != null) {
- parameters.put(KEY_EMERGENCY_EVENT, emergencyEvent);
- } else {
- parameters.remove(KEY_EMERGENCY_EVENT);
- }
+ setParameters(KEY_EMERGENCY_EVENT, emergencyEvent);
}
@SuppressWarnings("unchecked")
public VehicleDataResult getEmergencyEvent() {
- Object obj = parameters.get(KEY_EMERGENCY_EVENT);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_EMERGENCY_EVENT, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_EMERGENCY_EVENT);
}
public void setClusterModeStatus(VehicleDataResult clusterModeStatus) {
- if (clusterModeStatus != null) {
- parameters.put(KEY_CLUSTER_MODE_STATUS, clusterModeStatus);
- } else {
- parameters.remove(KEY_CLUSTER_MODE_STATUS);
- }
+ setParameters(KEY_CLUSTER_MODE_STATUS, clusterModeStatus);
}
@SuppressWarnings("unchecked")
public VehicleDataResult getClusterModeStatus() {
- Object obj = parameters.get(KEY_CLUSTER_MODE_STATUS);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_CLUSTER_MODE_STATUS, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_CLUSTER_MODE_STATUS);
}
public void setMyKey(VehicleDataResult myKey) {
- if (myKey != null) {
- parameters.put(KEY_MY_KEY, myKey);
- } else {
- parameters.remove(KEY_MY_KEY);
- }
+ setParameters(KEY_MY_KEY, myKey);
}
@SuppressWarnings("unchecked")
public VehicleDataResult getMyKey() {
- Object obj = parameters.get(KEY_MY_KEY);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_MY_KEY, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_MY_KEY);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemCapability.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemCapability.java
new file mode 100644
index 000000000..a039e266e
--- /dev/null
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemCapability.java
@@ -0,0 +1,57 @@
+package com.smartdevicelink.proxy.rpc;
+
+import com.smartdevicelink.proxy.RPCStruct;
+import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType;
+
+import java.util.Hashtable;
+
+/**
+ * Struct that indicates the a SystemCapabilityType and houses different structs to describe particular capabilities
+ */
+
+public class SystemCapability extends RPCStruct {
+ public static final String KEY_SYSTEM_CAPABILITY_TYPE = "systemCapabilityType";
+ public static final String KEY_NAVIGATION_CAPABILITY = "navigationCapability";
+ public static final String KEY_PHONE_CAPABILITY = "phoneCapability";
+
+ public SystemCapability(){}
+
+ public SystemCapability(Hashtable<String, Object> hash) {
+ super(hash);
+ }
+
+ /**
+ *
+ * @return The SystemCapabilityType that indicates which type of data should be changed and identifies which data object exists in this struct. For example, if the SystemCapability Type is NAVIGATION then a "navigationCapability" should exist
+ */
+ public SystemCapabilityType getSystemCapabilityType(){
+ return (SystemCapabilityType) getObject(SystemCapabilityType.class, KEY_SYSTEM_CAPABILITY_TYPE);
+ }
+
+ /**
+ * @param value Set the SystemCapabilityType that indicates which type of data should be changed and identifies which data object exists in this struct.
+ */
+ public void setSystemCapabilityType(SystemCapabilityType value){
+ setValue(KEY_SYSTEM_CAPABILITY_TYPE, value);
+ }
+
+ public RPCStruct getCapabilityForType(SystemCapabilityType type){
+ if(type.equals(SystemCapabilityType.NAVIGATION)){
+ return (RPCStruct) getObject(NavigationCapability.class, KEY_NAVIGATION_CAPABILITY);
+ }else if(type.equals(SystemCapabilityType.PHONE_CALL)){
+ return (RPCStruct) getObject(PhoneCapability.class, KEY_PHONE_CAPABILITY);
+ }else{
+ return null;
+ }
+ }
+
+ public void setCapabilityForType(SystemCapabilityType type, RPCStruct capability){
+ if(type.equals(SystemCapabilityType.NAVIGATION)){
+ setValue(KEY_NAVIGATION_CAPABILITY, capability);
+ }else if(type.equals(SystemCapabilityType.PHONE_CALL)){
+ setValue(KEY_PHONE_CAPABILITY, capability);
+ }else{
+ return;
+ }
+ }
+}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemRequest.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemRequest.java
index 14164b964..154907419 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemRequest.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemRequest.java
@@ -1,11 +1,12 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.RequestType;
+
+import java.util.Hashtable;
+import java.util.List;
+
/** An asynchronous request from the device; binary data can be included in hybrid part of message for some requests (such as HTTP, Proprietary, or Authentication requests)
*
* <p><b>Parameter List</b></p>
@@ -64,53 +65,26 @@ public class SystemRequest extends RPCRequest {
@SuppressWarnings("unchecked")
public List<String> getLegacyData() {
- if (parameters.get(KEY_DATA) instanceof List<?>) {
- List<?> list = (List<?>)parameters.get(KEY_DATA);
- if (list != null && list.size()>0) {
- Object obj = list.get(0);
- if (obj instanceof String) {
- return (List<String>) list;
- }
- }
- }
- return null;
+ return (List<String>) getObject(String.class, KEY_DATA);
}
public void setLegacyData( List<String> data ) {
- if ( data!= null) {
- parameters.put(KEY_DATA, data );
- } else {
- parameters.remove(KEY_DATA);
- }
+ setParameters(KEY_DATA, data);
}
public String getFileName() {
- return (String) parameters.get(KEY_FILE_NAME);
+ return getString(KEY_FILE_NAME);
}
public void setFileName(String fileName) {
- if (fileName != null) {
- parameters.put(KEY_FILE_NAME, fileName);
- } else {
- parameters.remove(KEY_FILE_NAME);
- }
+ setParameters(KEY_FILE_NAME, fileName);
}
public RequestType getRequestType() {
- Object obj = parameters.get(KEY_REQUEST_TYPE);
- if (obj instanceof RequestType) {
- return (RequestType) obj;
- } else if (obj instanceof String) {
- return RequestType.valueForString((String) obj);
- }
- return null;
+ return (RequestType) getObject(RequestType.class, KEY_REQUEST_TYPE);
}
public void setRequestType(RequestType requestType) {
- if (requestType != null) {
- parameters.put(KEY_REQUEST_TYPE, requestType);
- } else {
- parameters.remove(KEY_REQUEST_TYPE);
- }
+ setParameters(KEY_REQUEST_TYPE, requestType);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TTSChunk.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TTSChunk.java
index 97f865903..d98bb8a5c 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TTSChunk.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TTSChunk.java
@@ -1,10 +1,10 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.SpeechCapabilities;
+import java.util.Hashtable;
+
/**
* <p>Specifies what is to be spoken. This can be simply a text phrase, which SDL will speak according to its own rules.
* It can also be phonemes from either the Microsoft SAPI phoneme set, or from the LHPLUS phoneme set.
@@ -56,41 +56,27 @@ public class TTSChunk extends RPCStruct {
* @return text to be spoken, or a phoneme specification, or the name of a pre-recorded sound
*/
public String getText() {
- return (String) store.get( KEY_TEXT );
+ return getString( KEY_TEXT );
}
/**
* Set the text to be spoken, or a phoneme specification, or the name of a pre-recorded sound. The contents of this field are indicated by the "type" field.
* @param text to be spoken, or a phoneme specification, or the name of a pre-recorded sound.
*/
public void setText( String text ) {
- if (text != null) {
- store.put(KEY_TEXT, text );
- } else {
- store.remove(KEY_TEXT);
- }
+ setValue(KEY_TEXT, text);
}
/**
* Get the type of information in the "text" field (e.g. phrase to be spoken, phoneme specification, name of pre-recorded sound).
* @return the type of information in the "text" field
*/
public SpeechCapabilities getType() {
- Object obj = store.get(KEY_TYPE);
- if (obj instanceof SpeechCapabilities) {
- return (SpeechCapabilities) obj;
- } else if (obj instanceof String) {
- return SpeechCapabilities.valueForString((String) obj);
- }
- return null;
+ return (SpeechCapabilities) getObject(SpeechCapabilities.class, KEY_TYPE);
}
/**
* Set the type of information in the "text" field (e.g. phrase to be spoken, phoneme specification, name of pre-recorded sound).
* @param type the type of information in the "text" field
*/
public void setType( SpeechCapabilities type ) {
- if (type != null) {
- store.put(KEY_TYPE, type );
- } else {
- store.remove(KEY_TYPE);
- }
+ setValue(KEY_TYPE, type);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TextField.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TextField.java
index 918f0eb2f..28e283e9f 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TextField.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TextField.java
@@ -6,6 +6,8 @@ import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.CharacterSet;
import com.smartdevicelink.proxy.rpc.enums.TextFieldName;
+import static com.smartdevicelink.proxy.rpc.TireStatus.KEY_INNER_RIGHT_REAR;
+
/**
* Struct defining the characteristics of a displayed field on the HMI.
* <p><b> Parameter List</b></p>
@@ -83,48 +85,28 @@ public class TextField extends RPCStruct {
* @return the name of TextField
*/
public TextFieldName getName() {
- Object obj = store.get(KEY_NAME);
- if (obj instanceof TextFieldName) {
- return (TextFieldName) obj;
- } else if (obj instanceof String) {
- return TextFieldName.valueForString((String) obj);
- }
- return null;
+ return (TextFieldName) getObject(TextFieldName.class, KEY_NAME);
}
/**
* Set the enumeration identifying the field.
* @param name the name of TextField
*/
public void setName( TextFieldName name ) {
- if (name != null) {
- store.put(KEY_NAME, name );
- } else {
- store.remove(KEY_NAME);
- }
+ setValue(KEY_NAME, name);
}
/**
* Get the character set that is supported in this field.
* @return the character set
*/
public CharacterSet getCharacterSet() {
- Object obj = store.get(KEY_CHARACTER_SET);
- if (obj instanceof CharacterSet) {
- return (CharacterSet) obj;
- } else if (obj instanceof String) {
- return CharacterSet.valueForString((String) obj);
- }
- return null;
+ return (CharacterSet) getObject(CharacterSet.class, KEY_CHARACTER_SET);
}
/**
* Set the character set that is supported in this field.
* @param characterSet - the character set
*/
public void setCharacterSet( CharacterSet characterSet ) {
- if (characterSet != null) {
- store.put(KEY_CHARACTER_SET, characterSet );
- } else {
- store.remove(KEY_CHARACTER_SET);
- }
+ setValue(KEY_CHARACTER_SET, characterSet);
}
/**
* Get the number of characters in one row of this field.
@@ -135,7 +117,7 @@ public class TextField extends RPCStruct {
* @return the number of characters in one row of this field
*/
public Integer getWidth() {
- return (Integer) store.get( KEY_WIDTH );
+ return getInteger( KEY_WIDTH );
}
/**
* Set the number of characters in one row of this field.
@@ -146,11 +128,7 @@ public class TextField extends RPCStruct {
* @param width the number of characters in one row of this field
*/
public void setWidth( Integer width ) {
- if (width != null) {
- store.put(KEY_WIDTH, width );
- } else {
- store.remove(KEY_WIDTH);
- }
+ setValue(KEY_WIDTH, width);
}
/**
*Get the number of rows for this text field.
@@ -161,13 +139,9 @@ public class TextField extends RPCStruct {
* @return the number of rows for this text field
*/
public Integer getRows() {
- return (Integer) store.get( KEY_ROWS );
+ return getInteger( KEY_ROWS );
}
public void setRows( Integer rows ) {
- if (rows != null) {
- store.put(KEY_ROWS, rows );
- } else {
- store.remove(KEY_ROWS);
- }
+ setValue(KEY_ROWS, rows);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TireStatus.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TireStatus.java
index f853d673c..4b2169215 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TireStatus.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TireStatus.java
@@ -1,10 +1,14 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.proxy.RPCStruct;
+import com.smartdevicelink.proxy.rpc.enums.VehicleDataNotificationStatus;
import com.smartdevicelink.proxy.rpc.enums.WarningLightStatus;
import com.smartdevicelink.util.DebugTool;
+
+import java.util.Hashtable;
+
+import static com.smartdevicelink.proxy.rpc.ECallInfo.KEY_E_CALL_NOTIFICATION_STATUS;
+
/** <p>The status and pressure of the tires.</p>
* <p><b> Parameter List:</b></p>
*
@@ -89,145 +93,51 @@ public class TireStatus extends RPCStruct {
super(hash);
}
public void setPressureTellTale(WarningLightStatus pressureTellTale) {
- if (pressureTellTale != null) {
- store.put(KEY_PRESSURE_TELL_TALE, pressureTellTale);
- } else {
- store.remove(KEY_PRESSURE_TELL_TALE);
- }
+ setValue(KEY_PRESSURE_TELL_TALE, pressureTellTale);
}
public WarningLightStatus getPressureTellTale() {
- Object obj = store.get(KEY_PRESSURE_TELL_TALE);
- if (obj instanceof WarningLightStatus) {
- return (WarningLightStatus) obj;
- } else if (obj instanceof String) {
- return WarningLightStatus.valueForString((String) obj);
- }
- return null;
+ return (WarningLightStatus) getObject(WarningLightStatus.class, KEY_PRESSURE_TELL_TALE);
}
public void setLeftFront(SingleTireStatus leftFront) {
- if (leftFront != null) {
- store.put(KEY_LEFT_FRONT, leftFront);
- } else {
- store.remove(KEY_LEFT_FRONT);
- }
+ setValue(KEY_LEFT_FRONT, leftFront);
}
@SuppressWarnings("unchecked")
public SingleTireStatus getLeftFront() {
- Object obj = store.get(KEY_LEFT_FRONT);
- if (obj instanceof SingleTireStatus) {
- return (SingleTireStatus) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new SingleTireStatus((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_LEFT_FRONT, e);
- }
- }
- return null;
+ return (SingleTireStatus) getObject(SingleTireStatus.class, KEY_LEFT_FRONT);
}
public void setRightFront(SingleTireStatus rightFront) {
- if (rightFront != null) {
- store.put(KEY_RIGHT_FRONT, rightFront);
- } else {
- store.remove(KEY_RIGHT_FRONT);
- }
+ setValue(KEY_RIGHT_FRONT, rightFront);
}
@SuppressWarnings("unchecked")
public SingleTireStatus getRightFront() {
- Object obj = store.get(KEY_RIGHT_FRONT);
- if (obj instanceof SingleTireStatus) {
- return (SingleTireStatus) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new SingleTireStatus((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_RIGHT_FRONT, e);
- }
- }
- return null;
+ return (SingleTireStatus) getObject(SingleTireStatus.class, KEY_RIGHT_FRONT);
}
public void setLeftRear(SingleTireStatus leftRear) {
- if (leftRear != null) {
- store.put(KEY_LEFT_REAR, leftRear);
- } else {
- store.remove(KEY_LEFT_REAR);
- }
+ setValue(KEY_LEFT_REAR, leftRear);
}
@SuppressWarnings("unchecked")
public SingleTireStatus getLeftRear() {
- Object obj = store.get(KEY_LEFT_REAR);
- if (obj instanceof SingleTireStatus) {
- return (SingleTireStatus) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new SingleTireStatus((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_LEFT_REAR, e);
- }
- }
- return null;
+ return (SingleTireStatus) getObject(SingleTireStatus.class, KEY_LEFT_REAR);
}
public void setRightRear(SingleTireStatus rightRear) {
- if (rightRear != null) {
- store.put(KEY_RIGHT_REAR, rightRear);
- } else {
- store.remove(KEY_RIGHT_REAR);
- }
+ setValue(KEY_RIGHT_REAR, rightRear);
}
@SuppressWarnings("unchecked")
public SingleTireStatus getRightRear() {
- Object obj = store.get(KEY_RIGHT_REAR);
- if (obj instanceof SingleTireStatus) {
- return (SingleTireStatus) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new SingleTireStatus((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_RIGHT_REAR, e);
- }
- }
- return null;
+ return (SingleTireStatus) getObject(SingleTireStatus.class, KEY_RIGHT_REAR);
}
public void setInnerLeftRear(SingleTireStatus innerLeftRear) {
- if (innerLeftRear != null) {
- store.put(KEY_INNER_LEFT_REAR, innerLeftRear);
- } else {
- store.remove(KEY_INNER_LEFT_REAR);
- }
+ setValue(KEY_INNER_LEFT_REAR, innerLeftRear);
}
@SuppressWarnings("unchecked")
public SingleTireStatus getInnerLeftRear() {
- Object obj = store.get(KEY_INNER_LEFT_REAR);
- if (obj instanceof SingleTireStatus) {
- return (SingleTireStatus) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new SingleTireStatus((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_INNER_LEFT_REAR, e);
- }
- }
- return null;
+ return (SingleTireStatus) getObject(SingleTireStatus.class, KEY_INNER_LEFT_REAR);
}
public void setInnerRightRear(SingleTireStatus innerRightRear) {
- if (innerRightRear != null) {
- store.put(KEY_INNER_RIGHT_REAR, innerRightRear);
- } else {
- store.remove(KEY_INNER_RIGHT_REAR);
- }
+ setValue(KEY_INNER_RIGHT_REAR, innerRightRear);
}
@SuppressWarnings("unchecked")
public SingleTireStatus getInnerRightRear() {
- Object obj = store.get(KEY_INNER_RIGHT_REAR);
- if (obj instanceof SingleTireStatus) {
- return (SingleTireStatus) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new SingleTireStatus((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_INNER_RIGHT_REAR, e);
- }
- }
- return null;
+ return (SingleTireStatus) getObject(SingleTireStatus.class, KEY_INNER_RIGHT_REAR);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchCoord.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchCoord.java
index 95f793fe6..2c0a1a260 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchCoord.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchCoord.java
@@ -60,27 +60,19 @@ public class TouchCoord extends RPCStruct {
}
public void setX(Integer x) {
- if (x != null) {
- store.put(KEY_X, x);
- } else {
- store.remove(KEY_X);
- }
+ setValue(KEY_X, x);
}
public Integer getX() {
- return (Integer) store.get(KEY_X);
+ return getInteger(KEY_X);
}
public void setY(Integer y) {
- if (y != null) {
- store.put(KEY_Y, y);
- } else {
- store.remove(KEY_Y);
- }
+ setValue(KEY_Y, y);
}
public Integer getY() {
- return (Integer) store.get(KEY_Y);
+ return getInteger(KEY_Y);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchEvent.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchEvent.java
index 76e3c4207..f99b0a8e2 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchEvent.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchEvent.java
@@ -1,10 +1,11 @@
package com.smartdevicelink.proxy.rpc;
+import com.smartdevicelink.proxy.RPCStruct;
+
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
-import com.smartdevicelink.proxy.RPCStruct;
/**
* <p>For touchscreen interactions, the mode of how the choices are presented.</p>
*
@@ -73,15 +74,11 @@ public class TouchEvent extends RPCStruct {
}
public void setId(Integer id) {
- if (id != null) {
- store.put(KEY_ID, id);
- } else {
- store.remove(KEY_ID);
- }
+ setValue(KEY_ID, id);
}
public Integer getId() {
- return (Integer) store.get(KEY_ID);
+ return getInteger(KEY_ID);
}
/**
@@ -96,8 +93,8 @@ public class TouchEvent extends RPCStruct {
@SuppressWarnings("unchecked")
public List<Long> getTimestamps() {
- if(store.get(KEY_TS) instanceof List<?>){
- List<?> list = (List<?>)store.get(KEY_TS);
+ if(getValue(KEY_TS) instanceof List<?>){
+ List<?> list = (List<?>) getValue(KEY_TS);
if(list != null && list.size()>0){
Object obj = list.get(0);
if(obj instanceof Integer){ //Backwards case
@@ -117,11 +114,7 @@ public class TouchEvent extends RPCStruct {
}
public void setTimestamps(List<Long> ts){
- if (ts != null) {
- store.put(KEY_TS, ts);
- } else {
- store.remove(KEY_TS);
- }
+ setValue(KEY_TS, ts);
}
/**
@@ -143,24 +136,9 @@ public class TouchEvent extends RPCStruct {
public List<TouchCoord> getC() {
return getTouchCoordinates();
}
- @SuppressWarnings("unchecked")
+ @SuppressWarnings("unchecked")
public List<TouchCoord> getTouchCoordinates() {
- if (store.get(KEY_C) instanceof List<?>) {
- List<?> list = (List<?>)store.get(KEY_C);
- if (list != null && list.size() > 0) {
- Object obj = list.get(0);
- if (obj instanceof TouchCoord) {
- return (List<TouchCoord>) list;
- } else if (obj instanceof Hashtable) {
- List<TouchCoord> newList = new ArrayList<TouchCoord>();
- for (Object hashObj : list) {
- newList.add(new TouchCoord((Hashtable<String, Object>) hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<TouchCoord>) getObject(TouchCoord.class, KEY_C);
}
/**
@@ -174,10 +152,6 @@ public class TouchEvent extends RPCStruct {
}
public void setTouchCoordinates( List<TouchCoord> c ) {
- if (c != null) {
- store.put(KEY_C, c );
- } else {
- store.remove(KEY_C);
- }
+ setValue(KEY_C, c);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchEventCapabilities.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchEventCapabilities.java
index b67e5b61a..668c81e0d 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchEventCapabilities.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchEventCapabilities.java
@@ -54,38 +54,26 @@ public class TouchEventCapabilities extends RPCStruct {
}
public void setPressAvailable(Boolean pressAvailable) {
- if (pressAvailable != null) {
- store.put(KEY_PRESS_AVAILABLE, pressAvailable);
- } else {
- store.remove(KEY_PRESS_AVAILABLE);
- }
+ setValue(KEY_PRESS_AVAILABLE, pressAvailable);
}
public Boolean getPressAvailable() {
- return (Boolean) store.get(KEY_PRESS_AVAILABLE);
+ return getBoolean(KEY_PRESS_AVAILABLE);
}
public void setMultiTouchAvailable(Boolean multiTouchAvailable) {
- if (multiTouchAvailable != null) {
- store.put(KEY_MULTI_TOUCH_AVAILABLE, multiTouchAvailable);
- } else {
- store.remove(KEY_MULTI_TOUCH_AVAILABLE);
- }
+ setValue(KEY_MULTI_TOUCH_AVAILABLE, multiTouchAvailable);
}
public Boolean getMultiTouchAvailable() {
- return (Boolean) store.get(KEY_MULTI_TOUCH_AVAILABLE);
+ return getBoolean(KEY_MULTI_TOUCH_AVAILABLE);
}
public void setDoublePressAvailable(Boolean doublePressAvailable) {
- if (doublePressAvailable != null) {
- store.put(KEY_DOUBLE_PRESS_AVAILABLE, doublePressAvailable);
- } else {
- store.remove(KEY_DOUBLE_PRESS_AVAILABLE);
- }
+ setValue(KEY_DOUBLE_PRESS_AVAILABLE, doublePressAvailable);
}
public Boolean getDoublePressAvailable() {
- return (Boolean) store.get(KEY_DOUBLE_PRESS_AVAILABLE);
+ return getBoolean(KEY_DOUBLE_PRESS_AVAILABLE);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Turn.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Turn.java
index 437e176a5..6cebac7f1 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Turn.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Turn.java
@@ -1,8 +1,9 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.proxy.RPCStruct;
+import com.smartdevicelink.proxy.rpc.enums.VehicleDataResultCode;
+
+import java.util.Hashtable;
/**
* Describes a navigation turn including an optional icon
@@ -51,12 +52,7 @@ public class Turn extends RPCStruct{
* the text to describe the turn (e.g. streetname)
*/
public void setNavigationText(String navigationText){
- if(navigationText != null){
- store.put(KEY_NAVIGATION_TEXT, navigationText);
- }
- else{
- store.remove(KEY_NAVIGATION_TEXT);
- }
+ setValue(KEY_NAVIGATION_TEXT, navigationText);
}
/**
@@ -65,7 +61,7 @@ public class Turn extends RPCStruct{
* @return the text to describe the turn (e.g. streetname)
*/
public String getNavigationText(){
- return (String) store.get(KEY_NAVIGATION_TEXT);
+ return getString(KEY_NAVIGATION_TEXT);
}
/**
@@ -75,11 +71,7 @@ public class Turn extends RPCStruct{
* the image to be shown for a turn
*/
public void setTurnIcon(Image turnIcon){
- if (turnIcon != null) {
- store.put(KEY_TURN_IMAGE, turnIcon);
- } else {
- store.remove(KEY_TURN_IMAGE);
- }
+ setValue(KEY_TURN_IMAGE, turnIcon);
}
/**
@@ -89,13 +81,7 @@ public class Turn extends RPCStruct{
*/
@SuppressWarnings("unchecked")
public Image getTurnIcon(){
- Object obj = store.get(KEY_TURN_IMAGE);
- if (obj instanceof Image) {
- return (Image) obj;
- } else if (obj instanceof Hashtable) {
- return new Image((Hashtable<String, Object>) obj);
- }
- return null;
+ return (Image) getObject(Image.class, KEY_TURN_IMAGE);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeButton.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeButton.java
index 33567a8af..521800426 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeButton.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeButton.java
@@ -1,11 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.ButtonName;
+import java.util.Hashtable;
+
/**
* Deletes a subscription to button notifications for the specified button. For
* more information about button subscriptions, see {@linkplain SubscribeButton}
@@ -76,13 +76,7 @@ public class UnsubscribeButton extends RPCRequest {
* {@linkplain com.smartdevicelink.proxy.rpc.enums.ButtonName}</i>
*/
public ButtonName getButtonName() {
- Object obj = parameters.get(KEY_BUTTON_NAME);
- if (obj instanceof ButtonName) {
- return (ButtonName) obj;
- } else if (obj instanceof String) {
- return ButtonName.valueForString((String) obj);
- }
- return null;
+ return (ButtonName) getObject(ButtonName.class, KEY_BUTTON_NAME);
}
/**
* Sets the name of the button to unsubscribe from
@@ -92,10 +86,6 @@ public class UnsubscribeButton extends RPCRequest {
* {@linkplain com.smartdevicelink.proxy.rpc.enums.ButtonName}</i>
*/
public void setButtonName( ButtonName buttonName ) {
- if (buttonName != null) {
- parameters.put(KEY_BUTTON_NAME, buttonName );
- } else {
- parameters.remove(KEY_BUTTON_NAME);
- }
+ setParameters(KEY_BUTTON_NAME, buttonName);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeVehicleData.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeVehicleData.java
index 668b31fd9..8a50ec286 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeVehicleData.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeVehicleData.java
@@ -283,11 +283,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setGps(Boolean gps) {
- if (gps != null) {
- parameters.put(KEY_GPS, gps);
- } else {
- parameters.remove(KEY_GPS);
- }
+ setParameters(KEY_GPS, gps);
}
/**
@@ -297,7 +293,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* unsubscribed.
*/
public Boolean getGps() {
- return (Boolean) parameters.get(KEY_GPS);
+ return getBoolean(KEY_GPS);
}
/**
@@ -307,11 +303,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setSpeed(Boolean speed) {
- if (speed != null) {
- parameters.put(KEY_SPEED, speed);
- } else {
- parameters.remove(KEY_SPEED);
- }
+ setParameters(KEY_SPEED, speed);
}
/**
@@ -321,7 +313,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* unsubscribed.
*/
public Boolean getSpeed() {
- return (Boolean) parameters.get(KEY_SPEED);
+ return getBoolean(KEY_SPEED);
}
/**
@@ -331,11 +323,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setRpm(Boolean rpm) {
- if (rpm != null) {
- parameters.put(KEY_RPM, rpm);
- } else {
- parameters.remove(KEY_RPM);
- }
+ setParameters(KEY_RPM, rpm);
}
/**
@@ -345,7 +333,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* unsubscribed.
*/
public Boolean getRpm() {
- return (Boolean) parameters.get(KEY_RPM);
+ return getBoolean(KEY_RPM);
}
/**
@@ -355,11 +343,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setFuelLevel(Boolean fuelLevel) {
- if (fuelLevel != null) {
- parameters.put(KEY_FUEL_LEVEL, fuelLevel);
- } else {
- parameters.remove(KEY_FUEL_LEVEL);
- }
+ setParameters(KEY_FUEL_LEVEL, fuelLevel);
}
/**
@@ -370,7 +354,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* been unsubscribed.
*/
public Boolean getFuelLevel() {
- return (Boolean) parameters.get(KEY_FUEL_LEVEL);
+ return getBoolean(KEY_FUEL_LEVEL);
}
/**
@@ -403,11 +387,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setFuelLevelState(Boolean fuelLevelState) {
- if (fuelLevelState != null) {
- parameters.put(KEY_FUEL_LEVEL_STATE, fuelLevelState);
- } else {
- parameters.remove(KEY_FUEL_LEVEL_STATE);
- }
+ setParameters(KEY_FUEL_LEVEL_STATE, fuelLevelState);
}
/**
@@ -418,7 +398,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* has been unsubscribed.
*/
public Boolean getFuelLevelState() {
- return (Boolean) parameters.get(KEY_FUEL_LEVEL_STATE);
+ return getBoolean(KEY_FUEL_LEVEL_STATE);
}
/**
@@ -428,11 +408,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setInstantFuelConsumption(Boolean instantFuelConsumption) {
- if (instantFuelConsumption != null) {
- parameters.put(KEY_INSTANT_FUEL_CONSUMPTION, instantFuelConsumption);
- } else {
- parameters.remove(KEY_INSTANT_FUEL_CONSUMPTION);
- }
+ setParameters(KEY_INSTANT_FUEL_CONSUMPTION, instantFuelConsumption);
}
/**
@@ -443,7 +419,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* has been unsubscribed.
*/
public Boolean getInstantFuelConsumption() {
- return (Boolean) parameters.get(KEY_INSTANT_FUEL_CONSUMPTION);
+ return getBoolean(KEY_INSTANT_FUEL_CONSUMPTION);
}
/**
@@ -453,11 +429,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setExternalTemperature(Boolean externalTemperature) {
- if (externalTemperature != null) {
- parameters.put(KEY_EXTERNAL_TEMPERATURE, externalTemperature);
- } else {
- parameters.remove(KEY_EXTERNAL_TEMPERATURE);
- }
+ setParameters(KEY_EXTERNAL_TEMPERATURE, externalTemperature);
}
/**
@@ -468,7 +440,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* has been unsubscribed.
*/
public Boolean getExternalTemperature() {
- return (Boolean) parameters.get(KEY_EXTERNAL_TEMPERATURE);
+ return getBoolean(KEY_EXTERNAL_TEMPERATURE);
}
/**
@@ -478,11 +450,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setPrndl(Boolean prndl) {
- if (prndl != null) {
- parameters.put(KEY_PRNDL, prndl);
- } else {
- parameters.remove(KEY_PRNDL);
- }
+ setParameters(KEY_PRNDL, prndl);
}
/**
@@ -493,7 +461,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* has been unsubscribed.
*/
public Boolean getPrndl() {
- return (Boolean) parameters.get(KEY_PRNDL);
+ return getBoolean(KEY_PRNDL);
}
/**
@@ -503,11 +471,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setTirePressure(Boolean tirePressure) {
- if (tirePressure != null) {
- parameters.put(KEY_TIRE_PRESSURE, tirePressure);
- } else {
- parameters.remove(KEY_TIRE_PRESSURE);
- }
+ setParameters(KEY_TIRE_PRESSURE, tirePressure);
}
/**
@@ -518,7 +482,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* has been unsubscribed.
*/
public Boolean getTirePressure() {
- return (Boolean) parameters.get(KEY_TIRE_PRESSURE);
+ return getBoolean(KEY_TIRE_PRESSURE);
}
/**
@@ -528,11 +492,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setOdometer(Boolean odometer) {
- if (odometer != null) {
- parameters.put(KEY_ODOMETER, odometer);
- } else {
- parameters.remove(KEY_ODOMETER);
- }
+ setParameters(KEY_ODOMETER, odometer);
}
/**
@@ -543,7 +503,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* has been unsubscribed.
*/
public Boolean getOdometer() {
- return (Boolean) parameters.get(KEY_ODOMETER);
+ return getBoolean(KEY_ODOMETER);
}
/**
@@ -553,11 +513,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setBeltStatus(Boolean beltStatus) {
- if (beltStatus != null) {
- parameters.put(KEY_BELT_STATUS, beltStatus);
- } else {
- parameters.remove(KEY_BELT_STATUS);
- }
+ setParameters(KEY_BELT_STATUS, beltStatus);
}
/**
@@ -568,7 +524,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* has been unsubscribed.
*/
public Boolean getBeltStatus() {
- return (Boolean) parameters.get(KEY_BELT_STATUS);
+ return getBoolean(KEY_BELT_STATUS);
}
/**
@@ -578,11 +534,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setBodyInformation(Boolean bodyInformation) {
- if (bodyInformation != null) {
- parameters.put(KEY_BODY_INFORMATION, bodyInformation);
- } else {
- parameters.remove(KEY_BODY_INFORMATION);
- }
+ setParameters(KEY_BODY_INFORMATION, bodyInformation);
}
/**
@@ -593,7 +545,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* has been unsubscribed.
*/
public Boolean getBodyInformation() {
- return (Boolean) parameters.get(KEY_BODY_INFORMATION);
+ return getBoolean(KEY_BODY_INFORMATION);
}
/**
@@ -603,11 +555,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setDeviceStatus(Boolean deviceStatus) {
- if (deviceStatus != null) {
- parameters.put(KEY_DEVICE_STATUS, deviceStatus);
- } else {
- parameters.remove(KEY_DEVICE_STATUS);
- }
+ setParameters(KEY_DEVICE_STATUS, deviceStatus);
}
/**
@@ -618,7 +566,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* has been unsubscribed.
*/
public Boolean getDeviceStatus() {
- return (Boolean) parameters.get(KEY_DEVICE_STATUS);
+ return getBoolean(KEY_DEVICE_STATUS);
}
/**
@@ -628,11 +576,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setDriverBraking(Boolean driverBraking) {
- if (driverBraking != null) {
- parameters.put(KEY_DRIVER_BRAKING, driverBraking);
- } else {
- parameters.remove(KEY_DRIVER_BRAKING);
- }
+ setParameters(KEY_DRIVER_BRAKING, driverBraking);
}
/**
@@ -643,7 +587,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* has been unsubscribed.
*/
public Boolean getDriverBraking() {
- return (Boolean) parameters.get(KEY_DRIVER_BRAKING);
+ return getBoolean(KEY_DRIVER_BRAKING);
}
/**
@@ -653,11 +597,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setWiperStatus(Boolean wiperStatus) {
- if (wiperStatus != null) {
- parameters.put(KEY_WIPER_STATUS, wiperStatus);
- } else {
- parameters.remove(KEY_WIPER_STATUS);
- }
+ setParameters(KEY_WIPER_STATUS, wiperStatus);
}
/**
@@ -668,7 +608,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* has been unsubscribed.
*/
public Boolean getWiperStatus() {
- return (Boolean) parameters.get(KEY_WIPER_STATUS);
+ return getBoolean(KEY_WIPER_STATUS);
}
/**
@@ -678,11 +618,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setHeadLampStatus(Boolean headLampStatus) {
- if (headLampStatus != null) {
- parameters.put(KEY_HEAD_LAMP_STATUS, headLampStatus);
- } else {
- parameters.remove(KEY_HEAD_LAMP_STATUS);
- }
+ setParameters(KEY_HEAD_LAMP_STATUS, headLampStatus);
}
/**
@@ -693,7 +629,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* has been unsubscribed.
*/
public Boolean getHeadLampStatus() {
- return (Boolean) parameters.get(KEY_HEAD_LAMP_STATUS);
+ return getBoolean(KEY_HEAD_LAMP_STATUS);
}
/**
@@ -703,11 +639,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setEngineTorque(Boolean engineTorque) {
- if (engineTorque != null) {
- parameters.put(KEY_ENGINE_TORQUE, engineTorque);
- } else {
- parameters.remove(KEY_ENGINE_TORQUE);
- }
+ setParameters(KEY_ENGINE_TORQUE, engineTorque);
}
/**
@@ -718,7 +650,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* has been unsubscribed.
*/
public Boolean getEngineTorque() {
- return (Boolean) parameters.get(KEY_ENGINE_TORQUE);
+ return getBoolean(KEY_ENGINE_TORQUE);
}
/**
@@ -728,11 +660,7 @@ public class UnsubscribeVehicleData extends RPCRequest {
* a boolean value
*/
public void setAccPedalPosition(Boolean accPedalPosition) {
- if (accPedalPosition != null) {
- parameters.put(KEY_ACC_PEDAL_POSITION, accPedalPosition);
- } else {
- parameters.remove(KEY_ACC_PEDAL_POSITION);
- }
+ setParameters(KEY_ACC_PEDAL_POSITION, accPedalPosition);
}
/**
@@ -743,69 +671,45 @@ public class UnsubscribeVehicleData extends RPCRequest {
* has been unsubscribed.
*/
public Boolean getAccPedalPosition() {
- return (Boolean) parameters.get(KEY_ACC_PEDAL_POSITION);
+ return getBoolean(KEY_ACC_PEDAL_POSITION);
}
public void setSteeringWheelAngle(Boolean steeringWheelAngle) {
- if (steeringWheelAngle != null) {
- parameters.put(KEY_STEERING_WHEEL_ANGLE, steeringWheelAngle);
- } else {
- parameters.remove(KEY_STEERING_WHEEL_ANGLE);
- }
+ setParameters(KEY_STEERING_WHEEL_ANGLE, steeringWheelAngle);
}
public Boolean getSteeringWheelAngle() {
- return (Boolean) parameters.get(KEY_STEERING_WHEEL_ANGLE);
+ return getBoolean(KEY_STEERING_WHEEL_ANGLE);
}
public void setECallInfo(Boolean eCallInfo) {
- if (eCallInfo != null) {
- parameters.put(KEY_E_CALL_INFO, eCallInfo);
- } else {
- parameters.remove(KEY_E_CALL_INFO);
- }
+ setParameters(KEY_E_CALL_INFO, eCallInfo);
}
public Boolean getECallInfo() {
- return (Boolean) parameters.get(KEY_E_CALL_INFO);
+ return getBoolean(KEY_E_CALL_INFO);
}
public void setAirbagStatus(Boolean airbagStatus) {
- if (airbagStatus != null) {
- parameters.put(KEY_AIRBAG_STATUS, airbagStatus);
- } else {
- parameters.remove(KEY_AIRBAG_STATUS);
- }
+ setParameters(KEY_AIRBAG_STATUS, airbagStatus);
}
public Boolean getAirbagStatus() {
- return (Boolean) parameters.get(KEY_AIRBAG_STATUS);
+ return getBoolean(KEY_AIRBAG_STATUS);
}
public void setEmergencyEvent(Boolean emergencyEvent) {
- if (emergencyEvent != null) {
- parameters.put(KEY_EMERGENCY_EVENT, emergencyEvent);
- } else {
- parameters.remove(KEY_EMERGENCY_EVENT);
- }
+ setParameters(KEY_EMERGENCY_EVENT, emergencyEvent);
}
public Boolean getEmergencyEvent() {
- return (Boolean) parameters.get(KEY_EMERGENCY_EVENT);
+ return getBoolean(KEY_EMERGENCY_EVENT);
}
public void setClusterModeStatus(Boolean clusterModeStatus) {
- if (clusterModeStatus != null) {
- parameters.put(KEY_CLUSTER_MODE_STATUS, clusterModeStatus);
- } else {
- parameters.remove(KEY_CLUSTER_MODE_STATUS);
- }
+ setParameters(KEY_CLUSTER_MODE_STATUS, clusterModeStatus);
}
public Boolean getClusterModeStatus() {
- return (Boolean) parameters.get(KEY_CLUSTER_MODE_STATUS);
+ return getBoolean(KEY_CLUSTER_MODE_STATUS);
}
public void setMyKey(Boolean myKey) {
- if (myKey != null) {
- parameters.put(KEY_MY_KEY, myKey);
- } else {
- parameters.remove(KEY_MY_KEY);
- }
+ setParameters(KEY_MY_KEY, myKey);
}
public Boolean getMyKey() {
- return (Boolean) parameters.get(KEY_MY_KEY);
+ return getBoolean(KEY_MY_KEY);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeVehicleDataResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeVehicleDataResponse.java
index 92d9a46df..af3c94444 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeVehicleDataResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeVehicleDataResponse.java
@@ -6,6 +6,8 @@ import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
import com.smartdevicelink.util.DebugTool;
+import static android.provider.Contacts.SettingsColumns.KEY;
+
/**
* Unsubscribe Vehicle Data Response is sent, when UnsubscribeVehicleData has been called.
*
@@ -60,11 +62,7 @@ public class UnsubscribeVehicleDataResponse extends RPCResponse {
* @param gps
*/
public void setGps(VehicleDataResult gps) {
- if (gps != null) {
- parameters.put(KEY_GPS, gps);
- } else {
- parameters.remove(KEY_GPS);
- }
+ setParameters(KEY_GPS, gps);
}
/**
* Gets Gps
@@ -72,28 +70,14 @@ public class UnsubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getGps() {
- Object obj = parameters.get(KEY_GPS);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_GPS, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_GPS);
}
/**
* Sets Speed
* @param speed
*/
public void setSpeed(VehicleDataResult speed) {
- if (speed != null) {
- parameters.put(KEY_SPEED, speed);
- } else {
- parameters.remove(KEY_SPEED);
- }
+ setParameters(KEY_SPEED, speed);
}
/**
* Gets Speed
@@ -101,28 +85,14 @@ public class UnsubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getSpeed() {
- Object obj = parameters.get(KEY_SPEED);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_SPEED, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_SPEED);
}
/**
* Sets rpm
* @param rpm
*/
public void setRpm(VehicleDataResult rpm) {
- if (rpm != null) {
- parameters.put(KEY_RPM, rpm);
- } else {
- parameters.remove(KEY_RPM);
- }
+ setParameters(KEY_RPM, rpm);
}
/**
* Gets rpm
@@ -130,28 +100,14 @@ public class UnsubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getRpm() {
- Object obj = parameters.get(KEY_RPM);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_RPM, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_RPM);
}
/**
* Sets Fuel Level
* @param fuelLevel
*/
public void setFuelLevel(VehicleDataResult fuelLevel) {
- if (fuelLevel != null) {
- parameters.put(KEY_FUEL_LEVEL, fuelLevel);
- } else {
- parameters.remove(KEY_FUEL_LEVEL);
- }
+ setParameters(KEY_FUEL_LEVEL, fuelLevel);
}
/**
* Gets Fuel Level
@@ -159,17 +115,7 @@ public class UnsubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getFuelLevel() {
- Object obj = parameters.get(KEY_FUEL_LEVEL);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_FUEL_LEVEL, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_FUEL_LEVEL);
}
/**
* Sets Fuel Level State
@@ -192,11 +138,7 @@ public class UnsubscribeVehicleDataResponse extends RPCResponse {
* @param fuelLevel_State
*/
public void setFuelLevelState(VehicleDataResult fuelLevelState) {
- if (fuelLevelState != null) {
- parameters.put(KEY_FUEL_LEVEL_STATE, fuelLevelState);
- } else {
- parameters.remove(KEY_FUEL_LEVEL_STATE);
- }
+ setParameters(KEY_FUEL_LEVEL_STATE, fuelLevelState);
}
/**
* Gets Fuel Level State
@@ -204,24 +146,14 @@ public class UnsubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getFuelLevelState() {
- Object obj = parameters.get(KEY_FUEL_LEVEL_STATE);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_FUEL_LEVEL_STATE);
}
/**
* Sets Instant Fuel Comsumption
* @param instantFuelConsumption
*/
public void setInstantFuelConsumption(VehicleDataResult instantFuelConsumption) {
- if (instantFuelConsumption != null) {
- parameters.put(KEY_INSTANT_FUEL_CONSUMPTION, instantFuelConsumption);
- } else {
- parameters.remove(KEY_INSTANT_FUEL_CONSUMPTION);
- }
+ setParameters(KEY_INSTANT_FUEL_CONSUMPTION, instantFuelConsumption);
}
/**
* Gets Instant Fuel Comsumption
@@ -229,28 +161,14 @@ public class UnsubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getInstantFuelConsumption() {
- Object obj = parameters.get(KEY_INSTANT_FUEL_CONSUMPTION);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_INSTANT_FUEL_CONSUMPTION, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_INSTANT_FUEL_CONSUMPTION);
}
/**
* Sets External Temperature
* @param externalTemperature
*/
public void setExternalTemperature(VehicleDataResult externalTemperature) {
- if (externalTemperature != null) {
- parameters.put(KEY_EXTERNAL_TEMPERATURE, externalTemperature);
- } else {
- parameters.remove(KEY_EXTERNAL_TEMPERATURE);
- }
+ setParameters(KEY_EXTERNAL_TEMPERATURE, externalTemperature);
}
/**
* Gets External Temperature
@@ -258,28 +176,14 @@ public class UnsubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getExternalTemperature() {
- Object obj = parameters.get(KEY_EXTERNAL_TEMPERATURE);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_EXTERNAL_TEMPERATURE, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_EXTERNAL_TEMPERATURE);
}
/**
* Gets currently selected gear data
* @param prndl
*/
public void setPrndl(VehicleDataResult prndl) {
- if (prndl != null) {
- parameters.put(KEY_PRNDL, prndl);
- } else {
- parameters.remove(KEY_PRNDL);
- }
+ setParameters(KEY_PRNDL, prndl);
}
/**
* Gets currently selected gear data
@@ -287,28 +191,14 @@ public class UnsubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getPrndl() {
- Object obj = parameters.get(KEY_PRNDL);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_PRNDL, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_PRNDL);
}
/**
* Sets Tire Pressure
* @param tirePressure
*/
public void setTirePressure(VehicleDataResult tirePressure) {
- if (tirePressure != null) {
- parameters.put(KEY_TIRE_PRESSURE, tirePressure);
- } else {
- parameters.remove(KEY_TIRE_PRESSURE);
- }
+ setParameters(KEY_TIRE_PRESSURE, tirePressure);
}
/**
* Gets Tire Pressure
@@ -316,28 +206,14 @@ public class UnsubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getTirePressure() {
- Object obj = parameters.get(KEY_TIRE_PRESSURE);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_TIRE_PRESSURE, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_TIRE_PRESSURE);
}
/**
* Sets Odometer
* @param odometer
*/
public void setOdometer(VehicleDataResult odometer) {
- if (odometer != null) {
- parameters.put(KEY_ODOMETER, odometer);
- } else {
- parameters.remove(KEY_ODOMETER);
- }
+ setParameters(KEY_ODOMETER, odometer);
}
/**
* Gets Odometer
@@ -345,28 +221,14 @@ public class UnsubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getOdometer() {
- Object obj = parameters.get(KEY_ODOMETER);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_ODOMETER, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_ODOMETER);
}
/**
* Sets Belt Status
* @param beltStatus
*/
public void setBeltStatus(VehicleDataResult beltStatus) {
- if (beltStatus != null) {
- parameters.put(KEY_BELT_STATUS, beltStatus);
- } else {
- parameters.remove(KEY_BELT_STATUS);
- }
+ setParameters(KEY_BELT_STATUS, beltStatus);
}
/**
* Gets Belt Status
@@ -374,28 +236,14 @@ public class UnsubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getBeltStatus() {
- Object obj = parameters.get(KEY_BELT_STATUS);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_BELT_STATUS, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_BELT_STATUS);
}
/**
* Sets Body Information
* @param bodyInformation
*/
public void setBodyInformation(VehicleDataResult bodyInformation) {
- if (bodyInformation != null) {
- parameters.put(KEY_BODY_INFORMATION, bodyInformation);
- } else {
- parameters.remove(KEY_BODY_INFORMATION);
- }
+ setParameters(KEY_BODY_INFORMATION, bodyInformation);
}
/**
* Gets Body Information
@@ -403,28 +251,14 @@ public class UnsubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getBodyInformation() {
- Object obj = parameters.get(KEY_BODY_INFORMATION);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_BODY_INFORMATION, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_BODY_INFORMATION);
}
/**
* Sets Device Status
* @param deviceStatus
*/
public void setDeviceStatus(VehicleDataResult deviceStatus) {
- if (deviceStatus != null) {
- parameters.put(KEY_DEVICE_STATUS, deviceStatus);
- } else {
- parameters.remove(KEY_DEVICE_STATUS);
- }
+ setParameters(KEY_DEVICE_STATUS, deviceStatus);
}
/**
* Gets Device Status
@@ -432,28 +266,14 @@ public class UnsubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getDeviceStatus() {
- Object obj = parameters.get(KEY_DEVICE_STATUS);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_DEVICE_STATUS, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_DEVICE_STATUS);
}
/**
* Sets Driver Braking
* @param driverBraking
*/
public void setDriverBraking(VehicleDataResult driverBraking) {
- if (driverBraking != null) {
- parameters.put(KEY_DRIVER_BRAKING, driverBraking);
- } else {
- parameters.remove(KEY_DRIVER_BRAKING);
- }
+ setParameters(KEY_DRIVER_BRAKING, driverBraking);
}
/**
* Gets Driver Braking
@@ -461,28 +281,14 @@ public class UnsubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getDriverBraking() {
- Object obj = parameters.get(KEY_DRIVER_BRAKING);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_DRIVER_BRAKING, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_DRIVER_BRAKING);
}
/**
* Sets Wiper Status
* @param wiperStatus
*/
public void setWiperStatus(VehicleDataResult wiperStatus) {
- if (wiperStatus != null) {
- parameters.put(KEY_WIPER_STATUS, wiperStatus);
- } else {
- parameters.remove(KEY_WIPER_STATUS);
- }
+ setParameters(KEY_WIPER_STATUS, wiperStatus);
}
/**
* Gets Wiper Status
@@ -490,28 +296,14 @@ public class UnsubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getWiperStatus() {
- Object obj = parameters.get(KEY_WIPER_STATUS);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_WIPER_STATUS, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_WIPER_STATUS);
}
/**
* Sets Head Lamp Status
* @param headLampStatus
*/
public void setHeadLampStatus(VehicleDataResult headLampStatus) {
- if (headLampStatus != null) {
- parameters.put(KEY_HEAD_LAMP_STATUS, headLampStatus);
- } else {
- parameters.remove(KEY_HEAD_LAMP_STATUS);
- }
+ setParameters(KEY_HEAD_LAMP_STATUS, headLampStatus);
}
/**
* Gets Head Lamp Status
@@ -519,28 +311,14 @@ public class UnsubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getHeadLampStatus() {
- Object obj = parameters.get(KEY_HEAD_LAMP_STATUS);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_HEAD_LAMP_STATUS, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_HEAD_LAMP_STATUS);
}
/**
* Sets Engine Torque
* @param engineTorque
*/
public void setEngineTorque(VehicleDataResult engineTorque) {
- if (engineTorque != null) {
- parameters.put(KEY_ENGINE_TORQUE, engineTorque);
- } else {
- parameters.remove(KEY_ENGINE_TORQUE);
- }
+ setParameters(KEY_ENGINE_TORQUE, engineTorque);
}
/**
* Gets Engine Torque
@@ -548,28 +326,14 @@ public class UnsubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getEngineTorque() {
- Object obj = parameters.get(KEY_ENGINE_TORQUE);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_ENGINE_TORQUE, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_ENGINE_TORQUE);
}
/**
* Sets AccPedal Position
* @param accPedalPosition
*/
public void setAccPedalPosition(VehicleDataResult accPedalPosition) {
- if (accPedalPosition != null) {
- parameters.put(KEY_ACC_PEDAL_POSITION, accPedalPosition);
- } else {
- parameters.remove(KEY_ACC_PEDAL_POSITION);
- }
+ setParameters(KEY_ACC_PEDAL_POSITION, accPedalPosition);
}
/**
* Gets AccPedal Position
@@ -577,145 +341,51 @@ public class UnsubscribeVehicleDataResponse extends RPCResponse {
*/
@SuppressWarnings("unchecked")
public VehicleDataResult getAccPedalPosition() {
- Object obj = parameters.get(KEY_ACC_PEDAL_POSITION);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_ACC_PEDAL_POSITION, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_ACC_PEDAL_POSITION);
}
public void setSteeringWheelAngle(VehicleDataResult steeringWheelAngle) {
- if (steeringWheelAngle != null) {
- parameters.put(KEY_STEERING_WHEEL_ANGLE, steeringWheelAngle);
- } else {
- parameters.remove(KEY_STEERING_WHEEL_ANGLE);
- }
+ setParameters(KEY_STEERING_WHEEL_ANGLE, steeringWheelAngle);
}
@SuppressWarnings("unchecked")
public VehicleDataResult getSteeringWheelAngle() {
- Object obj = parameters.get(KEY_STEERING_WHEEL_ANGLE);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_STEERING_WHEEL_ANGLE, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_STEERING_WHEEL_ANGLE);
}
public void setECallInfo(VehicleDataResult eCallInfo) {
- if (eCallInfo != null) {
- parameters.put(KEY_E_CALL_INFO, eCallInfo);
- } else {
- parameters.remove(KEY_E_CALL_INFO);
- }
+ setParameters(KEY_E_CALL_INFO, eCallInfo);
}
@SuppressWarnings("unchecked")
public VehicleDataResult getECallInfo() {
- Object obj = parameters.get(KEY_E_CALL_INFO);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_E_CALL_INFO, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_E_CALL_INFO);
}
public void setAirbagStatus(VehicleDataResult airbagStatus) {
- if (airbagStatus != null) {
- parameters.put(KEY_AIRBAG_STATUS, airbagStatus);
- } else {
- parameters.remove(KEY_AIRBAG_STATUS);
- }
+ setParameters(KEY_AIRBAG_STATUS, airbagStatus);
}
@SuppressWarnings("unchecked")
public VehicleDataResult getAirbagStatus() {
- Object obj = parameters.get(KEY_AIRBAG_STATUS);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_AIRBAG_STATUS, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_AIRBAG_STATUS);
}
public void setEmergencyEvent(VehicleDataResult emergencyEvent) {
- if (emergencyEvent != null) {
- parameters.put(KEY_EMERGENCY_EVENT, emergencyEvent);
- } else {
- parameters.remove(KEY_EMERGENCY_EVENT);
- }
+ setParameters(KEY_EMERGENCY_EVENT, emergencyEvent);
}
@SuppressWarnings("unchecked")
public VehicleDataResult getEmergencyEvent() {
- Object obj = parameters.get(KEY_EMERGENCY_EVENT);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_EMERGENCY_EVENT, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_EMERGENCY_EVENT);
}
public void setClusterModeStatus(VehicleDataResult clusterModeStatus) {
- if (clusterModeStatus != null) {
- parameters.put(KEY_CLUSTER_MODE_STATUS, clusterModeStatus);
- } else {
- parameters.remove(KEY_CLUSTER_MODE_STATUS);
- }
+ setParameters(KEY_CLUSTER_MODE_STATUS, clusterModeStatus);
}
@SuppressWarnings("unchecked")
public VehicleDataResult getClusterModeStatus() {
- Object obj = parameters.get(KEY_CLUSTER_MODE_STATUS);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_CLUSTER_MODE_STATUS, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_CLUSTER_MODE_STATUS);
}
public void setMyKey(VehicleDataResult myKey) {
- if (myKey != null) {
- parameters.put(KEY_MY_KEY, myKey);
- } else {
- parameters.remove(KEY_MY_KEY);
- }
+ setParameters(KEY_MY_KEY, myKey);
}
@SuppressWarnings("unchecked")
public VehicleDataResult getMyKey() {
- Object obj = parameters.get(KEY_MY_KEY);
- if (obj instanceof VehicleDataResult) {
- return (VehicleDataResult) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new VehicleDataResult((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_MY_KEY, e);
- }
- }
- return null;
+ return (VehicleDataResult) getObject(VehicleDataResult.class, KEY_MY_KEY);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UpdateTurnList.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UpdateTurnList.java
index ad2b41163..cb1dde7e4 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UpdateTurnList.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UpdateTurnList.java
@@ -1,12 +1,11 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
+import java.util.Hashtable;
+import java.util.List;
+
/**
* Updates the list of next maneuvers, which can be requested by the user pressing the softbutton "Turns" on the
* Navigation base screen. Three softbuttons are predefined by the system: Up, Down, Close
@@ -52,12 +51,7 @@ public class UpdateTurnList extends RPCRequest{
* <b>Notes: </b>Minsize=1; Maxsize=100</p>
*/
public void setTurnList(List<Turn> turnList){
- if(turnList != null){
- parameters.put(KEY_TURN_LIST, turnList);
- }
- else{
- parameters.remove(KEY_TURN_LIST);
- }
+ setParameters(KEY_TURN_LIST, turnList);
}
/**
@@ -67,23 +61,7 @@ public class UpdateTurnList extends RPCRequest{
*/
@SuppressWarnings("unchecked")
public List<Turn> getTurnList(){
- if(parameters.get(KEY_TURN_LIST) instanceof List<?>){
- List<?> list = (List<?>) parameters.get(KEY_TURN_LIST);
- if(list != null && list.size() > 0){
- Object obj = list.get(0);
- if(obj instanceof Turn){
- return (List<Turn>) list;
- }
- else if(obj instanceof Hashtable){
- List<Turn> newList = new ArrayList<Turn>();
- for(Object hashObj : list){
- newList.add(new Turn((Hashtable<String, Object>) hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<Turn>) getObject(Turn.class, KEY_TURN_LIST);
}
/**
@@ -94,23 +72,7 @@ public class UpdateTurnList extends RPCRequest{
*/
@SuppressWarnings("unchecked")
public List<SoftButton> getSoftButtons(){
- if(parameters.get(KEY_SOFT_BUTTONS) instanceof List<?>){
- List<?> list = (List<?>) parameters.get(KEY_SOFT_BUTTONS);
- if(list != null && list.size() > 0){
- Object obj = list.get(0);
- if(obj instanceof SoftButton){
- return (List<SoftButton>) list;
- }
- else if(obj instanceof Hashtable){
- List<SoftButton> newList = new ArrayList<SoftButton>();
- for(Object hashObj : list){
- newList.add(new SoftButton((Hashtable<String, Object>) hashObj));
- }
- return newList;
- }
- }
- }
- return null;
+ return (List<SoftButton>) getObject(SoftButton.class, KEY_SOFT_BUTTONS);
}
/**
@@ -129,12 +91,7 @@ public class UpdateTurnList extends RPCRequest{
*/
public void setSoftButtons(List<SoftButton> softButtons){
- if(softButtons != null){
- parameters.put(KEY_SOFT_BUTTONS, softButtons);
- }
- else{
- parameters.remove(KEY_SOFT_BUTTONS);
- }
+ setParameters(KEY_SOFT_BUTTONS, softButtons);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VehicleDataResult.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VehicleDataResult.java
index ef466d727..c0965cd39 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VehicleDataResult.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VehicleDataResult.java
@@ -57,35 +57,15 @@ public class VehicleDataResult extends RPCStruct {
super(hash);
}
public void setDataType(VehicleDataType dataType) {
- if (dataType != null) {
- store.put(KEY_DATA_TYPE, dataType);
- } else {
- store.remove(KEY_DATA_TYPE);
- }
+ setValue(KEY_DATA_TYPE, dataType);
}
public VehicleDataType getDataType() {
- Object obj = store.get(KEY_DATA_TYPE);
- if (obj instanceof VehicleDataType) {
- return (VehicleDataType) obj;
- } else if (obj instanceof String) {
- return VehicleDataType.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataType) getObject(VehicleDataType.class, KEY_DATA_TYPE);
}
public void setResultCode(VehicleDataResultCode resultCode) {
- if (resultCode != null) {
- store.put(KEY_RESULT_CODE, resultCode);
- } else {
- store.remove(KEY_RESULT_CODE);
- }
+ setValue(KEY_RESULT_CODE, resultCode);
}
public VehicleDataResultCode getResultCode() {
- Object obj = store.get(KEY_RESULT_CODE);
- if (obj instanceof VehicleDataResultCode) {
- return (VehicleDataResultCode) obj;
- } else if (obj instanceof String) {
- return VehicleDataResultCode.valueForString((String) obj);
- }
- return null;
+ return (VehicleDataResultCode) getObject(VehicleDataResultCode.class, KEY_RESULT_CODE);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VehicleType.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VehicleType.java
index 3f30774c4..e6f860007 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VehicleType.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VehicleType.java
@@ -1,9 +1,9 @@
package com.smartdevicelink.proxy.rpc;
-import java.util.Hashtable;
-
import com.smartdevicelink.proxy.RPCStruct;
+import java.util.Hashtable;
+
/**
* Describes the type of vehicle the mobile phone is connected with.
* <p><b>Parameter List</b></p>
@@ -81,7 +81,7 @@ public class VehicleType extends RPCStruct {
* @return the make of the vehicle
*/
public String getMake() {
- return (String) store.get(KEY_MAKE);
+ return getString(KEY_MAKE);
}
/**
@@ -89,11 +89,7 @@ public class VehicleType extends RPCStruct {
*@param make the make of the vehicle
*/
public void setMake(String make) {
- if (make != null) {
- store.put(KEY_MAKE, make);
- } else {
- store.remove(KEY_MAKE);
- }
+ setValue(KEY_MAKE, make);
}
/**
@@ -101,7 +97,7 @@ public class VehicleType extends RPCStruct {
* @return the model of the vehicle
*/
public String getModel() {
- return (String) store.get(KEY_MODEL);
+ return getString(KEY_MODEL);
}
/**
@@ -109,11 +105,7 @@ public class VehicleType extends RPCStruct {
* @param model the model of the vehicle
*/
public void setModel(String model) {
- if (model != null) {
- store.put(KEY_MODEL, model);
- } else {
- store.remove(KEY_MODEL);
- }
+ setValue(KEY_MODEL, model);
}
/**
@@ -121,7 +113,7 @@ public class VehicleType extends RPCStruct {
* @return the model year of the vehicle
*/
public String getModelYear() {
- return (String) store.get(KEY_MODEL_YEAR);
+ return getString(KEY_MODEL_YEAR);
}
/**
@@ -129,11 +121,7 @@ public class VehicleType extends RPCStruct {
* @param modelYear the model year of the vehicle
*/
public void setModelYear(String modelYear) {
- if (modelYear != null) {
- store.put(KEY_MODEL_YEAR, modelYear);
- } else {
- store.remove(KEY_MODEL_YEAR);
- }
+ setValue(KEY_MODEL_YEAR, modelYear);
}
/**
@@ -141,7 +129,7 @@ public class VehicleType extends RPCStruct {
* @return the trim of the vehicle
*/
public String getTrim() {
- return (String) store.get(KEY_TRIM);
+ return getString(KEY_TRIM);
}
/**
@@ -149,10 +137,6 @@ public class VehicleType extends RPCStruct {
* @param trim the trim of the vehicle
*/
public void setTrim(String trim) {
- if (trim != null) {
- store.put(KEY_TRIM, trim);
- } else {
- store.remove(KEY_TRIM);
- }
+ setValue(KEY_TRIM, trim);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VideoStreamingCapability.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VideoStreamingCapability.java
new file mode 100644
index 000000000..6600cf38d
--- /dev/null
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VideoStreamingCapability.java
@@ -0,0 +1,52 @@
+package com.smartdevicelink.proxy.rpc;
+
+import com.smartdevicelink.proxy.RPCStruct;
+
+import java.util.Hashtable;
+import java.util.List;
+
+/**
+ * Contains information about this system's video streaming capabilities.
+ */
+
+public class VideoStreamingCapability extends RPCStruct {
+ public static final String KEY_PREFERRED_RESOLUTION = "preferredResolution";
+ public static final String KEY_MAX_BITRATE = "maxBitrate";
+ public static final String KEY_SUPPORTED_FORMATS = "supportedFormats";
+ public static final String KEY_HAPTIC_SPATIAL_DATA_SUPPORTED = "hapticSpatialDataSupported";
+
+ public VideoStreamingCapability(){}
+ public VideoStreamingCapability(Hashtable<String, Object> hash){super(hash);}
+
+ public void setPreferredResolution(ImageResolution res){
+ setValue(KEY_PREFERRED_RESOLUTION, res);
+ }
+
+ public ImageResolution getPreferredResolution(){
+ return (ImageResolution) getObject(ImageResolution.class, KEY_PREFERRED_RESOLUTION);
+ }
+
+ public void setMaxBitrate(Integer maxBitrate){
+ setValue(KEY_MAX_BITRATE, maxBitrate);
+ }
+
+ public Integer getMaxBitrate(){
+ return getInteger(KEY_MAX_BITRATE);
+ }
+
+ public void setSupportedFormats(List<VideoStreamingFormat> formats){
+ setValue(KEY_SUPPORTED_FORMATS, formats);
+ }
+
+ public List<VideoStreamingFormat> getSupportedFormats(){
+ return (List<VideoStreamingFormat>) getObject(VideoStreamingFormat.class, KEY_SUPPORTED_FORMATS);
+ }
+
+ public Boolean getIsHapticSpatialDataSupported() {
+ return getBoolean(KEY_HAPTIC_SPATIAL_DATA_SUPPORTED);
+ }
+
+ public void setIsHapticSpatialDataSupported(Boolean hapticSpatialDataSupported) {
+ setValue(KEY_HAPTIC_SPATIAL_DATA_SUPPORTED, hapticSpatialDataSupported);
+ }
+}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VideoStreamingFormat.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VideoStreamingFormat.java
new file mode 100644
index 000000000..274c076c5
--- /dev/null
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VideoStreamingFormat.java
@@ -0,0 +1,35 @@
+package com.smartdevicelink.proxy.rpc;
+
+import com.smartdevicelink.proxy.RPCStruct;
+import com.smartdevicelink.proxy.rpc.enums.VideoStreamingCodec;
+import com.smartdevicelink.proxy.rpc.enums.VideoStreamingProtocol;
+
+import java.util.Hashtable;
+
+/**
+ * Video streaming formats and their specifications.
+ */
+
+public class VideoStreamingFormat extends RPCStruct {
+ public static final String KEY_PROTOCOL = "protocol";
+ public static final String KEY_CODEC = "codec";
+
+ public VideoStreamingFormat(){}
+ public VideoStreamingFormat(Hashtable<String, Object> hash){super(hash);}
+
+ public void setProtocol(VideoStreamingProtocol protocol){
+ setValue(KEY_PROTOCOL, protocol);
+ }
+
+ public VideoStreamingProtocol getProtocol(){
+ return (VideoStreamingProtocol) getObject(VideoStreamingProtocol.class, KEY_PROTOCOL);
+ }
+
+ public void setCodec(VideoStreamingCodec codec){
+ setValue(KEY_CODEC, codec);
+ }
+
+ public VideoStreamingCodec getCodec(){
+ return (VideoStreamingCodec) getObject(VideoStreamingCodec.class, KEY_CODEC);
+ }
+}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VrHelpItem.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VrHelpItem.java
index f195b4cae..00474cd06 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VrHelpItem.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VrHelpItem.java
@@ -65,44 +65,22 @@ public class VrHelpItem extends RPCStruct {
super(hash);
}
public void setText(String text) {
- if (text != null) {
- store.put(KEY_TEXT, text);
- } else {
- store.remove(KEY_TEXT);
- }
+ setValue(KEY_TEXT, text);
}
public String getText() {
- return (String) store.get(KEY_TEXT);
+ return getString(KEY_TEXT);
}
public void setImage(Image image) {
- if (image != null) {
- store.put(KEY_IMAGE, image);
- } else {
- store.remove(KEY_IMAGE);
- }
+ setValue(KEY_IMAGE, image);
}
@SuppressWarnings("unchecked")
public Image getImage() {
- Object obj = store.get(KEY_IMAGE);
- if (obj instanceof Image) {
- return (Image) obj;
- } else if (obj instanceof Hashtable) {
- try {
- return new Image((Hashtable<String, Object>) obj);
- } catch (Exception e) {
- DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_IMAGE, e);
- }
- }
- return null;
+ return (Image) getObject(Image.class, KEY_IMAGE);
}
public void setPosition(Integer position) {
- if (position != null) {
- store.put(KEY_POSITION, position);
- } else {
- store.remove(KEY_POSITION);
- }
+ setValue(KEY_POSITION, position);
}
public Integer getPosition() {
- return (Integer) store.get(KEY_POSITION);
+ return getInteger(KEY_POSITION);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/AppHMIType.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/AppHMIType.java
index a6aed67d9..2a12bec1e 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/AppHMIType.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/AppHMIType.java
@@ -39,6 +39,10 @@ public enum AppHMIType {
*/
TESTING,
/**
+ * Custom App Interfaces
+ */
+ PROJECTION,
+ /**
* System App
*/
SYSTEM;
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/Language.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/Language.java
index 5f0a0b88f..4ac4f6264 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/Language.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/Language.java
@@ -11,6 +11,83 @@ import java.util.EnumSet;
*/
public enum Language {
/**
+ * English - SA
+ */
+
+ EN_SA("EN-SA"),
+
+ /**
+ * Hebrew - IL
+ */
+
+ HE_IL("HE-IL"),
+
+ /**
+ * Romanian - RO
+ */
+
+ RO_RO("RO-RO"),
+
+ /**
+ * Ukrainian - UA
+ */
+
+ UK_UA("UK-UA"),
+
+ /**
+ * Indonesian - ID
+ */
+
+ ID_ID("ID-ID"),
+
+ /**
+ * Vietnamese - VN
+ */
+
+ VI_VN("VI-VN"),
+
+ /**
+ * Malay - MY
+ */
+
+ MS_MY("MS-MY"),
+
+ /**
+ * Hindi - IN
+ */
+
+ HI_IN("HI-IN"),
+
+ /**
+ * Dutch - BE
+ */
+
+ NL_BE("NL-BE"),
+
+ /**
+ * Greek - GR
+ */
+
+ EL_GR("EL-GR"),
+
+ /**
+ * Hungarian - HU
+ */
+
+ HU_HU("HU-HU"),
+
+ /**
+ * Finnish - FI
+ */
+
+ FI_FI("FI-FI"),
+
+ /**
+ * Slovak - SK
+ */
+
+ SK_SK("SK-SK"),
+ /**
* English - US
*/
@@ -129,7 +206,17 @@ public enum Language {
* Norwegian - Norway
*/
- NO_NO("NO-NO");
+ NO_NO("NO-NO"),
+ /**
+ * English - India
+ */
+
+ EN_IN("EN-IN"),
+ /**
+ * Thai - Thailand
+ */
+
+ TH_TH("TH-TH");
private final String INTERNAL_NAME;
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/MetadataType.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/MetadataType.java
new file mode 100644
index 000000000..9f51a6437
--- /dev/null
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/MetadataType.java
@@ -0,0 +1,96 @@
+package com.smartdevicelink.proxy.rpc.enums;
+
+import java.util.EnumSet;
+
+/**
+ * Defines the metadata types that can be applied to text fields
+ *
+ */
+public enum MetadataType {
+
+ /**
+ * The data in this field contains the title of the currently playing audio track.
+ */
+ MEDIA_TITLE("mediaTitle"),
+
+ /**
+ * The data in this field contains the artist or creator of the currently playing audio track.
+ */
+ MEDIA_ARTIST("mediaArtist"),
+
+ /**
+ * The data in this field contains the album title of the currently playing audio track.
+ */
+ MEDIA_ALBUM("mediaAlbum"),
+
+ /**
+ * The data in this field contains the creation year of the currently playing audio track.
+ */
+ MEDIA_YEAR("mediaYear"),
+
+ /**
+ * The data in this field contains the genre of the currently playing audio track.
+ */
+ MEDIA_GENRE("mediaGenre"),
+
+ /**
+ * The data in this field contains the name of the current source for the media.
+ */
+ MEDIA_STATION("mediaStation"),
+
+ /**
+ * The data in this field is a rating.
+ */
+ RATING("rating"),
+
+ /**
+ * The data in this field is the current temperature.
+ */
+ CURRENT_TEMPERATURE("currentTemperature"),
+
+ /**
+ * The data in this field is the maximum temperature for the day.
+ */
+ MAXIMUM_TEMPERATURE("maximumTemperature"),
+
+ /**
+ * The data in this field is the minimum temperature for the day.
+ */
+ MINIMUM_TEMPERATURE("minimumTemperature"),
+
+ /**
+ * The data in this field describes the current weather (ex. cloudy, clear, etc.).
+ */
+ WEATHER_TERM("weatherTerm"),
+
+ /**
+ * The data in this field describes the current humidity value.
+ */
+ HUMIDITY("humidity"),
+
+
+ ;
+
+ private final String internalName;
+
+ private MetadataType(String internalName) {
+ this.internalName = internalName;
+ }
+
+ public String toString() {
+ return this.internalName;
+ }
+
+ public static MetadataType valueForString(String value) {
+ if(value == null){
+ return null;
+ }
+
+ for (MetadataType anEnum : EnumSet.allOf(MetadataType.class)) {
+ if (anEnum.toString().equals(value)) {
+ return anEnum;
+ }
+ }
+ return null;
+ }
+}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/SystemCapabilityType.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/SystemCapabilityType.java
new file mode 100644
index 000000000..ebd7ddcf8
--- /dev/null
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/SystemCapabilityType.java
@@ -0,0 +1,21 @@
+package com.smartdevicelink.proxy.rpc.enums;
+
+/**
+ * The SystemCapabilityType indicates which type of capability information exists in a SystemCapability struct.
+ */
+
+public enum SystemCapabilityType {
+ NAVIGATION,
+
+ PHONE_CALL,
+
+ VIDEO_STREAMING;
+
+ public static SystemCapabilityType valueForString(String value) {
+ try{
+ return valueOf(value);
+ }catch(Exception e){
+ return null;
+ }
+ }
+}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/TouchType.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/TouchType.java
index 952904915..7cc259aa4 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/TouchType.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/TouchType.java
@@ -20,7 +20,11 @@ public enum TouchType {
*
*/
- END;
+ END,
+ /** The user has made a cancellation gesture.
+ *
+ */
+ CANCEL;
/**
* Convert String to TouchType
* @param value String
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/VideoStreamingCodec.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/VideoStreamingCodec.java
new file mode 100644
index 000000000..a41c1d064
--- /dev/null
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/VideoStreamingCodec.java
@@ -0,0 +1,50 @@
+package com.smartdevicelink.proxy.rpc.enums;
+
+/**
+ * Enum for each type of video streaming codec.
+ */
+
+public enum VideoStreamingCodec {
+ /**
+ * A block-oriented motion-compensation-based video compression standard. As of 2014 it is one
+ * of the most commonly used formats for the recording, compression, and distribution of video
+ * content.
+ */
+ H264,
+ /**
+ * High Efficiency Video Coding (HEVC), also known as H.265 and MPEG-H Part 2, is a video
+ * compression standard, one of several potential successors to the widely used AVC
+ * (H.264 or MPEG-4 Part 10). In comparison to AVC, HEVC offers about double the data
+ * compression ratio at the same level of video quality, or substantially improved video quality
+ * at the same bit rate. It supports resolutions up to 8192x4320, including 8K UHD.
+ */
+ H265,
+ /**
+ * Theora is derived from the formerly proprietary VP3 codec, released into the public domain by
+ * On2 Technologies. It is broadly comparable in design and bitrate efficiency to MPEG-4 Part 2,
+ * early versions of Windows Media Video, and RealVideo while lacking some of the features
+ * present in some of these other codecs. It is comparable in open standards philosophy to the
+ * BBC's Dirac codec.
+ */
+ Theora,
+ /**
+ * VP8 can be multiplexed into the Matroska-based container format WebM along with Vorbis and
+ * Opus audio. The image format WebP is based on VP8's intra-frame coding. VP8's direct
+ * successor, VP9, and the emerging royalty-free internet video format AV1 from the Alliance
+ * for Open Media (AOMedia) are based on VP8.
+ */
+ VP8,
+ /**
+ * Similar to VP8, but VP9 is customized for video resolutions beyond high-definition video
+ * (UHD) and also enables lossless compression.
+ */
+ VP9;
+
+ public static VideoStreamingCodec valueForString(String value) {
+ try{
+ return valueOf(value);
+ }catch(Exception e){
+ return null;
+ }
+ }
+}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/VideoStreamingProtocol.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/VideoStreamingProtocol.java
new file mode 100644
index 000000000..412badcac
--- /dev/null
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/VideoStreamingProtocol.java
@@ -0,0 +1,44 @@
+package com.smartdevicelink.proxy.rpc.enums;
+
+/**
+ * Enum for each type of video streaming protocol type.
+ */
+
+public enum VideoStreamingProtocol {
+ /**
+ * Raw stream bytes that contains no timestamp data and is the lowest supported video streaming
+ */
+ RAW,
+ /**
+ * RTP facilitates the transfer of real-time data. Information provided by this protocol include
+ * timestamps (for synchronization), sequence numbers (for packet loss and reordering detection)
+ * and the payload format which indicates the encoded format of the data.
+ */
+ RTP,
+ /**
+ * The transmission of streaming data itself is not a task of RTSP. Most RTSP servers use the
+ * Real-time Transport Protocol (RTP) in conjunction with Real-time Control Protocol (RTCP) for
+ * media stream delivery. However, some vendors implement proprietary transport protocols.
+ */
+ RTSP,
+ /**
+ * Real-Time Messaging Protocol (RTMP) was initially a proprietary protocol developed by
+ * Macromedia for streaming audio, video and data over the Internet, between a Flash player and
+ * a server. Macromedia is now owned by Adobe, which has released an incomplete version of the
+ * specification of the protocol for public use.
+ */
+ RTMP,
+ /**
+ * The WebM container is based on a profile of Matroska. WebM initially supported VP8 video and
+ * Vorbis audio streams. In 2013 it was updated to accommodate VP9 video and Opus audio.
+ */
+ WEBM;
+
+ public static VideoStreamingProtocol valueForString(String value) {
+ try{
+ return valueOf(value);
+ }catch(Exception e){
+ return null;
+ }
+ }
+}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/streaming/AbstractPacketizer.java b/sdl_android/src/main/java/com/smartdevicelink/streaming/AbstractPacketizer.java
index 81dbdd0b0..722fa54f9 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/streaming/AbstractPacketizer.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/streaming/AbstractPacketizer.java
@@ -11,7 +11,7 @@ abstract public class AbstractPacketizer {
protected IStreamListener _streamListener = null;
protected byte _rpcSessionID = 0;
-
+
protected SessionType _serviceType = null;
protected SdlSession _session = null;
protected InputStream is = null;
@@ -20,31 +20,39 @@ abstract public class AbstractPacketizer {
protected boolean upts = false;
protected RPCRequest _request = null;
protected byte _wiproVersion = 1;
-
+
//protected long ts = 0, intervalBetweenReports = 5000, delta = 0;
protected long intervalBetweenReports = 5000, delta = 0;
- public AbstractPacketizer(IStreamListener streamListener, InputStream is, SessionType sType, byte rpcSessionID, SdlSession session) throws IOException {
- this._streamListener = streamListener;
+ public AbstractPacketizer(IStreamListener streamListener, InputStream is, SessionType sType, byte rpcSessionID, SdlSession session) throws IOException, IllegalArgumentException {
+ this._streamListener = streamListener;
this.is = is;
_rpcSessionID = rpcSessionID;
_serviceType = sType;
this._session = session;
- bufferSize = this._session.getMtu();
- buffer = new byte[bufferSize];
+ if (this._session != null) {
+ bufferSize = this._session.getMtu();
+ buffer = new byte[bufferSize];
+ }else{
+ throw new IllegalArgumentException("Session variable is null");
+ }
}
-
- public AbstractPacketizer(IStreamListener streamListener, InputStream is, RPCRequest request, SessionType sType, byte rpcSessionID, byte wiproVersion, SdlSession session) throws IOException {
- this._streamListener = streamListener;
+
+ public AbstractPacketizer(IStreamListener streamListener, InputStream is, RPCRequest request, SessionType sType, byte rpcSessionID, byte wiproVersion, SdlSession session) throws IOException, IllegalArgumentException {
+ this._streamListener = streamListener;
this.is = is;
_rpcSessionID = rpcSessionID;
_serviceType = sType;
_request = request;
_wiproVersion = wiproVersion;
this._session = session;
- bufferSize = this._session.getMtu();
- buffer = new byte[bufferSize];
- }
+ if (this._session != null) {
+ bufferSize = this._session.getMtu();
+ buffer = new byte[bufferSize];
+ }else{
+ throw new IllegalArgumentException("Session variable is null");
+ }
+ }
public abstract void start() throws IOException;
@@ -53,4 +61,4 @@ abstract public class AbstractPacketizer {
public abstract void pause();
public abstract void resume();
-}
+} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/streaming/StreamPacketizer.java b/sdl_android/src/main/java/com/smartdevicelink/streaming/StreamPacketizer.java
index 525d94739..40cc7d5ed 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/streaming/StreamPacketizer.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/streaming/StreamPacketizer.java
@@ -14,7 +14,14 @@ public class StreamPacketizer extends AbstractPacketizer implements Runnable{
private Thread t = null;
- private final static int BUFF_READ_SIZE = 1024;
+
+ private final static int TLS_MAX_RECORD_SIZE = 16384;
+ private final static int TLS_RECORD_HEADER_SIZE = 5;
+ private final static int TLS_RECORD_MES_AUTH_CDE_SIZE = 32;
+ private final static int TLS_MAX_RECORD_PADDING_SIZE = 256;
+
+
+ private final static int BUFF_READ_SIZE = TLS_MAX_RECORD_SIZE - TLS_RECORD_HEADER_SIZE - TLS_RECORD_MES_AUTH_CDE_SIZE - TLS_MAX_RECORD_PADDING_SIZE;
public SdlConnection sdlConnection = null;
private Object mPauseLock;
diff --git a/sdl_android/src/main/java/com/smartdevicelink/streaming/VideoStreamingParams.java b/sdl_android/src/main/java/com/smartdevicelink/streaming/VideoStreamingParams.java
new file mode 100644
index 000000000..82a6fa96c
--- /dev/null
+++ b/sdl_android/src/main/java/com/smartdevicelink/streaming/VideoStreamingParams.java
@@ -0,0 +1,99 @@
+package com.smartdevicelink.streaming;
+
+import android.content.Intent;
+import android.util.DisplayMetrics;
+
+import com.smartdevicelink.proxy.rpc.ImageResolution;
+import com.smartdevicelink.proxy.rpc.VideoStreamingFormat;
+import com.smartdevicelink.proxy.rpc.enums.VideoStreamingCodec;
+import com.smartdevicelink.proxy.rpc.enums.VideoStreamingProtocol;
+
+public class VideoStreamingParams {
+ private final VideoStreamingProtocol DEFAULT_PROTOCOL = VideoStreamingProtocol.RAW;
+ private final VideoStreamingCodec DEFAULT_CODEC = VideoStreamingCodec.H264;
+ private final int DEFAULT_WIDTH = 800;
+ private final int DEFAULT_HEIGHT = 480;
+ private final int DEFAULT_DENSITY = DisplayMetrics.DENSITY_HIGH;
+ private final int DEFAULT_FRAMERATE = 24;
+ private final int DEFAULT_BITRATE = 512000;
+ private final int DEFAULT_INTERVAL = 5;
+
+
+ private int displayDensity;
+ private int frameRate;
+ private int bitrate;
+ private int interval;
+ private ImageResolution resolution;
+ private VideoStreamingFormat format;
+
+ public VideoStreamingParams(){
+ displayDensity = DEFAULT_DENSITY;
+ frameRate = DEFAULT_FRAMERATE;
+ bitrate = DEFAULT_BITRATE;
+ interval = DEFAULT_INTERVAL;
+ resolution = new ImageResolution();
+ resolution.setResolutionWidth(DEFAULT_WIDTH);
+ resolution.setResolutionHeight(DEFAULT_HEIGHT);
+ format = new VideoStreamingFormat();
+ format.setProtocol(DEFAULT_PROTOCOL);
+ format.setCodec(DEFAULT_CODEC);
+ }
+
+ public VideoStreamingParams(int displayDensity, int frameRate, int bitrate, int interval,
+ ImageResolution resolution, VideoStreamingFormat format){
+ this.displayDensity = displayDensity;
+ this.frameRate = frameRate;
+ this.bitrate = bitrate;
+ this.interval = interval;
+ this.resolution = resolution;
+ this.format = format;
+ }
+
+ public void setDisplayDensity(int displayDensity) {
+ this.displayDensity = displayDensity;
+ }
+
+ public int getDisplayDensity() {
+ return displayDensity;
+ }
+
+ public void setFrameRate(int frameRate) {
+ this.frameRate = frameRate;
+ }
+
+ public int getFrameRate() {
+ return frameRate;
+ }
+
+ public void setBitrate(int bitrate) {
+ this.bitrate = bitrate;
+ }
+
+ public int getBitrate() {
+ return bitrate;
+ }
+
+ public void setInterval(int interval) {
+ this.interval = interval;
+ }
+
+ public int getInterval() {
+ return interval;
+ }
+
+ public void setFormat(VideoStreamingFormat format){
+ this.format = format;
+ }
+
+ public VideoStreamingFormat getFormat(){
+ return format;
+ }
+
+ public void setResolution(ImageResolution resolution){
+ this.resolution = resolution;
+ }
+
+ public ImageResolution getResolution() {
+ return resolution;
+ }
+} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/trace/DiagLevel.java b/sdl_android/src/main/java/com/smartdevicelink/trace/DiagLevel.java
index b77b34486..26dfdebff 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/trace/DiagLevel.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/trace/DiagLevel.java
@@ -14,29 +14,38 @@ public class DiagLevel {
}
public static void setAllLevels(DetailLevel thisDetail) {
- for (int i=0; i < levels.length; i++) {
- levels[i] = thisDetail; //
+ if (thisDetail != null) {
+ for (int i = 0; i < levels.length; i++) {
+ levels[i] = thisDetail; //
+ }
}
}
public static void setLevel(Mod thisMod, DetailLevel thisDetail) {
- levels[thisMod.ordinal()] = thisDetail;
+ if (thisMod != null && thisDetail != null) {
+ levels[thisMod.ordinal()] = thisDetail;
+ }
}
public static DetailLevel getLevel(Mod thisMod) {
- return levels[thisMod.ordinal()];
+ if (thisMod != null) {
+ return levels[thisMod.ordinal()];
+ }
+ return null;
}
-
+
public static boolean isValidDetailLevel(String dtString) {
// Assume false
Boolean isValid = false;
-
- if (dtString.equalsIgnoreCase("verbose"))
- isValid = true;
- else if (dtString.equalsIgnoreCase("terse"))
- isValid = true;
- else if (dtString.equalsIgnoreCase("off"))
- isValid = true;
+
+ if (dtString != null) {
+ if (dtString.equalsIgnoreCase("verbose"))
+ isValid = true;
+ else if (dtString.equalsIgnoreCase("terse"))
+ isValid = true;
+ else if (dtString.equalsIgnoreCase("off"))
+ isValid = true;
+ }
return isValid;
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/trace/Mime.java b/sdl_android/src/main/java/com/smartdevicelink/trace/Mime.java
index 026f31721..799ac98f4 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/trace/Mime.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/trace/Mime.java
@@ -3,10 +3,18 @@ package com.smartdevicelink.trace;
// Borrowed from Dave Boll's infamous SdlLinkRelay.java
public class Mime {
-
- private static String m_base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-
+
+ private static final String BASE_64_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+
+ /**
+ * @param str A String to encode into base64 String.
+ * @return Base64 encoded String or a null String if input is null.
+ */
public static String base64Encode(String str) {
+ if(str == null){
+ return null;
+ }
+
String b64String = "";
try {
byte[] strBytes = str.getBytes("US-ASCII");
@@ -17,49 +25,76 @@ public class Mime {
return b64String;
}
+ /**
+ * @param bytesToEncode A byte array to encode into base64 String.
+ * @return Base64 encoded String or a null String if input array is null.
+ */
public static String base64Encode(byte bytesToEncode[]) {
- return base64Encode(bytesToEncode, 0, bytesToEncode.length);
+ if(bytesToEncode != null){
+ return base64Encode(bytesToEncode, 0, bytesToEncode.length);
+ }
+ return null;
}
+ /**
+ * @param bytesToEncode A byte array to encode into base64 String.
+ * @param offset Offset to begin at
+ * @param length Length to read
+ * @return Base64 encoded String or a null String if input array is null or the input range is out of bounds.
+ */
public static String base64Encode(byte bytesToEncode[], int offset, int length) {
+ if (bytesToEncode == null || bytesToEncode.length < length || bytesToEncode.length < offset + length) {
+ return null;
+ }
+
StringBuilder sb = new StringBuilder();
- int idxin = 0;
- int b64idx = 0;
+ int idxin = 0;
+ int b64idx = 0;
- for (idxin=offset;idxin < offset + length;idxin++) {
- switch ((idxin-offset) % 3) {
+ for (idxin = offset; idxin < offset + length; idxin++) {
+ switch ((idxin - offset) % 3) {
case 0:
b64idx = (bytesToEncode[idxin] >> 2) & 0x3f;
break;
case 1:
b64idx = (bytesToEncode[idxin] >> 4) & 0x0f;
- b64idx |= ((bytesToEncode[idxin-1] << 4)& 0x30);
+ b64idx |= ((bytesToEncode[idxin - 1] << 4) & 0x30);
break;
case 2:
b64idx = (bytesToEncode[idxin] >> 6) & 0x03;
- b64idx |= ((bytesToEncode[idxin-1] << 2)& 0x3c);
- sb.append(m_base64Chars.charAt(b64idx));
+ b64idx |= ((bytesToEncode[idxin - 1] << 2) & 0x3c);
+ sb.append(getBase64Char(b64idx));
b64idx = bytesToEncode[idxin] & 0x3f;
break;
}
- sb.append(m_base64Chars.charAt(b64idx));
+ sb.append(getBase64Char(b64idx));
}
- switch ((idxin-offset) % 3) {
+ switch ((idxin - offset) % 3) {
case 0:
break;
case 1:
- b64idx = (bytesToEncode[idxin-1] << 4) & 0x30;
- sb.append(m_base64Chars.charAt(b64idx));
+ b64idx = (bytesToEncode[idxin - 1] << 4) & 0x30;
+ sb.append(getBase64Char(b64idx));
sb.append("==");
break;
case 2:
- b64idx = ((bytesToEncode[idxin-1] << 2)& 0x3c);
- sb.append(m_base64Chars.charAt(b64idx));
+ b64idx = ((bytesToEncode[idxin - 1] << 2) & 0x3c);
+ sb.append(getBase64Char(b64idx));
sb.append('=');
break;
- }
+ }
+
return sb.toString();
+
+ }
+
+ private static char getBase64Char(int b64idx){
+ if(b64idx >= 0 && b64idx < BASE_64_CHARS.length()) {
+ return BASE_64_CHARS.charAt(b64idx);
+ }else{
+ return 0x20;
+ }
}
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java b/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java
index b4fea0e71..762c076a3 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java
@@ -50,10 +50,14 @@ public class MultiplexBluetoothTransport {
private static final UUID SERVER_UUID= new UUID(0x936DA01F9ABD4D9DL, 0x80C702AF85C822A8L);
// Name for the SDP record when creating server socket
private static final String NAME_SECURE =" SdlRouterService";
-
-
- protected static final String SHARED_PREFS = "sdl.bluetoothprefs";
+ // Key names received from the BluetoothSerialServer Handler
+ public static final String DEVICE_NAME = "device_name";
+ public static final String TOAST = "toast";
+ private static final long MS_TILL_TIMEOUT = 2500;
+ private static final int READ_BUFFER_SIZE = 4096;
+ private static final Object THREAD_LOCK = new Object();;
+ protected static final String SHARED_PREFS = "sdl.bluetoothprefs";
// Constants that indicate the current connection state
public static final int STATE_NONE = 0; // we're doing nothing
@@ -67,40 +71,24 @@ public class MultiplexBluetoothTransport {
private final BluetoothAdapter mAdapter = BluetoothAdapter.getDefaultAdapter();
private final Handler mHandler;
private AcceptThread mSecureAcceptThread;
- private static Object threadLock = null;
private ConnectThread mConnectThread;
- private static ConnectedThread mConnectedThread; //I HATE ALL THIS STATIC CRAP, But it seems like the only way right now
- private static ConnectedWriteThread mConnectedWriteThread; //I HATE ALL THIS STATIC CRAP, But it seems like the only way right now
-
- private static int mState;
-
- // Key names received from the BluetoothSerialServer Handler
- public static final String DEVICE_NAME = "device_name";
- public static final String TOAST = "toast";
-
-
+ private ConnectedThread mConnectedThread;
+ private ConnectedWriteThread mConnectedWriteThread;
+ private int mState;
private int mBluetoothLevel = 0;
Handler timeOutHandler;
Runnable socketRunable;
- private static final long msTillTimeout = 2500;
-
- private static final int READ_BUFFER_SIZE = 4096;
+ boolean keepSocketAlive = true;
public static String currentlyConnectedDevice = null;
public static String currentlyConnectedDeviceAddress = null;
- private static MultiplexBluetoothTransport serverInstance = null;
- //private BluetoothServerSocket serverSocket= null;
- static boolean keepSocketAlive = true;
-
-
/**
* Constructor. Prepares a new BluetoothChat session.
- * @param context The UI Activity Context
* @param handler A Handler to send messages back to the UI Activity
*/
- private MultiplexBluetoothTransport(Handler handler) {
+ public MultiplexBluetoothTransport(Handler handler) {
//Log.w(TAG, "Creating Bluetooth Serial Adapter");
// mAdapter = BluetoothAdapter.getDefaultAdapter();
mState = STATE_NONE;
@@ -108,32 +96,41 @@ public class MultiplexBluetoothTransport {
//This will keep track of which method worked last night
mBluetoothLevel = SdlRouterService.getBluetoothPrefs(SHARED_PREFS);
- Object object = new Object();
- threadLock = object;
-
}
-
- /*
- * Let's use this method from now on to get bluetooth service
+ /**
+ * This method has been deprecated. It will return an instance of MultiplexBluetoothTransport but <b>should not</b> be used.
+ * @param handler for receiving status messages from the transport
+ * @return an instance of MultiplexBluetoothTransport
+ * @deprecated
*/
+ @Deprecated
public synchronized static MultiplexBluetoothTransport getBluetoothSerialServerInstance(Handler handler){
- return getBluetoothSerialServerInstance(handler,true);
+ return new MultiplexBluetoothTransport(handler);
}
- /*
- * Let's use this method from now on to get bluetooth service
+ /**
+ * This method has been deprecated. It will return an instance of MultiplexBluetoothTransport but <b>should not</b> be used.
+ * @param handler for receiving status messages from the transport
+ * @param keepSocketAlive Flag for keeping the socket alive
+ * @return an instance of MultiplexBluetoothTransport
+ * @deprecated
*/
+ @Deprecated
public synchronized static MultiplexBluetoothTransport getBluetoothSerialServerInstance(Handler handler, boolean keepSocketAlive){
-
- if(serverInstance==null){
- serverInstance = new MultiplexBluetoothTransport(handler);
- }
- MultiplexBluetoothTransport.keepSocketAlive = keepSocketAlive;
- return serverInstance;
+ MultiplexBluetoothTransport transport = new MultiplexBluetoothTransport(handler);
+ transport.setKeepSocketAlive(keepSocketAlive);
+ return transport;
}
+
+ /**
+ * This method has been deprecated. <b>It will always return null.</b>
+ * @return always null
+ * @deprecated
+ */
+ @Deprecated
public synchronized static MultiplexBluetoothTransport getBluetoothSerialServerInstance(){
- return serverInstance;
+ return null;
}
//These methods are used so we can have a semi-static reference to the Accept Thread (Static reference inherited by housing class)
@@ -168,7 +165,7 @@ public class MultiplexBluetoothTransport {
}
public void setKeepSocketAlive(boolean keepSocketAlive){
- MultiplexBluetoothTransport.keepSocketAlive = keepSocketAlive;
+ this.keepSocketAlive = keepSocketAlive;
}
/**
@@ -177,7 +174,7 @@ public class MultiplexBluetoothTransport {
public synchronized void start() {
//Log.d(TAG, "Starting up Bluetooth Server to Listen");
// Cancel any thread attempting to make a connection
- if (serverInstance.mConnectThread != null) {serverInstance.mConnectThread.cancel(); serverInstance.mConnectThread = null;}
+ if (mConnectThread != null) {mConnectThread.cancel(); mConnectThread = null;}
// Cancel any thread currently running a connection
if (mConnectedThread != null) {mConnectedThread.cancel(); mConnectedThread = null;}
@@ -186,14 +183,14 @@ public class MultiplexBluetoothTransport {
// Start the thread to listen on a BluetoothServerSocket
- if (getBluetoothSerialServerInstance().getAcceptThread() == null
- && serverInstance.mAdapter != null
- && serverInstance.mAdapter.isEnabled()) {
+ if (getAcceptThread() == null
+ && mAdapter != null
+ && mAdapter.isEnabled()) {
//Log.d(TAG, "Secure thread was null, attempting to create new");
- getBluetoothSerialServerInstance().setAcceptThread(new AcceptThread(true));
- if(getBluetoothSerialServerInstance().getAcceptThread()!=null){
- getBluetoothSerialServerInstance().setState(STATE_LISTEN);
- getBluetoothSerialServerInstance().getAcceptThread().start();
+ setAcceptThread(new AcceptThread(true));
+ if(getAcceptThread()!=null){
+ setState(STATE_LISTEN);
+ getAcceptThread().start();
}
}
}
@@ -205,7 +202,7 @@ public class MultiplexBluetoothTransport {
public synchronized void connect(BluetoothDevice device) {
// Cancel any thread attempting to make a connection
if (mState == STATE_CONNECTING) {
- if (serverInstance.mConnectThread != null) {serverInstance.mConnectThread.cancel(); serverInstance.mConnectThread = null;}
+ if (mConnectThread != null) {mConnectThread.cancel(); mConnectThread = null;}
}
// Cancel any thread currently running a connection
@@ -220,9 +217,9 @@ public class MultiplexBluetoothTransport {
}
// Start the thread to connect with the given device
- serverInstance.mConnectThread = new ConnectThread(device);
- serverInstance.mConnectThread.start();
- serverInstance.setState(STATE_CONNECTING);
+ mConnectThread = new ConnectThread(device);
+ mConnectThread.start();
+ setState(STATE_CONNECTING);
}
/**
@@ -232,9 +229,9 @@ public class MultiplexBluetoothTransport {
*/
public synchronized void connected(BluetoothSocket socket, BluetoothDevice device) {
// Cancel the thread that completed the connection
- if (getBluetoothSerialServerInstance().mConnectThread != null) {
- getBluetoothSerialServerInstance().mConnectThread.cancel();
- getBluetoothSerialServerInstance().mConnectThread = null;
+ if (mConnectThread != null) {
+ mConnectThread.cancel();
+ mConnectThread = null;
}
// Cancel any thread currently running a connection
@@ -247,9 +244,9 @@ public class MultiplexBluetoothTransport {
mConnectedWriteThread = null;
}
// Cancel the accept thread because we only want to connect to one device
- if (!keepSocketAlive && getBluetoothSerialServerInstance().mSecureAcceptThread != null) {
- getBluetoothSerialServerInstance().mSecureAcceptThread.cancel();
- getBluetoothSerialServerInstance().mSecureAcceptThread = null;
+ if (!keepSocketAlive && mSecureAcceptThread != null) {
+ mSecureAcceptThread.cancel();
+ mSecureAcceptThread = null;
}
// Start the thread to manage the connection and perform transmissions
@@ -259,32 +256,31 @@ public class MultiplexBluetoothTransport {
mConnectedWriteThread = new ConnectedWriteThread(socket);
mConnectedWriteThread.start();
- //Store a static name of the device that is connected. We can do this since the only time
- //we will access it will be when we receive a CONNECT packet from a device
- if(device!=null && device.getName()!=null && device.getName()!=""){
+ //Store a static name of the device that is connected.
+ if(device!=null){
currentlyConnectedDevice = device.getName();
}
// Send the name of the connected device back to the UI Activity
Message msg = mHandler.obtainMessage(SdlRouterService.MESSAGE_DEVICE_NAME);
Bundle bundle = new Bundle();
- bundle.putString(DEVICE_NAME, device.getName());
+ bundle.putString(DEVICE_NAME, currentlyConnectedDevice);
msg.setData(bundle);
- getBluetoothSerialServerInstance().mHandler.sendMessage(msg);
- getBluetoothSerialServerInstance().setState(STATE_CONNECTED);
+ mHandler.sendMessage(msg);
+ setState(STATE_CONNECTED);
}
/**
* Stop all threads
*/
public synchronized void stop() {
- getBluetoothSerialServerInstance().stop(STATE_NONE);
+ stop(STATE_NONE);
}
protected synchronized void stop(int stateToTransitionTo) {
//Log.d(TAG, "Attempting to close the bluetooth serial server");
- if (getBluetoothSerialServerInstance().mConnectThread != null) {
- getBluetoothSerialServerInstance().mConnectThread.cancel();
- getBluetoothSerialServerInstance().mConnectThread = null;
+ if (mConnectThread != null) {
+ mConnectThread.cancel();
+ mConnectThread = null;
}
if (mConnectedThread != null) {
@@ -298,7 +294,7 @@ public class MultiplexBluetoothTransport {
mSecureAcceptThread = null;
}
- getBluetoothSerialServerInstance().setState(stateToTransitionTo);
+ setState(stateToTransitionTo);
}
@@ -329,7 +325,7 @@ public class MultiplexBluetoothTransport {
Bundle bundle = new Bundle();
bundle.putString(TOAST, "Unable to connect device");
msg.setData(bundle);
- getBluetoothSerialServerInstance().mHandler.sendMessage(msg);
+ mHandler.sendMessage(msg);
// Start the service over to restart listening mode
// BluetoothSerialServer.this.start();
@@ -344,14 +340,14 @@ public class MultiplexBluetoothTransport {
Bundle bundle = new Bundle();
bundle.putString(TOAST, "Device connection was lost");
msg.setData(bundle);
- getBluetoothSerialServerInstance().mHandler.sendMessage(msg);
- getBluetoothSerialServerInstance().stop();
+ mHandler.sendMessage(msg);
+ stop();
}
private void timerDelayRemoveDialog(final BluetoothSocket sock){
- getBluetoothSerialServerInstance().timeOutHandler = new Handler();
- getBluetoothSerialServerInstance().socketRunable = new Runnable() {
+ timeOutHandler = new Handler();
+ socketRunable = new Runnable() {
public void run() {
//Log.e(TAG, "BLUETOOTH SOCKET CONNECT TIMEOUT - ATTEMPT TO CLOSE SOCKET");
try {
@@ -361,7 +357,7 @@ public class MultiplexBluetoothTransport {
}
}
};
- getBluetoothSerialServerInstance().timeOutHandler.postDelayed(socketRunable, msTillTimeout);
+ timeOutHandler.postDelayed(socketRunable, MS_TILL_TIMEOUT);
}
@@ -378,14 +374,14 @@ public class MultiplexBluetoothTransport {
@SuppressLint("NewApi")
public AcceptThread(boolean secure) {
- synchronized(threadLock){
+ synchronized(THREAD_LOCK){
//Log.d(TAG, "Creating an Accept Thread");
BluetoothServerSocket tmp = null;
mSocketType = secure ? "Secure":"Insecure";
// Create a new listening server socket
try {
if (secure) {
- tmp = getBluetoothSerialServerInstance().mAdapter.listenUsingRfcommWithServiceRecord(NAME_SECURE, SERVER_UUID);
+ tmp = mAdapter.listenUsingRfcommWithServiceRecord(NAME_SECURE, SERVER_UUID);
}
} catch (IOException e) {
//Log.e(TAG, "Socket Type: " + mSocketType + "listen() failed", e);
@@ -402,7 +398,7 @@ public class MultiplexBluetoothTransport {
}
public void run() {
- synchronized(threadLock){
+ synchronized(THREAD_LOCK){
Log.d(TAG, "Socket Type: " + mSocketType +
" BEGIN mAcceptThread" + this);
setName("AcceptThread" + mSocketType);
@@ -415,7 +411,7 @@ public class MultiplexBluetoothTransport {
try {
if(listenAttempts>=5){
Log.e(TAG, "Complete failure in attempting to listen for Bluetooth connection, erroring out.");
- getBluetoothSerialServerInstance().stop(STATE_ERROR);
+ MultiplexBluetoothTransport.this.stop(STATE_ERROR);
return;
}
listenAttempts++;
@@ -430,12 +426,12 @@ public class MultiplexBluetoothTransport {
}
else{
Log.e(TAG, "Listening Socket was null, stopping the bluetooth serial server.");
- getBluetoothSerialServerInstance().stop(STATE_ERROR);
+ MultiplexBluetoothTransport.this.stop(STATE_ERROR);
return;
}
} catch (IOException e) {
Log.e(TAG, "Socket Type: " + mSocketType + "accept() failed");
- getBluetoothSerialServerInstance().stop(STATE_ERROR);
+ MultiplexBluetoothTransport.this.stop(STATE_ERROR);
return;
}
@@ -446,7 +442,7 @@ public class MultiplexBluetoothTransport {
case STATE_LISTEN:
case STATE_CONNECTING:
// Situation normal. Start the connected thread.
- getBluetoothSerialServerInstance().connected(socket, socket.getRemoteDevice());
+ connected(socket, socket.getRemoteDevice());
break;
case STATE_NONE:
@@ -454,9 +450,7 @@ public class MultiplexBluetoothTransport {
// Either not ready or already connected. Terminate new socket.
try {
Log.d(TAG, "Close unwanted socket");
- if(socket!=null){
- socket.close();
- }
+ socket.close();
} catch (IOException e) {
Log.e(TAG, "Could not close unwanted socket", e);
}
@@ -729,7 +723,7 @@ public class MultiplexBluetoothTransport {
// Exception during write
//OMG! WE MUST NOT BE CONNECTED ANYMORE! LET THE USER KNOW
Log.e(TAG, "Error sending bytes to connected device!");
- getBluetoothSerialServerInstance().connectionLost();
+ connectionLost();
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexTransport.java b/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexTransport.java
index ecb8281cc..c7cb0e59e 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexTransport.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexTransport.java
@@ -24,6 +24,7 @@ public class MultiplexTransport extends SdlTransport{
super(transportListener);
if(transportConfig == null){
this.handleTransportError("Transport config was null", null);
+ throw new IllegalArgumentException("Null transportConfig in MultiplexTransport constructor");
}
this.transportConfig = transportConfig;
brokerThread = new TransportBrokerThread(transportConfig.context, transportConfig.appId, transportConfig.service);
diff --git a/sdl_android/src/main/java/com/smartdevicelink/transport/RouterServiceValidator.java b/sdl_android/src/main/java/com/smartdevicelink/transport/RouterServiceValidator.java
index 6703232d5..66e415f29 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/transport/RouterServiceValidator.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/transport/RouterServiceValidator.java
@@ -121,6 +121,11 @@ public class RouterServiceValidator {
//This means our service isn't actually running, so set to null. Hopefully we can find a real router service after this.
service = null;
Log.w(TAG, "Supplied service is not actually running.");
+ } else {
+ // If the running router service is created by this app, the validation is good by default
+ if (this.service.getPackageName().equals(context.getPackageName())) {
+ return true;
+ }
}
}
if(this.service == null){
@@ -351,7 +356,7 @@ public class RouterServiceValidator {
List<SdlApp> apps = new ArrayList<SdlApp>();
PackageManager packageManager = context.getPackageManager();
Intent intent = new Intent();
- intent.setAction("sdl.router.startservice");
+ intent.setAction(TransportConstants.START_ROUTER_SERVICE_ACTION);
List<ResolveInfo> infoList = packageManager.queryBroadcastReceivers(intent, 0);
//We want to sort our list so that we know it's the same everytime
Collections.sort(infoList,new Comparator<ResolveInfo>() {
diff --git a/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java b/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java
index 6a5cda6b7..cfcd486b2 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java
@@ -93,9 +93,6 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{
//List obtained. Let's start our service
queuedService = componentName;
finalIntent.setAction("com.sdl.noaction"); //Replace what's there so we do go into some unintended loop
- //Validate the router service so the service knows if this is a trusted router service
- RouterServiceValidator vlad = new RouterServiceValidator(finalContext,componentName);
- finalIntent.putExtra(TransportConstants.ROUTER_SERVICE_VALIDATED, vlad.validate());
onSdlEnabled(finalContext, finalIntent);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/transport/SdlPsm.java b/sdl_android/src/main/java/com/smartdevicelink/transport/SdlPsm.java
index ed86cbb69..1fc40bda4 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/transport/SdlPsm.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/transport/SdlPsm.java
@@ -76,7 +76,7 @@ public class SdlPsm{
frameType = rawByte&(byte)FRAME_TYPE_MASK;
//Log.trace(TAG, rawByte + " = Frame Type: " + frameType);
- if((version < 1 || version > 4) //These are known versions supported by this library.
+ if((version < 1 || version > 5) //These are known versions supported by this library.
&& frameType!=SdlPacket.FRAME_TYPE_CONTROL){
return ERROR_STATE;
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java b/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java
index 2bae96e27..d3a4fd051 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java
@@ -1,5 +1,6 @@
package com.smartdevicelink.transport;
+import static com.smartdevicelink.proxy.constants.Names.info;
import static com.smartdevicelink.transport.TransportConstants.CONNECTED_DEVICE_STRING_EXTRA_NAME;
import static com.smartdevicelink.transport.TransportConstants.FORMED_PACKET_EXTRA_NAME;
import static com.smartdevicelink.transport.TransportConstants.HARDWARE_DISCONNECTED;
@@ -93,8 +94,12 @@ public class SdlRouterService extends Service{
private static final long CLIENT_PING_DELAY = 1000;
public static final String REGISTER_NEWER_SERVER_INSTANCE_ACTION = "com.sdl.android.newservice";
+ /**
+ * @deprecated use {@link TransportConstants#START_ROUTER_SERVICE_ACTION} instead
+ */
+ @Deprecated
public static final String START_SERVICE_ACTION = "sdl.router.startservice";
- public static final String REGISTER_WITH_ROUTER_ACTION = "com.sdl.android.register";
+ public static final String REGISTER_WITH_ROUTER_ACTION = "com.sdl.android.register";
/** Message types sent from the BluetoothReadService Handler */
public static final int MESSAGE_STATE_CHANGE = 1;
@@ -105,7 +110,7 @@ public class SdlRouterService extends Service{
private final int UNREGISTER_APP_INTERFACE_CORRELATION_ID = 65530;
- private static MultiplexBluetoothTransport mSerialService = null;
+ private MultiplexBluetoothTransport mSerialService = null;
private static boolean connectAsClient = false;
private static boolean closing = false;
@@ -167,7 +172,7 @@ public class SdlRouterService extends Service{
{
//Let's grab where to reply to this intent at. We will keep it temp right now because we may have to deny registration
String action =intent.getStringExtra(SEND_PACKET_TO_APP_LOCATION_EXTRA_NAME);
- sendBroadcast(prepareRegistrationIntent(action));
+ sendBroadcast(prepareRegistrationIntent(action));
}
};
@@ -192,16 +197,8 @@ public class SdlRouterService extends Service{
Log.e(TAG, "Serial service not initliazed while registering app");
//Maybe we should try to do a connect here instead
Log.d(TAG, "Serial service being restarted");
- if(mSerialService ==null){
- Log.e(TAG, "Local copy of BT Server is null");
- mSerialService = MultiplexBluetoothTransport.getBluetoothSerialServerInstance();
- if(mSerialService==null){
- Log.e(TAG, "Local copy of BT Server is still null and so is global");
- mSerialService = MultiplexBluetoothTransport.getBluetoothSerialServerInstance(mHandlerBT);
+ initBluetoothSerialService();
- }
- }
- mSerialService.start();
}
}
@@ -216,7 +213,7 @@ public class SdlRouterService extends Service{
BroadcastReceiver registerAnInstanceOfSerialServer = new BroadcastReceiver() {
final Object COMPARE_LOCK = new Object();
@Override
- public void onReceive(Context context, Intent intent)
+ public void onReceive(Context context, Intent intent)
{
LocalRouterService tempService = intent.getParcelableExtra(SdlBroadcastReceiver.LOCAL_ROUTER_SERVICE_EXTRA);
synchronized(COMPARE_LOCK){
@@ -303,7 +300,7 @@ public class SdlRouterService extends Service{
*********************************************** Handlers for bound clients **************************************************************
****************************************************************************************************************************************/
-
+
/**
* Target we publish for clients to send messages to RouterHandler.
*/
@@ -318,7 +315,7 @@ public class SdlRouterService extends Service{
public RouterHandler(SdlRouterService provider){
this.provider = new WeakReference<SdlRouterService>(provider);
}
-
+
@Override
public void handleMessage(Message msg) {
if(this.provider.get() == null){
@@ -609,20 +606,20 @@ public class SdlRouterService extends Service{
case TransportConstants.ROUTER_RECEIVED_PACKET:
if(receivedBundle!=null){
receivedBundle.setClassLoader(loader);//We do this because loading a custom parceable object isn't possible without it
- }else{
- Log.e(TAG, "Bundle was null while sending packet to router service from alt transport");
- }
- if(receivedBundle.containsKey(TransportConstants.FORMED_PACKET_EXTRA_NAME)){
- SdlPacket packet = receivedBundle.getParcelable(TransportConstants.FORMED_PACKET_EXTRA_NAME);
- if(packet!=null){
- service.onPacketRead(packet);
- }else{
- Log.w(TAG, "Received null packet from alt transport service");
- }
- }else{
- Log.w(TAG, "Flase positive packet reception");
- }
- break;
+ if(receivedBundle.containsKey(TransportConstants.FORMED_PACKET_EXTRA_NAME)){
+ SdlPacket packet = receivedBundle.getParcelable(TransportConstants.FORMED_PACKET_EXTRA_NAME);
+ if(packet!=null){
+ service.onPacketRead(packet);
+ }else{
+ Log.w(TAG, "Received null packet from alt transport service");
+ }
+ }else{
+ Log.w(TAG, "Flase positive packet reception");
+ }
+ }else{
+ Log.e(TAG, "Bundle was null while sending packet to router service from alt transport");
+ }
+ break;
default:
super.handleMessage(msg);
}
@@ -839,7 +836,7 @@ public class SdlRouterService extends Service{
}
HashMap<String,ResolveInfo> sdlMultiList ;
public void startVersionCheck(){
- Intent intent = new Intent(START_SERVICE_ACTION);
+ Intent intent = new Intent(TransportConstants.START_ROUTER_SERVICE_ACTION);
List<ResolveInfo> infos = getPackageManager().queryBroadcastReceivers(intent, 0);
sdlMultiList = new HashMap<String,ResolveInfo>();
for(ResolveInfo info: infos){
@@ -1117,18 +1114,16 @@ public class SdlRouterService extends Service{
Log.d(TAG, "Not starting own bluetooth during legacy mode");
return;
}
- Log.i(TAG, "Iniitializing bluetooth transport");
//init serial service
- if(mSerialService ==null){
- mSerialService = MultiplexBluetoothTransport.getBluetoothSerialServerInstance();
- if(mSerialService==null){
- mSerialService = MultiplexBluetoothTransport.getBluetoothSerialServerInstance(mHandlerBT);
- }
+ if(mSerialService == null || mSerialService.getState() == MultiplexBluetoothTransport.STATE_ERROR){
+ Log.i(TAG, "Initializing bluetooth transport");
+ mSerialService = new MultiplexBluetoothTransport(mHandlerBT);
}
if (mSerialService != null) {
// Only if the state is STATE_NONE, do we know that we haven't started already
- if (mSerialService.getState() == MultiplexBluetoothTransport.STATE_NONE || mSerialService.getState() == MultiplexBluetoothTransport.STATE_ERROR) {
+ if (mSerialService.getState() == MultiplexBluetoothTransport.STATE_NONE) {
// Start the Bluetooth services
+ Log.i(TAG, "Starting bluetooth transport");
mSerialService.start();
}
@@ -1148,12 +1143,24 @@ public class SdlRouterService extends Service{
connectedTransportType = type;
Intent startService = new Intent();
- startService.setAction(START_SERVICE_ACTION);
+ startService.setAction(TransportConstants.START_ROUTER_SERVICE_ACTION);
+ //Perform our query prior to adding any extras or flags
+ List<ResolveInfo> sdlApps = getPackageManager().queryBroadcastReceivers(startService, 0);
+
startService.putExtra(TransportConstants.START_ROUTER_SERVICE_SDL_ENABLED_EXTRA, true);
startService.putExtra(TransportConstants.FORCE_TRANSPORT_CONNECTED, true);
startService.putExtra(TransportConstants.START_ROUTER_SERVICE_SDL_ENABLED_APP_PACKAGE, getBaseContext().getPackageName());
startService.putExtra(TransportConstants.START_ROUTER_SERVICE_SDL_ENABLED_CMP_NAME, new ComponentName(this, this.getClass()));
- sendBroadcast(startService);
+ startService.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+
+ //Iterate through all apps that we know are listening for this intent with an explicit intent (neccessary for Android O SDK 26)
+ if(sdlApps != null && sdlApps.size()>0){
+ for(ResolveInfo app: sdlApps){
+ startService.setClassName(app.activityInfo.applicationInfo.packageName, app.activityInfo.name);
+ sendBroadcast(startService);
+ }
+ }
+
//HARDWARE_CONNECTED
if(!(registeredApps== null || registeredApps.isEmpty())){
//If we have clients
@@ -1289,10 +1296,10 @@ public class SdlRouterService extends Service{
return false;
}
if(mSerialService !=null && mSerialService.getState()==MultiplexBluetoothTransport.STATE_CONNECTED){
- byte[] packet = bundle.getByteArray(TransportConstants.BYTES_TO_SEND_EXTRA_NAME);
- int offset = bundle.getInt(TransportConstants.BYTES_TO_SEND_EXTRA_OFFSET, 0); //If nothing, start at the begining of the array
- int count = bundle.getInt(TransportConstants.BYTES_TO_SEND_EXTRA_COUNT, packet.length); //In case there isn't anything just send the whole packet.
+ byte[] packet = bundle.getByteArray(TransportConstants.BYTES_TO_SEND_EXTRA_NAME);
if(packet!=null){
+ int offset = bundle.getInt(TransportConstants.BYTES_TO_SEND_EXTRA_OFFSET, 0); //If nothing, start at the begining of the array
+ int count = bundle.getInt(TransportConstants.BYTES_TO_SEND_EXTRA_COUNT, packet.length); //In case there isn't anything just send the whole packet.
mSerialService.write(packet,offset,count);
return true;
}
@@ -1576,7 +1583,7 @@ public class SdlRouterService extends Service{
Log.d(TAG,"Connecting to device: " + device.getName().toString());
if(mSerialService == null || !mSerialService.isConnected())
{ // Set up the Bluetooth serial object
- mSerialService = MultiplexBluetoothTransport.getBluetoothSerialServerInstance(mHandlerBT);
+ mSerialService = new MultiplexBluetoothTransport(mHandlerBT);
}
// We've been given a device - let's connect to it
if(mSerialService.getState()!=MultiplexBluetoothTransport.STATE_CONNECTING){//mSerialService.stop();
@@ -1669,7 +1676,7 @@ public class SdlRouterService extends Service{
//Log.v(TAG, "Self service info " + self);
//Log.v(TAG, "Newest compare to service info " + newestServiceReceived);
if(newestServiceReceived!=null && self.isNewer(newestServiceReceived)){
- if(SdlRouterService.mSerialService!=null && SdlRouterService.mSerialService.isConnected()){ //We are currently connected. Wait for next connection
+ if(SdlRouterService.this.mSerialService!=null && SdlRouterService.this.mSerialService.isConnected()){ //We are currently connected. Wait for next connection
return;
}
Log.d(TAG, "There is a newer version "+newestServiceReceived.version+" of the Router Service, starting it up");
@@ -1935,7 +1942,7 @@ public class SdlRouterService extends Service{
private void initPingIntent(){
pingIntent = new Intent();
- pingIntent.setAction(START_SERVICE_ACTION);
+ pingIntent.setAction(TransportConstants.START_ROUTER_SERVICE_ACTION);
pingIntent.putExtra(TransportConstants.START_ROUTER_SERVICE_SDL_ENABLED_EXTRA, true);
pingIntent.putExtra(TransportConstants.START_ROUTER_SERVICE_SDL_ENABLED_APP_PACKAGE, getBaseContext().getPackageName());
pingIntent.putExtra(TransportConstants.START_ROUTER_SERVICE_SDL_ENABLED_CMP_NAME, new ComponentName(SdlRouterService.this, SdlRouterService.this.getClass()));
diff --git a/sdl_android/src/main/java/com/smartdevicelink/transport/TransportConstants.java b/sdl_android/src/main/java/com/smartdevicelink/transport/TransportConstants.java
index 29cdea035..6203aa3e7 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/transport/TransportConstants.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/transport/TransportConstants.java
@@ -51,9 +51,9 @@ public class TransportConstants {
public static final String BIND_REQUEST_TYPE_ALT_TRANSPORT = "BIND_REQUEST_TYPE_ALT_TRANSPORT";
public static final String BIND_REQUEST_TYPE_STATUS = "BIND_REQUEST_TYPE_STATUS";
-
+
public static final String PING_ROUTER_SERVICE_EXTRA = "ping.router.service";
-
+
/**
* This class houses all important router service versions
*/
diff --git a/sdl_android/src/main/java/com/smartdevicelink/util/BitConverter.java b/sdl_android/src/main/java/com/smartdevicelink/util/BitConverter.java
index c844e49a4..a681a75a8 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/util/BitConverter.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/util/BitConverter.java
@@ -1,10 +1,21 @@
package com.smartdevicelink.util;
public class BitConverter {
+ /**
+ * @param bytes byte array that will be converted to hex
+ * @return the String containing converted hex values or null if byte array is null
+ */
public static String bytesToHex(byte [] bytes) {
+ if (bytes == null) { return null; }
return bytesToHex(bytes, 0, bytes.length);
} // end-method
+ /**
+ * @param bytes byte array that will be converted to hex
+ * @param offset int representing the offset to begin conversion at
+ * @param length int representing number of bytes in array to convert
+ * @return the String containing converted hex values or null if byte array is null
+ */
public static String bytesToHex(byte[] bytes, int offset, int length) {
if (bytes == null) { return null; }
final char[] HexDigits = new char[] {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
@@ -24,6 +35,10 @@ public class BitConverter {
return new String(hexChars);
} // end-method
+ /**
+ * @param hexString the String containing converted hex values
+ * @return byte array converted from input String or null if String is null
+ */
public static byte [] hexToBytes(String hexString) {
if (hexString == null) { return null; }
if (hexString.length() % 2 != 0) {
@@ -45,8 +60,13 @@ public class BitConverter {
(byte)(value >>> 8),
(byte)value};
}
-
+
+ /**
+ * @param sizeBuf byte array that will be converted to int
+ * @return int converted from byte array or -1 if byte array is null
+ */
public static int intFromByteArray(byte[] sizeBuf, int offset) {
+ if (sizeBuf == null) { return -1; }
int ret = 0;
for (int i = offset; i < offset + 4; i++) {
ret <<= 8;
@@ -60,8 +80,13 @@ public class BitConverter {
(byte)(value >>> 8),
(byte)value};
}
-
+
+ /**
+ * @param sizeBuf byte array that will be converted to short
+ * @return short converted from byte array or -1 if byte array is null
+ */
public static short shortFromByteArray(byte[] sizeBuf, int offset) {
+ if (sizeBuf == null) { return -1; }
short ret = 0;
for (int i = offset; i < offset + 2; i++) {
ret <<= 8;
@@ -72,11 +97,12 @@ public class BitConverter {
/**
* Converts the byte array into a string of hex values.
- * @param bytes
+ * @param bytes byte array that will be converted to hex
* @param end EXCLUSIVE so if it it receives 10 it will print 0-9
- * @return
+ * @return the String containing converted hex values or null if byte array is null
*/
public static String bytesToHex(byte[] bytes,int end){
+ if (bytes == null) { return null; }
if(bytes.length<end){
end = bytes.length;
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/util/Version.java b/sdl_android/src/main/java/com/smartdevicelink/util/Version.java
new file mode 100644
index 000000000..8621c8cfd
--- /dev/null
+++ b/sdl_android/src/main/java/com/smartdevicelink/util/Version.java
@@ -0,0 +1,47 @@
+package com.smartdevicelink.util;
+
+
+public class Version {
+
+ int major,minor,patch;
+
+ public Version(){
+ major = 0;
+ minor = 0;
+ patch = 0;
+ }
+
+ public Version(String versionString){
+ String[] versions = versionString.split("\\.");
+ if(versions.length!=3){
+ throw new IllegalArgumentException("Incorrect version string format");
+ }
+ major = Integer.valueOf(versions[0]);
+ minor = Integer.valueOf(versions[1]);
+ patch = Integer.valueOf(versions[2]);
+
+ }
+
+ public int getMajor() {
+ return major;
+ }
+
+ public int getMinor() {
+ return minor;
+ }
+
+ public int getPatch() {
+ return patch;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append(major);
+ builder.append(".");
+ builder.append(minor);
+ builder.append(".");
+ builder.append(patch);
+ return builder.toString();
+ }
+}