├── .github ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE │ ├── best-practice.yml │ ├── bug-report.yml │ ├── config.yml │ └── internal-proposal.yml ├── PULL_REQUEST_TEMPLATE.md └── workflows │ └── android.yml ├── .gitignore ├── .gitmodules ├── CHANGELOG.md ├── JavaSuiteFolderStructure.png ├── LICENSE ├── README.md ├── VERSION ├── android ├── README.md ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── hello_sdl_android │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── sdl │ │ │ └── hellosdlandroid │ │ │ ├── MainActivity.java │ │ │ ├── SdlReceiver.java │ │ │ ├── SdlRouterService.java │ │ │ └── SdlService.java │ │ └── res │ │ ├── drawable │ │ └── sdl.png │ │ ├── layout │ │ └── activity_main.xml │ │ ├── menu │ │ └── main.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-w820dp │ │ └── dimens.xml │ │ ├── values │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ │ └── xml │ │ └── accessory_filter.xml ├── sdl_android │ ├── ROUTER_SERVICE_MESSAGING_PROTOCOL.md │ ├── build.gradle │ ├── gradle.properties │ ├── libs │ │ └── Taskmaster-0.6.jar │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ ├── AndroidManifest.xml │ │ ├── assets │ │ │ └── json │ │ │ │ ├── AddCommand.json │ │ │ │ ├── AddSubMenu.json │ │ │ │ ├── Alert.json │ │ │ │ ├── AlertManeuver.json │ │ │ │ ├── ButtonPress.json │ │ │ │ ├── CancelInteraction.json │ │ │ │ ├── ChangeRegistration.json │ │ │ │ ├── CloseApplication.json │ │ │ │ ├── CreateInteractionChoiceSet.json │ │ │ │ ├── CreateWindow.json │ │ │ │ ├── DeleteCommand.json │ │ │ │ ├── DeleteFile.json │ │ │ │ ├── DeleteInteractionChoiceSet.json │ │ │ │ ├── DeleteSubMenu.json │ │ │ │ ├── DeleteWindow.json │ │ │ │ ├── DiagnosticMessage.json │ │ │ │ ├── DialNumber.json │ │ │ │ ├── EndAudioPassThru.json │ │ │ │ ├── GetAppServiceData.json │ │ │ │ ├── GetDTCs.json │ │ │ │ ├── GetFile.json │ │ │ │ ├── GetInteriorVehicleData.json │ │ │ │ ├── GetInteriorVehicleDataConsent.json │ │ │ │ ├── GetSystemCapability.json │ │ │ │ ├── GetVehicleData.json │ │ │ │ ├── GetWayPoints.json │ │ │ │ ├── ListFiles.json │ │ │ │ ├── PerformAppServiceInteraction.json │ │ │ │ ├── PerformAudioPassThru.json │ │ │ │ ├── PerformInteraction.json │ │ │ │ ├── PublishAppService.json │ │ │ │ ├── PutFile.json │ │ │ │ ├── ReadDID.json │ │ │ │ ├── RegisterAppInterface.json │ │ │ │ ├── ReleaseInteriorVehicleDataModule.json │ │ │ │ ├── ResetGlobalProperties.json │ │ │ │ ├── ScrollableMessage.json │ │ │ │ ├── SendHapticData.json │ │ │ │ ├── SendLocation.json │ │ │ │ ├── SetAppIcon.json │ │ │ │ ├── SetDisplayLayout.json │ │ │ │ ├── SetGlobalProperties.json │ │ │ │ ├── SetInteriorVehicleData.json │ │ │ │ ├── SetMediaClockTimer.json │ │ │ │ ├── Show.json │ │ │ │ ├── ShowAppMenu.json │ │ │ │ ├── ShowConstantTBT.json │ │ │ │ ├── Slider.json │ │ │ │ ├── Speak.json │ │ │ │ ├── SubscribeButton.json │ │ │ │ ├── SubscribeVehicleData.json │ │ │ │ ├── SubscribeWayPoints.json │ │ │ │ ├── SubtleAlert.json │ │ │ │ ├── SystemRequest.json │ │ │ │ ├── UnpublishAppService.json │ │ │ │ ├── UnregisterAppInterface.json │ │ │ │ ├── UnsubscribeButton.json │ │ │ │ ├── UnsubscribeVehicleData.json │ │ │ │ ├── UnsubscribeWayPoints.json │ │ │ │ └── UpdateTurnList.json │ │ ├── java │ │ │ └── com │ │ │ │ ├── android │ │ │ │ └── grafika │ │ │ │ │ └── gles │ │ │ │ │ └── OffscreenSurfaceTest.java │ │ │ │ └── smartdevicelink │ │ │ │ ├── AlertViewTest.java │ │ │ │ ├── managers │ │ │ │ ├── ManagerUtilityTests.java │ │ │ │ ├── SdlManagerTests.java │ │ │ │ ├── audio │ │ │ │ │ └── AudioStreamManagerTest.java │ │ │ │ ├── file │ │ │ │ │ ├── FileManagerTests.java │ │ │ │ │ └── filetypes │ │ │ │ │ │ ├── SdlArtworkTests.java │ │ │ │ │ │ └── SdlFileTests.java │ │ │ │ ├── lifecycle │ │ │ │ │ ├── LifecycleConfigurationUpdateTest.java │ │ │ │ │ ├── RpcConverterTest.java │ │ │ │ │ └── SystemCapabilityManagerTests.java │ │ │ │ ├── lockscreen │ │ │ │ │ ├── LockScreenConfigTests.java │ │ │ │ │ ├── LockScreenDeviceIconManagerTests.java │ │ │ │ │ ├── LockScreenManagerTests.java │ │ │ │ │ └── SDLLockScreenActivityEspressoTest.java │ │ │ │ ├── permission │ │ │ │ │ └── PermissionManagerTests.java │ │ │ │ ├── screen │ │ │ │ │ ├── AlertAudioDataTest.java │ │ │ │ │ ├── AlertManagerTest.java │ │ │ │ │ ├── PresentAlertOperationTest.java │ │ │ │ │ ├── ScreenManagerTests.java │ │ │ │ │ ├── SoftButtonManagerTests.java │ │ │ │ │ ├── SubscribeButtonManagerTest.java │ │ │ │ │ ├── TextAndGraphicManagerTests.java │ │ │ │ │ ├── TextAndGraphicUpdateOperationTest.java │ │ │ │ │ ├── choiceset │ │ │ │ │ │ ├── CheckChoiceVROptionalOperationTests.java │ │ │ │ │ │ ├── ChoiceCellTests.java │ │ │ │ │ │ ├── ChoiceSetLayoutTests.java │ │ │ │ │ │ ├── ChoiceSetManagerTests.java │ │ │ │ │ │ ├── ChoiceSetTests.java │ │ │ │ │ │ ├── DeleteChoicesOperationTests.java │ │ │ │ │ │ ├── PreloadPresentChoicesOperationTests.java │ │ │ │ │ │ └── PresentKeyboardOperationTests.java │ │ │ │ │ └── menu │ │ │ │ │ │ ├── DynamicMenuUpdateRunScoreTests.java │ │ │ │ │ │ ├── DynamicMenuUpdatesModeTests.java │ │ │ │ │ │ ├── MenuCellTests.java │ │ │ │ │ │ ├── MenuConfigurationTests.java │ │ │ │ │ │ ├── MenuConfigurationUpdateOperationTests.java │ │ │ │ │ │ ├── MenuManagerTests.java │ │ │ │ │ │ ├── MenuReplaceOperationTests.java │ │ │ │ │ │ ├── MenuReplaceUtilitiesTests.java │ │ │ │ │ │ ├── MenuShowOperationTests.java │ │ │ │ │ │ ├── VoiceCommandManagerTests.java │ │ │ │ │ │ ├── VoiceCommandTests.java │ │ │ │ │ │ └── VoiceCommandUpdateOperationTests.java │ │ │ │ └── video │ │ │ │ │ ├── HapticInterfaceManagerTest.java │ │ │ │ │ ├── VideoStreamManagerTests.java │ │ │ │ │ └── VideoStreamingRangeTests.java │ │ │ │ ├── protocol │ │ │ │ ├── SdlPacketTests.java │ │ │ │ └── SdlProtocolTests.java │ │ │ │ ├── test │ │ │ │ ├── BaseRpcTests.java │ │ │ │ ├── Config.java │ │ │ │ ├── JsonUtils.java │ │ │ │ ├── Logger.java │ │ │ │ ├── NullValues.java │ │ │ │ ├── SampleRpc.java │ │ │ │ ├── SdlConnection │ │ │ │ │ └── SdlSessionTests.java │ │ │ │ ├── SdlUnitTestContants.java │ │ │ │ ├── TestValues.java │ │ │ │ ├── Validator.java │ │ │ │ ├── VehicleDataHelper.java │ │ │ │ ├── encoder │ │ │ │ │ └── EncoderUtilsTest.java │ │ │ │ ├── json │ │ │ │ │ └── rpc │ │ │ │ │ │ └── JsonFileReader.java │ │ │ │ ├── protocol │ │ │ │ │ ├── BinaryFrameHeaderTests.java │ │ │ │ │ ├── SecurityQueryPayloadTests.java │ │ │ │ │ ├── enums │ │ │ │ │ │ ├── FrameDataControlFrameTypeTests.java │ │ │ │ │ │ ├── FrameTypeTests.java │ │ │ │ │ │ ├── MessageTypeTests.java │ │ │ │ │ │ ├── SecurityQueryErrorCodeTests.java │ │ │ │ │ │ ├── SecurityQueryIDTests.java │ │ │ │ │ │ ├── SecurityQueryTypeTests.java │ │ │ │ │ │ └── SessionTypeTests.java │ │ │ │ │ └── heartbeat │ │ │ │ │ │ └── HeartbeatMonitorTests.java │ │ │ │ ├── proxy │ │ │ │ │ ├── RPCMessageTests.java │ │ │ │ │ ├── RPCRequestTest.java │ │ │ │ │ └── RPCStructTests.java │ │ │ │ ├── rpc │ │ │ │ │ ├── RPCGenericTests.java │ │ │ │ │ ├── RPCStructTests.java │ │ │ │ │ ├── datatypes │ │ │ │ │ │ ├── AirbagStatusTests.java │ │ │ │ │ │ ├── AppCapabilityTests.java │ │ │ │ │ │ ├── AppInfoTests.java │ │ │ │ │ │ ├── AppServiceCapabilityTest.java │ │ │ │ │ │ ├── AppServiceDataTests.java │ │ │ │ │ │ ├── AppServiceManifestTests.java │ │ │ │ │ │ ├── AppServiceRecordTests.java │ │ │ │ │ │ ├── AppServicesCapabilitiesTests.java │ │ │ │ │ │ ├── AudioControlCapabilitiesTests.java │ │ │ │ │ │ ├── AudioControlDataTests.java │ │ │ │ │ │ ├── AudioPassThruCapabilitiesTest.java │ │ │ │ │ │ ├── BeltStatusTests.java │ │ │ │ │ │ ├── BodyInformationTests.java │ │ │ │ │ │ ├── ButtonCapabilitiesTests.java │ │ │ │ │ │ ├── ChoiceTests.java │ │ │ │ │ │ ├── ClimateControlCapabilitiesTests.java │ │ │ │ │ │ ├── ClimateControlDataTests.java │ │ │ │ │ │ ├── ClimateDataTests.java │ │ │ │ │ │ ├── CloudAppPropertiesTests.java │ │ │ │ │ │ ├── ClusterModeStatusTests.java │ │ │ │ │ │ ├── CoordinateTests.java │ │ │ │ │ │ ├── DIDResultTests.java │ │ │ │ │ │ ├── DTCTests.java │ │ │ │ │ │ ├── DateTimeTests.java │ │ │ │ │ │ ├── DeviceInfoTests.java │ │ │ │ │ │ ├── DeviceStatusTests.java │ │ │ │ │ │ ├── DisplayCapabilitiesTests.java │ │ │ │ │ │ ├── DisplayCapabilityTests.java │ │ │ │ │ │ ├── DoorStatusTests.java │ │ │ │ │ │ ├── DriverDistractionCapabilityTest.java │ │ │ │ │ │ ├── DynamicUpdateCapabilitiesTests.java │ │ │ │ │ │ ├── ECallInfoTests.java │ │ │ │ │ │ ├── EmergencyEventTests.java │ │ │ │ │ │ ├── EqualizerSettingsTests.java │ │ │ │ │ │ ├── FuelRangeTests.java │ │ │ │ │ │ ├── GPSDataTests.java │ │ │ │ │ │ ├── GateStatusTests.java │ │ │ │ │ │ ├── GearStatusTests.java │ │ │ │ │ │ ├── GridTests.java │ │ │ │ │ │ ├── HMICapabilitiesTests.java │ │ │ │ │ │ ├── HMIPermissionsTests.java │ │ │ │ │ │ ├── HMISettingsControlCapabilitiesTests.java │ │ │ │ │ │ ├── HMISettingsControlDataTests.java │ │ │ │ │ │ ├── HapticRectTests.java │ │ │ │ │ │ ├── HeadLampStatusTests.java │ │ │ │ │ │ ├── HeadersTests.java │ │ │ │ │ │ ├── ImageFieldTests.java │ │ │ │ │ │ ├── ImageResolutionTests.java │ │ │ │ │ │ ├── ImageTests.java │ │ │ │ │ │ ├── KeyboardCapabilitiesTests.java │ │ │ │ │ │ ├── KeyboardPropertiesTests.java │ │ │ │ │ │ ├── LightCapabilitiesTests.java │ │ │ │ │ │ ├── LightControlCapabilitiesTests.java │ │ │ │ │ │ ├── LightControlDataTests.java │ │ │ │ │ │ ├── LightStateTests.java │ │ │ │ │ │ ├── LocationDetailsTests.java │ │ │ │ │ │ ├── MassageCushionFirmnessTest.java │ │ │ │ │ │ ├── MassageModeDataTest.java │ │ │ │ │ │ ├── MediaServiceDataTests.java │ │ │ │ │ │ ├── MediaServiceManifestTests.java │ │ │ │ │ │ ├── MenuParamsTests.java │ │ │ │ │ │ ├── MetadataTagsTests.java │ │ │ │ │ │ ├── ModuleDataTests.java │ │ │ │ │ │ ├── ModuleInfoTests.java │ │ │ │ │ │ ├── MyKeyTests.java │ │ │ │ │ │ ├── NavigationCapabilityTests.java │ │ │ │ │ │ ├── NavigationInstructionTests.java │ │ │ │ │ │ ├── NavigationServiceDataTests.java │ │ │ │ │ │ ├── NavigationServiceManifestTests.java │ │ │ │ │ │ ├── OasisAddressTests.java │ │ │ │ │ │ ├── ParameterPermissionsTests.java │ │ │ │ │ │ ├── PermissionItemTest.java │ │ │ │ │ │ ├── PhoneCapabilityTests.java │ │ │ │ │ │ ├── PresetBankCapabilitiesTest.java │ │ │ │ │ │ ├── RGBColorTest.java │ │ │ │ │ │ ├── RadioControlCapabilitiesTests.java │ │ │ │ │ │ ├── RadioControlDataTests.java │ │ │ │ │ │ ├── RdsDataTests.java │ │ │ │ │ │ ├── RectangleTests.java │ │ │ │ │ │ ├── RemoteControlCapabilitiesTests.java │ │ │ │ │ │ ├── RoofStatusTests.java │ │ │ │ │ │ ├── ScreenParamsTest.java │ │ │ │ │ │ ├── SdlMsgVersionTest.java │ │ │ │ │ │ ├── SeatControlCapabilitiesTest.java │ │ │ │ │ │ ├── SeatControlDataTest.java │ │ │ │ │ │ ├── SeatLocationCapabilityTests.java │ │ │ │ │ │ ├── SeatLocationTests.java │ │ │ │ │ │ ├── SeatMemoryActionTest.java │ │ │ │ │ │ ├── SeatOccupancyTests.java │ │ │ │ │ │ ├── SeatStatusTests.java │ │ │ │ │ │ ├── SeekStreamingIndicatorTests.java │ │ │ │ │ │ ├── SingleTireStatusTest.java │ │ │ │ │ │ ├── SisDataTests.java │ │ │ │ │ │ ├── SoftButtonCapabilitiesTest.java │ │ │ │ │ │ ├── SoftButtonTest.java │ │ │ │ │ │ ├── StabilityControlsStatusTests.java │ │ │ │ │ │ ├── StartTimeTest.java │ │ │ │ │ │ ├── StationIDNumberTests.java │ │ │ │ │ │ ├── SystemCapabilityTests.java │ │ │ │ │ │ ├── TTSChunkTest.java │ │ │ │ │ │ ├── TemperatureTests.java │ │ │ │ │ │ ├── TemplateColorSchemeTest.java │ │ │ │ │ │ ├── TemplateConfigurationTests.java │ │ │ │ │ │ ├── TextFieldTest.java │ │ │ │ │ │ ├── TireStatusTest.java │ │ │ │ │ │ ├── TouchCoordTest.java │ │ │ │ │ │ ├── TouchEventCapabilitiesTest.java │ │ │ │ │ │ ├── TouchEventTest.java │ │ │ │ │ │ ├── TurnTests.java │ │ │ │ │ │ ├── VehicleDataResultTest.java │ │ │ │ │ │ ├── VehicleTypeTest.java │ │ │ │ │ │ ├── VideoStreamingCapabilityTests.java │ │ │ │ │ │ ├── VideoStreamingFormatTests.java │ │ │ │ │ │ ├── VrHelpItemTest.java │ │ │ │ │ │ ├── WeatherAlertTests.java │ │ │ │ │ │ ├── WeatherDataTests.java │ │ │ │ │ │ ├── WeatherServiceDataTests.java │ │ │ │ │ │ ├── WeatherServiceManifestTests.java │ │ │ │ │ │ ├── WindowCapabilityTests.java │ │ │ │ │ │ ├── WindowStateTests.java │ │ │ │ │ │ ├── WindowStatusTests.java │ │ │ │ │ │ └── WindowTypeCapabilitiesTest.java │ │ │ │ │ ├── enums │ │ │ │ │ │ ├── AmbientLightStatusTests.java │ │ │ │ │ │ ├── AppCapabilityTypeTests.java │ │ │ │ │ │ ├── AppHmiTypeTests.java │ │ │ │ │ │ ├── AppInterfaceUnregisteredReasonTests.java │ │ │ │ │ │ ├── AppServiceTypeTests.java │ │ │ │ │ │ ├── AudioStreamingIndicatorTests.java │ │ │ │ │ │ ├── AudioStreamingStateTests.java │ │ │ │ │ │ ├── AudioTypeTests.java │ │ │ │ │ │ ├── BitsPerSampleTests.java │ │ │ │ │ │ ├── ButtonEventModeTests.java │ │ │ │ │ │ ├── ButtonNameTests.java │ │ │ │ │ │ ├── ButtonPressModeTests.java │ │ │ │ │ │ ├── CapacityUnitTests.java │ │ │ │ │ │ ├── CarModeStatusTests.java │ │ │ │ │ │ ├── CharacterSetTests.java │ │ │ │ │ │ ├── CompassDirectionTests.java │ │ │ │ │ │ ├── ComponentVolumeStatusTests.java │ │ │ │ │ │ ├── DefrostZoneTests.java │ │ │ │ │ │ ├── DeviceLevelStatusTests.java │ │ │ │ │ │ ├── DimensionTests.java │ │ │ │ │ │ ├── DirectionTests.java │ │ │ │ │ │ ├── DisplayModeTests.java │ │ │ │ │ │ ├── DisplayTypeTests.java │ │ │ │ │ │ ├── DistanceUnitTests.java │ │ │ │ │ │ ├── DoorStatusTypeTests.java │ │ │ │ │ │ ├── DriverDistractionStateTests.java │ │ │ │ │ │ ├── ECallConfirmationStatusTests.java │ │ │ │ │ │ ├── ElectronicParkBrakeStatusTests.java │ │ │ │ │ │ ├── EmergencyEventTypeTests.java │ │ │ │ │ │ ├── FileTypeTests.java │ │ │ │ │ │ ├── FuelCutoffStatusTests.java │ │ │ │ │ │ ├── FuelTypeTests.java │ │ │ │ │ │ ├── GlobalPropertyTests.java │ │ │ │ │ │ ├── HmiLevelTests.java │ │ │ │ │ │ ├── HmiZoneCapabilitiesTests.java │ │ │ │ │ │ ├── HybridAppPreferenceTests.java │ │ │ │ │ │ ├── IgnitionStableStatusTests.java │ │ │ │ │ │ ├── IgnitionStatusTests.java │ │ │ │ │ │ ├── ImageFieldNameTests.java │ │ │ │ │ │ ├── ImageTypeTests.java │ │ │ │ │ │ ├── InteractionModeTests.java │ │ │ │ │ │ ├── JingleTests.java │ │ │ │ │ │ ├── KeyboardEventTests.java │ │ │ │ │ │ ├── KeyboardInputMaskTests.java │ │ │ │ │ │ ├── KeyboardLayoutTests.java │ │ │ │ │ │ ├── KeypressModeTests.java │ │ │ │ │ │ ├── LanguageTests.java │ │ │ │ │ │ ├── LayoutModeTests.java │ │ │ │ │ │ ├── LightNameTests.java │ │ │ │ │ │ ├── LightStatusTests.java │ │ │ │ │ │ ├── LockScreenStatusTests.java │ │ │ │ │ │ ├── MaintenanceModeStatusTests.java │ │ │ │ │ │ ├── MassageCushionTests.java │ │ │ │ │ │ ├── MassageModeTests.java │ │ │ │ │ │ ├── MassageZoneTests.java │ │ │ │ │ │ ├── MediaClockFormatTests.java │ │ │ │ │ │ ├── MediaTypeTests.java │ │ │ │ │ │ ├── MenuLayoutTests.java │ │ │ │ │ │ ├── MessageTypeTests.java │ │ │ │ │ │ ├── MetadataTypeTests.java │ │ │ │ │ │ ├── ModuleTypeTests.java │ │ │ │ │ │ ├── NavigationActionTests.java │ │ │ │ │ │ ├── NavigationJunctionTests.java │ │ │ │ │ │ ├── PermissionStatusTests.java │ │ │ │ │ │ ├── PowerModeQualificationStatusTests.java │ │ │ │ │ │ ├── PowerModeStatusTests.java │ │ │ │ │ │ ├── PredefinedLayoutTests.java │ │ │ │ │ │ ├── PredefinedWindowsTests.java │ │ │ │ │ │ ├── PrerecordedSpeechTests.java │ │ │ │ │ │ ├── PrimaryAudioSourceTests.java │ │ │ │ │ │ ├── PrndlTests.java │ │ │ │ │ │ ├── RadioBandTests.java │ │ │ │ │ │ ├── RadioStateTests.java │ │ │ │ │ │ ├── RequestTypeTests.java │ │ │ │ │ │ ├── ResultTests.java │ │ │ │ │ │ ├── SamplingRateTests.java │ │ │ │ │ │ ├── SdlDisconnectedReasonTests.java │ │ │ │ │ │ ├── SeatMemoryActionTypeTests.java │ │ │ │ │ │ ├── ServiceUpdateReasonTests.java │ │ │ │ │ │ ├── SoftButtonTypeTests.java │ │ │ │ │ │ ├── SpeechCapabilitiesTests.java │ │ │ │ │ │ ├── StaticIconNameTests.java │ │ │ │ │ │ ├── SupportedSeatTests.java │ │ │ │ │ │ ├── SystemActionTests.java │ │ │ │ │ │ ├── SystemCapabilityTypeTests.java │ │ │ │ │ │ ├── SystemContextTests.java │ │ │ │ │ │ ├── TPMSTests.java │ │ │ │ │ │ ├── TbtStateTests.java │ │ │ │ │ │ ├── TextAlignmentTests.java │ │ │ │ │ │ ├── TextFieldNameTests.java │ │ │ │ │ │ ├── TimerModeTests.java │ │ │ │ │ │ ├── TouchTypeTests.java │ │ │ │ │ │ ├── TransmissionTypeTests.java │ │ │ │ │ │ ├── TriggerSourceTests.java │ │ │ │ │ │ ├── TurnSignalTests.java │ │ │ │ │ │ ├── UpdateModeTests.java │ │ │ │ │ │ ├── VehicleDataActiveStatusTests.java │ │ │ │ │ │ ├── VehicleDataEventStatusTests.java │ │ │ │ │ │ ├── VehicleDataNotificationStatusTests.java │ │ │ │ │ │ ├── VehicleDataResultCodeTests.java │ │ │ │ │ │ ├── VehicleDataStatusTests.java │ │ │ │ │ │ ├── VehicleDataTypeTests.java │ │ │ │ │ │ ├── VentilationModeTests.java │ │ │ │ │ │ ├── VideoStreamingCodecTests.java │ │ │ │ │ │ ├── VideoStreamingProtocolTests.java │ │ │ │ │ │ ├── VideoStreamingStateTests.java │ │ │ │ │ │ ├── VrCapabilitiesTests.java │ │ │ │ │ │ ├── WarningLightStatusTests.java │ │ │ │ │ │ ├── WindowTypeTests.java │ │ │ │ │ │ └── WiperStatusTests.java │ │ │ │ │ ├── notifications │ │ │ │ │ │ ├── OnAppCapabilityUpdatedTests.java │ │ │ │ │ │ ├── OnAppInterfaceUnregisteredTests.java │ │ │ │ │ │ ├── OnAppServiceDataTests.java │ │ │ │ │ │ ├── OnAudioPassThruTests.java │ │ │ │ │ │ ├── OnButtonEventTests.java │ │ │ │ │ │ ├── OnButtonPressTests.java │ │ │ │ │ │ ├── OnCommandTests.java │ │ │ │ │ │ ├── OnDriverDistractionTests.java │ │ │ │ │ │ ├── OnHMIStatusTests.java │ │ │ │ │ │ ├── OnHashChangeTests.java │ │ │ │ │ │ ├── OnInteriorVehicleDataTests.java │ │ │ │ │ │ ├── OnKeyboardInputTests.java │ │ │ │ │ │ ├── OnLanguageChangeTests.java │ │ │ │ │ │ ├── OnPermissionsChangeTests.java │ │ │ │ │ │ ├── OnRCStatusTests.java │ │ │ │ │ │ ├── OnSystemCapabilityUpdatedTests.java │ │ │ │ │ │ ├── OnSystemRequestTests.java │ │ │ │ │ │ ├── OnTBTClientStateTests.java │ │ │ │ │ │ ├── OnTouchEventTests.java │ │ │ │ │ │ ├── OnUpdateFileTest.java │ │ │ │ │ │ ├── OnUpdateSubMenuTest.java │ │ │ │ │ │ ├── OnVehicleDataTests.java │ │ │ │ │ │ └── OnWayPointChangeTests.java │ │ │ │ │ ├── requests │ │ │ │ │ │ ├── AddCommandTests.java │ │ │ │ │ │ ├── AddSubmenuTests.java │ │ │ │ │ │ ├── AlertManeuverTests.java │ │ │ │ │ │ ├── AlertTests.java │ │ │ │ │ │ ├── ButtonPressTests.java │ │ │ │ │ │ ├── CancelInteractionTests.java │ │ │ │ │ │ ├── ChangeRegistrationTests.java │ │ │ │ │ │ ├── CloseApplicationTests.java │ │ │ │ │ │ ├── CreateInteractionChoiceSetTests.java │ │ │ │ │ │ ├── CreateWindowTests.java │ │ │ │ │ │ ├── DeleteCommandTests.java │ │ │ │ │ │ ├── DeleteFileTests.java │ │ │ │ │ │ ├── DeleteInteractionChoiceSetTests.java │ │ │ │ │ │ ├── DeleteSubMenuTests.java │ │ │ │ │ │ ├── DeleteWindowTests.java │ │ │ │ │ │ ├── DiagnosticMessageTests.java │ │ │ │ │ │ ├── DialNumberTests.java │ │ │ │ │ │ ├── EndAudioPassThruTests.java │ │ │ │ │ │ ├── GetAppServiceDataTests.java │ │ │ │ │ │ ├── GetCloudAppPropertiesTests.java │ │ │ │ │ │ ├── GetDTCsTests.java │ │ │ │ │ │ ├── GetFileTests.java │ │ │ │ │ │ ├── GetInteriorVehicleDataConsentTests.java │ │ │ │ │ │ ├── GetInteriorVehicleDataTests.java │ │ │ │ │ │ ├── GetSystemCapabilityTests.java │ │ │ │ │ │ ├── GetVehicleDataTests.java │ │ │ │ │ │ ├── GetWayPointsTests.java │ │ │ │ │ │ ├── ListFilesTests.java │ │ │ │ │ │ ├── PerformAppServiceInteractionTests.java │ │ │ │ │ │ ├── PerformAudioPassThruTests.java │ │ │ │ │ │ ├── PerformInteractionTests.java │ │ │ │ │ │ ├── PublishAppServiceTests.java │ │ │ │ │ │ ├── PutFileTests.java │ │ │ │ │ │ ├── ReadDidTests.java │ │ │ │ │ │ ├── RegisterAppInterfaceTests.java │ │ │ │ │ │ ├── ReleaseInteriorVehicleDataModuleTests.java │ │ │ │ │ │ ├── ResetGlobalPropertiesTests.java │ │ │ │ │ │ ├── ScrollableMessageTests.java │ │ │ │ │ │ ├── SendHapticDataTests.java │ │ │ │ │ │ ├── SendLocationTests.java │ │ │ │ │ │ ├── SetAppIconTests.java │ │ │ │ │ │ ├── SetCloudAppPropertiesTests.java │ │ │ │ │ │ ├── SetDisplayLayoutTests.java │ │ │ │ │ │ ├── SetGlobalPropertiesTests.java │ │ │ │ │ │ ├── SetInteriorVehicleDataTests.java │ │ │ │ │ │ ├── SetMediaClockTimerTests.java │ │ │ │ │ │ ├── ShowAppMenuTests.java │ │ │ │ │ │ ├── ShowConstantTbtTests.java │ │ │ │ │ │ ├── ShowTests.java │ │ │ │ │ │ ├── SliderTests.java │ │ │ │ │ │ ├── SpeakTests.java │ │ │ │ │ │ ├── SubscribeButtonTests.java │ │ │ │ │ │ ├── SubscribeVehicleDataTests.java │ │ │ │ │ │ ├── SubscribeWayPointsTests.java │ │ │ │ │ │ ├── SubtleAlertTests.java │ │ │ │ │ │ ├── SystemRequestTests.java │ │ │ │ │ │ ├── UnpublishAppServiceTests.java │ │ │ │ │ │ ├── UnregisterAppInterfaceTests.java │ │ │ │ │ │ ├── UnsubscribeButtonTests.java │ │ │ │ │ │ ├── UnsubscribeVehicleDataTests.java │ │ │ │ │ │ ├── UnsubscribeWayPointsTests.java │ │ │ │ │ │ └── UpdateTurnListTests.java │ │ │ │ │ └── responses │ │ │ │ │ │ ├── AddCommandResponseTests.java │ │ │ │ │ │ ├── AddSubmenuResponseTests.java │ │ │ │ │ │ ├── AlertManeuverResponseTests.java │ │ │ │ │ │ ├── AlertResponseTests.java │ │ │ │ │ │ ├── ButtonPressResponseTest.java │ │ │ │ │ │ ├── CancelInteractionResponseTests.java │ │ │ │ │ │ ├── ChangeRegistrationResponseTests.java │ │ │ │ │ │ ├── CloseApplicationResponseTests.java │ │ │ │ │ │ ├── CreateInteractionChoiceSetResponseTests.java │ │ │ │ │ │ ├── CreateWindowResponseTest.java │ │ │ │ │ │ ├── DeleteCommandResponseTests.java │ │ │ │ │ │ ├── DeleteFileResponseTests.java │ │ │ │ │ │ ├── DeleteInteractionChoiceSetResponseTests.java │ │ │ │ │ │ ├── DeleteSubMenuResponseTests.java │ │ │ │ │ │ ├── DeleteWindowResponseTest.java │ │ │ │ │ │ ├── DiagnosticMessageResponseTests.java │ │ │ │ │ │ ├── DialNumberResponseTests.java │ │ │ │ │ │ ├── EndAudioPassThruResponseTests.java │ │ │ │ │ │ ├── GenericResponseTests.java │ │ │ │ │ │ ├── GetAppServiceDataResponseTests.java │ │ │ │ │ │ ├── GetCloudAppPropertiesResponseTests.java │ │ │ │ │ │ ├── GetDTCsResponseTests.java │ │ │ │ │ │ ├── GetFileResponseTests.java │ │ │ │ │ │ ├── GetInteriorVehicleDataConsentResponseTests.java │ │ │ │ │ │ ├── GetInteriorVehicleDataResponseTests.java │ │ │ │ │ │ ├── GetSystemCapabilityResponseTests.java │ │ │ │ │ │ ├── GetVehicleDataResponseTests.java │ │ │ │ │ │ ├── GetWayPointsResponseTests.java │ │ │ │ │ │ ├── ListFilesResponseTests.java │ │ │ │ │ │ ├── PerformAppServiceInteractionResponseTests.java │ │ │ │ │ │ ├── PerformAudioPassThruResponseTest.java │ │ │ │ │ │ ├── PerformInteractionResponseTest.java │ │ │ │ │ │ ├── PublishAppServiceResponseTests.java │ │ │ │ │ │ ├── PutFileResponseTest.java │ │ │ │ │ │ ├── ReadDIDResponseTest.java │ │ │ │ │ │ ├── RegisterAppInterfaceResponseTest.java │ │ │ │ │ │ ├── ReleaseInteriorVehicleDataModuleResponseTests.java │ │ │ │ │ │ ├── ResetGlobalPropertiesResponseTest.java │ │ │ │ │ │ ├── ScrollableMessageResponseTest.java │ │ │ │ │ │ ├── SendLocationResponseTests.java │ │ │ │ │ │ ├── SetAppIconResponseTest.java │ │ │ │ │ │ ├── SetCloudAppPropertiesResponseTests.java │ │ │ │ │ │ ├── SetDisplayLayoutResponseTest.java │ │ │ │ │ │ ├── SetGlobalPropertiesResponseTest.java │ │ │ │ │ │ ├── SetInteriorVehicleDataResponseTests.java │ │ │ │ │ │ ├── SetMediaClockTimerResponseTest.java │ │ │ │ │ │ ├── ShowAppMenuResponseTests.java │ │ │ │ │ │ ├── ShowConstantTbtResponseTests.java │ │ │ │ │ │ ├── ShowResponseTest.java │ │ │ │ │ │ ├── SliderResponseTest.java │ │ │ │ │ │ ├── SpeakResponseTest.java │ │ │ │ │ │ ├── SubscribeButtonResponseTest.java │ │ │ │ │ │ ├── SubscribeVehicleDataResponseTest.java │ │ │ │ │ │ ├── SubscribeWaypointsResponseTests.java │ │ │ │ │ │ ├── SubtleAlertResponseTests.java │ │ │ │ │ │ ├── SystemRequestResponseTest.java │ │ │ │ │ │ ├── UnpublishAppServiceResponseTests.java │ │ │ │ │ │ ├── UnregisterAppInterfaceResponseTest.java │ │ │ │ │ │ ├── UnsubscribeButtonResponseTest.java │ │ │ │ │ │ ├── UnsubscribeVehicleDataResponseTest.java │ │ │ │ │ │ ├── UnsubscribeWayPointsResponseTests.java │ │ │ │ │ │ └── UpdateTurnListResponseTests.java │ │ │ │ ├── security │ │ │ │ │ └── SdlSecurityBaseTest.java │ │ │ │ ├── streaming │ │ │ │ │ ├── AbstractPacketizerTests.java │ │ │ │ │ ├── MockInterfaceBroker.java │ │ │ │ │ ├── MockPacketizer.java │ │ │ │ │ ├── MockStreamListener.java │ │ │ │ │ ├── StreamPacketizerTests.java │ │ │ │ │ └── video │ │ │ │ │ │ ├── RTPH264PacketizerTest.java │ │ │ │ │ │ ├── SdlRemoteDisplayTest.java │ │ │ │ │ │ └── VideoStreamingParametersTest.java │ │ │ │ ├── trace │ │ │ │ │ ├── DiagLevelTests.java │ │ │ │ │ ├── MimeTests.java │ │ │ │ │ ├── SdlTraceTests.java │ │ │ │ │ └── enums │ │ │ │ │ │ ├── DetailLevelTests.java │ │ │ │ │ │ ├── InterfaceActivityDirectionTests.java │ │ │ │ │ │ └── ModTests.java │ │ │ │ ├── transport │ │ │ │ │ ├── BaseTransportConfigTests.java │ │ │ │ │ ├── MultiplexBluetoothTransportTest.java │ │ │ │ │ ├── MultiplexTransportConfigTests.java │ │ │ │ │ ├── SdlPsmTests.java │ │ │ │ │ ├── TCPTransportConfigTests.java │ │ │ │ │ ├── TransportTypeTests.java │ │ │ │ │ └── WiFiSocketFactoryTest.java │ │ │ │ ├── util │ │ │ │ │ ├── BitConverterTests.java │ │ │ │ │ ├── ByteEnumerTests.java │ │ │ │ │ ├── CompareUtilsTest.java │ │ │ │ │ ├── DebugToolTests.java │ │ │ │ │ ├── DeviceUtil.java │ │ │ │ │ ├── NativeLogToolTests.java │ │ │ │ │ ├── SdlAppInfoTests.java │ │ │ │ │ ├── SdlDataTypeConverterTests.java │ │ │ │ │ └── VersionTest.java │ │ │ │ └── utl │ │ │ │ │ ├── AndroidToolsTests.java │ │ │ │ │ └── AppServiceFactory.java │ │ │ │ ├── transport │ │ │ │ ├── LocalRouterServiceTests.java │ │ │ │ ├── MultiplexTransportTest.java │ │ │ │ ├── RSVTestCase.java │ │ │ │ ├── RegisteredAppTests.java │ │ │ │ ├── SdlRouterServiceTests.java │ │ │ │ ├── TransportBrokerTest.java │ │ │ │ └── TransportManagerTests.java │ │ │ │ └── util │ │ │ │ └── MediaStreamingStatusTests.java │ │ └── res │ │ │ ├── raw │ │ │ └── test_audio_square_250hz_80amp_1s.mp3 │ │ │ └── xml │ │ │ └── supported_vehicle_type.xml │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── aidl │ │ └── com │ │ │ └── smartdevicelink │ │ │ └── protocol │ │ │ └── SdlPacket.aidl │ │ ├── java │ │ └── com │ │ │ ├── android │ │ │ └── grafika │ │ │ │ └── gles │ │ │ │ ├── Drawable2d.java │ │ │ │ ├── EglCore.java │ │ │ │ ├── EglSurfaceBase.java │ │ │ │ ├── FullFrameRect.java │ │ │ │ ├── GlUtil.java │ │ │ │ ├── OffscreenSurface.java │ │ │ │ ├── Texture2dProgram.java │ │ │ │ └── WindowSurface.java │ │ │ └── smartdevicelink │ │ │ ├── encoder │ │ │ ├── EncoderUtils.java │ │ │ ├── SdlEncoder.java │ │ │ └── VirtualDisplayEncoder.java │ │ │ ├── managers │ │ │ ├── SdlManager.java │ │ │ ├── SdlManagerListener.java │ │ │ ├── audio │ │ │ │ ├── AudioDecoder.java │ │ │ │ ├── AudioDecoderCompat.java │ │ │ │ ├── AudioDecoderCompatOperation.java │ │ │ │ ├── AudioDecoderListener.java │ │ │ │ ├── AudioStreamManager.java │ │ │ │ ├── BaseAudioDecoder.java │ │ │ │ └── SampleBuffer.java │ │ │ ├── file │ │ │ │ ├── FileManager.java │ │ │ │ └── filetypes │ │ │ │ │ ├── SdlArtwork.java │ │ │ │ │ └── SdlFile.java │ │ │ ├── lifecycle │ │ │ │ ├── EncryptionLifecycleManager.java │ │ │ │ ├── LifecycleManager.java │ │ │ │ └── SystemCapabilityManager.java │ │ │ ├── lockscreen │ │ │ │ ├── LockScreenConfig.java │ │ │ │ ├── LockScreenDeviceIconManager.java │ │ │ │ ├── LockScreenManager.java │ │ │ │ └── SDLLockScreenActivity.java │ │ │ ├── permission │ │ │ │ └── PermissionManager.java │ │ │ ├── screen │ │ │ │ ├── AlertManager.java │ │ │ │ ├── ScreenManager.java │ │ │ │ ├── SoftButtonManager.java │ │ │ │ ├── SubscribeButtonManager.java │ │ │ │ ├── TextAndGraphicManager.java │ │ │ │ ├── choiceset │ │ │ │ │ └── ChoiceSetManager.java │ │ │ │ └── menu │ │ │ │ │ ├── MenuManager.java │ │ │ │ │ └── VoiceCommandManager.java │ │ │ └── video │ │ │ │ ├── HapticInterfaceManager.java │ │ │ │ ├── VideoStreamManager.java │ │ │ │ └── resolution │ │ │ │ ├── ImageResolutionKind.java │ │ │ │ ├── Resolution.java │ │ │ │ └── VideoStreamingRange.java │ │ │ ├── protocol │ │ │ ├── SdlPacket.java │ │ │ ├── SdlProtocol.java │ │ │ └── heartbeat │ │ │ │ ├── HeartbeatMonitor.java │ │ │ │ ├── IHeartbeatMonitor.java │ │ │ │ └── IHeartbeatMonitorListener.java │ │ │ ├── security │ │ │ └── SdlSecurityBase.java │ │ │ ├── session │ │ │ └── SdlSession.java │ │ │ ├── streaming │ │ │ ├── StreamPacketizer.java │ │ │ └── video │ │ │ │ └── SdlRemoteDisplay.java │ │ │ ├── trace │ │ │ ├── SdlTrace.java │ │ │ └── TraceDeviceInfo.java │ │ │ ├── transport │ │ │ ├── MultiplexBaseTransport.java │ │ │ ├── MultiplexBluetoothTransport.java │ │ │ ├── MultiplexTcpTransport.java │ │ │ ├── MultiplexTransportConfig.java │ │ │ ├── MultiplexUsbTransport.java │ │ │ ├── RouterServiceMessageEmitter.java │ │ │ ├── RouterServiceValidator.java │ │ │ ├── SdlBroadcastReceiver.java │ │ │ ├── SdlRouterService.java │ │ │ ├── SdlRouterStatusProvider.java │ │ │ ├── TCPTransportConfig.java │ │ │ ├── TCPTransportManager.java │ │ │ ├── TransportBroker.java │ │ │ ├── TransportManager.java │ │ │ ├── USBAccessoryAttachmentActivity.java │ │ │ ├── UsbTransferProvider.java │ │ │ └── utl │ │ │ │ ├── ByteAraryMessageAssembler.java │ │ │ │ ├── ByteArrayMessageSpliter.java │ │ │ │ ├── SdlDeviceListener.java │ │ │ │ ├── TransportRecord.java │ │ │ │ └── WiFiSocketFactory.java │ │ │ └── util │ │ │ ├── AndroidTools.java │ │ │ ├── HttpRequestTask.java │ │ │ ├── IntegrationValidator.java │ │ │ ├── Log.java │ │ │ ├── MediaStreamingStatus.java │ │ │ ├── SdlAppInfo.java │ │ │ └── ServiceFinder.java │ │ └── res │ │ ├── drawable-hdpi │ │ ├── ic_sdl.png │ │ ├── sdl_lockscreen_icon.png │ │ ├── sdl_tray_icon.png │ │ └── spp_error.png │ │ ├── drawable-mdpi │ │ ├── ic_sdl.png │ │ ├── sdl_lockscreen_icon.png │ │ ├── sdl_tray_icon.png │ │ ├── spp_error.png │ │ └── transparent.png │ │ ├── drawable-xhdpi │ │ ├── ic_sdl.png │ │ ├── sdl_lockscreen_icon.png │ │ ├── sdl_tray_icon.png │ │ └── spp_error.png │ │ ├── drawable-xxhdpi │ │ ├── ic_sdl.png │ │ ├── sdl_lockscreen_icon.png │ │ ├── sdl_tray_icon.png │ │ └── spp_error.png │ │ ├── drawable-xxxhdpi │ │ ├── ic_sdl.png │ │ ├── sdl_lockscreen_icon.png │ │ ├── sdl_tray_icon.png │ │ └── spp_error.png │ │ ├── layout │ │ └── activity_sdllock_screen.xml │ │ ├── values-ar │ │ └── strings.xml │ │ ├── values-cs │ │ └── strings.xml │ │ ├── values-da │ │ └── strings.xml │ │ ├── values-de │ │ └── strings.xml │ │ ├── values-el │ │ └── strings.xml │ │ ├── values-es │ │ └── strings.xml │ │ ├── values-fi │ │ └── strings.xml │ │ ├── values-fr │ │ └── strings.xml │ │ ├── values-he │ │ └── strings.xml │ │ ├── values-hi │ │ └── strings.xml │ │ ├── values-hu │ │ └── strings.xml │ │ ├── values-in │ │ └── strings.xml │ │ ├── values-it │ │ └── strings.xml │ │ ├── values-iw │ │ └── strings.xml │ │ ├── values-ja │ │ └── strings.xml │ │ ├── values-ko │ │ └── strings.xml │ │ ├── values-ms │ │ └── strings.xml │ │ ├── values-nb │ │ └── strings.xml │ │ ├── values-nl │ │ └── strings.xml │ │ ├── values-pl │ │ └── strings.xml │ │ ├── values-pt │ │ └── strings.xml │ │ ├── values-ro │ │ └── strings.xml │ │ ├── values-ru │ │ └── strings.xml │ │ ├── values-sk │ │ └── strings.xml │ │ ├── values-sv │ │ └── strings.xml │ │ ├── values-th │ │ └── strings.xml │ │ ├── values-tr │ │ └── strings.xml │ │ ├── values-uk │ │ └── strings.xml │ │ ├── values-vi │ │ └── strings.xml │ │ ├── values-zh-rCN │ │ └── strings.xml │ │ ├── values-zh-rTW │ │ └── strings.xml │ │ ├── values │ │ ├── sdl.xml │ │ └── strings.xml │ │ └── xml │ │ └── accessory_filter.xml └── settings.gradle ├── base ├── README.md └── src │ └── main │ └── java │ └── com │ └── smartdevicelink │ ├── exception │ ├── SdlException.java │ └── SdlExceptionCause.java │ ├── managers │ ├── AlertCompletionListener.java │ ├── BaseSdlManager.java │ ├── BaseSdlManagerListener.java │ ├── BaseSubManager.java │ ├── CompletionListener.java │ ├── ISdl.java │ ├── ManagerUtility.java │ ├── ServiceEncryptionListener.java │ ├── StreamingStateMachine.java │ ├── audio │ │ └── BaseAudioStreamManager.java │ ├── file │ │ ├── BaseFileManager.java │ │ ├── DeleteFileOperation.java │ │ ├── DispatchGroup.java │ │ ├── FileManagerCompletionListener.java │ │ ├── FileManagerConfig.java │ │ ├── ListFilesOperation.java │ │ ├── MultipleFileCompletionListener.java │ │ ├── SdlFileWrapper.java │ │ └── UploadFileOperation.java │ ├── lifecycle │ │ ├── BaseEncryptionLifecycleManager.java │ │ ├── BaseLifecycleManager.java │ │ ├── BaseSystemCapabilityManager.java │ │ ├── LifecycleConfigurationUpdate.java │ │ ├── OnSystemCapabilityListener.java │ │ ├── PoliciesFetcher.java │ │ └── RpcConverter.java │ ├── permission │ │ ├── BasePermissionManager.java │ │ ├── OnPermissionChangeListener.java │ │ ├── PermissionElement.java │ │ ├── PermissionFilter.java │ │ └── PermissionStatus.java │ ├── screen │ │ ├── AlertAudioData.java │ │ ├── AlertCanceledListener.java │ │ ├── AlertView.java │ │ ├── AudioData.java │ │ ├── BaseAlertManager.java │ │ ├── BaseScreenManager.java │ │ ├── BaseSoftButtonManager.java │ │ ├── BaseSubscribeButtonManager.java │ │ ├── BaseTextAndGraphicManager.java │ │ ├── DispatchGroup.java │ │ ├── OnButtonListener.java │ │ ├── PresentAlertOperation.java │ │ ├── SoftButtonObject.java │ │ ├── SoftButtonReplaceOperation.java │ │ ├── SoftButtonState.java │ │ ├── SoftButtonTransitionOperation.java │ │ ├── TextAndGraphicState.java │ │ ├── TextAndGraphicUpdateOperation.java │ │ ├── choiceset │ │ │ ├── BaseChoiceSetManager.java │ │ │ ├── CheckChoiceVROptionalInterface.java │ │ │ ├── CheckChoiceVROptionalOperation.java │ │ │ ├── ChoiceCell.java │ │ │ ├── ChoiceSet.java │ │ │ ├── ChoiceSetCanceledListener.java │ │ │ ├── ChoiceSetLayout.java │ │ │ ├── ChoiceSetSelectionListener.java │ │ │ ├── DeleteChoicesOperation.java │ │ │ ├── KeyboardAutocompleteCompletionListener.java │ │ │ ├── KeyboardCharacterSetCompletionListener.java │ │ │ ├── KeyboardListener.java │ │ │ ├── PreloadPresentChoicesOperation.java │ │ │ └── PresentKeyboardOperation.java │ │ └── menu │ │ │ ├── BaseMenuManager.java │ │ │ ├── BaseVoiceCommandManager.java │ │ │ ├── DynamicMenuUpdateAlgorithm.java │ │ │ ├── DynamicMenuUpdateRunScore.java │ │ │ ├── DynamicMenuUpdatesMode.java │ │ │ ├── MenuCell.java │ │ │ ├── MenuConfiguration.java │ │ │ ├── MenuConfigurationUpdateOperation.java │ │ │ ├── MenuManagerCompletionListener.java │ │ │ ├── MenuReplaceOperation.java │ │ │ ├── MenuReplaceUtilities.java │ │ │ ├── MenuSelectionListener.java │ │ │ ├── MenuShowOperation.java │ │ │ ├── SendingRPCsCompletionListener.java │ │ │ ├── VoiceCommand.java │ │ │ ├── VoiceCommandSelectionListener.java │ │ │ └── VoiceCommandUpdateOperation.java │ └── video │ │ ├── BaseHapticInterfaceManager.java │ │ └── BaseVideoStreamManager.java │ ├── marshal │ └── JsonRPCMarshaller.java │ ├── protocol │ ├── BaseSdlPacket.java │ ├── BinaryFrameHeader.java │ ├── ISdlProtocol.java │ ├── ISdlServiceListener.java │ ├── ISecondaryTransportListener.java │ ├── ProtocolMessage.java │ ├── SdlPacketFactory.java │ ├── SdlProtocolBase.java │ ├── SecurityQueryPayload.java │ └── enums │ │ ├── ControlFrameTags.java │ │ ├── FrameDataControlFrameType.java │ │ ├── FrameType.java │ │ ├── FunctionID.java │ │ ├── MessageType.java │ │ ├── SecurityQueryErrorCode.java │ │ ├── SecurityQueryID.java │ │ ├── SecurityQueryType.java │ │ └── SessionType.java │ ├── proxy │ ├── RPCMessage.java │ ├── RPCNotification.java │ ├── RPCRequest.java │ ├── RPCResponse.java │ ├── RPCStruct.java │ └── rpc │ │ ├── AddCommand.java │ │ ├── AddCommandResponse.java │ │ ├── AddSubMenu.java │ │ ├── AddSubMenuResponse.java │ │ ├── AirbagStatus.java │ │ ├── Alert.java │ │ ├── AlertManeuver.java │ │ ├── AlertManeuverResponse.java │ │ ├── AlertResponse.java │ │ ├── AppCapability.java │ │ ├── AppInfo.java │ │ ├── AppServiceCapability.java │ │ ├── AppServiceData.java │ │ ├── AppServiceManifest.java │ │ ├── AppServiceRecord.java │ │ ├── AppServicesCapabilities.java │ │ ├── AudioControlCapabilities.java │ │ ├── AudioControlData.java │ │ ├── AudioPassThruCapabilities.java │ │ ├── BeltStatus.java │ │ ├── BodyInformation.java │ │ ├── ButtonCapabilities.java │ │ ├── ButtonPress.java │ │ ├── ButtonPressResponse.java │ │ ├── CancelInteraction.java │ │ ├── CancelInteractionResponse.java │ │ ├── ChangeRegistration.java │ │ ├── ChangeRegistrationResponse.java │ │ ├── Choice.java │ │ ├── ClimateControlCapabilities.java │ │ ├── ClimateControlData.java │ │ ├── ClimateData.java │ │ ├── CloseApplication.java │ │ ├── CloseApplicationResponse.java │ │ ├── CloudAppProperties.java │ │ ├── ClusterModeStatus.java │ │ ├── Coordinate.java │ │ ├── CreateInteractionChoiceSet.java │ │ ├── CreateInteractionChoiceSetResponse.java │ │ ├── CreateWindow.java │ │ ├── CreateWindowResponse.java │ │ ├── DIDResult.java │ │ ├── DTC.java │ │ ├── DateTime.java │ │ ├── DeleteCommand.java │ │ ├── DeleteCommandResponse.java │ │ ├── DeleteFile.java │ │ ├── DeleteFileResponse.java │ │ ├── DeleteInteractionChoiceSet.java │ │ ├── DeleteInteractionChoiceSetResponse.java │ │ ├── DeleteSubMenu.java │ │ ├── DeleteSubMenuResponse.java │ │ ├── DeleteWindow.java │ │ ├── DeleteWindowResponse.java │ │ ├── DeviceInfo.java │ │ ├── DeviceStatus.java │ │ ├── DiagnosticMessage.java │ │ ├── DiagnosticMessageResponse.java │ │ ├── DialNumber.java │ │ ├── DialNumberResponse.java │ │ ├── DisplayCapabilities.java │ │ ├── DisplayCapability.java │ │ ├── DoorStatus.java │ │ ├── DriverDistractionCapability.java │ │ ├── DynamicUpdateCapabilities.java │ │ ├── ECallInfo.java │ │ ├── EmergencyEvent.java │ │ ├── EndAudioPassThru.java │ │ ├── EndAudioPassThruResponse.java │ │ ├── EqualizerSettings.java │ │ ├── FuelRange.java │ │ ├── GPSData.java │ │ ├── GateStatus.java │ │ ├── GearStatus.java │ │ ├── GenericResponse.java │ │ ├── GetAppServiceData.java │ │ ├── GetAppServiceDataResponse.java │ │ ├── GetCloudAppProperties.java │ │ ├── GetCloudAppPropertiesResponse.java │ │ ├── GetDTCs.java │ │ ├── GetDTCsResponse.java │ │ ├── GetFile.java │ │ ├── GetFileResponse.java │ │ ├── GetInteriorVehicleData.java │ │ ├── GetInteriorVehicleDataConsent.java │ │ ├── GetInteriorVehicleDataConsentResponse.java │ │ ├── GetInteriorVehicleDataResponse.java │ │ ├── GetSystemCapability.java │ │ ├── GetSystemCapabilityResponse.java │ │ ├── GetVehicleData.java │ │ ├── GetVehicleDataResponse.java │ │ ├── GetWayPoints.java │ │ ├── GetWayPointsResponse.java │ │ ├── Grid.java │ │ ├── HMICapabilities.java │ │ ├── HMIPermissions.java │ │ ├── HMISettingsControlCapabilities.java │ │ ├── HMISettingsControlData.java │ │ ├── HapticRect.java │ │ ├── HeadLampStatus.java │ │ ├── Headers.java │ │ ├── Image.java │ │ ├── ImageField.java │ │ ├── ImageResolution.java │ │ ├── KeyboardCapabilities.java │ │ ├── KeyboardLayoutCapability.java │ │ ├── KeyboardProperties.java │ │ ├── LightCapabilities.java │ │ ├── LightControlCapabilities.java │ │ ├── LightControlData.java │ │ ├── LightState.java │ │ ├── ListFiles.java │ │ ├── ListFilesResponse.java │ │ ├── LocationDetails.java │ │ ├── MassageCushionFirmness.java │ │ ├── MassageModeData.java │ │ ├── MediaServiceData.java │ │ ├── MediaServiceManifest.java │ │ ├── MenuParams.java │ │ ├── MetadataTags.java │ │ ├── ModuleData.java │ │ ├── ModuleInfo.java │ │ ├── MyKey.java │ │ ├── NavigationCapability.java │ │ ├── NavigationInstruction.java │ │ ├── NavigationServiceData.java │ │ ├── NavigationServiceManifest.java │ │ ├── OasisAddress.java │ │ ├── OnAppCapabilityUpdated.java │ │ ├── OnAppInterfaceUnregistered.java │ │ ├── OnAppServiceData.java │ │ ├── OnAudioPassThru.java │ │ ├── OnButtonEvent.java │ │ ├── OnButtonPress.java │ │ ├── OnCommand.java │ │ ├── OnDriverDistraction.java │ │ ├── OnHMIStatus.java │ │ ├── OnHashChange.java │ │ ├── OnInteriorVehicleData.java │ │ ├── OnKeyboardInput.java │ │ ├── OnLanguageChange.java │ │ ├── OnPermissionsChange.java │ │ ├── OnRCStatus.java │ │ ├── OnSubtleAlertPressed.java │ │ ├── OnSystemCapabilityUpdated.java │ │ ├── OnSystemRequest.java │ │ ├── OnTBTClientState.java │ │ ├── OnTouchEvent.java │ │ ├── OnUpdateFile.java │ │ ├── OnUpdateSubMenu.java │ │ ├── OnVehicleData.java │ │ ├── OnWayPointChange.java │ │ ├── ParameterPermissions.java │ │ ├── PerformAppServiceInteraction.java │ │ ├── PerformAppServiceInteractionResponse.java │ │ ├── PerformAudioPassThru.java │ │ ├── PerformAudioPassThruResponse.java │ │ ├── PerformInteraction.java │ │ ├── PerformInteractionResponse.java │ │ ├── PermissionItem.java │ │ ├── PhoneCapability.java │ │ ├── PresetBankCapabilities.java │ │ ├── PublishAppService.java │ │ ├── PublishAppServiceResponse.java │ │ ├── PutFile.java │ │ ├── PutFileResponse.java │ │ ├── RGBColor.java │ │ ├── RadioControlCapabilities.java │ │ ├── RadioControlData.java │ │ ├── RdsData.java │ │ ├── ReadDID.java │ │ ├── ReadDIDResponse.java │ │ ├── Rectangle.java │ │ ├── RegisterAppInterface.java │ │ ├── RegisterAppInterfaceResponse.java │ │ ├── ReleaseInteriorVehicleDataModule.java │ │ ├── ReleaseInteriorVehicleDataModuleResponse.java │ │ ├── RemoteControlCapabilities.java │ │ ├── ResetGlobalProperties.java │ │ ├── ResetGlobalPropertiesResponse.java │ │ ├── RoofStatus.java │ │ ├── ScreenParams.java │ │ ├── ScrollableMessage.java │ │ ├── ScrollableMessageResponse.java │ │ ├── SdlMsgVersion.java │ │ ├── SeatControlCapabilities.java │ │ ├── SeatControlData.java │ │ ├── SeatLocation.java │ │ ├── SeatLocationCapability.java │ │ ├── SeatMemoryAction.java │ │ ├── SeatOccupancy.java │ │ ├── SeatStatus.java │ │ ├── SeekStreamingIndicator.java │ │ ├── SendHapticData.java │ │ ├── SendHapticDataResponse.java │ │ ├── SendLocation.java │ │ ├── SendLocationResponse.java │ │ ├── SetAppIcon.java │ │ ├── SetAppIconResponse.java │ │ ├── SetCloudAppProperties.java │ │ ├── SetCloudAppPropertiesResponse.java │ │ ├── SetDisplayLayout.java │ │ ├── SetDisplayLayoutResponse.java │ │ ├── SetGlobalProperties.java │ │ ├── SetGlobalPropertiesResponse.java │ │ ├── SetInteriorVehicleData.java │ │ ├── SetInteriorVehicleDataResponse.java │ │ ├── SetMediaClockTimer.java │ │ ├── SetMediaClockTimerResponse.java │ │ ├── Show.java │ │ ├── ShowAppMenu.java │ │ ├── ShowAppMenuResponse.java │ │ ├── ShowConstantTbt.java │ │ ├── ShowConstantTbtResponse.java │ │ ├── ShowResponse.java │ │ ├── SingleTireStatus.java │ │ ├── SisData.java │ │ ├── Slider.java │ │ ├── SliderResponse.java │ │ ├── SoftButton.java │ │ ├── SoftButtonCapabilities.java │ │ ├── Speak.java │ │ ├── SpeakResponse.java │ │ ├── StabilityControlsStatus.java │ │ ├── StartTime.java │ │ ├── StationIDNumber.java │ │ ├── SubscribeButton.java │ │ ├── SubscribeButtonResponse.java │ │ ├── SubscribeVehicleData.java │ │ ├── SubscribeVehicleDataResponse.java │ │ ├── SubscribeWayPoints.java │ │ ├── SubscribeWayPointsResponse.java │ │ ├── SubtleAlert.java │ │ ├── SubtleAlertResponse.java │ │ ├── SystemCapability.java │ │ ├── SystemRequest.java │ │ ├── SystemRequestResponse.java │ │ ├── TTSChunk.java │ │ ├── Temperature.java │ │ ├── TemplateColorScheme.java │ │ ├── TemplateConfiguration.java │ │ ├── TextField.java │ │ ├── TireStatus.java │ │ ├── TouchCoord.java │ │ ├── TouchEvent.java │ │ ├── TouchEventCapabilities.java │ │ ├── Turn.java │ │ ├── UnpublishAppService.java │ │ ├── UnpublishAppServiceResponse.java │ │ ├── UnregisterAppInterface.java │ │ ├── UnregisterAppInterfaceResponse.java │ │ ├── UnsubscribeButton.java │ │ ├── UnsubscribeButtonResponse.java │ │ ├── UnsubscribeVehicleData.java │ │ ├── UnsubscribeVehicleDataResponse.java │ │ ├── UnsubscribeWayPoints.java │ │ ├── UnsubscribeWayPointsResponse.java │ │ ├── UpdateTurnList.java │ │ ├── UpdateTurnListResponse.java │ │ ├── VehicleDataResult.java │ │ ├── VehicleType.java │ │ ├── VideoStreamingCapability.java │ │ ├── VideoStreamingFormat.java │ │ ├── VrHelpItem.java │ │ ├── WeatherAlert.java │ │ ├── WeatherData.java │ │ ├── WeatherServiceData.java │ │ ├── WeatherServiceManifest.java │ │ ├── WindowCapability.java │ │ ├── WindowState.java │ │ ├── WindowStatus.java │ │ ├── WindowTypeCapabilities.java │ │ ├── enums │ │ ├── AmbientLightStatus.java │ │ ├── AppCapabilityType.java │ │ ├── AppHMIType.java │ │ ├── AppInterfaceUnregisteredReason.java │ │ ├── AppServiceType.java │ │ ├── AudioStreamingIndicator.java │ │ ├── AudioStreamingState.java │ │ ├── AudioType.java │ │ ├── BitsPerSample.java │ │ ├── ButtonEventMode.java │ │ ├── ButtonName.java │ │ ├── ButtonPressMode.java │ │ ├── CapacityUnit.java │ │ ├── CarModeStatus.java │ │ ├── CharacterSet.java │ │ ├── CompassDirection.java │ │ ├── ComponentVolumeStatus.java │ │ ├── DefrostZone.java │ │ ├── DeliveryMode.java │ │ ├── DeviceLevelStatus.java │ │ ├── Dimension.java │ │ ├── Direction.java │ │ ├── DisplayMode.java │ │ ├── DisplayType.java │ │ ├── DistanceUnit.java │ │ ├── DoorStatusType.java │ │ ├── DriverDistractionState.java │ │ ├── ECallConfirmationStatus.java │ │ ├── ElectronicParkBrakeStatus.java │ │ ├── EmergencyEventType.java │ │ ├── FileType.java │ │ ├── FuelCutoffStatus.java │ │ ├── FuelType.java │ │ ├── GlobalProperty.java │ │ ├── HMILevel.java │ │ ├── HmiZoneCapabilities.java │ │ ├── HybridAppPreference.java │ │ ├── IgnitionStableStatus.java │ │ ├── IgnitionStatus.java │ │ ├── ImageFieldName.java │ │ ├── ImageType.java │ │ ├── InteractionMode.java │ │ ├── Jingle.java │ │ ├── KeyboardEvent.java │ │ ├── KeyboardInputMask.java │ │ ├── KeyboardLayout.java │ │ ├── KeypressMode.java │ │ ├── Language.java │ │ ├── LayoutMode.java │ │ ├── LightName.java │ │ ├── LightStatus.java │ │ ├── LockScreenStatus.java │ │ ├── MaintenanceModeStatus.java │ │ ├── MassageCushion.java │ │ ├── MassageMode.java │ │ ├── MassageZone.java │ │ ├── MediaClockFormat.java │ │ ├── MediaType.java │ │ ├── MenuLayout.java │ │ ├── MessageType.java │ │ ├── MetadataType.java │ │ ├── ModuleType.java │ │ ├── NavigationAction.java │ │ ├── NavigationJunction.java │ │ ├── PRNDL.java │ │ ├── PermissionStatus.java │ │ ├── PowerModeQualificationStatus.java │ │ ├── PowerModeStatus.java │ │ ├── PredefinedLayout.java │ │ ├── PredefinedWindows.java │ │ ├── PrerecordedSpeech.java │ │ ├── PrimaryAudioSource.java │ │ ├── RadioBand.java │ │ ├── RadioState.java │ │ ├── RequestType.java │ │ ├── Result.java │ │ ├── SamplingRate.java │ │ ├── SdlDisconnectedReason.java │ │ ├── SdlInterfaceAvailability.java │ │ ├── SeatMemoryActionType.java │ │ ├── SeekIndicatorType.java │ │ ├── ServiceUpdateReason.java │ │ ├── SoftButtonType.java │ │ ├── SpeechCapabilities.java │ │ ├── StaticIconName.java │ │ ├── SupportedSeat.java │ │ ├── SystemAction.java │ │ ├── SystemCapabilityType.java │ │ ├── SystemContext.java │ │ ├── TBTState.java │ │ ├── TPMS.java │ │ ├── TemperatureUnit.java │ │ ├── TextAlignment.java │ │ ├── TextFieldName.java │ │ ├── TimerMode.java │ │ ├── TouchType.java │ │ ├── TransmissionType.java │ │ ├── TriggerSource.java │ │ ├── TurnSignal.java │ │ ├── UpdateMode.java │ │ ├── VehicleDataActiveStatus.java │ │ ├── VehicleDataEventStatus.java │ │ ├── VehicleDataNotificationStatus.java │ │ ├── VehicleDataResultCode.java │ │ ├── VehicleDataStatus.java │ │ ├── VehicleDataType.java │ │ ├── VentilationMode.java │ │ ├── VideoStreamingCodec.java │ │ ├── VideoStreamingProtocol.java │ │ ├── VideoStreamingState.java │ │ ├── VrCapabilities.java │ │ ├── WarningLightStatus.java │ │ ├── WayPointType.java │ │ ├── WindowType.java │ │ └── WiperStatus.java │ │ └── listeners │ │ ├── OnMultipleRequestListener.java │ │ ├── OnRPCListener.java │ │ ├── OnRPCNotificationListener.java │ │ ├── OnRPCRequestListener.java │ │ └── OnRPCResponseListener.java │ ├── security │ ├── AbstractSdlSecurityBase.java │ └── ISecurityInitializedListener.java │ ├── session │ ├── BaseSdlSession.java │ └── ISdlSessionListener.java │ ├── streaming │ ├── AbstractPacketizer.java │ ├── IStreamListener.java │ ├── audio │ │ ├── AudioStreamingCodec.java │ │ ├── AudioStreamingLPCMParams.java │ │ ├── AudioStreamingParams.java │ │ └── IAudioStreamListener.java │ └── video │ │ ├── IVideoStreamListener.java │ │ ├── RTPH264Packetizer.java │ │ └── VideoStreamingParameters.java │ ├── trace │ ├── DiagLevel.java │ ├── ISTListener.java │ ├── Mime.java │ ├── OpenRPCMessage.java │ ├── SdlTraceBase.java │ └── enums │ │ ├── DetailLevel.java │ │ ├── InterfaceActivityDirection.java │ │ └── Mod.java │ ├── transport │ ├── BaseTransportConfig.java │ ├── SdlPsm.java │ ├── SiphonServer.java │ ├── TransportConstants.java │ ├── TransportManagerBase.java │ ├── enums │ │ └── TransportType.java │ └── utl │ │ └── BaseTransportRecord.java │ └── util │ ├── BitConverter.java │ ├── ByteEnumer.java │ ├── CompareUtils.java │ ├── CorrelationIdGenerator.java │ ├── DebugTool.java │ ├── FileUtls.java │ ├── IConsole.java │ ├── NativeLogTool.java │ ├── SdlDataTypeConverter.java │ ├── SystemInfo.java │ └── Version.java ├── codecov.yml ├── generator ├── README.md ├── __init__.py ├── generator.py ├── paths.ini ├── requirements.txt ├── templates │ ├── base_template.java │ ├── enum_template.java │ ├── function_template.java │ ├── javadoc_return.java │ ├── javadoc_template.java │ ├── javadoc_version_info.java │ ├── struct_function_template.java │ └── struct_template.java ├── test │ ├── __init__.py │ ├── runner.py │ ├── test_code_format_and_quality.py │ ├── test_enums.py │ ├── test_functions.py │ └── test_structs.py └── transformers │ ├── __init__.py │ ├── common_producer.py │ ├── enums_producer.py │ ├── functions_producer.py │ ├── generate_error.py │ └── structs_producer.py ├── javaEE ├── build.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── hello_sdl_java_ee │ ├── assets │ ├── build.gradle │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── smartdevicelink │ │ ├── Main.java │ │ └── SdlService.java ├── javaEE │ ├── README.md │ ├── build.gradle │ ├── gradle.properties │ ├── libs │ │ └── Taskmaster-0.6.jar │ └── src │ │ └── test │ │ └── java │ │ └── com │ │ └── smartdevicelink │ │ ├── managers │ │ └── file │ │ │ └── filetypes │ │ │ └── SdlFileTests.java │ │ └── test │ │ └── TestValues.java └── settings.gradle ├── javaSE ├── build.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── hello_sdl_java │ ├── assets │ │ └── images │ │ │ ├── sdl.png │ │ │ └── sdl_s_green.png │ ├── build.gradle │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── smartdevicelink │ │ └── java │ │ ├── Main.java │ │ └── SdlService.java ├── javaSE │ ├── README.md │ ├── build.gradle │ ├── gradle.properties │ ├── libs │ │ └── Taskmaster-0.6.jar │ └── src │ │ ├── main │ │ └── java │ │ │ ├── com │ │ │ ├── livio │ │ │ │ └── BSON │ │ │ │ │ └── BsonEncoder.java │ │ │ └── smartdevicelink │ │ │ │ ├── BuildConfig.java │ │ │ │ ├── managers │ │ │ │ ├── SdlManager.java │ │ │ │ ├── SdlManagerListener.java │ │ │ │ ├── file │ │ │ │ │ ├── FileManager.java │ │ │ │ │ └── filetypes │ │ │ │ │ │ ├── SdlArtwork.java │ │ │ │ │ │ └── SdlFile.java │ │ │ │ ├── lifecycle │ │ │ │ │ ├── EncryptionLifecycleManager.java │ │ │ │ │ ├── LifecycleManager.java │ │ │ │ │ └── SystemCapabilityManager.java │ │ │ │ ├── permission │ │ │ │ │ └── PermissionManager.java │ │ │ │ └── screen │ │ │ │ │ ├── AlertManager.java │ │ │ │ │ ├── ScreenManager.java │ │ │ │ │ ├── SoftButtonManager.java │ │ │ │ │ ├── SubscribeButtonManager.java │ │ │ │ │ ├── TextAndGraphicManager.java │ │ │ │ │ ├── choiceset │ │ │ │ │ └── ChoiceSetManager.java │ │ │ │ │ └── menu │ │ │ │ │ ├── MenuManager.java │ │ │ │ │ └── VoiceCommandManager.java │ │ │ │ ├── protocol │ │ │ │ ├── SdlPacket.java │ │ │ │ └── SdlProtocol.java │ │ │ │ ├── security │ │ │ │ └── SdlSecurityBase.java │ │ │ │ ├── session │ │ │ │ └── SdlSession.java │ │ │ │ ├── trace │ │ │ │ └── SdlTrace.java │ │ │ │ ├── transport │ │ │ │ ├── CustomTransport.java │ │ │ │ ├── CustomTransportConfig.java │ │ │ │ ├── TransportCallback.java │ │ │ │ ├── TransportInterface.java │ │ │ │ ├── TransportManager.java │ │ │ │ ├── WebSocketServer.java │ │ │ │ ├── WebSocketServerConfig.java │ │ │ │ └── utl │ │ │ │ │ ├── SSLConfig.java │ │ │ │ │ ├── SSLWebSocketFactoryGenerator.java │ │ │ │ │ └── TransportRecord.java │ │ │ │ └── util │ │ │ │ └── Log.java │ │ │ └── org │ │ │ └── json │ │ │ ├── JSON.java │ │ │ ├── JSONArray.java │ │ │ ├── JSONException.java │ │ │ ├── JSONObject.java │ │ │ ├── JSONStringer.java │ │ │ └── JSONTokener.java │ │ └── test │ │ └── java │ │ └── com │ │ └── smartdevicelink │ │ ├── managers │ │ └── file │ │ │ └── filetypes │ │ │ └── SdlFileTests.java │ │ └── test │ │ └── TestValues.java └── settings.gradle └── third_party.md /.github/ISSUE_TEMPLATE/best-practice.yml: -------------------------------------------------------------------------------- 1 | name: Best Practice 2 | description: Report a best practice issue, such as a language feature or README update. 3 | labels: ["needs triage", "best practice"] 4 | body: 5 | - type: markdown 6 | attributes: 7 | value: | 8 | ## Hello 👋 9 | If this issue involves a defect with the library, please file a Bug Report issue instead. This template is for a recommended README / documentation update or a language update, etc. 10 | - type: textarea 11 | id: summary 12 | attributes: 13 | label: Description 14 | description: Summarize the problem. Attach any relevant links, etc. 15 | validations: 16 | required: true 17 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/internal-proposal.yml: -------------------------------------------------------------------------------- 1 | name: Proposal (For Livio Internal Use ONLY) 2 | description: Create a proposal feature issue 3 | title: "[SDL XXXX] TITLE" 4 | labels: proposal 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | ## Hello 👋 10 | If you are not a Livio project manager, this is not the template for you. This is intended to be a template for creating an issue based on an accepted proposal from the [SDL Evolution](https://www.github.com/smartdevicelink/sdl_evolution) process. 11 | - type: textarea 12 | id: proposal-link 13 | attributes: 14 | label: Proposal Link 15 | value: | 16 | Proposal: [Proposal Name](Proposal Link) 17 | render: markdown 18 | validations: 19 | required: true 20 | - type: textarea 21 | id: proposal-description 22 | attributes: 23 | label: Proposal Introduction 24 | value: | 25 | > Paste proposal introduction here 26 | render: markdown 27 | validations: 28 | required: true 29 | - type: input 30 | id: review-link 31 | attributes: 32 | label: Review Link 33 | value: | 34 | Review: Paste Proposal Review Link Here 35 | validations: 36 | required: true -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | [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, and the [SmartDeviceLink GitHub Best Practices](https://d83tozu1c8tt6.cloudfront.net/media/resources/SDL_GitHub_BestPractices.pdf) document for more information on how to enter a pull request. Once this PR is ready for review, please request one from @joeygrover. 2 | 3 | Delete the above section when you've read it.] 4 | 5 | Fixes #[issue number] 6 | 7 | This PR is **[ready / not ready]** for review. 8 | 9 | ### Risk 10 | This PR makes **[no / minor / major]** API changes. 11 | 12 | ### Testing Plan 13 | - [ ] I have verified that I have not introduced new warnings in this PR (or explain why below) 14 | - [ ] I have run the unit tests with this PR 15 | - [ ] I have tested this PR against Core and verified behavior (if applicable, if not applicable, explain why below). 16 | - [ ] I have tested Android, Java SE, and Java EE 17 | 18 | #### Unit Tests 19 | [Describe the unit tests and behaviors added in this PR] 20 | 21 | #### Core Tests 22 | [List of tests performed against Core and behaviors verified] 23 | 24 | Core version / branch / commit hash / module tested against: [INSERT] 25 | HMI name / version / branch / commit hash / module tested against: [INSERT] 26 | 27 | ### Summary 28 | [Summary of PR changes] 29 | 30 | ### Changelog 31 | ##### Breaking Changes 32 | * [Breaking change info] 33 | 34 | ##### Enhancements 35 | * [Enhancement info] 36 | 37 | ##### Bug Fixes 38 | * [Bug Fix Info] 39 | 40 | ### Tasks Remaining: 41 | - [ ] [Task 1] 42 | - [ ] [Task 2] 43 | 44 | ### CLA 45 | - [ ] I have signed [the CLA](https://docs.google.com/forms/d/e/1FAIpQLSdsgJY33VByaX482zHzi-xUm49JNnmuJOyAM6uegPQ2LXYVfA/viewform) 46 | -------------------------------------------------------------------------------- /.github/workflows/android.yml: -------------------------------------------------------------------------------- 1 | name: GitHub CI 2 | 3 | on: [push, pull_request, workflow_dispatch] 4 | 5 | jobs: 6 | test_Android: 7 | runs-on: macOS-latest 8 | steps: 9 | 10 | - name: Checkout 11 | uses: actions/checkout@v2 12 | with: 13 | submodules: true 14 | 15 | - name: Setup JDK 16 | uses: actions/setup-java@v1 17 | with: 18 | java-version: 11 19 | 20 | - name: Sdl Android Tests 21 | # For more info, please check out: https://github.com/marketplace/actions/android-emulator-runner 22 | uses: reactivecircus/android-emulator-runner@v2 23 | with: 24 | api-level: 29 25 | script: ./android/gradlew -p ./android :sdl_android:connectedCheck 26 | 27 | - name: Hello Sdl Android Tests 28 | run: ./android/gradlew -p ./android/hello_sdl_android test 29 | 30 | - name: Codecov 31 | uses: codecov/codecov-action@v1.0.13 32 | with: 33 | yml: ./codecov.yml 34 | 35 | test_Java: 36 | runs-on: macOS-latest 37 | steps: 38 | 39 | - name: Checkout 40 | uses: actions/checkout@v2 41 | with: 42 | submodules: true 43 | 44 | - name: Setup JDK 45 | uses: actions/setup-java@v1 46 | with: 47 | java-version: 1.8 48 | 49 | - name: Sdl JavaSE Tests 50 | run: ./javaSE/gradlew -p ./javaSE/javaSE test 51 | 52 | - name: Hello Sdl JavaSE Tests 53 | run: ./javaSE/gradlew -p ./javaSE/hello_sdl_java test 54 | 55 | - name: Sdl JavaEE Tests 56 | run: ./javaEE/gradlew -p ./javaEE/javaEE test 57 | 58 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ############################## 2 | # Project Specific 3 | ############################## 4 | javaSE/javaSE/out/ 5 | javaSE/javaSE/build/ 6 | javaSE/javaSE/local.properties 7 | javaEE/javaEE/out/ 8 | javaEE/javaEE/build/ 9 | javaEE/javaEE/local.properties 10 | 11 | ############################## 12 | # OS generated files 13 | ############################## 14 | .DS_Store 15 | .DS_Store? 16 | ._* 17 | .Spotlight-V100 18 | .Trashes 19 | ehthumbs.db 20 | Thumbs.db 21 | 22 | ############################## 23 | # built application files 24 | ############################## 25 | *.apk 26 | *.ap_ 27 | 28 | ############################## 29 | # files for the dex VM 30 | ############################## 31 | *.dex 32 | 33 | ############################## 34 | # Java class files 35 | ############################## 36 | *.class 37 | 38 | ############################## 39 | # Generated files 40 | ############################## 41 | bin/ 42 | gen/ 43 | 44 | ############################## 45 | # Local configuration file 46 | ############################## 47 | local.properties 48 | 49 | ############################## 50 | # Eclipse project files 51 | ############################## 52 | .classpath 53 | .project 54 | 55 | ############################## 56 | # Proguard folder (Eclipse) 57 | ############################## 58 | proguard/ 59 | 60 | ############################## 61 | # Intellij project files 62 | ############################## 63 | *.iml 64 | *.ipr 65 | *.iws 66 | .idea/ 67 | build/ 68 | .gradle 69 | /local.properties 70 | /.idea/workspace.xml 71 | /.idea/libraries 72 | /captures 73 | .externalNativeBuild 74 | gradle/ 75 | gradlew 76 | gradlew.bat 77 | 78 | ############################## 79 | # Python 80 | ############################## 81 | *.venv* 82 | *__pycache__ 83 | *htmlcov 84 | *.coverage 85 | *.pytest_cache 86 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "generator/rpc_spec"] 2 | path = generator/rpc_spec 3 | url = https://github.com/smartdevicelink/rpc_spec.git 4 | branch = master 5 | -------------------------------------------------------------------------------- /JavaSuiteFolderStructure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/JavaSuiteFolderStructure.png -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2017 - 2020, SmartDeviceLink Consortium, Inc. 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | * Neither the name of SmartDeviceLink Consortium, Inc. nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | -------------------------------------------------------------------------------- /VERSION: -------------------------------------------------------------------------------- 1 | 5.7.0 -------------------------------------------------------------------------------- /android/README.md: -------------------------------------------------------------------------------- 1 | ## SmartDeviceLink Android 2 | 3 | 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) 4 | 5 | ### Installation 6 | 7 | #### Dependency Managers 8 | 9 | To compile with the latest release of SDL Android, include the following in your app's `build.gradle` file, 10 | 11 | ``` 12 | repositories { 13 | mavenCentral() 14 | } 15 | dependencies { 16 | implementation 'com.smartdevicelink:sdl_android:5.1.0' 17 | } 18 | ``` 19 | 20 | For Maven or Ivy snippets please look at [Bintray](https://bintray.com/smartdevicelink/sdl_android/sdl_android) 21 | 22 | #### Manually 23 | 24 | If you prefer not to use any of the aforementioned dependency managers, you can integrate SDL Android into your project manually. 25 | 26 | ### Proguard Rules 27 | 28 | Developers using Proguard to shrink and obfuscate their code should be sure to include the following lines in their proguard-rules.pro file: 29 | 30 | ``` 31 | -keep class com.smartdevicelink.** { *; } 32 | -keep class com.livio.** { *; } 33 | # Video streaming apps must add the following line 34 | -keep class ** extends com.smartdevicelink.streaming.video.SdlRemoteDisplay { *; } 35 | ``` -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | 5 | repositories { 6 | google() 7 | mavenCentral() 8 | } 9 | dependencies { 10 | classpath 'com.android.tools.build:gradle:7.4.2' 11 | 12 | 13 | // NOTE: Do not place your application dependencies here; they belong 14 | // in the individual module build.gradle files 15 | } 16 | } 17 | 18 | allprojects { 19 | repositories { 20 | google() 21 | mavenCentral() 22 | } 23 | } 24 | 25 | task clean(type: Delete) { 26 | delete rootProject.buildDir 27 | } -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | android.enableJetifier=true 13 | android.useAndroidX=true 14 | org.gradle.jvmargs=-Xmx1536m 15 | 16 | # When configured, Gradle will run in incubating parallel mode. 17 | # This option should only be used with decoupled projects. More details, visit 18 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 19 | # org.gradle.parallel=true 20 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Nov 06 10:04:32 EST 2020 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip 7 | -------------------------------------------------------------------------------- /android/hello_sdl_android/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /Users/livio/Library/Android/sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | 19 | -keep class com.smartdevicelink.** { *; } 20 | -keep class com.livio.** { *; } 21 | 22 | # Uncomment this to preserve the line number information for 23 | # debugging stack traces. 24 | #-keepattributes SourceFile,LineNumberTable 25 | 26 | # If you keep the line number information, uncomment this to 27 | # hide the original source file name. 28 | #-renamesourcefileattribute SourceFile 29 | -------------------------------------------------------------------------------- /android/hello_sdl_android/src/main/java/com/sdl/hellosdlandroid/SdlRouterService.java: -------------------------------------------------------------------------------- 1 | package com.sdl.hellosdlandroid; 2 | 3 | 4 | public class SdlRouterService extends com.smartdevicelink.transport.SdlRouterService { 5 | 6 | 7 | } 8 | -------------------------------------------------------------------------------- /android/hello_sdl_android/src/main/res/drawable/sdl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/hello_sdl_android/src/main/res/drawable/sdl.png -------------------------------------------------------------------------------- /android/hello_sdl_android/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 10 | 11 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /android/hello_sdl_android/src/main/res/menu/main.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/hello_sdl_android/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/hello_sdl_android/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/hello_sdl_android/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/hello_sdl_android/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/hello_sdl_android/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/hello_sdl_android/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/hello_sdl_android/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/hello_sdl_android/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/hello_sdl_android/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/hello_sdl_android/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/hello_sdl_android/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 64dp 9 | 10 | 11 | -------------------------------------------------------------------------------- /android/hello_sdl_android/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16dp 5 | 16dp 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/hello_sdl_android/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Hello SDL! 5 | Settings 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/hello_sdl_android/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 14 | 15 | 16 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /android/hello_sdl_android/src/main/res/xml/accessory_filter.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /android/sdl_android/gradle.properties: -------------------------------------------------------------------------------- 1 | GROUP=com.smartdevicelink 2 | POM_ARTIFACT_ID=sdl_android 3 | 4 | POM_NAME=sdl_android 5 | POM_PACKAGING=aar 6 | 7 | POM_DESCRIPTION=The app library component of SDL is meant to run on the end user’s smart-device from within SDL enabled apps, as an embedded app, or connected to the cloud. App libraries allow the apps to connect to SDL enabled head-units and hardware through bluetooth, USB, and TCP for Android, and cloud and embedded apps can connect through web sockets, Java Beans, and other custom transports. Once the library establishes a connection between the smart device and head-unit through the preferred method of transport, the two components are able to communicate using the SDL defined protocol. The app integrating this library project is then able to expose its functionality to the head-unit through text, media, and other interactive elements. 8 | POM_INCEPTION_YEAR=2014 9 | 10 | POM_URL=https://github.com/smartdevicelink/sdl_java_suite 11 | POM_SCM_URL=https://github.com/smartdevicelink/sdl_java_suite 12 | POM_SCM_CONNECTION=scm:git@github.com:smartdevicelink/sdl_java_suite.git 13 | POM_SCM_DEV_CONNECTION=scm:git@github.com:smartdevicelink/sdl_java_suite.git 14 | 15 | POM_LICENCE_NAME=BSD 3-Clause 16 | POM_LICENCE_URL=https://opensource.org/licenses/BSD-3-Clause 17 | POM_LICENCE_DIST=repo 18 | 19 | RELEASE_REPOSITORY_URL=https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ 20 | SNAPSHOT_REPOSITORY_URL=https://s01.oss.sonatype.org/content/repositories/snapshots/ 21 | 22 | POM_DEVELOPER_ID= 23 | POM_DEVELOPER_NAME= 24 | POM_DEVELOPER_URL= 25 | 26 | signing.keyId= 27 | signing.password= 28 | signing.secretKeyRingFile= 29 | SONATYPE_NEXUS_USERNAME= 30 | SONATYPE_NEXUS_PASSWORD= -------------------------------------------------------------------------------- /android/sdl_android/libs/Taskmaster-0.6.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/sdl_android/libs/Taskmaster-0.6.jar -------------------------------------------------------------------------------- /android/sdl_android/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /Users/Shared/android_sdk/android-sdk-mac_x86/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | 19 | # Uncomment this to preserve the line number information for 20 | # debugging stack traces. 21 | #-keepattributes SourceFile,LineNumberTable 22 | 23 | # If you keep the line number information, uncomment this to 24 | # hide the original source file name. 25 | #-renamesourcefileattribute SourceFile 26 | -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/AddCommand.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "AddCommand", 4 | "correlationID": 105, 5 | "parameters": { 6 | "cmdID": 1098, 7 | "vrCommands": [ 8 | "vr1", 9 | "vr2", 10 | "vr3" 11 | ], 12 | "cmdIcon": { 13 | "value": "cmdImage1.png", 14 | "imageType": "DYNAMIC" 15 | }, 16 | "menuParams": { 17 | "parentID": 194, 18 | "position": 1, 19 | "menuName": "My Command" 20 | }, 21 | "secondaryImage": { 22 | "value": "cmdImage1.png", 23 | "imageType": "DYNAMIC" 24 | } 25 | } 26 | }, 27 | "response": { 28 | "name": "AddCommandResponse", 29 | "correlationID": 106 30 | } 31 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/AddSubMenu.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "AddSubMenu", 4 | "correlationID": 107, 5 | "parameters": { 6 | "menuID": 765, 7 | "position": 2, 8 | "menuName": "Menu Name", 9 | "menuIcon": { 10 | "value": "cmdImage1.png", 11 | "imageType": "DYNAMIC" 12 | }, 13 | "secondaryText": "Secondary Text", 14 | "tertiaryText": "Tertiary Text", 15 | "secondaryImage": { 16 | "value": "cmdImage1.png", 17 | "imageType": "DYNAMIC" 18 | } 19 | } 20 | }, 21 | "response": { 22 | "name": "AddSubMenuResponse", 23 | "correlationID": 108 24 | } 25 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/Alert.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "Alert", 4 | "correlationID": 109, 5 | "parameters": { 6 | "playTone": true, 7 | "duration": 500, 8 | "alertText1": "Line 1", 9 | "alertText2": "Line 2", 10 | "alertText3": "Line 3", 11 | "progressIndicator": true, 12 | "cancelID": 45, 13 | "alertIcon": { 14 | "value": "alertIconImage1.png", 15 | "imageType": "DYNAMIC" 16 | }, 17 | "ttsChunks": [ 18 | { 19 | "text": "Phrase 1", 20 | "type": "TEXT" 21 | }, 22 | { 23 | "text": "Phrase 2", 24 | "type": "TEXT" 25 | } 26 | ], 27 | "softButtons": [ 28 | { 29 | "isHighlighted": true, 30 | "softButtonID": 6, 31 | "systemAction": "STEAL_FOCUS", 32 | "text": "Button 1", 33 | "type": "IMAGE", 34 | "image": { 35 | "value": "image.png", 36 | "imageType": "STATIC" 37 | } 38 | }, 39 | { 40 | "isHighlighted": false, 41 | "softButtonID": 3, 42 | "systemAction": "DEFAULT_ACTION", 43 | "text": "Button 2", 44 | "type": "BOTH", 45 | "image": { 46 | "value": "image.png", 47 | "imageType": "DYNAMIC" 48 | } 49 | } 50 | ] 51 | } 52 | }, 53 | "response": { 54 | "name": "AlertResponse", 55 | "correlationID": 110, 56 | "parameters": { 57 | "tryAgainTime": 400 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/AlertManeuver.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "AlertManeuver", 4 | "correlationID": 194, 5 | "parameters": { 6 | "ttsChunks": [ 7 | { 8 | "text": "Phrase 1", 9 | "type": "TEXT" 10 | }, 11 | { 12 | "text": "Phrase 2", 13 | "type": "TEXT" 14 | } 15 | ], 16 | "softButtons": [ 17 | { 18 | "isHighlighted": true, 19 | "softButtonID": 6, 20 | "systemAction": "STEAL_FOCUS", 21 | "text": "Button 1", 22 | "type": "IMAGE", 23 | "image": { 24 | "value": "image.png", 25 | "imageType": "STATIC" 26 | } 27 | }, 28 | { 29 | "isHighlighted": false, 30 | "softButtonID": 3, 31 | "systemAction": "DEFAULT_ACTION", 32 | "text": "Button 2", 33 | "type": "BOTH", 34 | "image": { 35 | "value": "image.png", 36 | "imageType": "DYNAMIC" 37 | } 38 | } 39 | ] 40 | } 41 | }, 42 | "response": { 43 | "name": "AlertManeuverResponse", 44 | "correlationID": 195 45 | } 46 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/ButtonPress.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "ButtonPress", 4 | "correlationID": 215, 5 | "parameters": { 6 | "buttonName": "OK", 7 | "buttonPressMode": "LONG", 8 | "moduleType": "CLIMATE" 9 | } 10 | }, 11 | "response": { 12 | "name": "ButtonPressResponse", 13 | "correlationID": 216 14 | } 15 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/CancelInteraction.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "CancelInteraction", 4 | "correlationID": 554, 5 | "parameters": { 6 | "cancelID": 6052, 7 | "functionID": 12 8 | } 9 | }, 10 | "response": { 11 | "name": "CancelInteractionResponse", 12 | "correlationID": 554 13 | } 14 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/ChangeRegistration.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "ChangeRegistration", 4 | "correlationID": 111, 5 | "parameters": { 6 | "language": "ES-ES", 7 | "hmiDisplayLanguage": "EN-US" 8 | } 9 | }, 10 | "response": { 11 | "name": "ChangeRegistrationResponse", 12 | "correlationID": 112 13 | } 14 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/CloseApplication.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "CloseApplication", 4 | "correlationID": 131 5 | }, 6 | "response": { 7 | "name": "CloseApplicationResponse", 8 | "correlationID": 131, 9 | "parameters": {} 10 | } 11 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/CreateInteractionChoiceSet.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "CreateInteractionChoiceSet", 4 | "correlationID": 113, 5 | "parameters": { 6 | "interactionChoiceSetID": 56, 7 | "choiceSet": [ 8 | { 9 | "secondaryText": "Secondary Text", 10 | "tertiaryText": "Tertiary Text", 11 | "secondaryImage": { 12 | "value": "lessImportantImage.png", 13 | "imageType": "STATIC" 14 | }, 15 | "menuName": "Menu Name", 16 | "vrCommands": [ 17 | "vr1", 18 | "vr2", 19 | "vr3", 20 | "vr4", 21 | "vr5", 22 | "vr6", 23 | "vr7" 24 | ], 25 | "choiceID": 1, 26 | "image": { 27 | "value": "image.png", 28 | "imageType": "DYNAMIC" 29 | } 30 | }, 31 | { 32 | "secondaryText": "Secondary Text 2", 33 | "tertiaryText": "Tertiary Text 2", 34 | "secondaryImage": { 35 | "value": "evenLessImportantImage.png", 36 | "imageType": "STATIC" 37 | }, 38 | "menuName": "Menu Name 2", 39 | "vrCommands": [ 40 | "vr1", 41 | "vr2", 42 | "vr3", 43 | "vr4", 44 | "vr5", 45 | "vr6", 46 | "vr7" 47 | ], 48 | "choiceID": 2, 49 | "image": { 50 | "value": "image.png", 51 | "imageType": "DYNAMIC" 52 | } 53 | } 54 | ] 55 | } 56 | }, 57 | "response": { 58 | "name": "CreateInteractionChoiceSetResponse", 59 | "correlationID": 114 60 | } 61 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/CreateWindow.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "CreateWindow", 4 | "correlationID": 107, 5 | "parameters": { 6 | "windowID": 765, 7 | "windowName": "Window Name", 8 | "type": "MAIN", 9 | "associatedServiceType": "Service Type", 10 | "duplicateUpdatesFromWindowID": 766 11 | } 12 | }, 13 | "response": { 14 | "name": "CreateWindowResponse", 15 | "correlationID": 108 16 | } 17 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/DeleteCommand.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "DeleteCommand", 4 | "correlationID": 115, 5 | "parameters": { 6 | "cmdID": 34 7 | } 8 | }, 9 | "response": { 10 | "name": "DeleteCommandResponse", 11 | "correlationID": 116 12 | } 13 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/DeleteFile.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "DeleteFile", 4 | "correlationID": 117, 5 | "parameters": { 6 | "syncFileName": "fileName.file" 7 | } 8 | }, 9 | "response": { 10 | "name": "DeleteFileResponse", 11 | "correlationID": 118, 12 | "parameters": { 13 | "spaceAvailable": 2345678 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/DeleteInteractionChoiceSet.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "DeleteInteractionChoiceSet", 4 | "correlationID": 119, 5 | "parameters": { 6 | "interactionChoiceSetID": 56 7 | } 8 | }, 9 | "response": { 10 | "name": "DeleteInteractionChoiceSetResponse", 11 | "correlationID": 120 12 | } 13 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/DeleteSubMenu.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "DeleteSubMenu", 4 | "correlationID": 121, 5 | "parameters": { 6 | "menuID": 765 7 | } 8 | }, 9 | "response": { 10 | "name": "AddCommandResponse", 11 | "correlationID": 122 12 | } 13 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/DeleteWindow.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "DeleteWindow", 4 | "correlationID": 109, 5 | "parameters": { 6 | "windowID": 765 7 | } 8 | }, 9 | "response": { 10 | "name": "DeleteWindowResponse", 11 | "correlationID": 110 12 | } 13 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/DiagnosticMessage.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "DiagnosticMessage", 4 | "correlationID": 123, 5 | "parameters": { 6 | "targetID": 46, 7 | "messageLength": 231, 8 | "messageData": [ 9 | 33245, 10 | 23456, 11 | 234, 12 | 5465, 13 | 64365, 14 | 132435, 15 | 46576 16 | ] 17 | } 18 | }, 19 | "response": { 20 | "name": "DiagnosticMessageResponse", 21 | "correlationID": 124, 22 | "parameters": { 23 | "messageDataResult": [ 24 | 33245, 25 | 23456, 26 | 234, 27 | 5465, 28 | 64365, 29 | 132435, 30 | 46576 31 | ] 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/DialNumber.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "DialNumber", 4 | "correlationID": 194, 5 | "parameters": { 6 | "wayPointType": "DESTINATION" 7 | } 8 | }, 9 | "response": { 10 | "name": "DialNumberResponse", 11 | "correlationID": 195 12 | } 13 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/EndAudioPassThru.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "EndAudioPassThru", 4 | "correlationID": 125 5 | }, 6 | "response": { 7 | "name": "EndAudioPassThruResponse", 8 | "correlationID": 126 9 | } 10 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/GetAppServiceData.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "GetAppServiceData", 4 | "correlationID": 53, 5 | "parameters": { 6 | "subscribe": true, 7 | "serviceType": "MEDIA" 8 | } 9 | }, 10 | "response": { 11 | "name": "GetAppServiceDataResponse", 12 | "correlationID": 53, 13 | "parameters": { 14 | "serviceData": { 15 | "serviceId": "test", 16 | "serviceType": "MEDIA" 17 | } 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/GetDTCs.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "GetDTCs", 4 | "correlationID": 127, 5 | "parameters": { 6 | "dtcMask": 4356, 7 | "ecuName": 4567 8 | } 9 | }, 10 | "response": { 11 | "name": "GetDTCsResponse", 12 | "correlationID": 128, 13 | "parameters": { 14 | "dtc": [ 15 | "item1", 16 | "item2", 17 | "item3" 18 | ] 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/GetFile.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "GetFile", 4 | "correlationID": 1, 5 | "parameters": { 6 | "fileName": "test", 7 | "appServiceId": "test", 8 | "fileType": "GRAPHIC_JPEG", 9 | "offset": 100, 10 | "length": 100 11 | } 12 | }, 13 | "response": { 14 | "name": "GetFileResponse", 15 | "correlationID": 1, 16 | "parameters": { 17 | "fileType": "GRAPHIC_JPEG", 18 | "offset": 100, 19 | "length": 100, 20 | "crc": 1234 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/GetInteriorVehicleData.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "GetInteriorVehicleData", 4 | "correlationID": 101, 5 | "parameters": { 6 | "subscribe": true, 7 | "moduleType": "CLIMATE" 8 | } 9 | }, 10 | "response": { 11 | "name": "GetInteriorVehicleDataResponse", 12 | "correlationID": 102, 13 | "parameters": { 14 | "isSubscribed": true, 15 | "moduleData": { 16 | "moduleType": "CLIMATE", 17 | "climateControlData": { 18 | "circulateAirEnable": true, 19 | "ventilationMode": "UPPER", 20 | "acEnable": true, 21 | "currentTemperature": { 22 | "unit": "CELSIUS", 23 | "value": 100.0 24 | }, 25 | "acMaxEnable": true, 26 | "desiredTemperature": { 27 | "unit": "CELSIUS", 28 | "value": 100.0 29 | }, 30 | "dualModeEnable": true, 31 | "autoModeEnable": true, 32 | "fanSpeed": 100, 33 | "defrostZone": "FRONT" 34 | } 35 | } 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/GetInteriorVehicleDataConsent.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "GetInteriorVehicleDataConsent", 4 | "correlationID": 168, 5 | "parameters": { 6 | "moduleType": "CLIMATE", 7 | "moduleIds": [ 8 | "A0A", 9 | "R0A" 10 | ] 11 | } 12 | }, 13 | "response": { 14 | "name": "GetInteriorVehicleDataConsent", 15 | "correlationID": 169, 16 | "parameters": { 17 | "allowed": [ 18 | true, 19 | true 20 | ] 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/GetSystemCapability.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "GetSystemCapability", 4 | "correlationID": 203, 5 | "parameters": { 6 | "systemCapabilityType": "NAVIGATION", 7 | "subscribe": true 8 | } 9 | }, 10 | "response": { 11 | "name": "GetSystemCapabilityResponse", 12 | "correlationID": 204, 13 | "parameters": { 14 | "systemCapability": { 15 | "systemCapabilityType": "NAVIGATION" 16 | } 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/GetWayPoints.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "GetWayPoints", 4 | "correlationID": 196, 5 | "parameters": { 6 | "wayPointType": "DESTINATION" 7 | } 8 | }, 9 | "response": { 10 | "name": "GetWayPointsResponse", 11 | "correlationID": 197, 12 | "parameters": { 13 | "wayPoints": [ 14 | {}, 15 | {} 16 | ] 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/ListFiles.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "ListFiles", 4 | "correlationID": 131 5 | }, 6 | "response": { 7 | "name": "ListFilesResponse", 8 | "correlationID": 132, 9 | "parameters": { 10 | "filenames": [ 11 | "file1", 12 | "file2", 13 | "file3" 14 | ], 15 | "spaceAvailable": 1947255 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/PerformAppServiceInteraction.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "PerformAppServiceInteraction", 4 | "correlationID": 55, 5 | "parameters": { 6 | "serviceUri": "test", 7 | "appServiceId": "test", 8 | "originApp": "test", 9 | "requestServiceActive": true 10 | } 11 | }, 12 | "response": { 13 | "name": "PerformAppServiceInteractionResponse", 14 | "correlationID": 55, 15 | "parameters": { 16 | "serviceSpecificResult": "test" 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/PerformAudioPassThru.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "PerformAudioPassThru", 4 | "correlationID": 133, 5 | "parameters": { 6 | "maxDuration": 5, 7 | "audioPassThruDisplayText1": "Text 1", 8 | "audioPassThruDisplayText2": "Text 2", 9 | "muteAudio": true, 10 | "samplingRate": "8KHZ", 11 | "audioType": "PCM", 12 | "initialPrompt": [ 13 | { 14 | "text": "TEXT", 15 | "type": "Hello" 16 | }, 17 | { 18 | "text": "TEXT", 19 | "type": "Goodbye" 20 | } 21 | ], 22 | "bitsPerSample": "8_BIT" 23 | } 24 | }, 25 | "response": { 26 | "name": "PerformAudioPassThruResponse", 27 | "correlationID": 134 28 | } 29 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/PerformInteraction.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "PerformInteraction", 4 | "correlationID": 135, 5 | "parameters": { 6 | "initialText": "Initial Text", 7 | "interactionMode": "VR_ONLY", 8 | "interactionChoiceSetIDList": [ 9 | 442, 10 | 2352, 11 | 4623, 12 | 8954 13 | ], 14 | "interactionLayout": "ICON_ONLY", 15 | "initialPrompt": [ 16 | { 17 | "text": "TEXT", 18 | "type": "Hello" 19 | }, 20 | { 21 | "text": "TEXT", 22 | "type": "Goodbye" 23 | } 24 | ], 25 | "helpPrompt": [ 26 | { 27 | "text": "TEXT", 28 | "type": "Hello2" 29 | }, 30 | { 31 | "text": "TEXT", 32 | "type": "Goodbye2" 33 | } 34 | ], 35 | "timeoutPrompt": [ 36 | { 37 | "text": "TEXT", 38 | "type": "Hello3" 39 | }, 40 | { 41 | "text": "TEXT", 42 | "type": "Goodbye3" 43 | } 44 | ], 45 | "timeout": 0, 46 | "cancelID": 45, 47 | "vrHelp": [ 48 | { 49 | "position": 7, 50 | "text": "Voice Recognition Text", 51 | "image": { 52 | "value": "image.png", 53 | "imageType": "DYNAMIC" 54 | } 55 | }, 56 | { 57 | "position": 3, 58 | "text": "Voice Recognition Text 2", 59 | "image": { 60 | "value": "image2.png", 61 | "imageType": "STATIC" 62 | } 63 | } 64 | ] 65 | } 66 | }, 67 | "response": { 68 | "name": "PerformInteractionResponse", 69 | "correlationID": 136, 70 | "parameters": { 71 | "manualTextEntry": "Text Entry", 72 | "triggerSource": "MENU", 73 | "choiceID": 45 74 | } 75 | } 76 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/PublishAppService.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "PublishAppService", 4 | "correlationID": 52, 5 | "parameters": { 6 | "appServiceManifest": { 7 | "allowAppConsumers": true, 8 | "serviceIcon": "test", 9 | "rpcSpecVersion": { 10 | "majorVersion": 5, 11 | "minorVersion": 1, 12 | "patchVersion": 0 13 | }, 14 | "serviceName": "Mobile_MEDIA", 15 | "serviceType": "MEDIA", 16 | "handledRPCs": [ 17 | 39, 18 | 41 19 | ] 20 | } 21 | } 22 | }, 23 | "response": { 24 | "name": "PublishAppServiceResponse", 25 | "correlationID": 52, 26 | "parameters": { 27 | "appServiceRecord": { 28 | "serviceID": "test", 29 | "serviceManifest": { 30 | "allowAppConsumers": true, 31 | "rpcSpecVersion": { 32 | "majorVersion": 5, 33 | "minorVersion": 1, 34 | "patchVersion": 0 35 | }, 36 | "serviceName": "Mobile_MEDIA", 37 | "serviceType": "MEDIA", 38 | "serviceIcon": "test", 39 | "handledRPCs": [ 40 | 39, 41 | 41 42 | ] 43 | }, 44 | "servicePublished": true, 45 | "serviceActive": true 46 | } 47 | } 48 | } 49 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/PutFile.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "PutFile", 4 | "correlationID": 137, 5 | "parameters": { 6 | "persistentFile": true, 7 | "systemFile": false, 8 | "fileType": "GRAPHIC_JPEG", 9 | "syncFileName": "filename.txt", 10 | "offset": 2, 11 | "length": 456, 12 | "crc": 2020, 13 | "bulkData": [ 14 | 0, 15 | 1, 16 | 2 17 | ] 18 | } 19 | }, 20 | "response": { 21 | "name": "PutFileResponse", 22 | "correlationID": 138, 23 | "parameters": { 24 | "spaceAvailable": 43567543 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/ReadDID.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "ReadDID", 4 | "correlationID": 139, 5 | "parameters": { 6 | "ecuName": 526, 7 | "didLocation": [ 8 | 5436, 9 | 34574, 10 | 27, 11 | 57, 12 | 74, 13 | 3567, 14 | 67, 15 | 467 16 | ] 17 | } 18 | }, 19 | "response": { 20 | "name": "ReadDIDResponse", 21 | "correlationID": 140, 22 | "parameters": { 23 | "didResult": [ 24 | { 25 | "resultCode": "USER_DISALLOWED", 26 | "data": "dataGoesHere", 27 | "didLocation": 56484 28 | }, 29 | { 30 | "resultCode": "SUCCESS", 31 | "data": "moreDataGoesHere", 32 | "didLocation": 1647 33 | } 34 | ] 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/ReleaseInteriorVehicleDataModule.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "ReleaseInteriorVehicleDataModule", 4 | "correlationID": 172, 5 | "parameters": { 6 | "moduleType": "CLIMATE", 7 | "moduleIds": "A0A" 8 | } 9 | }, 10 | "response": { 11 | "name": "ReleaseInteriorVehicleDataModule", 12 | "correlationID": 173 13 | } 14 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/ResetGlobalProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "ResetGlobalProperties", 4 | "correlationID": 143, 5 | "parameters": { 6 | "properties": [ 7 | "HELPPROMPT", 8 | "VRHELPTITLE", 9 | "VRHELPITEMS" 10 | ] 11 | } 12 | }, 13 | "response": { 14 | "name": "ResetGlobalPropertiesResponse", 15 | "correlationID": 144 16 | } 17 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/ScrollableMessage.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "ScrollableMessage", 4 | "correlationID": 145, 5 | "parameters": { 6 | "scrollableMessageBody": "Sample body text", 7 | "timeout": 1000, 8 | "cancelID": 45, 9 | "softButtons": [ 10 | { 11 | "isHighlighted": true, 12 | "softButtonID": 6, 13 | "systemAction": "STEAL_FOCUS", 14 | "text": "Button 1", 15 | "type": "IMAGE", 16 | "image": { 17 | "value": "image.png", 18 | "imageType": "STATIC" 19 | } 20 | }, 21 | { 22 | "isHighlighted": false, 23 | "softButtonID": 3, 24 | "systemAction": "DEFAULT_ACTION", 25 | "text": "Button 2", 26 | "type": "BOTH", 27 | "image": { 28 | "value": "image.png", 29 | "imageType": "DYNAMIC" 30 | } 31 | } 32 | ] 33 | } 34 | }, 35 | "response": { 36 | "name": "ScrollableMessageResponse", 37 | "correlationID": 146 38 | } 39 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/SendHapticData.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "SendHapticData", 4 | "correlationID": 1234, 5 | "parameters": { 6 | "hapticRectData": [ 7 | { 8 | "id": 123, 9 | "rect": { 10 | "height": 1, 11 | "width": 1, 12 | "x": 1, 13 | "y": 1 14 | } 15 | } 16 | ] 17 | } 18 | }, 19 | "response": { 20 | "name": "SendHapticData", 21 | "correlationID": 1234 22 | } 23 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/SendLocation.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "SendLocation", 4 | "correlationID": 190, 5 | "parameters": { 6 | "latitudeDegrees": 42, 7 | "longitudeDegrees": 42, 8 | "locationName": "location", 9 | "locationDescription": "description", 10 | "phoneNumber": "999-999-9999", 11 | "locationImage": { 12 | "value": "locationImage.png", 13 | "imageType": "DYNAMIC" 14 | }, 15 | "addressLines": [ 16 | "line1", 17 | "line2", 18 | "line3" 19 | ] 20 | } 21 | }, 22 | "response": { 23 | "name": "SendLocationResponse", 24 | "correlationID": 191 25 | } 26 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/SetAppIcon.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "SetAppIcon", 4 | "correlationID": 147, 5 | "parameters": { 6 | "syncFileName": "filename.txt" 7 | } 8 | }, 9 | "response": { 10 | "name": "SetAppIconResponse", 11 | "correlationID": 148 12 | } 13 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/SetGlobalProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "SetGlobalProperties", 4 | "correlationID": 151, 5 | "parameters": { 6 | "vrHelpTitle": "Help Title", 7 | "menuTitle": "Menu Title", 8 | "menuIcon": { 9 | "value": "imageMenu.png", 10 | "imageType": "STATIC" 11 | }, 12 | "keyboardProperties": { 13 | "keypressMode": "SINGLE_KEYPRESS", 14 | "keyboardLayout": "QWERTY", 15 | "limitedCharacterList": [ 16 | "a", 17 | "b" 18 | ], 19 | "autoCompleteText": "something goes here", 20 | "language": "EN-US" 21 | }, 22 | "helpPrompt": [ 23 | { 24 | "text": "Phrase 1", 25 | "type": "TEXT" 26 | }, 27 | { 28 | "text": "Phrase 2", 29 | "type": "TEXT" 30 | } 31 | ], 32 | "timeoutPrompt": [ 33 | { 34 | "text": "Phrase 1", 35 | "type": "TEXT" 36 | }, 37 | { 38 | "text": "Phrase 2", 39 | "type": "TEXT" 40 | } 41 | ], 42 | "vrHelp": [ 43 | { 44 | "position": 2, 45 | "text": "Text 1", 46 | "image": { 47 | "value": "image.png", 48 | "imageType": "STATIC" 49 | } 50 | }, 51 | { 52 | "position": 5, 53 | "text": "Text 2", 54 | "image": { 55 | "value": "image2.png", 56 | "imageType": "DYNAMIC" 57 | } 58 | } 59 | ] 60 | } 61 | }, 62 | "response": { 63 | "name": "SetGlobalPropertiesResponse", 64 | "correlationID": 152 65 | } 66 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/SetInteriorVehicleData.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "SetInteriorVehicleData", 4 | "correlationID": 126, 5 | "parameters": { 6 | "moduleData": { 7 | "moduleType": "CLIMATE", 8 | "climateControlData": { 9 | "circulateAirEnable": true, 10 | "ventilationMode": "BOTH", 11 | "acEnable": true, 12 | "currentTemperature": { 13 | "unit": "CELSIUS", 14 | "value": 100.0 15 | }, 16 | "acMaxEnable": true, 17 | "desiredTemperature": { 18 | "unit": "CELSIUS", 19 | "value": 100.0 20 | }, 21 | "dualModeEnable": true, 22 | "autoModeEnable": true, 23 | "fanSpeed": 100, 24 | "defrostZone": "ALL" 25 | } 26 | } 27 | } 28 | }, 29 | "response": { 30 | "name": "SetInteriorVehicleDataResponse", 31 | "correlationID": 127, 32 | "parameters": { 33 | "moduleData": { 34 | "moduleType": "CLIMATE", 35 | "climateControlData": { 36 | "circulateAirEnable": true, 37 | "ventilationMode": "BOTH", 38 | "acEnable": true, 39 | "currentTemperature": { 40 | "unit": "CELSIUS", 41 | "value": 100.0 42 | }, 43 | "acMaxEnable": true, 44 | "desiredTemperature": { 45 | "unit": "CELSIUS", 46 | "value": 100.0 47 | }, 48 | "dualModeEnable": true, 49 | "autoModeEnable": true, 50 | "fanSpeed": 100, 51 | "defrostZone": "ALL" 52 | } 53 | } 54 | } 55 | } 56 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/SetMediaClockTimer.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "SetMediaClockTimer", 4 | "correlationID": 153, 5 | "parameters": { 6 | "startTime": { 7 | "minutes": 49, 8 | "seconds": 37, 9 | "hours": 12 10 | }, 11 | "endTime": { 12 | "minutes": 55, 13 | "seconds": 19, 14 | "hours": 12 15 | }, 16 | "updateMode": "COUNTDOWN", 17 | "audioStreamingIndicator": "PLAY" 18 | } 19 | }, 20 | "response": { 21 | "name": "SetMediaClockTimerResponse", 22 | "correlationID": 154 23 | } 24 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/ShowAppMenu.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "ShowAppMenu", 4 | "correlationID": 187, 5 | "parameters": { 6 | "menuID": 100 7 | } 8 | }, 9 | "response": { 10 | "name": "ShowAppMenuResponse", 11 | "correlationID": 188 12 | } 13 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/ShowConstantTBT.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "ShowConstantTbt", 4 | "correlationID": 196, 5 | "parameters": { 6 | "navigationText1": "text1", 7 | "navigationText2": "text2", 8 | "eta": "10 minutes", 9 | "totalDistance": "10km", 10 | "distanceToManeuver": 10.00, 11 | "distanceToManeuverScale": 1.00, 12 | "turnIcon": { 13 | "value": "turn.png", 14 | "imageType": "STATIC" 15 | }, 16 | "nextTurnIcon": { 17 | "value": "nextTurn.png", 18 | "imageType": "STATIC" 19 | }, 20 | "maneuverComplete": true, 21 | "softButtons": [ 22 | { 23 | "isHighlighted": true, 24 | "softButtonID": 6, 25 | "systemAction": "STEAL_FOCUS", 26 | "text": "Button 1", 27 | "type": "IMAGE", 28 | "image": { 29 | "value": "image.png", 30 | "imageType": "STATIC" 31 | } 32 | }, 33 | { 34 | "isHighlighted": false, 35 | "softButtonID": 3, 36 | "systemAction": "DEFAULT_ACTION", 37 | "text": "Button 2", 38 | "type": "BOTH", 39 | "image": { 40 | "value": "image.png", 41 | "imageType": "DYNAMIC" 42 | } 43 | } 44 | ], 45 | "timeToDestination": "52 minutes" 46 | } 47 | }, 48 | "response": { 49 | "name": "ShowConstantTbtResponse", 50 | "correlationID": 197 51 | } 52 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/Slider.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "Slider", 4 | "correlationID": 157, 5 | "parameters": { 6 | "numTicks": 6, 7 | "sliderHeader": "Example Header", 8 | "sliderFooter": [ 9 | "Header Line 1", 10 | "Header Line 2", 11 | "Header Line 3", 12 | "Header Line 4" 13 | ], 14 | "position": 11, 15 | "timeout": 30000, 16 | "cancelID": 45 17 | } 18 | }, 19 | "response": { 20 | "name": "SliderResponse", 21 | "correlationID": 158, 22 | "parameters": { 23 | "sliderPosition": 4 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/Speak.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "Speak", 4 | "correlationID": 159, 5 | "parameters": { 6 | "ttsChunks": [ 7 | { 8 | "text": "Phrase 1", 9 | "type": "TEXT" 10 | }, 11 | { 12 | "text": "Phrase 2", 13 | "type": "TEXT" 14 | } 15 | ] 16 | } 17 | }, 18 | "response": { 19 | "name": "SpeakResponse", 20 | "correlationID": 160 21 | } 22 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/SubscribeButton.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "SubscribeButton", 4 | "correlationID": 161, 5 | "parameters": { 6 | "buttonName": "TUNEUP" 7 | } 8 | }, 9 | "response": { 10 | "name": "SubscribeButtonResponse", 11 | "correlationID": 162 12 | } 13 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/SubscribeWayPoints.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "SubscribeWayPoints", 4 | "correlationID": 199 5 | }, 6 | "response": { 7 | "name": "SubscribeWayPointsResponse", 8 | "correlationID": 200 9 | } 10 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/SubtleAlert.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "SubtleAlert", 4 | "correlationID": 444, 5 | "parameters": { 6 | "alertText1": "alertText1", 7 | "alertText2": "alertText2", 8 | "alertIcon": { 9 | "value": "alertIconImage1.png", 10 | "imageType": "DYNAMIC" 11 | }, 12 | "ttsChunks": [ 13 | { 14 | "text": "Phrase 1", 15 | "type": "TEXT" 16 | }, 17 | { 18 | "text": "Phrase 2", 19 | "type": "TEXT" 20 | } 21 | ], 22 | "duration": 3000, 23 | "softButtons": [ 24 | { 25 | "isHighlighted": true, 26 | "softButtonID": 6, 27 | "systemAction": "STEAL_FOCUS", 28 | "text": "Button 1", 29 | "type": "IMAGE", 30 | "image": { 31 | "value": "image.png", 32 | "imageType": "STATIC" 33 | } 34 | }, 35 | { 36 | "isHighlighted": false, 37 | "softButtonID": 3, 38 | "systemAction": "DEFAULT_ACTION", 39 | "text": "Button 2", 40 | "type": "BOTH", 41 | "image": { 42 | "value": "image.png", 43 | "imageType": "DYNAMIC" 44 | } 45 | } 46 | ], 47 | "cancelID": 30 48 | } 49 | }, 50 | "response": { 51 | "name": "SubtleAlertResponse", 52 | "correlationID": 444, 53 | "parameters": { 54 | "tryAgainTime": 400 55 | } 56 | } 57 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/SystemRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "SystemRequest", 4 | "correlationID": 165, 5 | "parameters": { 6 | "fileName": "fileName.txt", 7 | "requestType": "OEM_SPECIFIC", 8 | "requestSubType": "TEST", 9 | "data": [ 10 | "data1", 11 | "data2", 12 | "data3", 13 | "data4" 14 | ] 15 | } 16 | }, 17 | "response": { 18 | "name": "SystemRequestResponse", 19 | "correlationID": 166 20 | } 21 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/UnpublishAppService.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "UnpublishAppService", 4 | "correlationID": 184, 5 | "parameters": { 6 | "serviceID": "test" 7 | } 8 | }, 9 | "response": { 10 | "name": "UnpublishAppServiceResponse", 11 | "correlationID": 185 12 | } 13 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/UnregisterAppInterface.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "UnregisterAppInterface", 4 | "correlationID": 167 5 | }, 6 | "response": { 7 | "name": "UnregisterAppInterfaceResponse", 8 | "correlationID": 168 9 | } 10 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/UnsubscribeButton.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "UnsubscribeButton", 4 | "correlationID": 169, 5 | "parameters": { 6 | "buttonName": "OK" 7 | } 8 | }, 9 | "response": { 10 | "name": "UnsubscribeButtonResponse", 11 | "correlationID": 170 12 | } 13 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/UnsubscribeWayPoints.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "UnsubscribeWayPoints", 4 | "correlationID": 201 5 | }, 6 | "response": { 7 | "name": "UnsubscribeWayPointsResponse", 8 | "correlationID": 202 9 | } 10 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/assets/json/UpdateTurnList.json: -------------------------------------------------------------------------------- 1 | { 2 | "request": { 3 | "name": "UpdateTurnList", 4 | "correlationID": 192, 5 | "parameters": { 6 | "softButtons": [ 7 | { 8 | "isHighlighted": true, 9 | "softButtonID": 6, 10 | "systemAction": "STEAL_FOCUS", 11 | "text": "Button 1", 12 | "type": "IMAGE", 13 | "image": { 14 | "value": "image.png", 15 | "imageType": "STATIC" 16 | } 17 | }, 18 | { 19 | "isHighlighted": false, 20 | "softButtonID": 3, 21 | "systemAction": "DEFAULT_ACTION", 22 | "text": "Button 2", 23 | "type": "BOTH", 24 | "image": { 25 | "value": "image.png", 26 | "imageType": "DYNAMIC" 27 | } 28 | } 29 | ], 30 | "turnList": [ 31 | { 32 | "navigationText": "nav text 1", 33 | "turnIcon": { 34 | "value": "image.png", 35 | "imageType": "DYNAMIC" 36 | } 37 | }, 38 | { 39 | "navigationText": "nav text 2", 40 | "turnIcon": { 41 | "value": "image.png", 42 | "imageType": "STATIC" 43 | } 44 | } 45 | ] 46 | } 47 | }, 48 | "response": { 49 | "name": "UpdateTurnListResponse", 50 | "correlationID": 193 51 | } 52 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lockscreen/LockScreenConfigTests.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.managers.lockscreen; 2 | 3 | import androidx.test.ext.junit.runners.AndroidJUnit4; 4 | 5 | import com.smartdevicelink.test.TestValues; 6 | 7 | import org.junit.Before; 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | import static junit.framework.TestCase.assertEquals; 12 | import static junit.framework.TestCase.assertTrue; 13 | 14 | /** 15 | * This is a unit test class for the SmartDeviceLink library manager class : 16 | * {@link com.smartdevicelink.managers.lockscreen.LockScreenConfig} 17 | *

