├── .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 |
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
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
11 | * Note: This class must be accessed through the SdlManager. Do not instantiate it by itself.
6 | * This is set during SdlManager instantiation. Constructs a new CreateWindowResponse object indicated by the Hashtable
27 | * parameter Constructs a new DeleteWindowResponse object indicated by the Hashtable
28 | * parameter
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
11 | * Note: This class must be accessed through the SdlManager. Do not instantiate it by itself.
11 | * Note: This class must be accessed through the SdlManager. Do not instantiate it by itself.
10 | *
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
5 | *
7 | *
8 | *
10 | *
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 | *
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'
--------------------------------------------------------------------------------