diff --git a/en/application-dev/Readme-EN.md b/en/application-dev/Readme-EN.md index 8e42633391269303e5e8d888561281f57d1718ae..468563207a0e48c0078f3c7c71757fa05a3a6f46 100644 --- a/en/application-dev/Readme-EN.md +++ b/en/application-dev/Readme-EN.md @@ -8,14 +8,14 @@ - Quick Start - Getting Started - [Preparations](quick-start/start-overview.md) - - [Getting Started with eTS in the Traditional Coding Approach](quick-start/start-with-ets.md) - - [Getting Started with eTS in the Low-Code Approach](quick-start/start-with-ets-low-code.md) - - [Getting Started with JavaScript in the Traditional Coding Approach](quick-start/start-with-js.md) - - [Getting Started with JavaScript in the Low-Code Approach](quick-start/start-with-js-low-code.md) + - [Getting Started with eTS in Stage Model](quick-start/start-with-ets-stage.md) + - [Getting Started with eTS in FA Model](quick-start/start-with-ets-fa.md) + - [Getting Started with JavaScript in FA Model](quick-start/start-with-js-fa.md) - Development Fundamentals - [Application Package Structure Configuration File (FA Model)](quick-start/package-structure.md) - [Application Package Structure Configuration File (Stage Model)](quick-start/stage-structure.md) - [SysCap](quick-start/syscap.md) + - [HarmonyAppProvision Configuration File](quick-start/app-provision-structure.md) - Development - [Ability Development](ability/Readme-EN.md) - [UI Development](ui/Readme-EN.md) @@ -44,5 +44,8 @@ - [Component Reference (TypeScript-based Declarative Development Paradigm)](reference/arkui-ts/Readme-EN.md) - APIs - [JS and TS APIs](reference/apis/Readme-EN.md) + - Native APIs + - [Standard Libraries](reference/native-lib/third_party_libc/musl.md) + - [Node_API](reference/native-lib/third_party_napi/napi.md) - Contribution - [How to Contribute](../contribute/documentation-contribution.md) diff --git a/en/application-dev/napi/Readme-EN.md b/en/application-dev/napi/Readme-EN.md index d5297e9374fdf42b1b50fa2ac6e545fe9766971b..280efd8afa5fa845dab0d607ed94b33e2a75e6d3 100644 --- a/en/application-dev/napi/Readme-EN.md +++ b/en/application-dev/napi/Readme-EN.md @@ -2,6 +2,7 @@ - [Using Native APIs in Application Projects](napi-guidelines.md) - [Drawing Development](drawing-guidelines.md) -- [Native Window Development](native-window-guidelines.md) - [Raw File Development](rawfile-guidelines.md) +- [Native Window Development](native-window-guidelines.md) + diff --git a/en/application-dev/reference/apis/Readme-EN.md b/en/application-dev/reference/apis/Readme-EN.md index 09a65cea53e545c3afb58924b498512242a9285f..ab1c647783926f39c2d354357799cbd7752c9332 100644 --- a/en/application-dev/reference/apis/Readme-EN.md +++ b/en/application-dev/reference/apis/Readme-EN.md @@ -216,8 +216,8 @@ - [@ohos.pasteboard](js-apis-pasteboard.md) - [@ohos.screenLock](js-apis-screen-lock.md) - [@ohos.systemTime](js-apis-system-time.md) - - [@ohos.systemTimer](js-apis-system-timer.md) - [@ohos.wallpaper](js-apis-wallpaper.md) + - [@ohos.systemTimer](js-apis-system-timer.md) - [Timer](js-apis-timer.md) - Device Management diff --git a/en/application-dev/reference/apis/js-apis-windowAnimationManager.md b/en/application-dev/reference/apis/js-apis-windowAnimationManager.md new file mode 100644 index 0000000000000000000000000000000000000000..a85a31cfe87fdd9197dd7d75a143133c96bbc412 --- /dev/null +++ b/en/application-dev/reference/apis/js-apis-windowAnimationManager.md @@ -0,0 +1,267 @@ +# Window Animation Management +The **WindowAnimationManager** module provides APIs to listen for application start/exit events and window minimization/maximization events and associate animations with these events. + +> **NOTE** +> +> The APIs of this module are supported since API version 9. Updates will be marked with a superscript to indicate their earliest API version. +> +> The APIs provided by this module are system APIs. + +## Modules to Import + +```js +import windowAnimationManager from '@ohos.animation.windowAnimationManager' +``` + +## windowAnimationManager.setController + +setController(controller: WindowAnimationController): void + +Sets a window animation controller. + +**System capability**: SystemCapability.WindowManager.WindowManager.Core + +**Parameters** + +| Name| Type| Mandatory| Description| +| -------- | -------- | -------- | -------- | +| controller | [WindowAnimationController](#windowanimationcontroller) | Yes| Window animation controller to set.| + +**Example** + +```js +var controller = { + onStartAppFromLauncher(startingWindowTarget: WindowAnimationTarget, finishCallback: WindowAnimationFinishedCallback): void { + console.log('onStartAppFromLauncher', startingWindowTarget); + }, + onStartAppFromRecent(startingWindowTarget: WindowAnimationTarget, finishCallback: WindowAnimationFinishedCallback): void { + console.log('onStartAppFromRecent', startingWindowTarget); + }, + onStartAppFromOther(startingWindowTarget: WindowAnimationTarget, finishCallback: WindowAnimationFinishedCallback): void { + console.log('onStartAppFromOther', startingWindowTarget); + }, + onAppTransition(fromWindowTarget: WindowAnimationTarget, toWindowTarget: WindowAnimationTarget, finishCallback: WindowAnimationFinishedCallback): void { + }, + onMinimizeWindow(minimizingWindowTarget: WindowAnimationTarget, finishCallback: WindowAnimationFinishedCallback): void { + }, + onCloseWindow(closingWindowTarget: WindowAnimationTarget, finishCallback: WindowAnimationFinishedCallback): void { + }, + onScreenUnlock(finishCallback: WindowAnimationFinishedCallback): void { + } +} + +windowAnimationManager.setController(controller) +``` + +## WindowAnimationController + +Implements the window animation controller. + +**System capability**: SystemCapability.WindowManager.WindowManager.Core + +### onStartAppFromLauncher + +onStartAppFromLauncher(startingWindowTarget: WindowAnimationTarget,finishCallback: WindowAnimationFinishedCallback): void + +Called when an application is started from the home screen. + +**System capability**: SystemCapability.WindowManager.WindowManager.Core + +| Name | Type | Mandatory| Description | +| -------------------- | ------------------------------------------------------------ | ---- | ------------------ | +| startingWindowTarget | [WindowAnimationTarget](#windowanimationtarget) | Yes | Target window to display the animation. | +| finishCallback | [WindowAnimationFinishedCallback](#windowanimationfinishedcallback) | Yes | Callback invoked when the animation is finished.| + +**Example** + +```js +var controller = { + onStartAppFromLauncher(startingWindowTarget: WindowAnimationTarget, finishCallback: WindowAnimationFinishedCallback): void { + console.log('onStartAppFromLauncher', startingWindowTarget); + } +} +``` + +### onStartAppFromRecent + +onStartAppFromRecent(startingWindowTarget: WindowAnimationTarget,finishCallback:WindowAnimationFinishedCallback): void + +Called when an application is started from the recent task list. + +**System capability**: SystemCapability.WindowManager.WindowManager.Core + +| Name | Type | Mandatory| Description | +| -------------------- | ------------------------------------------------------------ | ---- | ------------------ | +| startingWindowTarget | [WindowAnimationTarget](#windowanimationtarget) | Yes | Target window to display the animation. | +| finishCallback | [WindowAnimationFinishedCallback](#windowanimationfinishedcallback) | Yes | Callback invoked when the animation is finished.| + +**Example** + +```js +var controller = { + onStartAppFromRecent(startingWindowTarget: WindowAnimationTarget, finishCallback: WindowAnimationFinishedCallback): void { + console.log('onStartAppFromRecent', startingWindowTarget); + } +} +``` + +### onStartAppFromOther + +onStartAppFromOther(startingWindowTarget: WindowAnimationTarget,finishCallback: WindowAnimationFinishedCallback): void + +Called when an application is started from a place other than the home screen and recent task list. + +**System capability**: SystemCapability.WindowManager.WindowManager.Core + +| Name | Type | Mandatory| Description | +| -------------------- | ------------------------------------------------------------ | ---- | ------------------ | +| startingWindowTarget | [WindowAnimationTarget](#windowanimationtarget) | Yes | Target window to display the animation. | +| finishCallback | [WindowAnimationFinishedCallback](#windowanimationfinishedcallback) | Yes | Callback invoked when the animation is finished.| + +**Example** + +```js +var controller = { + onStartAppFromOther(startingWindowTarget: WindowAnimationTarget, finishCallback: WindowAnimationFinishedCallback): void { + console.log('onStartAppFromOther', startingWindowTarget); + } +} +``` + +### onAppTransition + +onAppTransition(fromWindowTarget: WindowAnimationTarget, toWindowTarget: WindowAnimationTarget,finishCallback: WindowAnimationFinishedCallback): void + +Called during application transition. + +**System capability**: SystemCapability.WindowManager.WindowManager.Core + +| Name | Type | Mandatory| Description | +| -------------------- | ------------------------------- | ---- | ---------------- | +| fromWindowTarget | [WindowAnimationTarget](#windowanimationtarget) | Yes | Window that displays the animation before the transition.| +| toWindowTarget | [WindowAnimationTarget](#windowanimationtarget) | Yes | Window that displays the animation after the transition.| +| finishCallback | [WindowAnimationFinishedCallback](#windowanimationfinishedcallback) | Yes | Callback invoked when the animation is finished.| + +**Example** + +```js +var controller = { + onAppTransition(fromWindowTarget: WindowAnimationTarget, toWindowTarget: WindowAnimationTarget, + finishCallback: WindowAnimationFinishedCallback): void { + console.log('onAppTransition', fromWindowTarget); + } +} +``` + +### onMinimizeWindow + +onMinimizeWindow(minimizingWindowTarget: WindowAnimationTarget,finishCallback: WindowAnimationFinishedCallback): void + +Called when a window is minimized. + +**System capability**: SystemCapability.WindowManager.WindowManager.Core + +| Name | Type | Mandatory| Description | +| -------------------- | ------------------------------- | ---- | ---------------- | +| minimizingWindowTarget | [WindowAnimationTarget](#windowanimationtarget) | Yes | Target window to display the animation. | +| finishCallback | [WindowAnimationFinishedCallback](#windowanimationfinishedcallback) | Yes | Callback invoked when the animation is finished.| + +**Example** + +```js +var controller = { + onMinimizeWindow(minimizingWindowTarget: WindowAnimationTarget, finishCallback: WindowAnimationFinishedCallback): void { + console.log('onMinimizeWindow', minimizingWindowTarget); + } +} +``` + +### onCloseWindow + +onCloseWindow(closingWindowTarget: WindowAnimationTarget,finishCallback: WindowAnimationFinishedCallback): void + +Called when a window is closed. + +**System capability**: SystemCapability.WindowManager.WindowManager.Core + +| Name | Type | Mandatory| Description | +| -------------------- | ------------------------------- | ---- | ---------------- | +| closingWindowTarget | [WindowAnimationTarget](#windowanimationtarget) | Yes | Target window to display the animation. | +| finishCallback | [WindowAnimationFinishedCallback](#windowanimationfinishedcallback) | Yes | Callback invoked when the animation is finished.| + +**Example** + +```js +var controller = { + onCloseWindow(closingWindowTarget: WindowAnimationTarget, finishCallback: WindowAnimationFinishedCallback): void { + console.log('onCloseWindow', closingWindowTarget); + } +} +``` + +### onScreenUnlock + +onScreenUnlock(finishCallback: [WindowAnimationFinishedCallback](#windowanimationfinishedcallback)): void + +Called when the screen is unlocked. + +**System capability**: SystemCapability.WindowManager.WindowManager.Core + +| Name | Type | Mandatory| Description | +| -------------- | ------------------------------------------------------------ | ---- | ------------------ | +| finishCallback | [WindowAnimationFinishedCallback](#windowanimationfinishedcallback) | Yes | Callback invoked when the animation is finished.| + +**Example** + +```js +var controller = { + onScreenUnlock(finishCallback: WindowAnimationFinishedCallback): void { + console.log('onScreenUnlock'.); + } +} +``` + +## WindowAnimationFinishedCallback +Implements a callback that is invoked when the animation is finished. + +### onAnimationFinish + +onAnimationFinish():void + +Called when the animation is finished. + +**System capability**: SystemCapability.WindowManager.WindowManager.Core + +**Example** + +```js +var controller = { + onCloseWindow(closingWindowTarget: WindowAnimationTarget, finishCallback: WindowAnimationFinishedCallback): void { + finishCallback.onAnimationFinish(); + } +} +``` + +## WindowAnimationTarget +Defines a window to display animation. + +**System capability**: SystemCapability.WindowManager.WindowManager.Core + +| Name | Type | Description| +| ------- | ------ | ----------------------- | +| bundleName | string | Bundle name corresponding to the target window.| +| abilityName | string | Ability name corresponding to the target window.| +| windowBounds | [RRect](#rrect) | Actual size of the target window.| + +## RRect +Describes a rounded rectangle. + +**System capability**: SystemCapability.WindowManager.WindowManager.Core + +| Name | Type | Description| +| ------- | ------ | ----------------------- | +| left | number | Horizontal coordinate of the upper left corner of the target window relative to the screen.| +| top | number | Vertical coordinate of the upper left corner of the target window relative to the screen.| +| width | number | Width of the target window.| +| height | number | Height of the target window.| +| radius | number | Radius of the rounded corner of the target window.| diff --git a/en/application-dev/website.md b/en/application-dev/website.md index 0726f2d6fc16127147536e0a1c260db5a7a1c06d..f166c7ea95fddabafbc923d4af7dc791cddf3d70 100644 --- a/en/application-dev/website.md +++ b/en/application-dev/website.md @@ -4,10 +4,10 @@ - Quick Start - Getting Started - [Preparations](quick-start/start-overview.md) - - [Getting Started with eTS in the Traditional Coding Approach](quick-start/start-with-ets.md) - - [Getting Started with eTS in the Low-Code Approach](quick-start/start-with-ets-low-code.md) - - [Getting Started with JavaScript in the Traditional Coding Approach](quick-start/start-with-js.md) - - [Getting Started with JavaScript in the Low-Code Approach](quick-start/start-with-js-low-code.md) + - [Getting Started with eTS in Stage Model](quick-start/start-with-ets-stage.md) + - [Getting Started with eTS in FA Model](quick-start/start-with-ets-fa.md) + - [Getting Started with JavaScript in FA Model](quick-start/start-with-js-fa.md) + - Development Fundamentals - [Application Package Structure Configuration File (FA Model)](quick-start/package-structure.md) - [Application Package Structure Configuration File (Stage Model)](quick-start/stage-structure.md) @@ -180,9 +180,8 @@ - [Animation Frame](ui/ui-js-animate-frame.md) - [Custom Components](ui/ui-js-custom-components.md) - Common Event and Notification - - [Common Event and Notification Overview](notification/notification-brief.md) - - [Common Event Development](notification/common-event.md) + - [Common Event Development](notification/common-event.md) - [Notification Development](notification/notification-guidelines.md) - Agent-Powered Scheduled Reminder - [Agent-Powered Scheduled Reminder Overview](notification/background-agent-scheduled-reminder-overview.md) @@ -191,7 +190,9 @@ - Window Manager - Window - [Window Overview](windowmanager/window-overview.md) - - [Window Development](windowmanager/window-guidelines.md) + - [Application Window Development (Stage Mode)](windowmanager/application-window-stage.md) + - [Application Window Development (FA Model)](windowmanager/application-window-fa.md) + - [System Window Development (Stage Model Only)](windowmanager/system-window-stage.md) - Display - [Display Overview](windowmanager/display-overview.md) - [Display Development](windowmanager/display-guidelines.md) @@ -261,6 +262,9 @@ - Distributed Data Object - [Distributed Data Object Overview](database/database-distributedobject-overview.md) - [Distributed Data Object Development](database/database-distributedobject-guidelines.md) + - Data Share + - [DataShare Overview](database/database-datashare-overview.md) + - [DataShare Development](database/database-datashare-guidelines.md) - Task Management - Background Task Management - [Background Task Management Overview](task-management/background-task-overview.md) @@ -308,8 +312,9 @@ - Native APIs - [Using Native APIs in Application Projects](napi/napi-guidelines.md) - [Drawing Development](napi/drawing-guidelines.md) - - [Native Window Development](napi/native-window-guidelines.md) + - [Raw File Development](napi/rawfile-guidelines.md) + - [Native Window Development](napi/native-window-guidelines.md) - Tools - [DevEco Studio (OpenHarmony) User Guide](quick-start/deveco-studio-user-guide-for-openharmony.md) - Hands-On Tutorials @@ -589,6 +594,7 @@ - [@ohos.application.ServiceExtensionAbility](reference/apis/js-apis-service-extension-ability.md) - [@ohos.application.StartOptions](reference/apis/js-apis-application-StartOptions.md) - [@ohos.application.StaticSubscriberExtensionAbility](reference/apis/js-apis-application-staticSubscriberExtensionAbility.md) + - [@ohos.application.WindowExtensionAbility](reference/apis/js-apis-application-WindowExtensionAbility.md) - [AbilityContext](reference/apis/js-apis-ability-context.md) - [ApplicationContext](reference/apis/js-apis-application-applicationContext.md) - [AbilityStageContext](reference/apis/js-apis-abilitystagecontext.md) @@ -602,16 +608,23 @@ - [@ohos.ability.errorCode](reference/apis/js-apis-ability-errorCode.md) - [@ohos.ability.wantConstant](reference/apis/js-apis-ability-wantConstant.md) - [@ohos.application.abilityDelegatorRegistry](reference/apis/js-apis-abilityDelegatorRegistry.md) + - [@ohos.application.abilityManager](reference/apis/js-apis-application-abilityManager.md) + - [@ohos.application.AccessibilityExtensionAbility](reference/apis/js-apis-accessibility-extension-context.md) + - [@ohos.application.AccessibilityExtensionAbility](reference/apis/js-apis-application-AccessibilityExtensionAbility.md) - [@ohos.application.appManager](reference/apis/js-apis-appmanager.md) - [@ohos.application.Configuration](reference/apis/js-apis-configuration.md) - [@ohos.application.ConfigurationConstant](reference/apis/js-apis-configurationconstant.md) + - [@ohos.application.EnvironmentCallback](reference/apis/js-apis-application-EnvironmentCallback.md) + - [@ohos.application.errorManager](reference/apis/js-apis-errorManager.md) - [@ohos.application.formBindingData](reference/apis/js-apis-formbindingdata.md) - [@ohos.application.formError](reference/apis/js-apis-formerror.md) - [@ohos.application.formHost](reference/apis/js-apis-formhost.md) - [@ohos.application.formInfo](reference/apis/js-apis-formInfo.md) - - [@ohos.application.missionManager](reference/apis/js-apis-missionManager.md) - [@ohos.application.formProvider](reference/apis/js-apis-formprovider.md) + - [@ohos.application.missionManager](reference/apis/js-apis-missionManager.md) - [@ohos.application.Want](reference/apis/js-apis-application-Want.md) + - [@ohos.continuation.continuationManager](reference/apis/js-apis-continuation-continuationExtraParams.md) + - [@ohos.continuation.continuationManager](reference/apis/js-apis-continuation-continuationManager.md) - [@ohos.wantAgent](reference/apis/js-apis-wantAgent.md) - [abilityDelegator](reference/apis/js-apis-application-abilityDelegator.md) - [abilityDelegatorArgs](reference/apis/js-apis-application-abilityDelegatorArgs.md) @@ -621,6 +634,7 @@ - [MissionSnapshot](reference/apis/js-apis-application-MissionSnapshot.md) - [ProcessRunningInfo](reference/apis/js-apis-processrunninginfo.md) - [shellCmdResult](reference/apis/js-apis-application-shellCmdResult.md) + - [ContinuationResult](reference/apis/js-apis-continuation-continuationResult.md) - Common Event and Notification - [@ohos.commonEvent](reference/apis/js-apis-commonEvent.md) - [@ohos.events.emitter](reference/apis/js-apis-emitter.md) @@ -630,24 +644,36 @@ - Bundle Management - [@ohos.bundle](reference/apis/js-apis-Bundle.md) - [@ohos.bundle.defaultAppManager](reference/apis/js-apis-bundle-defaultAppManager.md) + - [@ohos.bundle.innerBundleManager](reference/apis/js-apis-Bundle-InnerBundleManager.md) - [@ohos.bundleState](reference/apis/js-apis-deviceUsageStatistics.md) + - [@ohos.distributedBundle](reference/apis/js-apis-Bundle-distributedBundle.md) - [@ohos.zlib](reference/apis/js-apis-zlib.md) - [AbilityInfo](reference/apis/js-apis-bundle-AbilityInfo.md) - [ApplicationInfo](reference/apis/js-apis-bundle-ApplicationInfo.md) - [BundleInfo](reference/apis/js-apis-bundle-BundleInfo.md) + - [BundleInstaller](reference/apis/js-apis-bundle-BundleInstaller.md) - [CustomizeData](reference/apis/js-apis-bundle-CustomizeData.md) + - [DispatchInfo](reference/apis/js-apis-dispatchInfo.md) - [ElementName](reference/apis/js-apis-bundle-ElementName.md) - [ExtensionAbilityInfo](reference/apis/js-apis-bundle-ExtensionAbilityInfo.md) - [HapModuleInfo](reference/apis/js-apis-bundle-HapModuleInfo.md) + - [LauncherAbilityInfo](reference/apis/js-apis-bundle-LauncherAbilityInfo.md) - [Metadata](reference/apis/js-apis-bundle-Metadata.md) - [ModuleInfo](reference/apis/js-apis-bundle-ModuleInfo.md) + - [PermissionDef](reference/apis/js-apis-bundle-PermissionDef.md) + - [RemoteAbilityInfo](reference/apis/js-apis-bundle-remoteAbilityInfo.md) + - [ShortcutInfo](reference/apis/js-apis-bundle-ShortcutInfo.md) - UI Page - [@ohos.animator](reference/apis/js-apis-animator.md) - [@ohos.mediaquery](reference/apis/js-apis-mediaquery.md) - [@ohos.prompt](reference/apis/js-apis-prompt.md) - [@ohos.router](reference/apis/js-apis-router.md) + - [@ohos.uiAppearance](reference/apis/js-apis-uiappearance.md) - Graphics + - [@ohos.animation.windowAnimationManager](reference/apis/js-apis-windowAnimationManager.md) - [@ohos.display](reference/apis/js-apis-display.md) + - [@ohos.effectKit](reference/apis/js-apis-effectKit.md) + - [@ohos.screen](reference/apis/js-apis-screen.md) - [@ohos.screenshot](reference/apis/js-apis-screenshot.md) - [@ohos.window](reference/apis/js-apis-window.md) - [webgl](reference/apis/js-apis-webgl.md) @@ -664,6 +690,7 @@ - [@ohos.resourceManager](reference/apis/js-apis-resource-manager.md) - Resource Scheduling - [@ohos.backgroundTaskManager](reference/apis/js-apis-backgroundTaskManager.md) + - [@ohos.distributedMissionManager](reference/apis/js-apis-distributedMissionManager.md) - [@ohos.workScheduler](reference/apis/js-apis-workScheduler.md) - [@ohos.WorkSchedulerExtensionAbility](reference/apis/js-apis-WorkSchedulerExtensionAbility.md) - Custom Management @@ -735,6 +762,7 @@ - [@ohos.screenLock](reference/apis/js-apis-screen-lock.md) - [@ohos.systemTime](reference/apis/js-apis-system-time.md) - [@ohos.wallpaper](reference/apis/js-apis-wallpaper.md) + - [@ohos.systemTimer](reference/apis/js-apis-system-timer.md) - [Timer](reference/apis/js-apis-timer.md) - Device Management - [@ohos.batteryInfo](reference/apis/js-apis-battery-info.md) diff --git a/en/design/hdi-design-specifications.md b/en/design/hdi-design-specifications.md new file mode 100644 index 0000000000000000000000000000000000000000..dcaf228795c5ffb81a5ddfc90a24aaaf9c7a8237 --- /dev/null +++ b/en/design/hdi-design-specifications.md @@ -0,0 +1,483 @@ +# OpenHarmony HDI Design Specifications + +## Overview + +Hardware device interface (HDI) provides a set of interfaces that function as a bridge between drivers and system services for data transmission. They have a direct impact on system efficiency, stability, compatibility, and reliability, as well as data accuracy and integrity. This document aims to standardize the design and development of OpenHarmony HDI interfaces, thereby ensuring consistent styles and complete functionalities for the interfaces. +This document is developed by the [driver SIG](https://gitee.com/openharmony/community/blob/master/sig/sig-driver/sig_driver.md) and approved by the [PMC](https://gitee.com/link?target=https%3A%2F%2Fwww.openharmony.cn%2Fcommunity%2Fpmc%2F). Any revision to this document must be reviewed by the driver SIG and approved by the PMC. + +**Acronyms** + +| Acronym | Full Spelling | +| --- | ------------------------------ | +| HDI | Hardware Device Interface | +| IDL | Interface Description Language | + +**Conventions** + +**Rule**: a convention that must be complied with + +**Rec**: a convention that should be considered + +**Note**: an explanation to a rule or rec + +**Change History** +| Version | Change Description | +| --- | --------------------- | +| v1.0 Beta | This issue is the initial version. | +| v1.0 | This issue is the official version. | + + +## Scope and Definition + +![](https://gitee.com/openharmony/docs/raw/master/en/design/figures/API-Category.png) + +Located between the system service layer and the device driver layer, HDI provides unified device function abstract interfaces for device developers. It shields the differences of devices from system services. + +## General Rules + +### Version Control + +The HDI version number must be in the format of `major.minor`, where `major` must be an integer increased in ascending order and `minor` is a one-digit integer. + +- A change in `major` indicates architecture adjustment or interface definition that is not backward compatible. + +- A change in `minor` indicates enhanced or extended interface definitions that are backward compatible. + +When `major` changes, `minor` is reset to `0`. + +[Example] + +For released vibrator interfaces: + +```cpp +package ohos.hdi.vibrator.v1_0; +interface IVibrator { + ... + SetModulationParameter([in] unsigned int vibrationPeriod, [in] int intensity, [in] int frequency); + ... +} +``` + +If the update to the existing interfaces does not affect version compatibility, for example, adding a function, adding an enum definition, or changing a variable name, change only `minor`, for example, to `ohos.hdi.vibrator.v1_1`, as follows: + +```cpp +package ohos.hdi.vibrator.v1_1; +interface IVibrator { + ... + SetModulationParameter([in] unsigned int vibrationPeriod, [in] int intensity, [in] int freq); + ... +} +``` + +If the original interface is renamed or the variable list is modified, change `major`, for example, to `ohos.hdi.vibrator.v2_0`, as follows: + +```cpp +package ohos.hdi.vibrator.v2_0; +interface IVibrator { + ... + SetModulationParameter([in] unsigned int vibrationPeriod, [in] int intensity, [in] int frequency, [int] time); + ... +} +``` + +### Review and Control + +HDI interfaces are provided to implement upper-layer system service requirements and perform hardware operations (such as initialization). New and updated interfaces must be fully reviewed and strictly controlled. Only interfaces that meet universal requirements can be added. + +Table 1 Interface review and control roles + +| **Role** | **Responsibility** | +| ----------- | ------------------------------------------------ | +| Contributor | Write HDI code and submit the code and design documents for review. | +| Committer | Review the HDI code, and submit the code to the domain SIG for further review. | +| Domain SIG | Review the new or updated HDI code.| +| Driver SIG | Review the new or updated HDI code. | +| PMC | Revise and publish this design specifications. | + +### Release + +- HDI review process + + ![](figures/HDI-Review-Process.png) + + The main process is as follows: + + 1. The contributor commits code and initiates a review. In addition to the code of new or updated HDI interfaces, the contributor must provide information about the HDI requirement source, usage scenario, permission design, and privacy protection design. For details, see "Review application composites" below. To increase the review efficiency, the contributor can email the design documents to the committer, domain SIG, and driver SIG before submitting the review application. + 2. The committer reviews the code and HDI interfaces. + 3. The domain SIG reviews the new or updated HDI interfaces. + 4. The driver SIG reviews and approves the new or updated HDI interfaces. + 5. The review is complete, and the code is merged. + +- Review application composites + + After the HDI design is complete, the domain SIG must organize an effective review and provide the following documents before HDI release: + + - Complete and reasonable test cases + + - **HDI version differences, with a clear addition or change scope** + + - Complete interface context, which must be provided in the design document to specify when and how to use each interface + + - Resource status transition diagram in the design document for resource-oriented interfaces + + - Compliance with the HDI design constraints proposed in this document + +- Requirements + + 1. Change `major` for any release that is incompatible with earlier versions. + + 2. Change `minor` for any interface released for function extension. + + 3. To deprecate any released interface: + + - The `deprecated` flag must be provided. + + - The deprecated interfaces must be retained in at least four OpenHarmony HDI versions. + +## HDI Design Constraints + +### Consistency + +#### [Rule] Use consistent nouns for terms. + +Multiple nouns with similar semantic meanings are not allowed to represent the same service object. Similarly, to avoid confusion, it is not allowed to use the same noun or linguistically close nouns for different service objects. + +#### [Rule] Keep the parameter sequence consistent. + +The sequence of a parameter or parameter group in multiple interfaces must be the same. + +For object-oriented C programming, place the interface object as the first parameter by convention. + +#### [Rule] Keep the memory ownership consistent. + +If the memory (storage data) passed through the input parameter (in) or output parameter (out) is allocated by the caller, the memory must be released by the caller. If the memory is allocated by the callee, it must be released by the callee. Regardless of whether data is passed from a service to a driver or received from a driver, the ownership of the data should not be changed, which must always be the memory allocator. + +[Example] + +```cpp +int (*OpenLayer)(uint32_t devId, const LayerInfo *layerInfo, uint32_t *layerId); +``` + +When **OpenLayer** is called, the graphics layer data memory is allocated based on the input parameter **layerInfo**, and a layer ID is returned. + +```cpp +int (*CloseLayer)(uint32_t devId, uint32_t layerId); +``` + +A **CloseLayer** interface must be provided to release the graphics layer data memory when the caller finishes the operation. + +#### [Rule] Provide a specific return value for every synchronous interface. + +When defining a synchronous interface, you must define the return value and provide necessary invocation status information to specify whether the invocation is successful. If the invocation fails, specify the cause of the failure. You can define a return value based on the actual error cause. + +[Exceptions] + +If an interface is unidirectional, which means that a value can be returned without waiting for the interface to be executed, use the keyword `one way` in the comment. Example: + +```cpp +/* one way */ +void WriteReady(); +``` + +### Naming + +#### [Rule] Name an interface in the format of "I" + "*interface name*". +Interface names must be concise, easy to understand, and accurate. Avoid redundant and misleading words, or rare abbreviations. + +[Example] +``` + /* Good */ + interface IBattery { + ... + } + + /* Bad: The Interface suffix is redundant. */ + interface IBatteryInterface { + ... + } +``` +#### [Rule] Name the HDI package in the format of "package ohos.hdi.[interface_name].v[major_version]_[minor_version]". +[Example] +``` + /* Good */ + package ohos.hdi.battery.v1_0; + interface IBattery { + ... + } + + /* Bad: The hdi namespace and version information are missing. */ + package ohos.battery; + interface IBattery { + ... + } +``` +#### [Rule] Name classes, structs, functions, and parameters in camel case. +**Camel case style** +Camel case is the practice of writing words without spaces. It indicates the separation of words with a single capitalized letter, and the first word starts with either case, bringing about **UpperCamelCase** and **lowerCamelCase**. + + +| Type | Style | +| ---------------------------------------- | --------- | +| Interface types, functions, struct types, enum types, and union types | UpperCamelCase | +| Parameters, and member variables in a struct or union| lowerCamelCase | +| Constants and enums | All uppercase letters, separated by underscores (_)| + +#### [Rule] Use the interface class name as the interface file name and `.idl` as the file name extension. +- An independent interface file must be provided for every interface class, and the file name must be the same as that of the interface class (UpperCamelCase) and end with `.idl`. +- The description file of the type definition must be named `Types.idl` or `ExampleTypes.idl`. + +[Example] + +``` + package ohos.hdi.battery.v1_0; + interface IBattery { + ... + } +``` + The interface description file must be named `IBattery.idl`. + +### Ease to Use + +#### [Rule] Follow the single responsibility principle. + +The functionalities of each interface must be stable and clear, and the trigger source of interface changes must be unique. + +[Example] + +When the device status consists of the power status and port status, use two interfaces rather than one. + +**Correct Example** + +```cpp +int UpdatePowerState(int_t deviceId, int status); // This interface is used to update the power status of the device. + +int UpdatePortStatus(int deviceId, int status); // This interface is used to update the port status of the device. +``` + +**Incorrect Example** + +```cpp +int UpdateDeviceStatus(int deviceId, int powerStatus, int portStatus); +``` + +#### [Rule] Consider cohesion during interface parameter design. + +When defining an interface parameter, consider whether to pass the parameter separately or encapsulate the parameter in a struct based on the following factors: + +1. Is there a meaningful encapsulation boundary? + + If there is obvious cohesion or association between parameters, you can encapsulate these parameters in a struct. + +2. Is there any other use of this struct if structured parameters are used? + + If no, pass the parameter separately. + +3. Does a parameter group occur in multiple interfaces? + + If yes, you can pass these parameters as a struct. In this case, you also need to consider whether these parameter groups are cohesive. + +4. Is there a large number of optional parameters, or do they usually be assigned a default value? + + If yes, you can use a struct to simplify the invocation. + +[Example] + +Audio sampling attributes include the sampling format, sampling frequency, and number of channels. These attributes are also sampling related and can be passed as a struct. + +```cpp +struct AudioSampleAttributes +{ + enum AudioFormat format; + uint32_t sampleRate; + uint32_t channelCount; +}; +``` + +#### [Rule] Make interfaces of different device types independent from each other. + +Interfaces are managed by driver type, such as `Camera`, `Input`, `Display`, `Audio`, `Sensor`, and `Storage`. Interfaces of different device types should not depend on each other. It is recommended that common capabilities that may be used by more than two types of driver modules be abstracted as common interfaces and archived to the common interface capability library for management. + +[Exceptions] + +There is no restriction on the interfaces that provide common capabilities. For example, the definition of primitive types and the declaration of interfaces can be referenced by all interfaces. + +### Privacy Protection + +### [Rule] Consider privacy security. + +System services can access data such as device information and identifiers through drivers. Certain information, such as device names, serial numbers, and device addresses, is sensitive data defined in privacy protection specifications. During HDI design, pay attention to the use of these fields and review them carefully and thoroughly to ensure that the interfaces will never expose sensitive information. + +[Example] + +`Bluetooth` addresses are mainly used in device discovery and connection scenarios. When a device is discoverable, the `Bluetooth` address could be used for personal tracking. + +The major purpose of obtaining a `Bluetooth` address is to uniquely identify a device. Therefore, you can convert the `Bluetooth` address into a unique identifier for invocation or restrict the application scope of this interface. + +### Permission Control + +#### [Rule] Minimize the interface permissions. + +All behaviors across application sandboxes must be controlled by permissions. A specific permission can be granted only to applications that have legitimate service requirements. + +### Performance + +#### [Rule] Consider data transmission efficiency. + +Drivers have a large number of data transmission interfaces. Data transmission may involve inter-process communication (IPC), which increases system overheads or even trigger system scheduling. Therefore, you need to consider all situations when defining interfaces. For the data that must be transmitted between processes with low overhead and low latency, you can use the shared memory or message queue. + +[Example] + +Define a data transmission interface for a driver module as follows: + +```cpp +// IPC is not involved (direct interface calling). +int WriteData (...); // Define the data address pointer and data length as input parameters. + +/* + * IPC is involved. + * + * Define a shared memory or message queue object as the input parameter. + * In this way, data can be efficiently transmitted (since repetitive operations can be minimized). + */ +int PrepareWriteData(…); +``` + +#### [Rec] Consider the interface execution time. + +To improve IPC performance, you are advised to use asynchronous processing for time-consuming services on the server. If the client needs to wait for the result synchronously, you are advised to add a block on the client and use the asynchronous callback mode so that the IPC channel can be released in time. + +[Example] + +The `Camera` driver provides a device initialization interface, the execution of which takes more than 150 ms due to software and hardware reasons. If this interface uses synchronous mode, the camera HDI service IPC thread may be occupied for a long time, and other requests fail to be responded in time. It is more reasonable to design this interface as an asynchronous one. A callback can be used to return the initialization result to the client. If the client needs to wait for the return value before continuing other operations, it can block the process and wait for the callback result. + +#### [Rec] Minimize the number of new process entities. + +To reduce the system overhead, interfaces of the same type in the same subsystem must be deployed in the same process. Add processes only when they are necessary. + +### Power Consumption + +#### [Rule] Consider system power consumption. + +When the caller releases hardware resources, the corresponding driver module should release the wake lock so the system will not be prevented from sleeping. + +### Reliability + +#### [Rule] Mutual dependency is forbidden for the lifecycle of interface parameters. + +The lifecycle of interface parameters must be independent. Mutual dependency is prohibited. Pointer parameters should not point to the memory of other objects, for example, the serialized memory. This is because when the serialized memory is passed to the peer function, the memory block lifecycle disappears after the parameter is parsed, but the pointer may be passed between different functions, resulting in vulnerabilities such as Used After Free (UAF). + +[Example] + +Both `ReadUnpadBuffer` and `ReadCString` return a pointer variable that points to the internal memory of the serialized object. When the server callback is triggered, the serialized object used to pass the parameters is destroyed and the memory is free. If other processes on the server still use the pointers returned by the two interfaces, crash may occur due to the UAF. + +The correct practice is to copy the data to the memory managed by the service before using the data after the service response interface returns the data. + +#### [Rule] Consider reentrancy. + +Interfaces often need to support multiple clients, and a single client may have concurrent requests. Therefore, you must consider reentrancy during HDI design. To ensure correct processing of reentrant interfaces, use locks or semaphores to protect critical resources. + +[Example] + +A driver service provides resource request and release interfaces. When two clients request resources at the same time, if reentrancy is not considered for critical resources on the server, resources may be released in advance or cannot be released due to management data read/write competition. The correct practice is to lock critical resources. + +#### [Rec] Consider the transmission buffer capability. + +No flow control is posed on the amount of data sent in an interface or callback. However, if the data volume of an interface exceeds the maximum transmission buffer size, consider using a block until the resource is available. + +[Example] + +When memory application fails, you can use a semaphore to block the current thread until the memory is available. + +#### [Rule] Do not pass function pointers across address spaces. + +Virtual address space isolation is used between processes. Passing function pointers through IPC will cause access exceptions. Therefore, do not pass function pointers. To implement a callback function, use a callback object instead. + +[Example] + +The Wi-Fi module provides an interface to receive a callback triggered when the client accepts the server request. An incorrect practice is to write the function pointer implemented by the client to the serialized object, which causes a crash when the function pointer is called on the server. + +The correct practice is to design and implement the callback interface using a callback object, and pass the callback object to the server through the serialization interface, so the server can trigger the callback when needed. + +### Compatibility + +#### [Rule] Verify the version number before the client calls an interface. + +Due to the independent component update policy, the version number of an interface on the client may be different from that on the server. This requires the client to verify the version number on the server and use the matching version to call the interface on the server. + +[Example] + +Assume that the TP module provides interfaces of versions 1.0 and 1.1. The later version has new interfaces. The components on the client have updated to 1.1, and the server still uses 1.0. If the client directly calls an interface of 1.1 on the server, an error may occur. Instead, the client must use the service version query interface to check the server version. If the server version is 1.0, the client must use the interface of 1.0 to call the server. + +#### [Rule] Release HDI interfaces in .idl format. + +Currently, Unix-like drivers use virtual file system (VFS) interfaces to expose internal interfaces. The user mode and kernel mode communicate with each other using system calls. They are packed in different images, and two sets of interfaces are maintained separately. To ensure the consistency of the interface definition and parameter format between the two and consider the design objective of cross-kernel hardware driver foundation (HDF) deployment, release interfaces in .idl format and use a tool to generate interfaces of the target form. In addition, the user-mode caller is not allowed to operate the driver VFS interfaces through the file interface. This causes the framework to strongly depend on the kernel and violates the principle of depending on the interface instead of the implementation. + +Recommended practice: The driver provides interfaces in .idl format and encapsulates the access to the kernel device in the interface implementation. + +[Example] + +An input device provides query interfaces for attributes such as the device type and data precision. The input service should not directly access the VFS interface created by the kernel in open-ioctl mode. Instead, the input driver should provide an interface to abstract the input device as an object. Then the input service calls this interface to implement the required functionalities. + +### Documentation + +#### [Rule] Release HDI interfaces in .idl format. +To ensure interface compatibility and consistency, release interfaces in .idl format. It is prohibited to directly release interfaces in C/C++ header files. + + +#### [Rule] Provide an interface description during interface release. +The interface description must contain the interface functionality, parameter value range, return values, and precautions. The description text must be placed above the interface description in the .idl file and released with the interface. + +[Example] + +``` +/** + * @brief Obtains the executor information. + * + * @param executorInfo Indicates the executor information. For details, see {@link ExecutorInfo}. + * + * @return Returns 0 if the operation is successful. + * @return Returns a non-zero value if the operation fails. + */ +GetExecutorInfo([out] struct ExecutorInfo executorInfo); +``` + +### Programming Languages + +To ensure data interworking between interfaces implemented in different programming languages, follow the restrictions below when using data types in the interface description. + +#### Constraints on using basic data types + +| IDL Data Type | C++ Data Type | C Data Type | Data Length (Bytes)| +| -------------- | ----------- | --------------- | ----------- | +| void | void | void | NA | +| boolean | bool | bool | 1 | +| byte | int8_t | int8_t | 1 | +| short | int16_t | int16_t | 2 | +| int | int32_t | int32_t | 4 | +| long | int64_t | int64_t | 8 | +| float | float | float | 4 | +| double | double | double | 8 | +| String | std::string | char*, int size | NA | +| unsigned char | uint8_t | uint8_t | 1 | +| unsigned short | uint16_t | uint16_t | 2 | +| unsigned int | uint32_t | uint32_t | 4 | +| unsigned long | uint64_t | uint64_t | 8 | + +#### Constraints on Using Container Types + +| IDL Container Data Type| C++ Data Type | C Data Type | +| ----------- | ------------ | ----------- | +| List | std::list | T*,int size | + +#### Constraints on Using Array Types + +| IDL Array Data Type | C++ Data Type | C Data Type | +| --------- | -------------- | ----------- | +| T[] | std::vector | T*,int size | + +#### Constraints on Using Custom Types + +| IDL Custom Data Type| C++ Data Type| C Data Type | +| ------- | ------- | ------ | +| struct | struct | struct | +| enum | enum | enum | diff --git a/en/device-dev/kernel/Readme-EN.md b/en/device-dev/kernel/Readme-EN.md index b7b289d4c0a9814fed92f8829618077b7588f2ad..57a6f3af33363b13abc5ab100c5ccbd7bbf5fea4 100644 --- a/en/device-dev/kernel/Readme-EN.md +++ b/en/device-dev/kernel/Readme-EN.md @@ -19,13 +19,13 @@ - [Software Timer](kernel-mini-basic-soft.md) - Extended Components - [C++ Support](kernel-mini-extend-support.md) - - [PUP](kernel-mini-extend-cpup.md) + - [CPUP](kernel-mini-extend-cpup.md) - [Dynamic Loading](kernel-mini-extend-dynamic-loading.md) - - [File System](kernel-mini-extend-file.md) + - File System - [FAT](kernel-mini-extend-file-fat.md) - [LittleFS](kernel-mini-extend-file-lit.md) - Kernel Debugging - - [Memory Debugging](kernel-mini-memory-debug.md) + - Memory Debugging - [Memory Information Statistics](kernel-mini-memory-debug-mes.md) - [Memory Leak Check](kernel-mini-memory-debug-det.md) - [Memory Corruption Check](kernel-mini-memory-debug-cet.md) @@ -52,25 +52,25 @@ - Memory Management - [Heap Memory Management](kernel-small-basic-memory-heap.md) - [Physical Memory Management](kernel-small-basic-memory-physical.md) - - [Virtual Memory Management](kernel-small-basic-memory-virtual.md) - - [Virtual-to-Physical Mapping](kernel-small-basic-inner-reflect.md) + - [Virtual Memory Management](kernel-small-basic-memory-virtual.md) + - [Virtual-to-Physical Mapping](kernel-small-basic-inner-reflect.md) - Kernel Communication Mechanisms - [Event](kernel-small-basic-trans-event.md) - - [Semaphore](kernel-small-basic-trans-semaphore.md) - - [Mutex](kernel-small-basic-trans-mutex.md) + - [Semaphore](kernel-small-basic-trans-semaphore.md) + - [Mutex](kernel-small-basic-trans-mutex.md) - [Queue](kernel-small-basic-trans-queue.md) - [RW Lock](kernel-small-basic-trans-rwlock.md) - [Futex](kernel-small-basic-trans-user-mutex.md) - [Signal](kernel-small-basic-trans-user-signal.md) - [Time Management](kernel-small-basic-time.md) - - [Software Timer](kernel-small-basic-softtimer.md) - - [Atomic Operation](kernel-small-basic-atomic.md) + - [Software Timer](kernel-small-basic-softtimer.md) + - [Atomic Operation](kernel-small-basic-atomic.md) - Extension Components - [System Call](kernel-small-bundles-system.md) - [Dynamic Loading and Linking](kernel-small-bundles-linking.md) - [Virtual Dynamic Shared Object](kernel-small-bundles-share.md) - [LiteIPC](kernel-small-bundles-ipc.md) - - [File Systems](kernel-small-bundles-fs.md) + - File Systems - [Virtual File System](kernel-small-bundles-fs-virtual.md) - Supported File Systems - [FAT](kernel-small-bundles-fs-support-fat.md) diff --git a/en/device-dev/subsystems/Readme-EN.md b/en/device-dev/subsystems/Readme-EN.md index 10fa420829ca9719fa7b64437fcfb28d01bf4736..e7b6277d2eb3a9baf053e45cd3d1183010e0e540 100644 --- a/en/device-dev/subsystems/Readme-EN.md +++ b/en/device-dev/subsystems/Readme-EN.md @@ -77,7 +77,6 @@ - [init Module](subsys-boot-init.md) - [appspawn Module](subsys-boot-appspawn.md) - [bootstrap Module](subsys-boot-bootstrap.md) - - [syspara Module](subsys-boot-syspara.md) - [FAQs](subsys-boot-faqs.md) - [Reference](subsys-boot-ref.md) - [Test Case Development](subsys-testguide-test.md) @@ -98,7 +97,7 @@ - [FaultLogger Development](subsys-dfx-faultlogger.md) - R&D Tools - [bytrace](subsys-toolchain-bytrace-guide.md) - - [hdc\_std](subsys-toolchain-hdc-guide.md) + - [hdc_std](subsys-toolchain-hdc-guide.md) - [hiperf](subsys-toolchain-hiperf.md) - [XTS Test Case Development](subsys-xts-guide.md) diff --git a/en/device-dev/website.md b/en/device-dev/website.md index b163beb0a6c41e2c5751e7e6ea4af656b7f7c575..ea06b5c5ef8310861771f17ab8a39ae36086fe64 100644 --- a/en/device-dev/website.md +++ b/en/device-dev/website.md @@ -473,7 +473,6 @@ - [init Module](subsystems/subsys-boot-init.md) - [appspawn Module](subsystems/subsys-boot-appspawn.md) - [bootstrap Module](subsystems/subsys-boot-bootstrap.md) - - [syspara Module](subsystems/subsys-boot-syspara.md) - [FAQs](subsystems/subsys-boot-faqs.md) - [Reference](subsystems/subsys-boot-ref.md) - DFX diff --git a/en/release-notes/OpenHarmony-v3.0.5-LTS.md b/en/release-notes/OpenHarmony-v3.0.5-LTS.md new file mode 100644 index 0000000000000000000000000000000000000000..c5ef0fc752f928dcde65c8db9e321bee1ad50339 --- /dev/null +++ b/en/release-notes/OpenHarmony-v3.0.5-LTS.md @@ -0,0 +1,134 @@ +# OpenHarmony 3.0.5 LTS + + +## Version Description + +OpenHarmony 3.0.5 LTS is a maintenance version of OpenHarmony 3.0 LTS. This version has rectified certain issues detected in OpenHarmony 3.0.3 LTS and provides the following capability updates. + +**Enhanced capabilities for the small system** + +The DFX subsystem supports native crash information collection and device restart fault locating. The communication subsystem supports basic STA capabilities. + + +## Version Mapping + + **Table 1** Version mapping of software and tools + +| Software/Tool| Version| Remarks| +| -------- | -------- | -------- | +| OpenHarmony | 3.0.5 LTS| NA | +| (Optional) HUAWEI DevEco Studio| 3.0 Beta1| Recommended for developing OpenHarmony applications| +| (Optional) HUAWEI DevEco Device Tool| 2.2 Beta2 | Recommended for developing OpenHarmony smart devices| + + +## Source Code Acquisition + + +### Prerequisites + +1. Register your account with Gitee. + +2. Register an SSH public key for access to Gitee. + +3. Install the [git client](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) and [git-lfs](https://gitee.com/vcs-all-in-one/git-lfs?_from=gitee_search#downloading), and configure user information. + + ``` + git config --global user.name "yourname" + git config --global user.email "your-email-address" + git config --global credential.helper store + ``` + +4. Run the following commands to install the **repo** tool: + + ``` + curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo # If you do not have the permission, download the tool to another directory and configure it as an environment variable by running the chmod a+x /usr/local/bin/repo command. + pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests + ``` + + +### Acquiring Source Code Using the repo Tool + +**Method 1 (recommended)**: Use the **repo** tool to download the source code over SSH. (You must have an SSH public key for access to Gitee.) + + +``` +repo init -u git@gitee.com:openharmony/manifest.git -b refs/tags/OpenHarmony-v3.0.5-LTS --no-repo-verify +repo sync -c +repo forall -c 'git lfs pull' +``` + +**Method 2**: Use the **repo** tool to download the source code over HTTPS. + + +``` +repo init -u https://gitee.com/openharmony/manifest.git -b refs/tags/OpenHarmony-v3.0.5-LTS --no-repo-verify +repo sync -c +repo forall -c 'git lfs pull' +``` + + +### Acquiring Source Code from Mirrors + + **Table 2** Mirrors for acquiring source code + +| LTS Code| Version| Mirror| SHA-256 Checksum| +| -------- | -------- | -------- | -------- | +| Full code base (for mini, small, and standard systems)| 3.0.5 | [Download](https://repo.huaweicloud.com/openharmony/os/3.0.5/code-v3.0.5-LTS.tar.gz) | [Download](https://repo.huaweicloud.com/openharmony/os/3.0.5/code-v3.0.5-LTS.tar.gz.sha256)| +| Standard system Hi3516 solution (binary)| 3.0.5 | [Download](https://repo.huaweicloud.com/openharmony/os/3.0.5/standard.tar.gz)| [Download](https://repo.huaweicloud.com/openharmony/os/3.0.5/standard.tar.gz.sha256)| +| Mini system Hi3861 solution (binary)| 3.0.5 | [Download](https://repo.huaweicloud.com/openharmony/os/3.0.5/hispark_pegasus.tar.gz)| [Download](https://repo.huaweicloud.com/openharmony/os/3.0.5/hispark_pegasus.tar.gz.sha256)| +| Small system Hi3516 solution - LiteOS (binary)| 3.0.5 | [Download](https://repo.huaweicloud.com/openharmony/os/3.0.5/hispark_taurus.tar.gz)| [Download](https://repo.huaweicloud.com/openharmony/os/3.0.5/hispark_taurus.tar.gz.sha256)| +| Small system Hi3516 solution - Linux (binary)| 3.0.5 | [Download](https://repo.huaweicloud.com/openharmony/os/3.0.5/hispark_taurus_linux.tar.gz)| [Download](https://repo.huaweicloud.com/openharmony/os/3.0.5/hispark_taurus_linux.tar.gz.sha256)| + + +## What's New + + +### Feature Updates + + **Table 3** New and enhanced features + +| Subsystem| Standard System| Mini and Small Systems| +| -------- | -------- | -------- | +| Communication| NA | Added basic STA capabilities for small-system devices (Linux).
The following requirements are involved:
I5AAFQ Supporting STA features such as scanning, connection, and automatic reconnection
I5AAFQ Dynamically obtaining IPv4 addresses for STA connections| +| DFX| NA | Added native crash information collection and device restart fault locating for small-system devices (Linux).
The following requirements are involved:
I57I8Y/I57TOE Collecting native crash information
I5C0QR Locating device restart faults on Linux 5.10| + + +### API Updates + +This version does not involve API updates. + + +### Chip and Development Board Adaptation + +For details about the adaptation status, see [SIG-Devboard](https://gitee.com/openharmony/community/blob/master/sig/sig-devboard/sig_devboard.md). + + +## Resolved Issues + + **Table 4** Resolved issues + +| Issue No.| Description| +| -------- | -------- | +| [I4YBB0](https://gitee.com/openharmony/multimedia_camera_lite/issues/I4YBB0) | No image is generated and the recorded video cannot be played when the system camera is used to take a photo and record a video. This issue occurs only for the Hi3516D V300 development board running on a small-system device (Linux).| +| [I4YB87](https://gitee.com/openharmony/multimedia_camera_lite/issues/I4YB87) | No image is generated when the system camera is used to take a photo. This issue occurs only for the Hi3516D V300 development board running on a small-system device (Linux).| +| [I4YAGS](https://gitee.com/openharmony/multimedia_camera_lite/issues/I4YAGS?from=project-issue) | A blue screen is displayed when the system camera is accessed. This issue occurs only for the Hi3516D V300 development board running on a small-system device (Linux).| +| [I59FZ7](https://gitee.com/openharmony/telephony_core_service/issues/I59FZ7) | Test cases of the telephony subsystem fail to run on standard-system devices.| +| [I4Z2MI](https://gitee.com/openharmony/xts_acts/issues/I4Z2MI) | All test cases of the actsWifiJSApiTest, ActsHotSpotJSApiTest, and ActsP2PJSApiTest modules fail to run on standard-system devices.| + + +## Fixed Security Vulnerabilities + +The following vulnerabilities are reported by the project teams. For details about the affected versions and patches released to fix the vulnerabilities, see [Security Vulnerability Disclosure](https://gitee.com/openharmony/security/tree/master/en/security-disclosure/2022). + + Table 5 Fixed security vulnerabilities + +| Vulnerability ID| Description| Impact| Affected Repository| +| -------- | -------- | -------- | -------- | +| OpenHarmony-SA-2022-0501 | The DSoftBus subsystem has a heap overflow vulnerability.| Attackers can launch attacks locally, causing out-of-bounds memory access and obtaining system control rights.| communication_dsoftbus | +| OpenHarmony-SA-2022-0502 | The DSoftBus subsystem has a heap overflow vulnerability when receiving TCP messages.| Attackers can launch attacks on the LAN to remotely execute code and obtain system control rights.| communication_dsoftbus | +| OpenHarmony-SA-2022-0503 | The DSoftBus subsystem has an out-of-bounds access vulnerability when processing device synchronization messages.| Attackers can launch DoS attacks on the LAN, causing out-of-bounds memory access.| communication_dsoftbus | +| OpenHarmony-SA-2022-0504 | A pointer member contained in the **Lock** class is repeatedly released.| Attackers can launch attacks locally to obtain system control rights.| global_resmgr_standard | +| OpenHarmony-SA-2022-0601 | The common event and notification subsystem has an authentication bypass vulnerability when deserializing objects.| Attackers can launch attacks locally to bypass permissions, causing server process breakdown.| notification_ces_standard | +| OpenHarmony-SA-2022-0602 | The common event and notification subsystem has a verification bypass vulnerability, which can initiate SA relay attacks.| Attackers can launch attacks locally to bypass verification and obtain system control rights.| notification_ces_standard | +| OpenHarmony-SA-2022-0603 | The update module has a verification bypass vulnerability, which can initiate SA relay attacks.| Attackers can launch attacks locally to bypass verification and obtain system control rights.| update_updateservice | +| OpenHarmony-SA-2022-0604 | The multimedia subsystem has a verification bypass vulnerability, which can initiate SA relay attacks.| Attackers can launch attacks locally to bypass verification and obtain system control rights.| multimedia_media_standard | diff --git a/en/release-notes/Readme.md b/en/release-notes/Readme.md index 58f1438575ec698af27aaab06cd3a31abc40887a..7137141a9f54b6d62b3f9ae3afeadf75ad607e10 100644 --- a/en/release-notes/Readme.md +++ b/en/release-notes/Readme.md @@ -5,6 +5,7 @@ - [OpenHarmony v3.1.1 Release (2022-05-31)](OpenHarmony-v3.1.1-release.md) - [OpenHarmony v3.1 Release (2022-03-30)](OpenHarmony-v3.1-release.md) - [OpenHarmony v3.1 Beta (2021-12-31)](OpenHarmony-v3.1-beta.md) +- [OpenHarmony v3.0.5 LTS (2022-07-01)](OpenHarmony-v3.0.5-LTS.md) - [OpenHarmony v3.0.3 LTS (2022-04-08)](OpenHarmony-v3.0.3-LTS.md) - [OpenHarmony v3.0.2 LTS (2022-03-18)](OpenHarmony-v3.0.2-LTS.md) - [OpenHarmony v3.0.1 LTS (2022-01-12)](OpenHarmony-v3.0.1-LTS.md)