18 | * We currently do not need to test null values, as each currently is a primitive 19 | */ 20 | @RunWith(AndroidJUnit4.class) 21 | public class LockScreenConfigTests { 22 | 23 | private LockScreenConfig lockScreenConfig; 24 | 25 | @Before 26 | public void setUp() throws Exception { 27 | // set info for all the setters 28 | lockScreenConfig = new LockScreenConfig(); 29 | lockScreenConfig.setCustomView(TestValues.GENERAL_INT); 30 | lockScreenConfig.setAppIcon(TestValues.GENERAL_INT); 31 | lockScreenConfig.setBackgroundColor(TestValues.GENERAL_INT); 32 | lockScreenConfig.showDeviceLogo(true); 33 | lockScreenConfig.setDisplayMode(LockScreenConfig.DISPLAY_MODE_OPTIONAL_OR_REQUIRED); 34 | } 35 | 36 | @Test 37 | public void testLockScreenConfig() { 38 | 39 | // get the info and make sure its correct 40 | assertEquals(TestValues.GENERAL_INT, lockScreenConfig.getCustomView()); 41 | assertEquals(TestValues.GENERAL_INT, lockScreenConfig.getAppIcon()); 42 | assertEquals(TestValues.GENERAL_INT, lockScreenConfig.getBackgroundColor()); 43 | assertTrue(lockScreenConfig.isDeviceLogoEnabled()); 44 | assertEquals(LockScreenConfig.DISPLAY_MODE_OPTIONAL_OR_REQUIRED, lockScreenConfig.getDisplayMode()); 45 | } 46 | 47 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/Config.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test; 2 | 3 | 4 | public class Config { 5 | 6 | private Config() { 7 | } 8 | 9 | public static final int SDL_VERSION_UNDER_TEST = 3; 10 | public static final boolean DEBUG = true; 11 | } 12 | -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/Logger.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test; 2 | 3 | 4 | public class Logger { 5 | 6 | private Logger() { 7 | } 8 | 9 | public static void log(String tag, String msg) { 10 | if (Config.DEBUG) { 11 | System.out.print(tag + ": "); 12 | System.out.println(msg); 13 | } 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/NullValues.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test; 2 | 3 | /** 4 | * This class is to help with ambiguous method signatures. 5 | * 6 | * @author Joey Grover 7 | */ 8 | public class NullValues { 9 | 10 | public static final String STRING = null; 11 | public static final Integer INTEGER = null; 12 | public static final Boolean BOOLEAN = null; 13 | public static final Double DOUBLE = null; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/SdlConnection/SdlSessionTests.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test.SdlConnection; 2 | 3 | import com.smartdevicelink.protocol.ISdlServiceListener; 4 | import com.smartdevicelink.protocol.enums.SessionType; 5 | import com.smartdevicelink.session.SdlSession; 6 | import com.smartdevicelink.test.streaming.MockInterfaceBroker; 7 | import com.smartdevicelink.transport.MultiplexTransportConfig; 8 | 9 | import junit.framework.TestCase; 10 | 11 | import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation; 12 | 13 | /** 14 | * This is a unit test class for the SmartDeviceLink library project class : 15 | * {@link com.smartdevicelink.session.SdlSession} 16 | */ 17 | public class SdlSessionTests extends TestCase { 18 | 19 | public void testServiceListeners() { 20 | SdlSession session = new SdlSession(new MockInterfaceBroker(), new MultiplexTransportConfig(getInstrumentation().getTargetContext(), "19216801")); 21 | ISdlServiceListener test = new ISdlServiceListener() { 22 | @Override 23 | public void onServiceStarted(SdlSession session, SessionType type, boolean isEncrypted) { 24 | 25 | } 26 | 27 | @Override 28 | public void onServiceEnded(SdlSession session, SessionType type) { 29 | 30 | } 31 | 32 | @Override 33 | public void onServiceError(SdlSession session, SessionType type, String reason) { 34 | 35 | } 36 | }; 37 | 38 | session.addServiceListener(SessionType.RPC, test); 39 | assertNotNull(session.getServiceListeners()); 40 | 41 | assertTrue(session.removeServiceListener(SessionType.RPC, test)); 42 | 43 | assertFalse(session.removeServiceListener(SessionType.RPC, test)); 44 | 45 | } 46 | 47 | 48 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/SdlUnitTestContants.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test; 2 | 3 | public class SdlUnitTestContants { 4 | public static final String TEST_APP_ID = "123456"; 5 | 6 | } 7 | -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/RPCRequestTest.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test.proxy; 2 | 3 | 4 | import androidx.test.ext.junit.runners.AndroidJUnit4; 5 | 6 | import com.smartdevicelink.proxy.RPCRequest; 7 | import com.smartdevicelink.proxy.rpc.GetSystemCapability; 8 | import com.smartdevicelink.test.Config; 9 | 10 | import org.junit.Before; 11 | import org.junit.Test; 12 | import org.junit.runner.RunWith; 13 | 14 | import static junit.framework.TestCase.assertEquals; 15 | import static junit.framework.TestCase.assertNotNull; 16 | 17 | @RunWith(AndroidJUnit4.class) 18 | public class RPCRequestTest { 19 | 20 | public static final int SDL_VERSION_UNDER_TEST = Config.SDL_VERSION_UNDER_TEST; 21 | 22 | private static final int CORR_ID = 402; 23 | 24 | protected RPCRequest msg; 25 | 26 | @Before 27 | public void setUp() { 28 | this.msg = new GetSystemCapability(); 29 | 30 | } 31 | 32 | @Test 33 | public void testCreation() { 34 | assertNotNull("Object creation failed.", msg); 35 | } 36 | 37 | @Test 38 | public void testGetCorrelationId() { 39 | assertNotNull(this.msg.getCorrelationID()); 40 | } 41 | 42 | @Test 43 | public void testSettingCorrelationId() { 44 | assertNotNull(this.msg.getCorrelationID()); 45 | msg.setCorrelationID(CORR_ID); 46 | assertEquals("Correlation ID doesn't match expected ID.", CORR_ID, (int) msg.getCorrelationID()); 47 | 48 | } 49 | 50 | 51 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/RPCStructTests.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test.rpc; 2 | 3 | import androidx.test.ext.junit.runners.AndroidJUnit4; 4 | 5 | import com.smartdevicelink.proxy.RPCStruct; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import java.util.ArrayList; 11 | import java.util.List; 12 | 13 | import static junit.framework.TestCase.assertNotNull; 14 | 15 | @RunWith(AndroidJUnit4.class) 16 | public class RPCStructTests { 17 | 18 | @Test 19 | public void testFormatObject() { 20 | final String KEY = "LIST"; 21 | RPCStruct struct = new RPCStruct(); 22 | List structs = new ArrayList<>(); 23 | struct.setValue(KEY, structs); 24 | assertNotNull(struct.getObject(RPCStruct.class, KEY)); 25 | 26 | structs.add(new RPCStruct()); 27 | struct.setValue(KEY, structs); 28 | assertNotNull(struct.getObject(RPCStruct.class, KEY)); 29 | 30 | structs.clear(); 31 | structs.add(null); 32 | struct.setValue(KEY, structs); 33 | assertNotNull(struct.getObject(RPCStruct.class, KEY)); 34 | 35 | structs.clear(); 36 | structs.add(null); 37 | structs.add(new RPCStruct()); 38 | struct.setValue(KEY, structs); 39 | assertNotNull(struct.getObject(RPCStruct.class, KEY)); 40 | 41 | structs.clear(); 42 | structs.add(new RPCStruct()); 43 | structs.add(null); 44 | structs.add(new RPCStruct()); 45 | struct.setValue(KEY, structs); 46 | assertNotNull(struct.getObject(RPCStruct.class, KEY)); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/MediaServiceManifestTests.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test.rpc.datatypes; 2 | 3 | import com.smartdevicelink.proxy.rpc.MediaServiceManifest; 4 | import com.smartdevicelink.test.TestValues; 5 | 6 | import junit.framework.TestCase; 7 | 8 | /** 9 | * This is a unit test class for the SmartDeviceLink library project class : 10 | * {@link com.smartdevicelink.proxy.rpc.MediaServiceManifest} 11 | */ 12 | public class MediaServiceManifestTests extends TestCase { 13 | 14 | @Override 15 | public void setUp() { 16 | // nothing to setup yet, this class doesn't contain anything 17 | } 18 | 19 | /** 20 | * Tests the expected values of the RPC message. 21 | */ 22 | public void testRpcValues() { 23 | // Test Values 24 | 25 | // Invalid/Null Tests 26 | MediaServiceManifest msg = new MediaServiceManifest(); 27 | assertNotNull(TestValues.NOT_NULL, msg); 28 | } 29 | 30 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SeatLocationTests.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test.rpc.datatypes; 2 | 3 | import com.smartdevicelink.marshal.JsonRPCMarshaller; 4 | import com.smartdevicelink.proxy.rpc.Grid; 5 | import com.smartdevicelink.proxy.rpc.SeatLocation; 6 | import com.smartdevicelink.test.TestValues; 7 | import com.smartdevicelink.test.Validator; 8 | 9 | import junit.framework.TestCase; 10 | 11 | import org.json.JSONException; 12 | import org.json.JSONObject; 13 | 14 | public class SeatLocationTests extends TestCase { 15 | 16 | private SeatLocation msg; 17 | 18 | @Override 19 | public void setUp() { 20 | msg = new SeatLocation(); 21 | msg.setGrid(TestValues.GENERAL_GRID); 22 | } 23 | 24 | public void testRpcValues() { 25 | Grid grid = msg.getGrid(); 26 | 27 | //valid test 28 | assertTrue(Validator.validateGrid(TestValues.GENERAL_GRID, grid)); 29 | 30 | //null test 31 | SeatLocation msg = new SeatLocation(); 32 | assertNull(TestValues.NULL, msg.getGrid()); 33 | } 34 | 35 | public void testJson() { 36 | JSONObject original = new JSONObject(); 37 | try { 38 | original.put(SeatLocation.KEY_GRID, TestValues.GENERAL_GRID); 39 | 40 | JSONObject serialized = msg.serializeJSON(); 41 | assertEquals(serialized.length(), original.length()); 42 | assertTrue(TestValues.TRUE, Validator.validateSeatLocation(new SeatLocation(JsonRPCMarshaller.deserializeJSONObject(original)), 43 | new SeatLocation(JsonRPCMarshaller.deserializeJSONObject(serialized)))); 44 | } catch (JSONException e) { 45 | fail(TestValues.JSON_FAIL); 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/TurnTests.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test.rpc.datatypes; 2 | 3 | import com.smartdevicelink.proxy.rpc.Image; 4 | import com.smartdevicelink.proxy.rpc.Turn; 5 | import com.smartdevicelink.test.TestValues; 6 | import com.smartdevicelink.test.Validator; 7 | 8 | import junit.framework.TestCase; 9 | 10 | import org.json.JSONException; 11 | import org.json.JSONObject; 12 | 13 | public class TurnTests extends TestCase { 14 | 15 | private Turn msg; 16 | 17 | @Override 18 | public void setUp() { 19 | msg = new Turn(); 20 | assertNotNull(TestValues.NOT_NULL, msg); 21 | 22 | msg.setTurnIcon(TestValues.GENERAL_IMAGE); 23 | msg.setNavigationText(TestValues.GENERAL_STRING); 24 | } 25 | 26 | /** 27 | * Tests the expected values of the RPC message. 28 | */ 29 | public void testRpcValues() { 30 | // Test Values 31 | Image icon = msg.getTurnIcon(); 32 | String text = msg.getNavigationText(); 33 | 34 | // Valid Tests 35 | assertTrue(TestValues.MATCH, Validator.validateImage(TestValues.GENERAL_IMAGE, icon)); 36 | assertEquals(TestValues.MATCH, TestValues.GENERAL_STRING, text); 37 | 38 | // Invalid/Null Tests 39 | Turn msg = new Turn(); 40 | assertNotNull(TestValues.NOT_NULL, msg); 41 | 42 | assertNull(TestValues.NULL, msg.getNavigationText()); 43 | assertNull(TestValues.NULL, msg.getTurnIcon()); 44 | } 45 | 46 | public void testJson() { 47 | JSONObject reference = new JSONObject(); 48 | 49 | try { 50 | reference.put(Turn.KEY_NAVIGATION_TEXT, TestValues.GENERAL_STRING); 51 | reference.put(Turn.KEY_TURN_IMAGE, TestValues.JSON_IMAGE); 52 | } catch (JSONException e) { 53 | fail(TestValues.JSON_FAIL); 54 | } 55 | } 56 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/WindowStateTests.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test.rpc.datatypes; 2 | 3 | import com.smartdevicelink.marshal.JsonRPCMarshaller; 4 | import com.smartdevicelink.proxy.rpc.WindowState; 5 | import com.smartdevicelink.test.TestValues; 6 | import com.smartdevicelink.test.Validator; 7 | 8 | import junit.framework.TestCase; 9 | 10 | import org.json.JSONException; 11 | import org.json.JSONObject; 12 | 13 | public class WindowStateTests extends TestCase { 14 | private WindowState msg; 15 | 16 | @Override 17 | protected void setUp() throws Exception { 18 | msg = new WindowState(); 19 | msg.setApproximatePosition(TestValues.GENERAL_APPROX_POSITION); 20 | msg.setDeviation(TestValues.GENERAL_DEVIATION); 21 | } 22 | 23 | public void testRpcValues() { 24 | Integer approxPosition = msg.getApproximatePosition(); 25 | Integer deviation = msg.getDeviation(); 26 | 27 | // Valid Tests 28 | assertEquals(TestValues.MATCH, TestValues.GENERAL_APPROX_POSITION, approxPosition); 29 | assertEquals(TestValues.MATCH, TestValues.GENERAL_DEVIATION, deviation); 30 | } 31 | 32 | public void testJson() { 33 | JSONObject reference = new JSONObject(); 34 | 35 | try { 36 | reference.put(WindowState.KEY_APPROXIMATE_POSITION, TestValues.GENERAL_APPROX_POSITION); 37 | reference.put(WindowState.KEY_DEVIATION, TestValues.GENERAL_DEVIATION); 38 | 39 | JSONObject underTest = msg.serializeJSON(); 40 | assertEquals(TestValues.MATCH, reference.length(), underTest.length()); 41 | 42 | assertTrue(Validator.validateWindowStates( 43 | new WindowState(JsonRPCMarshaller.deserializeJSONObject(reference)), 44 | new WindowState(JsonRPCMarshaller.deserializeJSONObject(underTest))) 45 | ); 46 | 47 | } catch (JSONException e) { 48 | fail(TestValues.JSON_FAIL); 49 | } 50 | } 51 | } 52 | 53 | -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/notifications/OnAudioPassThruTests.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test.rpc.notifications; 2 | 3 | import com.smartdevicelink.protocol.enums.FunctionID; 4 | import com.smartdevicelink.proxy.RPCMessage; 5 | import com.smartdevicelink.proxy.rpc.OnAudioPassThru; 6 | import com.smartdevicelink.test.BaseRpcTests; 7 | import com.smartdevicelink.test.TestValues; 8 | 9 | import org.json.JSONObject; 10 | import org.junit.Test; 11 | 12 | import static junit.framework.TestCase.assertNotNull; 13 | 14 | /** 15 | * This is a unit test class for the SmartDeviceLink library project class : 16 | * {@link com.smartdevicelink.proxy.rpc.OnAudioPassThru} 17 | */ 18 | public class OnAudioPassThruTests extends BaseRpcTests { 19 | 20 | @Override 21 | protected RPCMessage createMessage() { 22 | return new OnAudioPassThru(); 23 | } 24 | 25 | @Override 26 | protected String getMessageType() { 27 | return RPCMessage.KEY_NOTIFICATION; 28 | } 29 | 30 | @Override 31 | protected String getCommandType() { 32 | return FunctionID.ON_AUDIO_PASS_THRU.toString(); 33 | } 34 | 35 | @Override 36 | protected JSONObject getExpectedParameters(int sdlVersion) { 37 | return new JSONObject(); 38 | } 39 | 40 | /** 41 | * Tests the expected values of the RPC message. 42 | */ 43 | @Test 44 | public void testRpcValues() { 45 | // Invalid/Null Tests 46 | OnAudioPassThru msg = new OnAudioPassThru(); 47 | assertNotNull(TestValues.NOT_NULL, msg); 48 | testNullBase(msg); 49 | } 50 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/GetCloudAppPropertiesTests.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test.rpc.requests; 2 | 3 | import com.smartdevicelink.protocol.enums.FunctionID; 4 | import com.smartdevicelink.proxy.RPCMessage; 5 | import com.smartdevicelink.proxy.rpc.GetCloudAppProperties; 6 | import com.smartdevicelink.test.BaseRpcTests; 7 | import com.smartdevicelink.test.TestValues; 8 | 9 | import org.json.JSONException; 10 | import org.json.JSONObject; 11 | 12 | import static junit.framework.TestCase.fail; 13 | 14 | public class GetCloudAppPropertiesTests extends BaseRpcTests { 15 | 16 | @Override 17 | protected RPCMessage createMessage() { 18 | GetCloudAppProperties msg = new GetCloudAppProperties(); 19 | 20 | msg.setAppID(TestValues.GENERAL_STRING); 21 | 22 | return msg; 23 | } 24 | 25 | @Override 26 | protected String getMessageType() { 27 | return RPCMessage.KEY_REQUEST; 28 | } 29 | 30 | @Override 31 | protected String getCommandType() { 32 | return FunctionID.GET_CLOUD_APP_PROPERTIES.toString(); 33 | } 34 | 35 | @Override 36 | protected JSONObject getExpectedParameters(int sdlVersion) { 37 | JSONObject result = new JSONObject(); 38 | 39 | try { 40 | result.put(GetCloudAppProperties.KEY_APP_ID, TestValues.GENERAL_STRING); 41 | } catch (JSONException e) { 42 | fail(TestValues.JSON_FAIL); 43 | } 44 | 45 | return result; 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/SetCloudAppPropertiesTests.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test.rpc.requests; 2 | 3 | import com.smartdevicelink.protocol.enums.FunctionID; 4 | import com.smartdevicelink.proxy.RPCMessage; 5 | import com.smartdevicelink.proxy.rpc.SetCloudAppProperties; 6 | import com.smartdevicelink.test.BaseRpcTests; 7 | import com.smartdevicelink.test.TestValues; 8 | 9 | import org.json.JSONException; 10 | import org.json.JSONObject; 11 | 12 | import static junit.framework.TestCase.fail; 13 | 14 | public class SetCloudAppPropertiesTests extends BaseRpcTests { 15 | 16 | @Override 17 | protected RPCMessage createMessage() { 18 | SetCloudAppProperties msg = new SetCloudAppProperties(); 19 | 20 | msg.setProperties(TestValues.GENERAL_CLOUDAPPPROPERTIES); 21 | 22 | return msg; 23 | } 24 | 25 | @Override 26 | protected String getMessageType() { 27 | return RPCMessage.KEY_REQUEST; 28 | } 29 | 30 | @Override 31 | protected String getCommandType() { 32 | return FunctionID.SET_CLOUD_APP_PROPERTIES.toString(); 33 | } 34 | 35 | @Override 36 | protected JSONObject getExpectedParameters(int sdlVersion) { 37 | JSONObject result = new JSONObject(); 38 | 39 | try { 40 | result.put(SetCloudAppProperties.KEY_PROPERTIES, TestValues.GENERAL_CLOUDAPPPROPERTIES.serializeJSON()); 41 | } catch (JSONException e) { 42 | fail(TestValues.JSON_FAIL); 43 | } 44 | 45 | return result; 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/CreateInteractionChoiceSetResponseTests.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test.rpc.responses; 2 | 3 | import com.smartdevicelink.protocol.enums.FunctionID; 4 | import com.smartdevicelink.proxy.RPCMessage; 5 | import com.smartdevicelink.proxy.rpc.CreateInteractionChoiceSetResponse; 6 | import com.smartdevicelink.test.BaseRpcTests; 7 | import com.smartdevicelink.test.TestValues; 8 | 9 | import org.json.JSONObject; 10 | import org.junit.Test; 11 | 12 | import static junit.framework.TestCase.assertNotNull; 13 | 14 | /** 15 | * This is a unit test class for the SmartDeviceLink library project class : 16 | * {@link com.smartdevicelink.proxy.rpc.CreateInteractionChoiceSetResponse} 17 | */ 18 | public class CreateInteractionChoiceSetResponseTests extends BaseRpcTests { 19 | 20 | @Override 21 | protected RPCMessage createMessage() { 22 | return new CreateInteractionChoiceSetResponse(); 23 | } 24 | 25 | @Override 26 | protected String getMessageType() { 27 | return RPCMessage.KEY_RESPONSE; 28 | } 29 | 30 | @Override 31 | protected String getCommandType() { 32 | return FunctionID.CREATE_INTERACTION_CHOICE_SET.toString(); 33 | } 34 | 35 | @Override 36 | protected JSONObject getExpectedParameters(int sdlVersion) { 37 | return new JSONObject(); 38 | } 39 | 40 | /** 41 | * Tests the expected values of the RPC message. 42 | */ 43 | @Test 44 | public void testRpcValues() { 45 | // Invalid/Null Tests 46 | CreateInteractionChoiceSetResponse msg = new CreateInteractionChoiceSetResponse(); 47 | assertNotNull(TestValues.NOT_NULL, msg); 48 | 49 | testNullBase(msg); 50 | } 51 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/GenericResponseTests.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test.rpc.responses; 2 | 3 | import com.smartdevicelink.protocol.enums.FunctionID; 4 | import com.smartdevicelink.proxy.RPCMessage; 5 | import com.smartdevicelink.proxy.rpc.GenericResponse; 6 | import com.smartdevicelink.test.BaseRpcTests; 7 | import com.smartdevicelink.test.TestValues; 8 | 9 | import org.json.JSONObject; 10 | import org.junit.Test; 11 | 12 | import static junit.framework.TestCase.assertNotNull; 13 | 14 | /** 15 | * This is a unit test class for the SmartDeviceLink library project class : 16 | * {@link com.smartdevicelink.proxy.rpc.GenericResponse} 17 | */ 18 | public class GenericResponseTests extends BaseRpcTests { 19 | 20 | @Override 21 | protected RPCMessage createMessage() { 22 | return new GenericResponse(); 23 | } 24 | 25 | @Override 26 | protected String getMessageType() { 27 | return RPCMessage.KEY_RESPONSE; 28 | } 29 | 30 | @Override 31 | protected String getCommandType() { 32 | return FunctionID.GENERIC_RESPONSE.toString(); 33 | } 34 | 35 | @Override 36 | protected JSONObject getExpectedParameters(int sdlVersion) { 37 | return new JSONObject(); 38 | } 39 | 40 | /** 41 | * Tests the expected values of the RPC message. 42 | */ 43 | @Test 44 | public void testRpcValues() { 45 | // Invalid/Null Tests 46 | GenericResponse msg = new GenericResponse(); 47 | assertNotNull(TestValues.NOT_NULL, msg); 48 | testNullBase(msg); 49 | } 50 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/GetCloudAppPropertiesResponseTests.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test.rpc.responses; 2 | 3 | import com.smartdevicelink.protocol.enums.FunctionID; 4 | import com.smartdevicelink.proxy.RPCMessage; 5 | import com.smartdevicelink.proxy.rpc.GetCloudAppPropertiesResponse; 6 | import com.smartdevicelink.test.BaseRpcTests; 7 | import com.smartdevicelink.test.TestValues; 8 | 9 | import org.json.JSONObject; 10 | import org.junit.Test; 11 | 12 | import static junit.framework.TestCase.assertNotNull; 13 | 14 | public class GetCloudAppPropertiesResponseTests extends BaseRpcTests { 15 | @Override 16 | protected RPCMessage createMessage() { 17 | return new GetCloudAppPropertiesResponse(); 18 | } 19 | 20 | @Override 21 | protected String getMessageType() { 22 | return RPCMessage.KEY_RESPONSE; 23 | } 24 | 25 | @Override 26 | protected String getCommandType() { 27 | return FunctionID.GET_CLOUD_APP_PROPERTIES.toString(); 28 | } 29 | 30 | @Override 31 | protected JSONObject getExpectedParameters(int sdlVersion) { 32 | return new JSONObject(); 33 | } 34 | 35 | /** 36 | * Tests the expected values of the RPC message. 37 | */ 38 | @Test 39 | public void testRpcValues() { 40 | // Invalid/Null Tests 41 | GetCloudAppPropertiesResponse msg = new GetCloudAppPropertiesResponse(); 42 | assertNotNull(TestValues.NOT_NULL, msg); 43 | testNullBase(msg); 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/SetCloudAppPropertiesResponseTests.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test.rpc.responses; 2 | 3 | import com.smartdevicelink.protocol.enums.FunctionID; 4 | import com.smartdevicelink.proxy.RPCMessage; 5 | import com.smartdevicelink.proxy.rpc.SetCloudAppPropertiesResponse; 6 | import com.smartdevicelink.test.BaseRpcTests; 7 | import com.smartdevicelink.test.TestValues; 8 | 9 | import org.json.JSONObject; 10 | import org.junit.Test; 11 | 12 | import static junit.framework.TestCase.assertNotNull; 13 | 14 | public class SetCloudAppPropertiesResponseTests extends BaseRpcTests { 15 | @Override 16 | protected RPCMessage createMessage() { 17 | return new SetCloudAppPropertiesResponse(); 18 | } 19 | 20 | @Override 21 | protected String getMessageType() { 22 | return RPCMessage.KEY_RESPONSE; 23 | } 24 | 25 | @Override 26 | protected String getCommandType() { 27 | return FunctionID.SET_CLOUD_APP_PROPERTIES.toString(); 28 | } 29 | 30 | @Override 31 | protected JSONObject getExpectedParameters(int sdlVersion) { 32 | return new JSONObject(); 33 | } 34 | 35 | /** 36 | * Tests the expected values of the RPC message. 37 | */ 38 | @Test 39 | public void testRpcValues() { 40 | // Invalid/Null Tests 41 | SetCloudAppPropertiesResponse msg = new SetCloudAppPropertiesResponse(); 42 | assertNotNull(TestValues.NOT_NULL, msg); 43 | testNullBase(msg); 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/streaming/MockInterfaceBroker.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test.streaming; 2 | 3 | import com.smartdevicelink.proxy.RPCMessage; 4 | import com.smartdevicelink.session.ISdlSessionListener; 5 | import com.smartdevicelink.transport.BaseTransportConfig; 6 | import com.smartdevicelink.util.SystemInfo; 7 | import com.smartdevicelink.util.Version; 8 | 9 | /** 10 | * This is a mock class for testing the following : 11 | * {@link com.smartdevicelink.streaming.AbstractPacketizer} 12 | */ 13 | public class MockInterfaceBroker implements ISdlSessionListener { 14 | public MockInterfaceBroker() { 15 | } 16 | 17 | @Override 18 | public void onTransportDisconnected(String info, boolean availablePrimary, BaseTransportConfig transportConfig) { 19 | 20 | } 21 | 22 | @Override 23 | public void onRPCMessageReceived(RPCMessage rpcMessage) { 24 | 25 | } 26 | 27 | @Override 28 | public void onSessionStarted(int sessionID, Version version, SystemInfo systemInfo) { 29 | 30 | } 31 | 32 | @Override 33 | public void onSessionEnded(int sessionID) { 34 | 35 | } 36 | 37 | @Override 38 | public void onAuthTokenReceived(String authToken, int sessionID) { 39 | 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/streaming/MockPacketizer.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test.streaming; 2 | 3 | import com.smartdevicelink.protocol.enums.SessionType; 4 | import com.smartdevicelink.session.SdlSession; 5 | import com.smartdevicelink.streaming.AbstractPacketizer; 6 | import com.smartdevicelink.streaming.IStreamListener; 7 | 8 | import java.io.IOException; 9 | import java.io.InputStream; 10 | 11 | /** 12 | * This is a mock class for testing the following : 13 | * {@link com.smartdevicelink.streaming.AbstractPacketizer} 14 | */ 15 | public class MockPacketizer extends AbstractPacketizer { 16 | public MockPacketizer(IStreamListener l, InputStream i, SessionType s, byte sid, SdlSession sdlsession) throws IOException { 17 | super(l, i, s, sid, sdlsession); 18 | } 19 | 20 | @Override 21 | public void start() throws IOException { 22 | } 23 | 24 | @Override 25 | public void stop() { 26 | } 27 | 28 | public IStreamListener getListener() { 29 | return _streamListener; 30 | } 31 | 32 | public InputStream getInputStream() { 33 | return is; 34 | } 35 | 36 | public SessionType getSessionType() { 37 | return _serviceType; 38 | } 39 | 40 | public byte getSessionId() { 41 | return _rpcSessionID; 42 | } 43 | 44 | @Override 45 | public void pause() { 46 | } 47 | 48 | @Override 49 | public void resume() { 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/streaming/MockStreamListener.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test.streaming; 2 | 3 | import com.smartdevicelink.protocol.ProtocolMessage; 4 | import com.smartdevicelink.streaming.IStreamListener; 5 | 6 | /** 7 | * This is a mock class for testing the following : 8 | * {@link com.smartdevicelink.streaming.AbstractPacketizer} 9 | */ 10 | public class MockStreamListener implements IStreamListener { 11 | public MockStreamListener() { 12 | } 13 | 14 | @Override 15 | public void sendStreamPacket(ProtocolMessage pm) { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/transport/BaseTransportConfigTests.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test.transport; 2 | 3 | import com.smartdevicelink.test.TestValues; 4 | import com.smartdevicelink.transport.BaseTransportConfig; 5 | import com.smartdevicelink.transport.enums.TransportType; 6 | 7 | import junit.framework.TestCase; 8 | 9 | /** 10 | * This is a unit test class for the SmartDeviceLink library project class : 11 | * {@link com.smartdevicelink.transport.BaseTransportConfig} 12 | */ 13 | public class BaseTransportConfigTests extends TestCase { 14 | 15 | /** 16 | * This is a unit test for the following methods : 17 | * {@link com.smartdevicelink.transport.BaseTransportConfig#getTransportType()} 18 | * {@link com.smartdevicelink.transport.BaseTransportConfig#getHeartBeatTimeout()} 19 | * {@link com.smartdevicelink.transport.BaseTransportConfig#setHeartBeatTimeout(int)} 20 | */ 21 | public void testConfigs() { 22 | 23 | // Test Values 24 | int testInt = 10; 25 | MockBaseTransportConfig testBaseTransportConfig = new MockBaseTransportConfig(); 26 | 27 | // Comparison Values 28 | int expectedMaxValue = Integer.MAX_VALUE; 29 | int actualMaxValue = testBaseTransportConfig.getHeartBeatTimeout(); 30 | 31 | // Valid Tests 32 | assertNotNull(TestValues.NOT_NULL, testBaseTransportConfig); 33 | assertEquals(TestValues.MATCH, expectedMaxValue, actualMaxValue); 34 | 35 | testBaseTransportConfig.setHeartBeatTimeout(testInt); 36 | assertEquals(TestValues.MATCH, testInt, testBaseTransportConfig.getHeartBeatTimeout()); 37 | } 38 | } 39 | 40 | /** 41 | * This is a mock class for testing the following : 42 | * {@link com.smartdevicelink.transport.BaseTransportConfig} 43 | */ 44 | class MockBaseTransportConfig extends BaseTransportConfig { 45 | public MockBaseTransportConfig() { 46 | } 47 | 48 | @Override 49 | public TransportType getTransportType() { 50 | return null; 51 | } 52 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/transport/MultiplexTransportConfigTests.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test.transport; 2 | 3 | import androidx.test.ext.junit.runners.AndroidJUnit4; 4 | 5 | import com.smartdevicelink.transport.MultiplexTransportConfig; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation; 11 | import static junit.framework.TestCase.assertEquals; 12 | 13 | @RunWith(AndroidJUnit4.class) 14 | public class MultiplexTransportConfigTests { 15 | 16 | @Test 17 | public void testDefaultSecurity() { 18 | MultiplexTransportConfig config = new MultiplexTransportConfig(getInstrumentation().getTargetContext(), "2341"); 19 | assertEquals(config.getSecurityLevel(), MultiplexTransportConfig.FLAG_MULTI_SECURITY_MED); 20 | } 21 | 22 | @Test 23 | public void testSettingSecurity() { 24 | MultiplexTransportConfig config = new MultiplexTransportConfig(getInstrumentation().getTargetContext(), "2341", MultiplexTransportConfig.FLAG_MULTI_SECURITY_HIGH); 25 | assertEquals(config.getSecurityLevel(), MultiplexTransportConfig.FLAG_MULTI_SECURITY_HIGH); 26 | 27 | config = new MultiplexTransportConfig(getInstrumentation().getTargetContext(), "2341"); 28 | config.setSecurityLevel(MultiplexTransportConfig.FLAG_MULTI_SECURITY_HIGH); 29 | assertEquals(config.getSecurityLevel(), MultiplexTransportConfig.FLAG_MULTI_SECURITY_HIGH); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/util/DebugToolTests.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test.util; 2 | 3 | import com.smartdevicelink.test.TestValues; 4 | import com.smartdevicelink.util.DebugTool; 5 | 6 | import junit.framework.TestCase; 7 | 8 | /** 9 | * This is a unit test class for the SmartDeviceLink library project class : 10 | * {@link com.smartdevicelink.util.DebugTool} 11 | */ 12 | public class DebugToolTests extends TestCase { 13 | 14 | /** 15 | * This is a unit test for the following methods : 16 | * {@link com.smartdevicelink.util.DebugTool#enableDebugTool()} 17 | * {@link com.smartdevicelink.util.DebugTool#disableDebugTool()} 18 | * {@link com.smartdevicelink.util.DebugTool#isDebugEnabled()} 19 | */ 20 | public void testDebugEnableMethods() { 21 | DebugTool.enableDebugTool(); 22 | assertTrue(TestValues.TRUE, DebugTool.isDebugEnabled()); 23 | DebugTool.disableDebugTool(); 24 | assertFalse(TestValues.FALSE, DebugTool.isDebugEnabled()); 25 | } 26 | 27 | // NOTE : No testing can currently be done for the logging methods. 28 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/util/DeviceUtil.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test.util; 2 | 3 | import android.os.Build; 4 | 5 | public class DeviceUtil { 6 | public static boolean isEmulator() { 7 | return Build.FINGERPRINT.startsWith("generic") 8 | || Build.FINGERPRINT.startsWith("unknown") 9 | || Build.MODEL.contains("google_sdk") 10 | || Build.MODEL.contains("Emulator") 11 | || Build.MODEL.contains("Android SDK built for") 12 | || Build.MANUFACTURER.contains("Genymotion") 13 | || (Build.BRAND.startsWith("generic") && Build.DEVICE.startsWith("generic")) 14 | || (Build.BRAND.startsWith("Android") && Build.DEVICE.startsWith("generic")) 15 | || (Build.PRODUCT != null && Build.PRODUCT.startsWith("sdk_google_phone")) 16 | || "google_sdk".equals(Build.PRODUCT); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/java/com/smartdevicelink/test/util/SdlDataTypeConverterTests.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test.util; 2 | 3 | import com.smartdevicelink.test.TestValues; 4 | import com.smartdevicelink.util.SdlDataTypeConverter; 5 | 6 | import junit.framework.TestCase; 7 | 8 | /** 9 | * This is a unit test class for the SmartDeviceLink library project class : 10 | * {@link com.smartdevicelink.util.SdlDataTypeConverter} 11 | */ 12 | public class SdlDataTypeConverterTests extends TestCase { 13 | 14 | /** 15 | * This is a unit test for the following method : 16 | * {@link com.smartdevicelink.util.SdlDataTypeConverter#objectToDouble(Object)} 17 | */ 18 | public void testObjectToDouble() { 19 | 20 | // Test Values 21 | Long testLong = Long.valueOf(1); 22 | Short testShort = 1; 23 | Float testFloat = 1f; 24 | Double testDouble = 1.0; 25 | Integer testInteger = 1; 26 | 27 | // Comparison Values 28 | Double expectedValue = 1.0; 29 | Double actualNullValue = SdlDataTypeConverter.objectToDouble(null); 30 | Double actualLongValue = SdlDataTypeConverter.objectToDouble(testLong); 31 | Double actualShortValue = SdlDataTypeConverter.objectToDouble(testShort); 32 | Double actualFloatValue = SdlDataTypeConverter.objectToDouble(testFloat); 33 | Double actualDoubleValue = SdlDataTypeConverter.objectToDouble(testDouble); 34 | Double actualIntegerValue = SdlDataTypeConverter.objectToDouble(testInteger); 35 | 36 | // Valid Tests 37 | assertEquals(TestValues.MATCH, expectedValue, actualDoubleValue); 38 | assertEquals(TestValues.MATCH, expectedValue, actualIntegerValue); 39 | assertEquals(TestValues.MATCH, expectedValue, actualFloatValue); 40 | 41 | // Null Tests 42 | assertNull(TestValues.NULL, actualNullValue); 43 | assertNull(TestValues.NULL, actualLongValue); 44 | assertNull(TestValues.NULL, actualShortValue); 45 | } 46 | } -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/res/raw/test_audio_square_250hz_80amp_1s.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/sdl_android/src/androidTest/res/raw/test_audio_square_250hz_80amp_1s.mp3 -------------------------------------------------------------------------------- /android/sdl_android/src/androidTest/res/xml/supported_vehicle_type.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 12 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/aidl/com/smartdevicelink/protocol/SdlPacket.aidl: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.protocol; 2 | //Seems silly, but....welcome to Android 3 | //We need to do this so the compiler knows that the SdlPacket.java class ia actually a parceable object and how to handle it 4 | // when dealing with other interface (aidl) files as well as being able to send them through intents 5 | parcelable SdlPacket; -------------------------------------------------------------------------------- /android/sdl_android/src/main/java/com/android/grafika/gles/OffscreenSurface.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2013 Google Inc. All rights reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.android.grafika.gles; 18 | 19 | /** 20 | * Off-screen EGL surface (pbuffer). 21 | *

22 | * It's good practice to explicitly release() the surface, preferably from a "finally" block. 23 | */ 24 | public class OffscreenSurface extends EglSurfaceBase { 25 | /** 26 | * Creates an off-screen surface with the specified width and height. 27 | */ 28 | public OffscreenSurface(EglCore eglCore, int width, int height) { 29 | super(eglCore); 30 | createOffscreenSurface(width, height); 31 | } 32 | 33 | /** 34 | * Releases any resources associated with the surface. 35 | */ 36 | public void release() { 37 | releaseEglSurface(); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/SubscribeButtonManager.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.managers.screen; 2 | 3 | import androidx.annotation.NonNull; 4 | import androidx.annotation.RestrictTo; 5 | 6 | import com.smartdevicelink.managers.ISdl; 7 | 8 | /** 9 | * SubscribeButtonManager
10 | *

11 | * Note: This class must be accessed through the SdlManager. Do not instantiate it by itself.
12 | */ 13 | @RestrictTo(RestrictTo.Scope.LIBRARY) 14 | class SubscribeButtonManager extends BaseSubscribeButtonManager { 15 | 16 | SubscribeButtonManager(@NonNull ISdl internalInterface) { 17 | super(internalInterface); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/java/com/smartdevicelink/managers/video/resolution/ImageResolutionKind.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.managers.video.resolution; 2 | 3 | import androidx.annotation.RestrictTo; 4 | 5 | @RestrictTo(RestrictTo.Scope.LIBRARY) 6 | public enum ImageResolutionKind { 7 | PORTRAIT, LANDSCAPE, SQUARE, UNDEFINED 8 | } 9 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/java/com/smartdevicelink/managers/video/resolution/Resolution.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.managers.video.resolution; 2 | 3 | public class Resolution { 4 | private Integer resolutionWidth; 5 | private Integer resolutionHeight; 6 | 7 | public Resolution(Integer resolutionWidth, Integer resolutionHeight) { 8 | this.resolutionWidth = resolutionWidth; 9 | this.resolutionHeight = resolutionHeight; 10 | } 11 | 12 | public Integer getResolutionWidth() { 13 | return resolutionWidth; 14 | } 15 | 16 | public Integer getResolutionHeight() { 17 | return resolutionHeight; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/java/com/smartdevicelink/transport/utl/TransportRecord.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.transport.utl; 2 | 3 | import android.os.Parcel; 4 | import android.os.Parcelable; 5 | 6 | import com.smartdevicelink.transport.enums.TransportType; 7 | 8 | public class TransportRecord extends BaseTransportRecord implements Parcelable { 9 | 10 | public TransportRecord(TransportType transportType, String address) { 11 | super(transportType, address); 12 | } 13 | 14 | public TransportRecord(Parcel p) { 15 | if (p.readInt() == 1) { //We should have a transport type attached 16 | String transportName = p.readString(); 17 | if (transportName != null) { 18 | this.type = TransportType.valueOf(transportName); 19 | } 20 | } 21 | 22 | if (p.readInt() == 1) { //We should have a transport address attached 23 | address = p.readString(); 24 | } 25 | } 26 | 27 | @Override 28 | public int describeContents() { 29 | return 0; 30 | } 31 | 32 | @Override 33 | public void writeToParcel(Parcel dest, int flags) { 34 | dest.writeInt(type != null ? 1 : 0); 35 | if (type != null) { 36 | dest.writeString(type.name()); 37 | } 38 | 39 | dest.writeInt(address != null ? 1 : 0); 40 | if (address != null) { 41 | dest.writeString(address); 42 | } 43 | } 44 | 45 | public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { 46 | public TransportRecord createFromParcel(Parcel in) { 47 | return new TransportRecord(in); 48 | } 49 | 50 | @Override 51 | public TransportRecord[] newArray(int size) { 52 | return new TransportRecord[size]; 53 | } 54 | 55 | }; 56 | } 57 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/java/com/smartdevicelink/util/Log.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.util; 2 | 3 | public class Log { 4 | public static void i(String tag, String message) { 5 | android.util.Log.i(tag, message); 6 | } 7 | 8 | public static void w(String tag, String message) { 9 | android.util.Log.w(tag, message); 10 | } 11 | 12 | public static void e(String tag, String message, Throwable t) { 13 | if (t != null) { 14 | android.util.Log.e(tag, message, t); 15 | } else { 16 | android.util.Log.e(tag, message); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/drawable-hdpi/ic_sdl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/sdl_android/src/main/res/drawable-hdpi/ic_sdl.png -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/drawable-hdpi/sdl_lockscreen_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/sdl_android/src/main/res/drawable-hdpi/sdl_lockscreen_icon.png -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/drawable-hdpi/sdl_tray_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/sdl_android/src/main/res/drawable-hdpi/sdl_tray_icon.png -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/drawable-hdpi/spp_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/sdl_android/src/main/res/drawable-hdpi/spp_error.png -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/drawable-mdpi/ic_sdl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/sdl_android/src/main/res/drawable-mdpi/ic_sdl.png -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/drawable-mdpi/sdl_lockscreen_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/sdl_android/src/main/res/drawable-mdpi/sdl_lockscreen_icon.png -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/drawable-mdpi/sdl_tray_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/sdl_android/src/main/res/drawable-mdpi/sdl_tray_icon.png -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/drawable-mdpi/spp_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/sdl_android/src/main/res/drawable-mdpi/spp_error.png -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/drawable-mdpi/transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/sdl_android/src/main/res/drawable-mdpi/transparent.png -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/drawable-xhdpi/ic_sdl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/sdl_android/src/main/res/drawable-xhdpi/ic_sdl.png -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/drawable-xhdpi/sdl_lockscreen_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/sdl_android/src/main/res/drawable-xhdpi/sdl_lockscreen_icon.png -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/drawable-xhdpi/sdl_tray_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/sdl_android/src/main/res/drawable-xhdpi/sdl_tray_icon.png -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/drawable-xhdpi/spp_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/sdl_android/src/main/res/drawable-xhdpi/spp_error.png -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/drawable-xxhdpi/ic_sdl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/sdl_android/src/main/res/drawable-xxhdpi/ic_sdl.png -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/drawable-xxhdpi/sdl_lockscreen_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/sdl_android/src/main/res/drawable-xxhdpi/sdl_lockscreen_icon.png -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/drawable-xxhdpi/sdl_tray_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/sdl_android/src/main/res/drawable-xxhdpi/sdl_tray_icon.png -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/drawable-xxhdpi/spp_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/sdl_android/src/main/res/drawable-xxhdpi/spp_error.png -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/drawable-xxxhdpi/ic_sdl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/sdl_android/src/main/res/drawable-xxxhdpi/ic_sdl.png -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/drawable-xxxhdpi/sdl_lockscreen_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/sdl_android/src/main/res/drawable-xxxhdpi/sdl_lockscreen_icon.png -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/drawable-xxxhdpi/sdl_tray_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/sdl_android/src/main/res/drawable-xxxhdpi/sdl_tray_icon.png -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/drawable-xxxhdpi/spp_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/android/sdl_android/src/main/res/drawable-xxxhdpi/spp_error.png -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-ar/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | تستخدم تطبيقات كثيرة بلوتوث 4 | خطأ SDL 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-cs/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Bluetooth používá příliš mnoho aplikací 4 | Chyba SDL 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-da/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | For mange apps bruger Bluetooth 4 | SDL-fejl 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-de/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Zu viele Apps verwenden Bluetooth 4 | SDL-Fehler 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-el/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Πάρα πολλές εφαρμογές χρησιμοποιούν Bluetooth 4 | Σφάλμα SDL 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-es/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Demasiadas aplicaciones usan Bluetooth 4 | Error de SDL 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-fi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Liian monet sovellukset käyttävät Bluetoothia 4 | SDL-virhe 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-fr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Trop d\'applications utilisent Bluetooth 4 | Erreur SDL 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-he/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | יותר מדי יישומים משתמשים ב- Bluetooth 4 | שגיאת SDL 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-hi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | बहुत से ऐप ब्लूटूथ का उपयोग कर रहे हैं 4 | SDL त्रुटि 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-hu/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Túl sok alkalmazás használja a Bluetooth-ot 4 | SDL hiba 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-in/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Terlalu banyak aplikasi menggunakan Bluetooth 4 | Kesalahan SDL 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-it/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Troppe app utilizzano il Bluetooth 4 | Errore SDL 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-iw/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | יותר מדי יישומים משתמשים ב- Bluetooth 4 | שגיאת SDL 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-ja/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Bluetoothの使用アプリが多すぎます 4 | SDL エラー 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-ko/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 너무 많은 앱이 블루투스를 사용하고 있습니다 4 | SDL 오류 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-ms/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Terlalu banyak aplikasi yang menggunakan Bluetooth 4 | Ralat SDL 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-nb/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | For mange apper bruker Bluetooth 4 | SDL-feil 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-nl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Te veel apps gebruiken Bluetooth 4 | SDL-fout 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-pl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Zbyt wiele aplikacji korzysta z Bluetooth 4 | Błąd SDL 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-pt/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Muitos aplicativos estão usando Bluetooth 4 | Erro SDL 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-ro/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Prea multe aplicații folosesc Bluetooth 4 | Eroare SDL 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-ru/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Слишком много приложений используют Bluetooth 4 | Ошибка SDL 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-sk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Bluetooth používa príliš veľa aplikácií 4 | Chyba SDL 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-sv/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | För många appar använder Bluetooth 4 | SDL-fel 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-th/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | มีแอปมากเกินไปที่ใช้บลูทู ธ 4 | ข้อผิดพลาด SDL 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-tr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Çok fazla uygulama Bluetooth kullanıyor 4 | SDL Hatası 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-uk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Надто багато додатків використовують Bluetooth 4 | Помилка SDL 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-vi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Quá nhiều ứng dụng đang sử dụng Bluetooth 4 | Lỗi SDL 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-zh-rCN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 太多的应用程序正在使用蓝牙 4 | SDL错误 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values-zh-rTW/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 太多的應用程序正在使用藍牙 4 | SDL錯誤 5 | 6 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values/sdl.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | sdl_router_version 4 | 5 | 17 6 | 7 | sdl_custom_router 8 | sdl_oem_vehicle_type 9 | 10 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Locked for your safety 4 | SDL Icon 5 | Device Icon 6 | Swipe down to dismiss, acknowledging that you are not the driver. 7 | Too many apps are using Bluetooth 8 | Please grant this app the Nearby Devices Permission to use bluetooth 9 | SmartDeviceLink 10 | SDL Error 11 | -------------------------------------------------------------------------------- /android/sdl_android/src/main/res/xml/accessory_filter.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':bson_java_port-release' 2 | include ':sdl_android', ':hello_sdl_android' -------------------------------------------------------------------------------- /base/README.md: -------------------------------------------------------------------------------- 1 | ## SmartDeviceLink Base 2 | 3 | The Base Java Folder holds classes that are commonly shared amongst the Android, JavaSE, and JavaEE projects. 4 | 5 | This should not be directly imported, please refer to the readme's of the JavaSE, JavaEE, or Android projects for installation instructions. 6 | 7 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/managers/AlertCompletionListener.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.managers; 2 | 3 | public interface AlertCompletionListener { 4 | 5 | /** 6 | * Returns whether an Alert operation was successful or not along with tryAgainTime 7 | * @param success - Boolean that is True if Operation was a success, False otherwise. 8 | * @param tryAgainTime - Amount of time (in seconds) that an app must wait before resending an alert. 9 | */ 10 | void onComplete(boolean success, Integer tryAgainTime); 11 | } 12 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/managers/BaseSdlManagerListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Livio, Inc. 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * Redistributions of source code must retain the above copyright notice, this 9 | * list of conditions and the following disclaimer. 10 | * 11 | * Redistributions in binary form must reproduce the above copyright notice, 12 | * this list of conditions and the following 13 | * disclaimer in the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * Neither the name of the Livio Inc. nor the names of its contributors 17 | * may be used to endorse or promote products derived from this software 18 | * without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 24 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 | * POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | package com.smartdevicelink.managers; 33 | 34 | public interface BaseSdlManagerListener { 35 | } 36 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/managers/CompletionListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019, Livio, Inc. 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * Redistributions of source code must retain the above copyright notice, this 9 | * list of conditions and the following disclaimer. 10 | * 11 | * Redistributions in binary form must reproduce the above copyright notice, 12 | * this list of conditions and the following 13 | * disclaimer in the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * Neither the name of the Livio Inc. nor the names of its contributors 17 | * may be used to endorse or promote products derived from this software 18 | * without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 24 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 | * POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | package com.smartdevicelink.managers; 33 | 34 | public interface CompletionListener { 35 | 36 | /** 37 | * Returns whether a specific operation was successful or not 38 | * 39 | * @param success - success or fail 40 | */ 41 | void onComplete(boolean success); 42 | } 43 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/managers/ServiceEncryptionListener.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.managers; 2 | 3 | import androidx.annotation.NonNull; 4 | import androidx.annotation.Nullable; 5 | 6 | import com.smartdevicelink.protocol.enums.SessionType; 7 | 8 | public interface ServiceEncryptionListener { 9 | void onEncryptionServiceUpdated(@NonNull SessionType serviceType, boolean isServiceEncrypted, @Nullable String error); 10 | } -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/managers/file/FileManagerCompletionListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 Livio, Inc. 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * Redistributions of source code must retain the above copyright notice, this 9 | * list of conditions and the following disclaimer. 10 | * 11 | * Redistributions in binary form must reproduce the above copyright notice, 12 | * this list of conditions and the following 13 | * disclaimer in the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * Neither the name of the Livio Inc. nor the names of its contributors 17 | * may be used to endorse or promote products derived from this software 18 | * without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 24 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 | * POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | 33 | package com.smartdevicelink.managers.file; 34 | 35 | import java.util.Collection; 36 | 37 | /** 38 | * Created by Bilal Alsharifi on 12/1/20. 39 | */ 40 | interface FileManagerCompletionListener { 41 | void onComplete(boolean success, int bytesAvailable, Collection fileNames, String errorMessage); 42 | } 43 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/managers/file/FileManagerConfig.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.managers.file; 2 | 3 | /** 4 | * FileManagerConfig
5 | *

6 | * This is set during SdlManager instantiation.
7 | * 8 | *

  • artworkRetryCount - # of attempts allowed for SdlArtwork to be re-uploaded if they fail
  • 9 | * 10 | *
  • fileRetryCount - # of attempts allowed for SdlFiles to be re-uploaded if they fail
  • 11 | */ 12 | public class FileManagerConfig { 13 | private int artworkRetryCount, fileRetryCount; 14 | 15 | /** 16 | * Constructor for FileMangerConfig 17 | * Sets artworkRetryCount and fileRetryCount to a default value of 1 18 | */ 19 | public FileManagerConfig() { 20 | // set default values to 1 retry attempt 21 | this.artworkRetryCount = 1; 22 | this.fileRetryCount = 1; 23 | } 24 | 25 | /** 26 | * Setter for Integer artWorkRetryCount 27 | * 28 | * @param artworkRetryCount the number of retry attempts 29 | */ 30 | public void setArtworkRetryCount(int artworkRetryCount) { 31 | this.artworkRetryCount = artworkRetryCount; 32 | } 33 | 34 | /** 35 | * Getter for Integer artWorkRetryCount 36 | * 37 | * @return Integer artworkRetryCount 38 | */ 39 | public int getArtworkRetryCount() { 40 | return artworkRetryCount; 41 | } 42 | 43 | /** 44 | * Setter for Integer fileRetryCount 45 | * 46 | * @param fileRetryCount the number of retry attempts 47 | */ 48 | public void setFileRetryCount(int fileRetryCount) { 49 | this.fileRetryCount = fileRetryCount; 50 | } 51 | 52 | /** 53 | * Getter for Integer fileRetryCount 54 | * 55 | * @return Integer fileRetryCount 56 | */ 57 | public int getFileRetryCount() { 58 | return fileRetryCount; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/managers/lifecycle/OnSystemCapabilityListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019, Livio, Inc. 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * Redistributions of source code must retain the above copyright notice, this 9 | * list of conditions and the following disclaimer. 10 | * 11 | * Redistributions in binary form must reproduce the above copyright notice, 12 | * this list of conditions and the following 13 | * disclaimer in the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * Neither the name of the Livio Inc. nor the names of its contributors 17 | * may be used to endorse or promote products derived from this software 18 | * without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 24 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 | * POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | package com.smartdevicelink.managers.lifecycle; 33 | 34 | public interface OnSystemCapabilityListener { 35 | void onCapabilityRetrieved(Object capability); 36 | 37 | void onError(String info); 38 | } 39 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/managers/screen/AlertCanceledListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 Livio, Inc. 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * Redistributions of source code must retain the above copyright notice, this 9 | * list of conditions and the following disclaimer. 10 | * 11 | * Redistributions in binary form must reproduce the above copyright notice, 12 | * this list of conditions and the following 13 | * disclaimer in the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * Neither the name of the Livio Inc. nor the names of its contributors 17 | * may be used to endorse or promote products derived from this software 18 | * without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 24 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 | * POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | 33 | package com.smartdevicelink.managers.screen; 34 | 35 | public interface AlertCanceledListener { 36 | /** 37 | * Notifies the subscriber that the Alert should be cancelled. 38 | */ 39 | void onAlertCanceled(); 40 | } 41 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/managers/screen/OnButtonListener.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.managers.screen; 2 | 3 | import com.smartdevicelink.proxy.rpc.OnButtonEvent; 4 | import com.smartdevicelink.proxy.rpc.OnButtonPress; 5 | import com.smartdevicelink.proxy.rpc.enums.ButtonName; 6 | 7 | /** 8 | * OnButtonListener is a listener used for notifying when events have happened with SubscribeButtons 9 | */ 10 | public interface OnButtonListener { 11 | 12 | /** 13 | * Returns when a Subscribed button is pressed 14 | * 15 | * @param buttonName - Name of Button 16 | * @param buttonPress - OnButtonPress 17 | */ 18 | void onPress(ButtonName buttonName, OnButtonPress buttonPress); 19 | 20 | /** 21 | * Returns when a Subscribed button Event has occurred 22 | * 23 | * @param buttonName - Name of Button 24 | * @param buttonEvent - OnButtonEvent 25 | */ 26 | void onEvent(ButtonName buttonName, OnButtonEvent buttonEvent); 27 | 28 | /** 29 | * Returns when there is an error with subscribing to button 30 | * 31 | * @param info - Error info 32 | */ 33 | void onError(String info); 34 | } 35 | 36 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/managers/screen/choiceset/CheckChoiceVROptionalInterface.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Livio, Inc. 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * Redistributions of source code must retain the above copyright notice, this 9 | * list of conditions and the following disclaimer. 10 | * 11 | * Redistributions in binary form must reproduce the above copyright notice, 12 | * this list of conditions and the following 13 | * disclaimer in the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * Neither the name of the Livio Inc. nor the names of its contributors 17 | * may be used to endorse or promote products derived from this software 18 | * without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 24 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 | * POSSIBILITY OF SUCH DAMAGE. 31 | * 32 | * Created by brettywhite on 6/12/19 1:52 PM 33 | * 34 | */ 35 | 36 | package com.smartdevicelink.managers.screen.choiceset; 37 | 38 | interface CheckChoiceVROptionalInterface { 39 | void onCheckChoiceVROperationComplete(boolean vrOptional); 40 | 41 | void onError(String error); 42 | } 43 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetCanceledListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Livio, Inc. 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * Redistributions of source code must retain the above copyright notice, this 9 | * list of conditions and the following disclaimer. 10 | * 11 | * Redistributions in binary form must reproduce the above copyright notice, 12 | * this list of conditions and the following 13 | * disclaimer in the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * Neither the name of the Livio Inc. nor the names of its contributors 17 | * may be used to endorse or promote products derived from this software 18 | * without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 24 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 | * POSSIBILITY OF SUCH DAMAGE. 31 | * 32 | * Created by Nicole Yarroch on 7/24/19 2:08 PM 33 | */ 34 | 35 | package com.smartdevicelink.managers.screen.choiceset; 36 | 37 | interface ChoiceSetCanceledListener { 38 | /** 39 | * Notifies the subscriber that the choice set should be cancelled. 40 | */ 41 | void onChoiceSetCanceled(); 42 | } 43 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetSelectionListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Livio, Inc. 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * Redistributions of source code must retain the above copyright notice, this 9 | * list of conditions and the following disclaimer. 10 | * 11 | * Redistributions in binary form must reproduce the above copyright notice, 12 | * this list of conditions and the following 13 | * disclaimer in the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * Neither the name of the Livio Inc. nor the names of its contributors 17 | * may be used to endorse or promote products derived from this software 18 | * without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 24 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 | * POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | 33 | package com.smartdevicelink.managers.screen.choiceset; 34 | 35 | import com.smartdevicelink.proxy.rpc.enums.TriggerSource; 36 | 37 | public interface ChoiceSetSelectionListener { 38 | void onChoiceSelected(ChoiceCell choiceCell, TriggerSource triggerSource, int rowIndex); 39 | 40 | void onError(String error); 41 | } 42 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/managers/screen/choiceset/KeyboardCharacterSetCompletionListener.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.managers.screen.choiceset; 2 | 3 | import java.util.List; 4 | 5 | public interface KeyboardCharacterSetCompletionListener { 6 | 7 | /** 8 | * This listener is called when you wish to update your keyboard's limitedCharacterSet in response to the user's input 9 | * 10 | * @param updatedCharacterSet - The new set of characters to use 11 | */ 12 | void onUpdatedCharacterSet(List updatedCharacterSet); 13 | } 14 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/managers/screen/menu/MenuManagerCompletionListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2021 Livio, Inc. 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * Redistributions of source code must retain the above copyright notice, this 9 | * list of conditions and the following disclaimer. 10 | * 11 | * Redistributions in binary form must reproduce the above copyright notice, 12 | * this list of conditions and the following 13 | * disclaimer in the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * Neither the name of the Livio Inc. nor the names of its contributors 17 | * may be used to endorse or promote products derived from this software 18 | * without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 24 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 | * POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | 33 | package com.smartdevicelink.managers.screen.menu; 34 | 35 | import java.util.List; 36 | 37 | /** 38 | * Created by Bilal Alsharifi on 1/21/21. 39 | */ 40 | interface MenuManagerCompletionListener { 41 | void onComplete(boolean success, List currentMenuCells); 42 | } 43 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/managers/screen/menu/MenuSelectionListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Livio, Inc. 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * Redistributions of source code must retain the above copyright notice, this 9 | * list of conditions and the following disclaimer. 10 | * 11 | * Redistributions in binary form must reproduce the above copyright notice, 12 | * this list of conditions and the following 13 | * disclaimer in the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * Neither the name of the Livio Inc. nor the names of its contributors 17 | * may be used to endorse or promote products derived from this software 18 | * without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 24 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 | * POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | 33 | package com.smartdevicelink.managers.screen.menu; 34 | 35 | import com.smartdevicelink.proxy.rpc.enums.TriggerSource; 36 | 37 | public interface MenuSelectionListener { 38 | 39 | void onTriggered(TriggerSource trigger); 40 | 41 | } 42 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/managers/screen/menu/VoiceCommandSelectionListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Livio, Inc. 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * Redistributions of source code must retain the above copyright notice, this 9 | * list of conditions and the following disclaimer. 10 | * 11 | * Redistributions in binary form must reproduce the above copyright notice, 12 | * this list of conditions and the following 13 | * disclaimer in the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * Neither the name of the Livio Inc. nor the names of its contributors 17 | * may be used to endorse or promote products derived from this software 18 | * without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 24 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 | * POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | 33 | package com.smartdevicelink.managers.screen.menu; 34 | 35 | public interface VoiceCommandSelectionListener { 36 | 37 | void onVoiceCommandSelected(); 38 | 39 | } 40 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/managers/video/BaseHapticInterfaceManager.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020, Livio, Inc. 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * Redistributions of source code must retain the above copyright notice, this 9 | * list of conditions and the following disclaimer. 10 | * 11 | * Redistributions in binary form must reproduce the above copyright notice, 12 | * this list of conditions and the following 13 | * disclaimer in the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * Neither the name of the Livio Inc. nor the names of its contributors 17 | * may be used to endorse or promote products derived from this software 18 | * without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 24 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 | * POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | package com.smartdevicelink.managers.video; 33 | 34 | abstract class BaseHapticInterfaceManager { 35 | } 36 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/protocol/enums/SecurityQueryType.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.protocol.enums; 2 | 3 | import androidx.annotation.RestrictTo; 4 | 5 | import com.smartdevicelink.util.ByteEnumer; 6 | 7 | import java.util.Vector; 8 | 9 | @RestrictTo(RestrictTo.Scope.LIBRARY) 10 | public class SecurityQueryType extends ByteEnumer { 11 | 12 | private static final Vector theList = new Vector<>(); 13 | 14 | public static Vector getList() { 15 | return theList; 16 | } 17 | 18 | protected SecurityQueryType(byte value, String name) { 19 | super(value, name); 20 | } 21 | 22 | public final static SecurityQueryType REQUEST = new SecurityQueryType((byte) 0x00, "REQUEST"); 23 | public final static SecurityQueryType RESPONSE = new SecurityQueryType((byte) 0x10, "RESPONSE"); 24 | public final static SecurityQueryType NOTIFICATION = new SecurityQueryType((byte) 0x20, "NOTIFICATION"); 25 | public final static SecurityQueryType INVALID_QUERY_TYPE = new SecurityQueryType((byte) 0xFF, "INVALID_QUERY_TYPE"); 26 | 27 | static { 28 | theList.addElement(REQUEST); 29 | theList.addElement(RESPONSE); 30 | theList.addElement(NOTIFICATION); 31 | theList.addElement(INVALID_QUERY_TYPE); 32 | } 33 | 34 | public static SecurityQueryType valueOf(byte passedByte) { 35 | return (SecurityQueryType) get(theList, passedByte); 36 | } 37 | 38 | public static SecurityQueryType[] values() { 39 | return theList.toArray(new SecurityQueryType[theList.size()]); 40 | } 41 | } -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/proxy/rpc/CreateWindowResponse.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.proxy.rpc; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.smartdevicelink.protocol.enums.FunctionID; 6 | import com.smartdevicelink.proxy.RPCResponse; 7 | import com.smartdevicelink.proxy.rpc.enums.Result; 8 | 9 | import java.util.Hashtable; 10 | 11 | /** 12 | * This RCP creates a window, by default the main is 0. 13 | * 14 | * @since 6.0 15 | */ 16 | public class CreateWindowResponse extends RPCResponse { 17 | 18 | /** 19 | * Constructs a new CreateWindowResponse object 20 | */ 21 | public CreateWindowResponse() { 22 | super(FunctionID.CREATE_WINDOW.toString()); 23 | } 24 | 25 | /** 26 | *

    Constructs a new CreateWindowResponse object indicated by the Hashtable 27 | * parameter

    28 | * 29 | * @param hash The Hashtable to use 30 | */ 31 | public CreateWindowResponse(Hashtable hash) { 32 | super(hash); 33 | } 34 | 35 | /** 36 | * Constructs a new CreateWindowResponse object 37 | * 38 | * @param success whether the request is successfully processed 39 | * @param resultCode whether the request is successfully processed 40 | */ 41 | public CreateWindowResponse(@NonNull Boolean success, @NonNull Result resultCode) { 42 | this(); 43 | setSuccess(success); 44 | setResultCode(resultCode); 45 | } 46 | } -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/proxy/rpc/DeleteWindowResponse.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.proxy.rpc; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.smartdevicelink.protocol.enums.FunctionID; 6 | import com.smartdevicelink.proxy.RPCResponse; 7 | import com.smartdevicelink.proxy.rpc.enums.Result; 8 | 9 | import java.util.Hashtable; 10 | 11 | /** 12 | * This RPC is the response of the DeleteWindow RPC 13 | * 14 | * @see DeleteWindow 15 | * @since 6.0 16 | */ 17 | public class DeleteWindowResponse extends RPCResponse { 18 | 19 | /** 20 | * Constructs a new DeleteWindowResponse object 21 | */ 22 | public DeleteWindowResponse() { 23 | super(FunctionID.DELETE_WINDOW.toString()); 24 | } 25 | 26 | /** 27 | *

    Constructs a new DeleteWindowResponse object indicated by the Hashtable 28 | * parameter

    29 | * 30 | * @param hash The Hashtable to use 31 | */ 32 | public DeleteWindowResponse(Hashtable hash) { 33 | super(hash); 34 | } 35 | 36 | /** 37 | * Constructs a new DeleteWindowResponse object 38 | * 39 | * @param success whether the request is successfully processed 40 | * @param resultCode whether the request is successfully processed 41 | */ 42 | public DeleteWindowResponse(@NonNull Boolean success, @NonNull Result resultCode) { 43 | this(); 44 | setSuccess(success); 45 | setResultCode(resultCode); 46 | } 47 | } -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/proxy/rpc/GetInteriorVehicleDataConsentResponse.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.proxy.rpc; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.smartdevicelink.protocol.enums.FunctionID; 6 | import com.smartdevicelink.proxy.RPCResponse; 7 | import com.smartdevicelink.proxy.rpc.enums.Result; 8 | 9 | import java.util.Hashtable; 10 | import java.util.List; 11 | 12 | public class GetInteriorVehicleDataConsentResponse extends RPCResponse { 13 | 14 | public static final String KEY_ALLOWED = "allowed"; 15 | 16 | public GetInteriorVehicleDataConsentResponse() { 17 | super(FunctionID.GET_INTERIOR_VEHICLE_DATA_CONSENT.toString()); 18 | } 19 | 20 | public GetInteriorVehicleDataConsentResponse(Hashtable hash) { 21 | super(hash); 22 | } 23 | 24 | public GetInteriorVehicleDataConsentResponse(@NonNull Boolean success, @NonNull Result resultCode) { 25 | this(); 26 | setSuccess(success); 27 | setResultCode(resultCode); 28 | } 29 | 30 | /** 31 | * Sets the list of allowances for this class 32 | * 33 | * @param allowances the allowances to be set 34 | */ 35 | public GetInteriorVehicleDataConsentResponse setAllowances(@NonNull List allowances) { 36 | setParameters(KEY_ALLOWED, allowances); 37 | return this; 38 | } 39 | 40 | /** 41 | * Gets the list of allowances of this class 42 | * 43 | * @return the list of allowances of this class 44 | */ 45 | @SuppressWarnings("unchecked") 46 | public List getAllowances() { 47 | return (List) getObject(Boolean.class, KEY_ALLOWED); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/proxy/rpc/ReleaseInteriorVehicleDataModuleResponse.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.proxy.rpc; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.smartdevicelink.protocol.enums.FunctionID; 6 | import com.smartdevicelink.proxy.RPCResponse; 7 | import com.smartdevicelink.proxy.rpc.enums.Result; 8 | 9 | import java.util.Hashtable; 10 | 11 | public class ReleaseInteriorVehicleDataModuleResponse extends RPCResponse { 12 | 13 | public ReleaseInteriorVehicleDataModuleResponse() { 14 | super(FunctionID.RELEASE_INTERIOR_VEHICLE_MODULE.toString()); 15 | } 16 | 17 | public ReleaseInteriorVehicleDataModuleResponse(Hashtable hash) { 18 | super(hash); 19 | } 20 | 21 | public ReleaseInteriorVehicleDataModuleResponse(@NonNull Boolean success, @NonNull Result resultCode) { 22 | this(); 23 | setSuccess(success); 24 | setResultCode(resultCode); 25 | } 26 | } -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/proxy/rpc/SeatLocation.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.proxy.rpc; 2 | 3 | import com.smartdevicelink.proxy.RPCStruct; 4 | 5 | import java.util.Hashtable; 6 | 7 | public class SeatLocation extends RPCStruct { 8 | public static final String KEY_GRID = "grid"; 9 | 10 | public SeatLocation() { 11 | } 12 | 13 | public SeatLocation(Hashtable hash) { 14 | super(hash); 15 | } 16 | 17 | /** 18 | * Sets grid data for this seat location 19 | * 20 | * @param grid the grid to be set 21 | */ 22 | public SeatLocation setGrid(Grid grid) { 23 | setValue(KEY_GRID, grid); 24 | return this; 25 | } 26 | 27 | /** 28 | * Gets the Grid of this seat location 29 | * 30 | * @return the grid of this seat location 31 | */ 32 | public Grid getGrid() { 33 | return (Grid) getObject(Grid.class, KEY_GRID); 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/proxy/rpc/enums/PredefinedWindows.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.proxy.rpc.enums; 2 | 3 | import java.util.EnumSet; 4 | 5 | /** 6 | * specifies what windows and IDs are predefined and pre-created on behalf of the app. 7 | *

    8 | * The default window is always available and represents the app window on the main display. 9 | * It's an equivalent to today's app window. 10 | * For backward compatibility, this will ensure the app always has at least the default window on the main display. 11 | * The app can choose to use this predefined enum element to specifically address app's main window or to duplicate window content. 12 | * It is not possible to duplicate another window to the default window. 13 | *

    14 | * The primary widget is a special widget, that can be associated with a service type, which is used by the HMI whenever a single widget needs to represent the whole app. 15 | * The primary widget should be named as the app and can be pre-created by the HMI 16 | * 17 | * @since 6.0 18 | */ 19 | public enum PredefinedWindows { 20 | /** 21 | * The default window is a main window pre-created on behalf of the app. 22 | */ 23 | DEFAULT_WINDOW(0), 24 | /** 25 | * The primary widget of the app. 26 | */ 27 | PRIMARY_WIDGET(1), 28 | 29 | ; 30 | 31 | 32 | final int VALUE; 33 | 34 | /** 35 | * Private constructor 36 | */ 37 | PredefinedWindows(int value) { 38 | this.VALUE = value; 39 | } 40 | 41 | public static PredefinedWindows valueForInt(int value) { 42 | 43 | for (PredefinedWindows anEnum : EnumSet.allOf(PredefinedWindows.class)) { 44 | if (anEnum.getValue() == value) { 45 | return anEnum; 46 | } 47 | } 48 | return null; 49 | } 50 | 51 | public int getValue() { 52 | return VALUE; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/proxy/rpc/enums/SdlInterfaceAvailability.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 - 2019, SmartDeviceLink Consortium, Inc. 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * Redistributions of source code must retain the above copyright notice, this 9 | * list of conditions and the following disclaimer. 10 | * 11 | * Redistributions in binary form must reproduce the above copyright notice, 12 | * this list of conditions and the following 13 | * disclaimer in the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * Neither the name of the SmartDeviceLink Consortium, Inc. nor the names of its 17 | * contributors may be used to endorse or promote products derived from this 18 | * software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 24 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 | * POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | package com.smartdevicelink.proxy.rpc.enums; 33 | 34 | public enum SdlInterfaceAvailability { 35 | SDL_INTERFACE_AVAILABLE, 36 | SDL_INTERFACE_UNAVAILABLE 37 | } 38 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/proxy/rpc/enums/WindowType.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.proxy.rpc.enums; 2 | 3 | /** 4 | * The type of the window to be created. Main window or widget. 5 | * 6 | * @since 6.0 7 | */ 8 | public enum WindowType { 9 | /** 10 | * This window type describes the main window on a display. 11 | */ 12 | MAIN, 13 | /** 14 | * A widget is a small window that the app can create to provide information and soft buttons for quick app control. 15 | */ 16 | WIDGET; 17 | 18 | /** 19 | * Convert String to WindowType 20 | * 21 | * @param value String 22 | * @return WindowType 23 | */ 24 | public static WindowType valueForString(String value) { 25 | try { 26 | return valueOf(value); 27 | } catch (Exception e) { 28 | return null; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/proxy/rpc/listeners/OnRPCNotificationListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019, Livio, Inc. 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * Redistributions of source code must retain the above copyright notice, this 9 | * list of conditions and the following disclaimer. 10 | * 11 | * Redistributions in binary form must reproduce the above copyright notice, 12 | * this list of conditions and the following 13 | * disclaimer in the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * Neither the name of the Livio Inc. nor the names of its contributors 17 | * may be used to endorse or promote products derived from this software 18 | * without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 24 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 | * POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | package com.smartdevicelink.proxy.rpc.listeners; 33 | 34 | import com.smartdevicelink.proxy.RPCNotification; 35 | 36 | public abstract class OnRPCNotificationListener { 37 | 38 | public abstract void onNotified(RPCNotification notification); 39 | } 40 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/security/ISecurityInitializedListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 - 2019, SmartDeviceLink Consortium, Inc. 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * Redistributions of source code must retain the above copyright notice, this 9 | * list of conditions and the following disclaimer. 10 | * 11 | * Redistributions in binary form must reproduce the above copyright notice, 12 | * this list of conditions and the following 13 | * disclaimer in the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * Neither the name of the SmartDeviceLink Consortium, Inc. nor the names of its 17 | * contributors may be used to endorse or promote products derived from this 18 | * software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 24 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 | * POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | package com.smartdevicelink.security; 33 | 34 | public interface ISecurityInitializedListener { 35 | void onSecurityInitialized(); 36 | } 37 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/streaming/IStreamListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 - 2019, SmartDeviceLink Consortium, Inc. 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * Redistributions of source code must retain the above copyright notice, this 9 | * list of conditions and the following disclaimer. 10 | * 11 | * Redistributions in binary form must reproduce the above copyright notice, 12 | * this list of conditions and the following 13 | * disclaimer in the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * Neither the name of the SmartDeviceLink Consortium, Inc. nor the names of its 17 | * contributors may be used to endorse or promote products derived from this 18 | * software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 24 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 | * POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | package com.smartdevicelink.streaming; 33 | 34 | import androidx.annotation.RestrictTo; 35 | 36 | import com.smartdevicelink.protocol.ProtocolMessage; 37 | 38 | @RestrictTo(RestrictTo.Scope.LIBRARY) 39 | public interface IStreamListener { 40 | void sendStreamPacket(ProtocolMessage pm); 41 | } -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/trace/ISTListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 - 2019, SmartDeviceLink Consortium, Inc. 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * Redistributions of source code must retain the above copyright notice, this 9 | * list of conditions and the following disclaimer. 10 | * 11 | * Redistributions in binary form must reproduce the above copyright notice, 12 | * this list of conditions and the following 13 | * disclaimer in the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * Neither the name of the SmartDeviceLink Consortium, Inc. nor the names of its 17 | * contributors may be used to endorse or promote products derived from this 18 | * software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 24 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 | * POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | package com.smartdevicelink.trace; 33 | 34 | public interface ISTListener { 35 | void logXmlMsg(String msg, String token); 36 | } // end-interface -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/util/CompareUtils.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.util; 2 | 3 | public class CompareUtils { 4 | 5 | public static boolean areStringsEqual(String string1, String string2, boolean ignoreCase, boolean nullIsEqual) { 6 | 7 | if (string1 == null) { 8 | if (string2 == null) { 9 | return nullIsEqual; 10 | } else { 11 | return false; 12 | } 13 | } else { 14 | //At least String 1 is not null, use it for the remaining checks 15 | if (ignoreCase) { 16 | return string1.equalsIgnoreCase(string2); 17 | } else { 18 | return string1.equals(string2); 19 | } 20 | } 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /base/src/main/java/com/smartdevicelink/util/IConsole.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 - 2019, SmartDeviceLink Consortium, Inc. 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * Redistributions of source code must retain the above copyright notice, this 9 | * list of conditions and the following disclaimer. 10 | * 11 | * Redistributions in binary form must reproduce the above copyright notice, 12 | * this list of conditions and the following 13 | * disclaimer in the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * Neither the name of the SmartDeviceLink Consortium, Inc. nor the names of its 17 | * contributors may be used to endorse or promote products derived from this 18 | * software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 24 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 | * POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | package com.smartdevicelink.util; 33 | 34 | 35 | public interface IConsole { 36 | void logInfo(String msg); 37 | 38 | void logError(String msg); 39 | 40 | void logError(String msg, Throwable ex); 41 | 42 | void logRPCSend(String rpcMsg); 43 | 44 | void logRPCReceive(String rpcMsg); 45 | } 46 | -------------------------------------------------------------------------------- /codecov.yml: -------------------------------------------------------------------------------- 1 | codecov: 2 | require_ci_to_pass: yes 3 | 4 | coverage: 5 | precision: 2 6 | round: down 7 | range: "70...100" 8 | 9 | status: 10 | project: 11 | default: 12 | target: 40% 13 | patch: 14 | default: 15 | target: 60% 16 | changes: no 17 | 18 | parsers: 19 | gcov: 20 | branch_detection: 21 | conditional: yes 22 | loop: yes 23 | method: no 24 | macro: no 25 | 26 | comment: 27 | layout: "reach,diff,flags,tree" 28 | behavior: default 29 | require_changes: no 30 | -------------------------------------------------------------------------------- /generator/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/generator/__init__.py -------------------------------------------------------------------------------- /generator/paths.ini: -------------------------------------------------------------------------------- 1 | ENUMS_PACKAGE = com.smartdevicelink.proxy.rpc.enums 2 | STRUCTS_PACKAGE = com.smartdevicelink.proxy.rpc 3 | FUNCTIONS_PACKAGE = com.smartdevicelink.proxy.rpc 4 | 5 | STRUCT_CLASS = com.smartdevicelink.proxy.RPCStruct 6 | REQUEST_CLASS = com.smartdevicelink.proxy.RPCRequest 7 | RESPONSE_CLASS = com.smartdevicelink.proxy.RPCResponse 8 | NOTIFICATION_CLASS = com.smartdevicelink.proxy.RPCNotification 9 | -------------------------------------------------------------------------------- /generator/requirements.txt: -------------------------------------------------------------------------------- 1 | xmlschema 2 | Jinja2 3 | coverage 4 | pathlib2 5 | flake8 -------------------------------------------------------------------------------- /generator/templates/javadoc_return.java: -------------------------------------------------------------------------------- 1 | {%- if p.description is defined %} 2 | {%- for d in p.description %} 3 | {%- if loop.index == 1 %} 4 | * @return {{p.return_type}} {{d}} 5 | {%- else %} 6 | * {{d}} 7 | {%- endif %}{%- endfor %} 8 | {%- else %} 9 | * @return {{p.return_type}} 10 | {%- endif %} 11 | {%- if p.values is defined and p.values %} 12 | * {%- for k in p.values %}{{ ' {' if loop.first}}"{{k}}": {{p.values[k]}}{{ ', ' if not loop.last else '}'}}{%- endfor %} 13 | {%- endif %}{% set see, deprecated, since, history, spacing, prefix = p.see, p.deprecated, p.since, p.history, ' ', ' * ' %} 14 | {%- include "javadoc_version_info.java" %} -------------------------------------------------------------------------------- /generator/templates/javadoc_template.java: -------------------------------------------------------------------------------- 1 | {%- if p.description is defined %} 2 | {%- for d in p.description %} 3 | {%- if loop.index == 1 %} 4 | * @param {{p.last}} {{d}} 5 | {%- else %} 6 | * {{d}} 7 | {%- endif %}{%- endfor %} 8 | {%- else %} 9 | * @param {{p.last}} 10 | {%- endif %} 11 | {%- if p.values is defined and p.values %} 12 | * {%- for k in p.values %}{{ ' {' if loop.first}}"{{k}}": {{p.values[k]}}{{ ', ' if not loop.last else '}'}}{%- endfor %} 13 | {%- endif %}{% set see, deprecated, since, history, spacing, prefix = p.see, p.deprecated, p.since, p.history, ' ', ' * ' %} 14 | {%- include "javadoc_version_info.java" %} -------------------------------------------------------------------------------- /generator/templates/javadoc_version_info.java: -------------------------------------------------------------------------------- 1 | {%- if since is defined and since is not none %} 2 | {%- if begin is defined %} 3 | {{spacing}}{{begin}} 4 | {%- endif %} 5 | {%- if deprecated is defined and deprecated is not none %} 6 | {{spacing}}{{prefix}}@since SmartDeviceLink {{history[0].since}} 7 | {%- if headerParam is defined and headerParam is not none %} 8 | {{spacing}}{{prefix}}@property-deprecated in SmartDeviceLink {{since}} 9 | {%- else %} 10 | {{spacing}}{{prefix}}@deprecated in SmartDeviceLink {{since}} 11 | {%- endif %} 12 | {%- elif history is defined and history is not none %} 13 | {{spacing}}{{prefix}}@since SmartDeviceLink {{history[0].since}} 14 | {%- else %} 15 | {{spacing}}{{prefix}}@since SmartDeviceLink {{since}} 16 | {%- endif %} 17 | {%- if see is defined %} 18 | {{spacing}}{{prefix}}@see {{see}} 19 | {%- endif %} 20 | {%- if end is defined %} 21 | {{spacing}}{{end}} 22 | {%- endif %} 23 | {%- endif %} -------------------------------------------------------------------------------- /generator/templates/struct_function_template.java: -------------------------------------------------------------------------------- 1 | {% extends "base_template.java" %} 2 | 3 | {% block body %} 4 | public class {{class_name}} extends {{extends_class}} { 5 | {%- block params %} 6 | {%- endblock %} 7 | 8 | /** 9 | * Constructs a new {{class_name}} object 10 | */ 11 | {%- block constructor_simple %} 12 | {% endblock %} 13 | 14 | /** 15 | * Constructs a new {{class_name}} object indicated by the Hashtable parameter 16 | * 17 | * @param hash The Hashtable to use 18 | */ 19 | public {{class_name}}(Hashtable hash) { 20 | super(hash); 21 | } 22 | {%- if params is defined %} 23 | {%- set constructor = [] %} 24 | {%- for p in params|selectattr('mandatory') %}{{ constructor.append('@NonNull ' + p.return_type + ' ' + p.last) or '' }} 25 | {%- endfor %} 26 | {%- if constructor|length > 0 %} 27 | 28 | /** 29 | * Constructs a new {{class_name}} object 30 | * 31 | {%- for p in params|selectattr('mandatory') %} 32 | {%- include "javadoc_template.java" %} 33 | {%- endfor %} 34 | */ 35 | public {{class_name}}({{ constructor|join(', ') }}) { 36 | this(); 37 | {%- for p in params|selectattr('mandatory') %} 38 | set{{p.title}}({{p.last}}); 39 | {%- endfor %} 40 | } 41 | {%- endif %} 42 | {%- endif %} 43 | 44 | {%- if params is defined %} 45 | {%- block setter %} 46 | {%- endblock%} 47 | {%- endif %} 48 | } 49 | {% endblock -%} 50 | -------------------------------------------------------------------------------- /generator/test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/generator/test/__init__.py -------------------------------------------------------------------------------- /generator/test/runner.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | """ 3 | Main entry point to run all tests 4 | """ 5 | import sys 6 | from pathlib import Path 7 | from unittest import TestLoader, TestSuite, TextTestRunner 8 | 9 | PATH = Path(__file__).absolute() 10 | 11 | sys.path.append(PATH.parents[1].joinpath('rpc_spec/InterfaceParser').as_posix()) 12 | sys.path.append(PATH.parents[1].as_posix()) 13 | 14 | try: 15 | from test_enums import TestEnumsProducer 16 | from test_functions import TestFunctionsProducer 17 | from test_structs import TestStructsProducer 18 | from test_code_format_and_quality import CodeFormatAndQuality 19 | except ImportError as message: 20 | print('{}. probably you did not initialize submodule'.format(message)) 21 | sys.exit(1) 22 | 23 | 24 | def main(): 25 | """ 26 | Main entry point to run all tests 27 | """ 28 | 29 | suite = TestSuite() 30 | suite.addTests(TestLoader().loadTestsFromTestCase(TestFunctionsProducer)) 31 | suite.addTests(TestLoader().loadTestsFromTestCase(TestEnumsProducer)) 32 | suite.addTests(TestLoader().loadTestsFromTestCase(TestStructsProducer)) 33 | suite.addTests(TestLoader().loadTestsFromTestCase(CodeFormatAndQuality)) 34 | 35 | runner = TextTestRunner(verbosity=2) 36 | ret = not runner.run(suite).wasSuccessful() 37 | sys.exit(ret) 38 | 39 | 40 | if __name__ == '__main__': 41 | main() 42 | -------------------------------------------------------------------------------- /generator/test/test_code_format_and_quality.py: -------------------------------------------------------------------------------- 1 | """Interface model unit test 2 | 3 | """ 4 | 5 | import unittest 6 | from os import walk 7 | from os.path import join 8 | from pathlib import Path 9 | 10 | from flake8.api import legacy as flake8 11 | 12 | 13 | class CodeFormatAndQuality(unittest.TestCase): 14 | 15 | def setUp(self): 16 | """Searching for all python files to be checked 17 | 18 | """ 19 | self.list_of_files = [] 20 | for (directory, _, filenames) in walk(Path(__file__).absolute().parents[1].as_posix()): 21 | self.list_of_files += [join(directory, file) for file in filenames 22 | if file.endswith('.py') and 'rpc_spec' not in directory] 23 | 24 | def test_check(self): 25 | """Performing checks by flake8 26 | 27 | """ 28 | style_guide = flake8.get_style_guide(max_line_length=120, ignore=['W504', 'N802']) 29 | report = style_guide.check_files(self.list_of_files) 30 | self.assertEqual(report.total_errors, 0) 31 | 32 | 33 | if __name__ == "__main__": 34 | unittest.main() 35 | -------------------------------------------------------------------------------- /generator/transformers/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/generator/transformers/__init__.py -------------------------------------------------------------------------------- /generator/transformers/generate_error.py: -------------------------------------------------------------------------------- 1 | """ 2 | Generate error. 3 | """ 4 | 5 | 6 | class GenerateError(Exception): 7 | """Generate error. 8 | 9 | This exception is raised when generator is unable to create 10 | output from given model. 11 | 12 | """ 13 | -------------------------------------------------------------------------------- /javaEE/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'java' 3 | } 4 | 5 | group 'com.smartdevicelink' 6 | 7 | sourceCompatibility = 1.7 8 | 9 | repositories { 10 | mavenCentral() 11 | } 12 | 13 | dependencies { 14 | } 15 | -------------------------------------------------------------------------------- /javaEE/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/javaEE/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /javaEE/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jan 25 11:10:08 EST 2019 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip 7 | -------------------------------------------------------------------------------- /javaEE/hello_sdl_java_ee/assets: -------------------------------------------------------------------------------- 1 | ../../javaSE/hello_sdl_java/assets/ -------------------------------------------------------------------------------- /javaEE/hello_sdl_java_ee/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'java' 3 | } 4 | 5 | version '1.0-SNAPSHOT' 6 | 7 | sourceCompatibility = 1.8 8 | 9 | repositories { 10 | mavenCentral() 11 | mavenLocal() 12 | google() 13 | } 14 | // This extraLibs solution is explained here: https://discuss.gradle.org/t/how-to-include-dependencies-in-jar/19571/5 15 | configurations { 16 | // configuration that holds jars to include in the jar 17 | extraLibs 18 | } 19 | dependencies { 20 | extraLibs fileTree(dir: 'libs', include: ['*.jar']) 21 | //testCompile group: 'junit', name: 'junit', version: '4.12' 22 | extraLibs project(path: ':javaEE') 23 | configurations.implementation.extendsFrom(configurations.extraLibs) 24 | 25 | } 26 | -------------------------------------------------------------------------------- /javaEE/hello_sdl_java_ee/src/main/java/com/smartdevicelink/Main.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink; 2 | 3 | /** 4 | * This is a sample of how to get Java EE Bean to work with an SDL application 5 | * The code can be uncommented out with the proper gradle dependencies added 6 | */ 7 | 8 | 9 | // @ServerEndpoint("/") 10 | // @Stateful(name = "SDLSessionEJB") 11 | public class Main { 12 | 13 | /* Session session; 14 | static Thread thread = null, mainThread; 15 | static Object LOCK; 16 | 17 | static com.smartdevicelink.SdlService sdlService; 18 | CustomTransport websocket; 19 | 20 | @OnOpen 21 | public void onOpen (Session session, EndpointConfig config) { 22 | websocket = new CustomTransport("http://localhost") { 23 | @Override 24 | public void onWrite(byte[] bytes, int offset, int length) { 25 | try { 26 | session.getBasicRemote().sendBinary(ByteBuffer.wrap(bytes)); 27 | } 28 | catch (IOException e) { 29 | 30 | } 31 | } 32 | }; 33 | this.session = session; 34 | sdlService = new com.smartdevicelink.SdlService(new CustomTransportConfig(websocket), sdlServiceCallback); 35 | sdlService.start(); 36 | } 37 | 38 | @OnMessage 39 | public void onMessage (ByteBuffer message, Session session) { 40 | websocket.onByteBufferReceived(message); 41 | } 42 | 43 | 44 | static final com.smartdevicelink.SdlService.SdlServiceCallback sdlServiceCallback = new com.smartdevicelink.SdlService.SdlServiceCallback() { 45 | @Override 46 | public void onEnd() { 47 | 48 | } 49 | }; 50 | */ 51 | } 52 | -------------------------------------------------------------------------------- /javaEE/javaEE/README.md: -------------------------------------------------------------------------------- 1 | ## SmartDeviceLink JavaEE 2 | 3 | The JavaEE project is meant to allow SDL compatibility for web applications. 4 | 5 | #### Dependency Managers 6 | 7 | To compile with the latest release of SDL JavaSE, include the following in your app's `build.gradle` file, 8 | 9 | ```sh 10 | repositories { 11 | mavenCentral() 12 | } 13 | dependencies { 14 | implementation 'com.smartdevicelink:sdl_java_se:5.1.0' 15 | } 16 | ``` 17 | 18 | #### Manually building a JAR 19 | 20 | If you prefer making a JAR, simply call: 21 | 22 | ```sh 23 | gradle build 24 | ``` 25 | from within the project and a JAR should be generated in the `build/libs` folder 26 | -------------------------------------------------------------------------------- /javaEE/javaEE/gradle.properties: -------------------------------------------------------------------------------- 1 | GROUP=com.smartdevicelink 2 | POM_ARTIFACT_ID=sdl_java_ee 3 | 4 | POM_NAME=sdl_java_ee 5 | POM_PACKAGING=jar 6 | 7 | POM_DESCRIPTION=The app library component of SDL is meant to run on the end user’s smart-device from within SDL enabled apps, as an embedded app, or connected to the cloud. App libraries allow the apps to connect to SDL enabled head-units and hardware through bluetooth, USB, and TCP for Android, and cloud and embedded apps can connect through web sockets, Java Beans, and other custom transports. Once the library establishes a connection between the smart device and head-unit through the preferred method of transport, the two components are able to communicate using the SDL defined protocol. The app integrating this library project is then able to expose its functionality to the head-unit through text, media, and other interactive elements. 8 | POM_INCEPTION_YEAR=2014 9 | 10 | POM_URL=https://github.com/smartdevicelink/sdl_java_suite 11 | POM_SCM_URL=https://github.com/smartdevicelink/sdl_java_suite 12 | POM_SCM_CONNECTION=scm:git@github.com:smartdevicelink/sdl_java_suite.git 13 | POM_SCM_DEV_CONNECTION=scm:git@github.com:smartdevicelink/sdl_java_suite.git 14 | 15 | POM_LICENCE_NAME=BSD 3-Clause 16 | POM_LICENCE_URL=https://opensource.org/licenses/BSD-3-Clause 17 | POM_LICENCE_DIST=repo 18 | 19 | RELEASE_REPOSITORY_URL=https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ 20 | SNAPSHOT_REPOSITORY_URL=https://s01.oss.sonatype.org/content/repositories/snapshots/ 21 | 22 | POM_DEVELOPER_ID= 23 | POM_DEVELOPER_NAME= 24 | POM_DEVELOPER_URL= 25 | 26 | signing.keyId= 27 | signing.password= 28 | signing.secretKeyRingFile= 29 | SONATYPE_NEXUS_USERNAME= 30 | SONATYPE_NEXUS_PASSWORD= 31 | -------------------------------------------------------------------------------- /javaEE/javaEE/libs/Taskmaster-0.6.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/javaEE/javaEE/libs/Taskmaster-0.6.jar -------------------------------------------------------------------------------- /javaEE/javaEE/src/test/java/com/smartdevicelink/test/TestValues.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test; 2 | 3 | import com.smartdevicelink.proxy.rpc.enums.FileType; 4 | 5 | import java.net.URI; 6 | 7 | public class TestValues { 8 | public static final boolean GENERAL_BOOLEAN = true; 9 | public static final byte[] GENERAL_BYTE_ARRAY = new byte[0]; 10 | public static final String GENERAL_STRING = "test"; 11 | public static final FileType GENERAL_FILETYPE = FileType.BINARY; 12 | public static final URI GENERAL_URI = URI.create("http://www.google.com"); 13 | } 14 | -------------------------------------------------------------------------------- /javaEE/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':javaEE', ':hello_sdl_java_ee' -------------------------------------------------------------------------------- /javaSE/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'java' 3 | } 4 | 5 | group 'com.smartdevicelink' 6 | 7 | sourceCompatibility = 1.8 8 | 9 | repositories { 10 | mavenCentral() 11 | } 12 | 13 | dependencies { 14 | } 15 | -------------------------------------------------------------------------------- /javaSE/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/javaSE/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /javaSE/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jan 25 17:44:56 EST 2019 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip 7 | -------------------------------------------------------------------------------- /javaSE/hello_sdl_java/assets/images/sdl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/javaSE/hello_sdl_java/assets/images/sdl.png -------------------------------------------------------------------------------- /javaSE/hello_sdl_java/assets/images/sdl_s_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/javaSE/hello_sdl_java/assets/images/sdl_s_green.png -------------------------------------------------------------------------------- /javaSE/hello_sdl_java/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'java' 3 | } 4 | 5 | version '1.0' 6 | 7 | sourceCompatibility = 1.7 8 | 9 | repositories { 10 | mavenCentral() 11 | mavenLocal() 12 | google() 13 | } 14 | // This extraLibs solution is explained here: https://discuss.gradle.org/t/how-to-include-dependencies-in-jar/19571/5 15 | configurations { 16 | // configuration that holds jars to include in the jar 17 | extraLibs 18 | } 19 | dependencies { 20 | extraLibs fileTree(dir: 'libs', include: ['*.jar']) 21 | extraLibs project(path: ':javaSE') 22 | configurations.implementation.extendsFrom(configurations.extraLibs) 23 | } 24 | jar { 25 | from { 26 | configurations.extraLibs.collect { it.isDirectory() ? it : zipTree(it) } 27 | } 28 | manifest { 29 | attributes 'Class-Path': configurations.compile.collect { it.getName() }.join(' ') 30 | attributes 'Main-Class': 'com.smartdevicelink.java.Main' 31 | } 32 | } -------------------------------------------------------------------------------- /javaSE/javaSE/README.md: -------------------------------------------------------------------------------- 1 | ## SmartDeviceLink JavaSE 2 | 3 | The JavaSE project is meant to allow SDL compatibility for embedded applications. 4 | 5 | #### Dependency Managers 6 | 7 | To compile with the latest release of SDL JavaSE, include the following in your app's `build.gradle` file, 8 | 9 | ```sh 10 | repositories { 11 | mavenCentral() 12 | } 13 | dependencies { 14 | implementation 'com.smartdevicelink:sdl_java_se:5.1.0' 15 | } 16 | ``` 17 | 18 | #### Manually building a JAR 19 | 20 | If you prefer making a JAR, simply call: 21 | 22 | ```sh 23 | gradle build 24 | ``` 25 | from within the project and a JAR should be generated in the `build/libs` folder -------------------------------------------------------------------------------- /javaSE/javaSE/gradle.properties: -------------------------------------------------------------------------------- 1 | GROUP=com.smartdevicelink 2 | POM_ARTIFACT_ID=sdl_java_se 3 | 4 | POM_NAME=sdl_java_se 5 | POM_PACKAGING=jar 6 | 7 | POM_DESCRIPTION=The app library component of SDL is meant to run on the end user’s smart-device from within SDL enabled apps, as an embedded app, or connected to the cloud. App libraries allow the apps to connect to SDL enabled head-units and hardware through bluetooth, USB, and TCP for Android, and cloud and embedded apps can connect through web sockets, Java Beans, and other custom transports. Once the library establishes a connection between the smart device and head-unit through the preferred method of transport, the two components are able to communicate using the SDL defined protocol. The app integrating this library project is then able to expose its functionality to the head-unit through text, media, and other interactive elements. 8 | POM_INCEPTION_YEAR=2014 9 | 10 | POM_URL=https://github.com/smartdevicelink/sdl_java_suite 11 | POM_SCM_URL=https://github.com/smartdevicelink/sdl_java_suite 12 | POM_SCM_CONNECTION=scm:git@github.com:smartdevicelink/sdl_java_suite.git 13 | POM_SCM_DEV_CONNECTION=scm:git@github.com:smartdevicelink/sdl_java_suite.git 14 | 15 | POM_LICENCE_NAME=BSD 3-Clause 16 | POM_LICENCE_URL=https://opensource.org/licenses/BSD-3-Clause 17 | POM_LICENCE_DIST=repo 18 | 19 | RELEASE_REPOSITORY_URL=https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ 20 | SNAPSHOT_REPOSITORY_URL=https://s01.oss.sonatype.org/content/repositories/snapshots/ 21 | 22 | POM_DEVELOPER_ID= 23 | POM_DEVELOPER_NAME= 24 | POM_DEVELOPER_URL= 25 | 26 | signing.keyId= 27 | signing.password= 28 | signing.secretKeyRingFile= 29 | SONATYPE_NEXUS_USERNAME= 30 | SONATYPE_NEXUS_PASSWORD= 31 | -------------------------------------------------------------------------------- /javaSE/javaSE/libs/Taskmaster-0.6.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smartdevicelink/sdl_java_suite/cc455270dbb8f7c59a75349d02040fe5ed1ad8bd/javaSE/javaSE/libs/Taskmaster-0.6.jar -------------------------------------------------------------------------------- /javaSE/javaSE/src/main/java/com/smartdevicelink/BuildConfig.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 - 2020, SmartDeviceLink Consortium, Inc. 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * * Redistributions of source code must retain the above copyright notice, this 9 | * list of conditions and the following disclaimer. 10 | * 11 | * * Redistributions in binary form must reproduce the above copyright notice, 12 | * this list of conditions and the following disclaimer in the documentation 13 | * and/or other materials provided with the distribution. 14 | * 15 | * * Neither the name of SmartDeviceLink Consortium, Inc. nor the names of its 16 | * contributors may be used to endorse or promote products derived from 17 | * this software without specific prior written permission. 18 | * 19 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 23 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 25 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 26 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 27 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | * 30 | */ 31 | package com.smartdevicelink; 32 | 33 | // THIS FILE IS AUTO GENERATED, DO NOT MODIFY!! 34 | public final class BuildConfig { 35 | public static final String VERSION_NAME = "5.7.0"; 36 | } -------------------------------------------------------------------------------- /javaSE/javaSE/src/main/java/com/smartdevicelink/managers/screen/AlertManager.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.managers.screen; 2 | import androidx.annotation.NonNull; 3 | import androidx.annotation.RestrictTo; 4 | 5 | import com.smartdevicelink.managers.ISdl; 6 | import com.smartdevicelink.managers.file.FileManager; 7 | 8 | /** 9 | * AlertManager
    10 | *

    11 | * Note: This class must be accessed through the SdlManager. Do not instantiate it by itself.
    12 | */ 13 | @RestrictTo(RestrictTo.Scope.LIBRARY) 14 | public class AlertManager extends BaseAlertManager { 15 | 16 | public AlertManager(@NonNull ISdl internalInterface, @NonNull FileManager fileManager) { 17 | super(internalInterface, fileManager); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /javaSE/javaSE/src/main/java/com/smartdevicelink/managers/screen/SubscribeButtonManager.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.managers.screen; 2 | 3 | import androidx.annotation.NonNull; 4 | import androidx.annotation.RestrictTo; 5 | 6 | import com.smartdevicelink.managers.ISdl; 7 | 8 | /** 9 | * SubscribeButtonManager
    10 | *

    11 | * Note: This class must be accessed through the SdlManager. Do not instantiate it by itself.
    12 | */ 13 | @RestrictTo(RestrictTo.Scope.LIBRARY) 14 | public class SubscribeButtonManager extends BaseSubscribeButtonManager { 15 | 16 | public SubscribeButtonManager(@NonNull ISdl internalInterface) { 17 | super(internalInterface); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /javaSE/javaSE/src/main/java/com/smartdevicelink/security/SdlSecurityBase.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 - 2019, SmartDeviceLink Consortium, Inc. 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * Redistributions of source code must retain the above copyright notice, this 9 | * list of conditions and the following disclaimer. 10 | * 11 | * Redistributions in binary form must reproduce the above copyright notice, 12 | * this list of conditions and the following 13 | * disclaimer in the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * Neither the name of the SmartDeviceLink Consortium, Inc. nor the names of its 17 | * contributors may be used to endorse or promote products derived from this 18 | * software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 24 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 | * POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | package com.smartdevicelink.security; 33 | 34 | public abstract class SdlSecurityBase extends AbstractSdlSecurityBase { 35 | 36 | } 37 | -------------------------------------------------------------------------------- /javaSE/javaSE/src/main/java/com/smartdevicelink/util/Log.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.util; 2 | 3 | public class Log { 4 | public static void i(String tag, String message) { 5 | System.out.print("\r\nI: " + tag + " - " + message); 6 | } 7 | 8 | public static void w(String tag, String message) { 9 | System.out.print("\r\nW: " + tag + " - " + message); 10 | } 11 | 12 | public static void e(String tag, String message, Throwable t) { 13 | if (t != null) { 14 | System.err.print("\r\nE: " + tag + " - " + message + " - " + t.getMessage()); 15 | } else { 16 | System.err.print("\r\nE: " + tag + " - " + message); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /javaSE/javaSE/src/test/java/com/smartdevicelink/test/TestValues.java: -------------------------------------------------------------------------------- 1 | package com.smartdevicelink.test; 2 | 3 | import com.smartdevicelink.proxy.rpc.enums.FileType; 4 | 5 | import java.net.URI; 6 | 7 | public class TestValues { 8 | public static final boolean GENERAL_BOOLEAN = true; 9 | public static final byte[] GENERAL_BYTE_ARRAY = new byte[0]; 10 | public static final String GENERAL_STRING = "test"; 11 | public static final FileType GENERAL_FILETYPE = FileType.BINARY; 12 | public static final URI GENERAL_URI = URI.create("http://www.google.com"); 13 | } 14 | -------------------------------------------------------------------------------- /javaSE/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':javaSE', ':hello_sdl_java' --------------------------------------------------------------------------------