提交 38b9c760 编写于 作者: W wenjun

add OpenHarmony 1.0 baseline

上级 e088d915

要显示的变更太多。

To preserve performance only 1000 of 1000+ files are displayed.
### 该问题是怎么引起的?
### 重现步骤
### 报错信息
### 相关的Issue
### 原因(目的、解决的问题等)
### 描述(做了什么,变更了什么)
### 测试用例(新增、改动、可能影响的功能)
1.0
Initial version
# OpenHarmony开发者文档<a name="ZH-CN_TOPIC_0000001054183022"></a>
此工程存放OpenHarmony提供的快速入门、开发指南、API参考等开发者文档,欢迎参与OpenHarmony开发者文档开源项目,与我们一起完善开发者文档。
[View English](docs-en/Readme-EN.md)
## 文档目录结构<a name="section135134412620"></a>
- quick-start:[快速入门](quick-start/Readme-CN.md)
- get-code:[获取源码/获取工具](get-code/Readme-CN.md)
- driver:[驱动](driver/Readme-CN.md)
- kernel:[内核](kernel/Readme-CN.md)
- subsystems:[子系统](subsystems/Readme-CN.md)
- bundles:[组件开发](bundles/Readme-CN.md)
- guide:[设备开发](guide/Readme-CN.md)
- security:[安全](security/Readme-CN.md)
- api-LinkIoT:[联接类模组API](api/api-LinkIoT/Readme-CN.md)
- api-SmartVision-Devices:[智慧视觉设备API](api/api-SmartVision-Devices/Readme-CN.md)
- contribute:[贡献](contribute/参与贡献.md)
- term:[术语](term/术语.md)
## 贡献<a name="section897211181655"></a>
非常欢迎您贡献文档,我们鼓励开发者以各种方式参与文档反馈和贡献。
您可以对现有文档进行评价、简单更改、反馈文档质量问题、贡献您的原创内容,详细请参考[贡献文档](contribute/贡献文档.md)
卓越贡献者将会在开发者社区文档贡献专栏表彰公示。
# AtCmdTbl<a name="ZH-CN_TOPIC_0000001055036452"></a>
## **Overview**<a name="section2064737160191858"></a>
**Related Modules:**
[Wifiiot](Wifiiot.md)
**Description:**
Defines the AT command registration structure.
## **Summary**<a name="section1571632696191858"></a>
## Data Fields<a name="pub-attribs"></a>
<a name="table1652590832191858"></a>
<table><thead align="left"><tr id="row1772459793191858"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p773912997191858"><a name="p773912997191858"></a><a name="p773912997191858"></a>Variable Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p1426608632191858"><a name="p1426608632191858"></a><a name="p1426608632191858"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row2032418511191858"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1902039158191858"><a name="p1902039158191858"></a><a name="p1902039158191858"></a><a href="AtCmdTbl.md#af9e3433c293ffaa1e60ccb07e051ef29">atCmdName</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1541237630191858"><a name="p1541237630191858"></a><a name="p1541237630191858"></a>char *&nbsp;</p>
</td>
</tr>
<tr id="row1471418372191858"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p92861653191858"><a name="p92861653191858"></a><a name="p92861653191858"></a><a href="AtCmdTbl.md#a01ef03a0c8669e107e2fd988514935ab">atCmdLen</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p964772384191858"><a name="p964772384191858"></a><a name="p964772384191858"></a>char&nbsp;</p>
</td>
</tr>
<tr id="row1455582246191858"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p2011214047191858"><a name="p2011214047191858"></a><a name="p2011214047191858"></a><a href="AtCmdTbl.md#ac4640c36b35e6986e5a2a5b82f3a880e">atTestCmd</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p162925060191858"><a name="p162925060191858"></a><a name="p162925060191858"></a>AtCallbackFunc&nbsp;</p>
</td>
</tr>
<tr id="row2067323084191858"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p686880580191858"><a name="p686880580191858"></a><a name="p686880580191858"></a><a href="AtCmdTbl.md#ae9395d9f2d87a304c6e068fadce74e99">atQueryCmd</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1892663102191858"><a name="p1892663102191858"></a><a name="p1892663102191858"></a>AtCallbackFunc&nbsp;</p>
</td>
</tr>
<tr id="row1460815620191858"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1413985929191858"><a name="p1413985929191858"></a><a name="p1413985929191858"></a><a href="AtCmdTbl.md#ae210d9f8e403f52c5f17f7fb716d5e29">atSetupCmd</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p104645735191858"><a name="p104645735191858"></a><a name="p104645735191858"></a>AtCallbackFunc&nbsp;</p>
</td>
</tr>
<tr id="row965911634191858"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p11872626191858"><a name="p11872626191858"></a><a name="p11872626191858"></a><a href="AtCmdTbl.md#a6f6aa00ff3315b14afcba9d649f73543">atExeCmd</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p33578643191858"><a name="p33578643191858"></a><a name="p33578643191858"></a>AtCallbackFunc&nbsp;</p>
</td>
</tr>
</tbody>
</table>
## **Details**<a name="section1254548727191858"></a>
## **Field Documentation**<a name="section205322858191858"></a>
## atCmdLen<a name="a01ef03a0c8669e107e2fd988514935ab"></a>
```
char AtCmdTbl::atCmdLen
```
**Description:**
AT command length
## atCmdName<a name="af9e3433c293ffaa1e60ccb07e051ef29"></a>
```
char* AtCmdTbl::atCmdName
```
**Description:**
AT command name
## atExeCmd<a name="a6f6aa00ff3315b14afcba9d649f73543"></a>
```
AtCallbackFunc AtCmdTbl::atExeCmd
```
**Description:**
AT command execution
## atQueryCmd<a name="ae9395d9f2d87a304c6e068fadce74e99"></a>
```
AtCallbackFunc AtCmdTbl::atQueryCmd
```
**Description:**
AT command query
## atSetupCmd<a name="ae210d9f8e403f52c5f17f7fb716d5e29"></a>
```
AtCallbackFunc AtCmdTbl::atSetupCmd
```
**Description:**
AT command setup
## atTestCmd<a name="ac4640c36b35e6986e5a2a5b82f3a880e"></a>
```
AtCallbackFunc AtCmdTbl::atTestCmd
```
**Description:**
AT test command
# Broadcast<a name="ZH-CN_TOPIC_0000001054915081"></a>
## **Overview**<a name="section90862446191845"></a>
Provides data subscription and data push for services.
With this module, the [Service](Service.md), [Feature](Feature.md), or other modules can broadcast events or data. All services that listen to these events or data can receive these broadcasts.
**Since:**
1.0
**Version:**
1.0
## **Summary**<a name="section39159338191845"></a>
## Data Structures<a name="nested-classes"></a>
<a name="table815182793191845"></a>
<table><thead align="left"><tr id="row929837741191845"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p2113461367191845"><a name="p2113461367191845"></a><a name="p2113461367191845"></a>Data Structure Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p350454567191845"><a name="p350454567191845"></a><a name="p350454567191845"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row69659156191845"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1020437120191845"><a name="p1020437120191845"></a><a name="p1020437120191845"></a><a href="Consumer.md">Consumer</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p284648885191845"><a name="p284648885191845"></a><a name="p284648885191845"></a>Defines the topic consumer used to receive events and push data. You need to implement this struct for your application. </p>
</td>
</tr>
<tr id="row174673196191845"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1481395820191845"><a name="p1481395820191845"></a><a name="p1481395820191845"></a><a href="Provider.md">Provider</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1674464760191845"><a name="p1674464760191845"></a><a name="p1674464760191845"></a>Defines the provider of events and data of a topic. </p>
</td>
</tr>
<tr id="row581420147191845"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p820203572191845"><a name="p820203572191845"></a><a name="p820203572191845"></a><a href="Subscriber.md">Subscriber</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1794404163191845"><a name="p1794404163191845"></a><a name="p1794404163191845"></a>Defines the subscriber for external interfaces to subsribe to events and data of a topic. </p>
</td>
</tr>
</tbody>
</table>
## Typedefs<a name="typedef-members"></a>
<a name="table1730218341191845"></a>
<table><thead align="left"><tr id="row549173102191845"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p1387307071191845"><a name="p1387307071191845"></a><a name="p1387307071191845"></a>Typedef Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p487914743191845"><a name="p487914743191845"></a><a name="p487914743191845"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row1500756878191845"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p958619328191845"><a name="p958619328191845"></a><a name="p958619328191845"></a><a href="Broadcast.md#gaf03f5bc94cad32ab628a6cdee09b0542">Topic</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1642576192191845"><a name="p1642576192191845"></a><a name="p1642576192191845"></a>typedef uint32&nbsp;</p>
<p id="p2122631873191845"><a name="p2122631873191845"></a><a name="p2122631873191845"></a>Indicates the topic of an event or data, which is used to distinguish different types of events or data. </p>
</td>
</tr>
</tbody>
</table>
## Enumerations<a name="enum-members"></a>
<a name="table1248040671191845"></a>
<table><thead align="left"><tr id="row1816210621191845"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p408800661191845"><a name="p408800661191845"></a><a name="p408800661191845"></a>Enumeration Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p1878578353191845"><a name="p1878578353191845"></a><a name="p1878578353191845"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row1942908505191845"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1066227017191845"><a name="p1066227017191845"></a><a name="p1066227017191845"></a><a href="Broadcast.md#ga98f7a28020aa045ad049d116e1ca666d">BroadcastErrCode</a> { <a href="Broadcast.md#gga98f7a28020aa045ad049d116e1ca666da200821a903aa0ca4df7e25d2a0a3186b">EC_ALREADY_SUBSCRIBED</a> = EC_SUCCESS + 1 }</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p998342336191845"><a name="p998342336191845"></a><a name="p998342336191845"></a>Enumerates error codes unique to the Broadcast service. </p>
</td>
</tr>
</tbody>
</table>
## **Details**<a name="section299824655191845"></a>
## **Typedef Documentation**<a name="section1378812707191845"></a>
## Topic<a name="gaf03f5bc94cad32ab628a6cdee09b0542"></a>
```
typedef uint32 [Topic](Broadcast.md#gaf03f5bc94cad32ab628a6cdee09b0542)
```
**Description:**
Indicates the topic of an event or data, which is used to distinguish different types of events or data.
## **Enumeration Type Documentation**<a name="section1322993724191845"></a>
## BroadcastErrCode<a name="ga98f7a28020aa045ad049d116e1ca666d"></a>
```
enum [BroadcastErrCode](Broadcast.md#ga98f7a28020aa045ad049d116e1ca666d)
```
**Description:**
Enumerates error codes unique to the Broadcast service.
<a name="table1373728565191845"></a>
<table><thead align="left"><tr id="row126275586191845"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p2055022088191845"><a name="p2055022088191845"></a><a name="p2055022088191845"></a>Enumerator</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p1062641564191845"><a name="p1062641564191845"></a><a name="p1062641564191845"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row596776902191845"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><strong id="gga98f7a28020aa045ad049d116e1ca666da200821a903aa0ca4df7e25d2a0a3186b"><a name="gga98f7a28020aa045ad049d116e1ca666da200821a903aa0ca4df7e25d2a0a3186b"></a><a name="gga98f7a28020aa045ad049d116e1ca666da200821a903aa0ca4df7e25d2a0a3186b"></a></strong>EC_ALREADY_SUBSCRIBED&nbsp;</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p299418997191845"><a name="p299418997191845"></a><a name="p299418997191845"></a>Error code showing that a topic has been subscribed to </p>
</td>
</tr>
</tbody>
</table>
此差异已折叠。
# CapabilityMap<a name="ZH-CN_TOPIC_0000001054876474"></a>
## **Overview**<a name="section252401096090254"></a>
**Related Modules:**
[Softbus](Softbus.md)
**Description:**
Defines the mapping between supported capabilities and bitmaps.
## **Summary**<a name="section1643013616090254"></a>
## Data Fields<a name="pub-attribs"></a>
<a name="table576008229090254"></a>
<table><thead align="left"><tr id="row787443168090254"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p833205129090254"><a name="p833205129090254"></a><a name="p833205129090254"></a>Variable Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p1227013813090254"><a name="p1227013813090254"></a><a name="p1227013813090254"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row1332670611090254"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p2108653347090254"><a name="p2108653347090254"></a><a name="p2108653347090254"></a><a href="Softbus.md#gaccfbfe7a48ef51a2bada9a711dfe8cdb">bitmap</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p2058946165090254"><a name="p2058946165090254"></a><a name="p2058946165090254"></a><a href="Softbus.md#gab839c7f1fd448f52f003ab0693f27bb4">DataBitMap</a>&nbsp;</p>
</td>
</tr>
<tr id="row1359942580090254"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1804519830090254"><a name="p1804519830090254"></a><a name="p1804519830090254"></a><a href="Softbus.md#gaba08ca6b519055898dd60b6e98a796d4">capability</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p549574941090254"><a name="p549574941090254"></a><a name="p549574941090254"></a>char *&nbsp;</p>
</td>
</tr>
</tbody>
</table>
# CommonDeviceInfo<a name="ZH-CN_TOPIC_0000001055195066"></a>
## **Overview**<a name="section11016661090254"></a>
**Related Modules:**
[Softbus](Softbus.md)
**Description:**
Defines the type and content of a device to set.
## **Summary**<a name="section1299312410090254"></a>
## Data Fields<a name="pub-attribs"></a>
<a name="table2025639882090254"></a>
<table><thead align="left"><tr id="row1466248426090254"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p225412743090254"><a name="p225412743090254"></a><a name="p225412743090254"></a>Variable Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p1102460413090254"><a name="p1102460413090254"></a><a name="p1102460413090254"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row760217634090254"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p187976101090254"><a name="p187976101090254"></a><a name="p187976101090254"></a><a href="Softbus.md#gaf3ee5a07a887ab31517318e0d4ea8cc4">key</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1194127300090254"><a name="p1194127300090254"></a><a name="p1194127300090254"></a><a href="Softbus.md#ga25be99ffbe88e41f7ce51d2678010254">CommonDeviceKey</a>&nbsp;</p>
</td>
</tr>
<tr id="row555161849090254"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1964620589090254"><a name="p1964620589090254"></a><a name="p1964620589090254"></a><a href="Softbus.md#ga84452c64348251edfe90fc61a5c561ac">value</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p571865140090254"><a name="p571865140090254"></a><a name="p571865140090254"></a>const char *&nbsp;</p>
</td>
</tr>
</tbody>
</table>
# Consumer<a name="ZH-CN_TOPIC_0000001054476499"></a>
## **Overview**<a name="section367884173191858"></a>
**Related Modules:**
[Broadcast](Broadcast.md)
**Description:**
Defines the topic consumer used to receive events and push data. You need to implement this struct for your application.
## **Summary**<a name="section1229562524191858"></a>
## Data Fields<a name="pub-attribs"></a>
<a name="table494404447191858"></a>
<table><thead align="left"><tr id="row1177098769191858"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p1510694763191858"><a name="p1510694763191858"></a><a name="p1510694763191858"></a>Variable Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p359040708191858"><a name="p359040708191858"></a><a name="p359040708191858"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row541337055191858"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p664636100191858"><a name="p664636100191858"></a><a name="p664636100191858"></a><a href="Consumer.md#ac6e98b3361e6be922804e8c459fe303b">identity</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p788137349191858"><a name="p788137349191858"></a><a name="p788137349191858"></a>const <a href="Identity.md">Identity</a> *&nbsp;</p>
</td>
</tr>
<tr id="row1891627096191858"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p830646910191858"><a name="p830646910191858"></a><a name="p830646910191858"></a><a href="Consumer.md#a57b8ea7ff05c30832af06804a0526765">Notify</a> )(<a href="Consumer.md">Consumer</a> *consumer, const <a href="Broadcast.md#gaf03f5bc94cad32ab628a6cdee09b0542">Topic</a> *topic, const <a href="Request.md">Request</a> *origin)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1596993159191858"><a name="p1596993159191858"></a><a name="p1596993159191858"></a>void(*&nbsp;</p>
<p id="p711307819191858"><a name="p711307819191858"></a><a name="p711307819191858"></a>Defines how the consumer will process the events or data of a released topic. </p>
</td>
</tr>
<tr id="row551589053191858"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p381665072191858"><a name="p381665072191858"></a><a name="p381665072191858"></a><a href="Consumer.md#a38ab45549e981dc8c8c0a90883a6bac8">Equal</a> )(const <a href="Consumer.md">Consumer</a> *current, const <a href="Consumer.md">Consumer</a> *other)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1685313723191858"><a name="p1685313723191858"></a><a name="p1685313723191858"></a>BOOL(*&nbsp;</p>
<p id="p886417998191858"><a name="p886417998191858"></a><a name="p886417998191858"></a>Checks whether two consumers are equal. </p>
</td>
</tr>
</tbody>
</table>
## **Details**<a name="section1372276845191858"></a>
## **Field Documentation**<a name="section77297961191858"></a>
## Equal<a name="a38ab45549e981dc8c8c0a90883a6bac8"></a>
```
BOOL(* Consumer::Equal) (const [Consumer](Consumer.md) *current, const [Consumer](Consumer.md) *other)
```
**Description:**
Checks whether two consumers are equal.
You need to implement this function to prevent repeated topic subscription.
**Parameters:**
<a name="table1614659320191858"></a>
<table><thead align="left"><tr id="row900903701191858"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p1944786767191858"><a name="p1944786767191858"></a><a name="p1944786767191858"></a>Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p1202034969191858"><a name="p1202034969191858"></a><a name="p1202034969191858"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row486662959191858"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">current</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates the pointer to the current consumer. </td>
</tr>
<tr id="row1035514191191858"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">other</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates the pointer to the target consumer to compare. </td>
</tr>
</tbody>
</table>
**Returns:**
Returns **TRUE** if the two consumers are equal; returns **FALSE** otherwise.
## identity<a name="ac6e98b3361e6be922804e8c459fe303b"></a>
```
const [Identity](Identity.md)* Consumer::identity
```
**Description:**
[Consumer](Consumer.md) ID
## Notify<a name="a57b8ea7ff05c30832af06804a0526765"></a>
```
void(* Consumer::Notify) ([Consumer](Consumer.md) *consumer, const [Topic](Broadcast.md#gaf03f5bc94cad32ab628a6cdee09b0542) *topic, const [Request](Request.md) *origin)
```
**Description:**
Defines how the consumer will process the events or data of a released topic.
You can implement this function for consumers to process topics associated with the them. Note that the passed topic must have been subscribed by the consumer. Otherwise, the function does nothing.
**Parameters:**
<a name="table930491084191858"></a>
<table><thead align="left"><tr id="row549325055191858"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p1507178705191858"><a name="p1507178705191858"></a><a name="p1507178705191858"></a>Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p2034406603191858"><a name="p2034406603191858"></a><a name="p2034406603191858"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row358410277191858"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">consumer</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates <strong id="b602146788191858"><a name="b602146788191858"></a><a name="b602146788191858"></a>this</strong> pointer of the consumer. </td>
</tr>
<tr id="row1998990578191858"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">topic</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates the pointer to the topic to be processed. </td>
</tr>
<tr id="row2068793086191858"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">origin</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates the pointer to the data to be processed. </td>
</tr>
</tbody>
</table>
# DeviceMap<a name="ZH-CN_TOPIC_0000001055355044"></a>
## **Overview**<a name="section72924696090254"></a>
**Related Modules:**
[Softbus](Softbus.md)
**Description:**
Defines the mappings between the device type enumerations and device type names.
## **Summary**<a name="section1242056321090254"></a>
## Data Fields<a name="pub-attribs"></a>
<a name="table133865106090254"></a>
<table><thead align="left"><tr id="row1676640548090254"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p838446118090254"><a name="p838446118090254"></a><a name="p838446118090254"></a>Variable Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p209991267090254"><a name="p209991267090254"></a><a name="p209991267090254"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row627555557090254"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p2037817657090254"><a name="p2037817657090254"></a><a name="p2037817657090254"></a><a href="Softbus.md#gaddf75957b595adaddd4f227b9834e20b">value</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p153364510090254"><a name="p153364510090254"></a><a name="p153364510090254"></a>char *&nbsp;</p>
</td>
</tr>
<tr id="row1367322673090254"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p99575126090254"><a name="p99575126090254"></a><a name="p99575126090254"></a><a href="Softbus.md#ga0e85f0b19c5d5d8368b93b9751473fb1">devType</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p662223940090254"><a name="p662223940090254"></a><a name="p662223940090254"></a><a href="Softbus.md#ga9334bacb3ded964dc3c3367a6b70bcf4">DeviceType</a>&nbsp;</p>
</td>
</tr>
</tbody>
</table>
# Feature<a name="ZH-CN_TOPIC_0000001055075077"></a>
## **Overview**<a name="section641091163191859"></a>
**Related Modules:**
[Samgr](Samgr.md)
**Description:**
Defines the base class of a feature.
You need to implement the pointer to the feature.
**Since:**
1.0
**Version:**
1.0
## **Summary**<a name="section254447348191859"></a>
## Data Fields<a name="pub-attribs"></a>
<a name="table1185251834191859"></a>
<table><thead align="left"><tr id="row1192735128191859"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p192074553191859"><a name="p192074553191859"></a><a name="p192074553191859"></a>Variable Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p1573389215191859"><a name="p1573389215191859"></a><a name="p1573389215191859"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row889802731191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p520701418191859"><a name="p520701418191859"></a><a name="p520701418191859"></a><a href="Feature.md#ab30dc9677abd4aaa18ec88254e90b139">GetName</a> )(<a href="Feature.md">Feature</a> *feature)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p950751226191859"><a name="p950751226191859"></a><a name="p950751226191859"></a>const char *(*&nbsp;</p>
<p id="p790418287191859"><a name="p790418287191859"></a><a name="p790418287191859"></a>Obtains a feature name. </p>
</td>
</tr>
<tr id="row754926357191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p573792740191859"><a name="p573792740191859"></a><a name="p573792740191859"></a><a href="Feature.md#adb3f9401f41e2309006568ef6e78fd43">OnInitialize</a> )(<a href="Feature.md">Feature</a> *feature, <a href="Service.md">Service</a> *parent, <a href="Identity.md">Identity</a> identity)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p542788653191859"><a name="p542788653191859"></a><a name="p542788653191859"></a>void(*&nbsp;</p>
<p id="p1333784828191859"><a name="p1333784828191859"></a><a name="p1333784828191859"></a>Initializes a feature. </p>
</td>
</tr>
<tr id="row1569510463191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p2037399587191859"><a name="p2037399587191859"></a><a name="p2037399587191859"></a><a href="Feature.md#ab0a4b92d867106b10f3fd3c4761338ba">OnStop</a> )(<a href="Feature.md">Feature</a> *feature, <a href="Identity.md">Identity</a> identity)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1217121673191859"><a name="p1217121673191859"></a><a name="p1217121673191859"></a>void(*&nbsp;</p>
<p id="p86055290191859"><a name="p86055290191859"></a><a name="p86055290191859"></a>Stops a feature. </p>
</td>
</tr>
<tr id="row152488638191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1993118767191859"><a name="p1993118767191859"></a><a name="p1993118767191859"></a><a href="Feature.md#adf249c7a1b07eb47d51f046c5c8a5f6b">OnMessage</a> )(<a href="Feature.md">Feature</a> *feature, <a href="Request.md">Request</a> *request)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p921531254191859"><a name="p921531254191859"></a><a name="p921531254191859"></a>BOOL(*&nbsp;</p>
<p id="p873550085191859"><a name="p873550085191859"></a><a name="p873550085191859"></a>Processes a feature message. </p>
</td>
</tr>
</tbody>
</table>
## **Details**<a name="section74045155191859"></a>
## **Field Documentation**<a name="section1081675570191859"></a>
## GetName<a name="ab30dc9677abd4aaa18ec88254e90b139"></a>
```
const char*(* Feature::GetName) ([Feature](Feature.md) *feature)
```
**Description:**
Obtains a feature name.
This function is implemented by developers and called by Samgr during feature registration and startup.
**Parameters:**
<a name="table956027843191859"></a>
<table><thead align="left"><tr id="row411967358191859"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p1970088446191859"><a name="p1970088446191859"></a><a name="p1970088446191859"></a>Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p1197047403191859"><a name="p1197047403191859"></a><a name="p1197047403191859"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row1602321254191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">feature</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates the pointer to the feature. </td>
</tr>
</tbody>
</table>
**Returns:**
Returns a constant character string less than 16 bytes if the operation is successful; returns **NULL** if the operation fails.
## OnInitialize<a name="adb3f9401f41e2309006568ef6e78fd43"></a>
```
void(* Feature::OnInitialize) ([Feature](Feature.md) *feature, [Service](Service.md) *parent, [Identity](Identity.md) identity)
```
**Description:**
Initializes a feature.
This function is implemented by developers. After Samgr dispatches tasks to a service, the service calls this function in its own tasks.
**Parameters:**
<a name="table1561129475191859"></a>
<table><thead align="left"><tr id="row24119258191859"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p764184387191859"><a name="p764184387191859"></a><a name="p764184387191859"></a>Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p2084685651191859"><a name="p2084685651191859"></a><a name="p2084685651191859"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row1210462227191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">feature</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates the pointer to the feature. </td>
</tr>
<tr id="row2070722405191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">parent</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates the pointer to the <a href="Service.md">Service</a> to which the feature belongs. </td>
</tr>
<tr id="row1438612557191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">identity</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates the identity of a feature dispatched by the system.</td>
</tr>
</tbody>
</table>
## OnMessage<a name="adf249c7a1b07eb47d51f046c5c8a5f6b"></a>
```
BOOL(* Feature::OnMessage) ([Feature](Feature.md) *feature, [Request](Request.md) *request)
```
**Description:**
Processes a feature message.
This function is implemented by developers to process requests sent by callers through [IUnknown](IUnknown.md).
**Parameters:**
<a name="table1605201037191859"></a>
<table><thead align="left"><tr id="row193736922191859"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p1169685648191859"><a name="p1169685648191859"></a><a name="p1169685648191859"></a>Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p726955922191859"><a name="p726955922191859"></a><a name="p726955922191859"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row1019747092191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">feature</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates the pointer to the feature. </td>
</tr>
<tr id="row305839513191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">request</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates the request message. </td>
</tr>
</tbody>
</table>
**Returns:**
Returns **TRUE** if the processing is successful; returns **FALSE** if the processing fails.
## OnStop<a name="ab0a4b92d867106b10f3fd3c4761338ba"></a>
```
void(* Feature::OnStop) ([Feature](Feature.md) *feature, [Identity](Identity.md) identity)
```
**Description:**
Stops a feature.
This function is implemented by developers and is called by Samgr when a feature is deregistered to stop running services.
**Parameters:**
<a name="table929779141191859"></a>
<table><thead align="left"><tr id="row1680085306191859"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p937601161191859"><a name="p937601161191859"></a><a name="p937601161191859"></a>Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p1503028611191859"><a name="p1503028611191859"></a><a name="p1503028611191859"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row1960920096191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">feature</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates the pointer to the feature. </td>
</tr>
<tr id="row1462550270191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">identity</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates the <a href="Identity.md">Identity</a> of the feature to be stopped. </td>
</tr>
</tbody>
</table>
# HotspotConfig<a name="ZH-CN_TOPIC_0000001054595101"></a>
## **Overview**<a name="section1663277023191859"></a>
**Related Modules:**
[Wifiservice](Wifiservice.md)
**Description:**
Represents the hotspot configuration.
A hotspot configuration must contain the SSID \(or BSSID\), security type, and key \(if the security type is open\).
**Since:**
1.0
**Version:**
1.0
## **Summary**<a name="section600944657191859"></a>
## Data Fields<a name="pub-attribs"></a>
<a name="table1271010545191859"></a>
<table><thead align="left"><tr id="row595248689191859"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p1511519306191859"><a name="p1511519306191859"></a><a name="p1511519306191859"></a>Variable Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p261841042191859"><a name="p261841042191859"></a><a name="p261841042191859"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row1872769404191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p177570576191859"><a name="p177570576191859"></a><a name="p177570576191859"></a><a href="HotspotConfig.md#a8ecc1cc58ea265d86d17101872f831ab">ssid</a> [<a href="Wifiservice.md#ga7e01d8c5079081de486637b4482c937a">WIFI_MAX_SSID_LEN</a>]</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p2020436859191859"><a name="p2020436859191859"></a><a name="p2020436859191859"></a>char&nbsp;</p>
</td>
</tr>
<tr id="row1818297573191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1841136542191859"><a name="p1841136542191859"></a><a name="p1841136542191859"></a><a href="HotspotConfig.md#a4e89326b43042b3c2cb8c75348f6e3cc">securityType</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p280427230191859"><a name="p280427230191859"></a><a name="p280427230191859"></a>int&nbsp;</p>
</td>
</tr>
<tr id="row1736352202191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1625275169191859"><a name="p1625275169191859"></a><a name="p1625275169191859"></a><a href="HotspotConfig.md#ae14b1135cd30c75e0cd34a543c993c27">band</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p134904083191859"><a name="p134904083191859"></a><a name="p134904083191859"></a>int&nbsp;</p>
</td>
</tr>
<tr id="row249655207191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1308846415191859"><a name="p1308846415191859"></a><a name="p1308846415191859"></a><a href="HotspotConfig.md#ac9924aa9149b85d05f5a842b05f75845">channelNum</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p650171445191859"><a name="p650171445191859"></a><a name="p650171445191859"></a>int&nbsp;</p>
</td>
</tr>
<tr id="row1845241973191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1516661205191859"><a name="p1516661205191859"></a><a name="p1516661205191859"></a><a href="HotspotConfig.md#ace5ad4c26c9ca07adffc16309c4694ae">preSharedKey</a> [<a href="Wifiservice.md#ga6017e2d011b6cffcd3663db81a2b52d8">WIFI_MAX_KEY_LEN</a>]</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1628209720191859"><a name="p1628209720191859"></a><a name="p1628209720191859"></a>char&nbsp;</p>
</td>
</tr>
</tbody>
</table>
## **Details**<a name="section939904800191859"></a>
## **Field Documentation**<a name="section1384466232191859"></a>
## band<a name="ae14b1135cd30c75e0cd34a543c993c27"></a>
```
int HotspotConfig::band
```
**Description:**
Frequency band
## channelNum<a name="ac9924aa9149b85d05f5a842b05f75845"></a>
```
int HotspotConfig::channelNum
```
**Description:**
Channel number
## preSharedKey<a name="ace5ad4c26c9ca07adffc16309c4694ae"></a>
```
char HotspotConfig::preSharedKey[[WIFI_MAX_KEY_LEN](Wifiservice.md#ga6017e2d011b6cffcd3663db81a2b52d8)]
```
**Description:**
Key. For its length, see [WIFI\_MAX\_SSID\_LEN](Wifiservice.md#ga7e01d8c5079081de486637b4482c937a).
## securityType<a name="a4e89326b43042b3c2cb8c75348f6e3cc"></a>
```
int HotspotConfig::securityType
```
**Description:**
Security type
## ssid<a name="a8ecc1cc58ea265d86d17101872f831ab"></a>
```
char HotspotConfig::ssid[[WIFI_MAX_SSID_LEN](Wifiservice.md#ga7e01d8c5079081de486637b4482c937a)]
```
**Description:**
[Service](Service.md) set ID \(SSID\). For its length, see [WIFI\_MAX\_SSID\_LEN](Wifiservice.md#ga7e01d8c5079081de486637b4482c937a).
# IOT平台<a name="ZH-CN_TOPIC_0000001055036444"></a>
- **[IOT子系统](IOT子系统.md)**
# IOT子系统<a name="ZH-CN_TOPIC_0000001054476491"></a>
- **[Wifiiot](Wifiiot.md)**
# IPublishCallback<a name="ZH-CN_TOPIC_0000001054915093"></a>
## **Overview**<a name="section1305755903191859"></a>
**Related Modules:**
[Softbus](Softbus.md)
**Description:**
Defines the callbacks for successful and failed service publishing.
## **Summary**<a name="section1445080536191859"></a>
## Data Fields<a name="pub-attribs"></a>
<a name="table2105675329191859"></a>
<table><thead align="left"><tr id="row76584977191859"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p524981378191859"><a name="p524981378191859"></a><a name="p524981378191859"></a>Variable Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p1947577598191859"><a name="p1947577598191859"></a><a name="p1947577598191859"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row1033040761191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1576250764191859"><a name="p1576250764191859"></a><a name="p1576250764191859"></a><a href="Softbus.md#gade0a74f5ae9b16a1fa7f03df5d9fbdf1">onPublishSuccess</a> )(int publishId)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1313521954191859"><a name="p1313521954191859"></a><a name="p1313521954191859"></a>void(*&nbsp;</p>
</td>
</tr>
<tr id="row1675598662191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1148398614191859"><a name="p1148398614191859"></a><a name="p1148398614191859"></a><a href="Softbus.md#ga0f84feec4640c176938bbce26b8f25c8">onPublishFail</a> )(int publishId, <a href="Softbus.md#ga6632fcae1db4a3a13370e3fb49e5e620">PublishFailReason</a> reason)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1272313502191859"><a name="p1272313502191859"></a><a name="p1272313502191859"></a>void(*&nbsp;</p>
</td>
</tr>
</tbody>
</table>
# ISessionListener<a name="ZH-CN_TOPIC_0000001054715059"></a>
## **Overview**<a name="section1768895681191859"></a>
**Related Modules:**
[Softbus](Softbus.md)
**Description:**
Defines session callbacks.
When a session is opened or closed, or there is data to process, the related callback is invoked.
**Since:**
1.0
**Version:**
1.0
## **Summary**<a name="section2016306633191859"></a>
## Data Fields<a name="pub-attribs"></a>
<a name="table965988094191859"></a>
<table><thead align="left"><tr id="row645153363191859"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p1448110963191859"><a name="p1448110963191859"></a><a name="p1448110963191859"></a>Variable Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p1031093945191859"><a name="p1031093945191859"></a><a name="p1031093945191859"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row2041463740191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1537997215191859"><a name="p1537997215191859"></a><a name="p1537997215191859"></a><a href="Softbus.md#ga2b042b85e03d66f1988c348414b2db6e">onSessionOpened</a> )(int sessionId)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p557900749191859"><a name="p557900749191859"></a><a name="p557900749191859"></a>int(*&nbsp;</p>
<p id="p517155758191859"><a name="p517155758191859"></a><a name="p517155758191859"></a>Called when a session is opened. </p>
</td>
</tr>
<tr id="row4016908191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1649602230191859"><a name="p1649602230191859"></a><a name="p1649602230191859"></a><a href="Softbus.md#ga2088a4e0e196030d8e428a828298eba0">onSessionClosed</a> )(int sessionId)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1751716194191859"><a name="p1751716194191859"></a><a name="p1751716194191859"></a>void(*&nbsp;</p>
<p id="p341307002191859"><a name="p341307002191859"></a><a name="p341307002191859"></a>Called when a session is closed. </p>
</td>
</tr>
<tr id="row500010611191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p985068536191859"><a name="p985068536191859"></a><a name="p985068536191859"></a><a href="Softbus.md#ga95243f25fa04ef29f7f8f0b3a440dbd3">onBytesReceived</a> )(int sessionId, const void *data, unsigned int dataLen)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1948110511191859"><a name="p1948110511191859"></a><a name="p1948110511191859"></a>void(*&nbsp;</p>
<p id="p1947871887191859"><a name="p1947871887191859"></a><a name="p1947871887191859"></a>Called when data is received. </p>
</td>
</tr>
</tbody>
</table>
# IUnknown<a name="ZH-CN_TOPIC_0000001055675024"></a>
## **Overview**<a name="section950816859191859"></a>
**Related Modules:**
[Samgr](Samgr.md)
**Description:**
Defines the **[IUnknown](IUnknown.md)** class.
You need to inherit this structure when developing a subclass of the **[IUnknown](IUnknown.md)** interface.
## **Summary**<a name="section306881384191859"></a>
## Data Fields<a name="pub-attribs"></a>
<a name="table1742900833191859"></a>
<table><thead align="left"><tr id="row1678375430191859"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p2017711537191859"><a name="p2017711537191859"></a><a name="p2017711537191859"></a>Variable Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p1568541144191859"><a name="p1568541144191859"></a><a name="p1568541144191859"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row11611545191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p592990921191859"><a name="p592990921191859"></a><a name="p592990921191859"></a><a href="IUnknown.md#ab1eebb31d61b815123d65764134de2bc">QueryInterface</a> )(<a href="IUnknown.md">IUnknown</a> *iUnknown, int version, void **target)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1475394127191859"><a name="p1475394127191859"></a><a name="p1475394127191859"></a>int(*&nbsp;</p>
</td>
</tr>
<tr id="row376148288191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1390499131191859"><a name="p1390499131191859"></a><a name="p1390499131191859"></a><a href="IUnknown.md#a4d778cd58b81b5f35f7704cbfc5fb3ef">AddRef</a> )(<a href="IUnknown.md">IUnknown</a> *iUnknown)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p76427524191859"><a name="p76427524191859"></a><a name="p76427524191859"></a>int(*&nbsp;</p>
</td>
</tr>
<tr id="row764487513191859"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1872573147191859"><a name="p1872573147191859"></a><a name="p1872573147191859"></a><a href="IUnknown.md#a5b8e564aec30767170a2c27380277715">Release</a> )(<a href="IUnknown.md">IUnknown</a> *iUnknown)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1009077144191859"><a name="p1009077144191859"></a><a name="p1009077144191859"></a>int(*&nbsp;</p>
</td>
</tr>
</tbody>
</table>
## **Details**<a name="section1355923748191859"></a>
## **Field Documentation**<a name="section1508185285191859"></a>
## AddRef<a name="a4d778cd58b81b5f35f7704cbfc5fb3ef"></a>
```
int(* IUnknown::AddRef) ([IUnknown](IUnknown.md) *iUnknown)
```
**Description:**
Adds the reference count.
## QueryInterface<a name="ab1eebb31d61b815123d65764134de2bc"></a>
```
int(* IUnknown::QueryInterface) ([IUnknown](IUnknown.md) *iUnknown, int version, void **target)
```
**Description:**
Queries the subclass object of the **[IUnknown](IUnknown.md)** interface of a specified version \(downcasting\).
## Release<a name="a5b8e564aec30767170a2c27380277715"></a>
```
int(* IUnknown::Release) ([IUnknown](IUnknown.md) *iUnknown)
```
**Description:**
Release the reference to an **[IUnknown](IUnknown.md)** interface.
# IUnknownEntry<a name="ZH-CN_TOPIC_0000001055515028"></a>
## **Overview**<a name="section314966837191900"></a>
**Related Modules:**
[Samgr](Samgr.md)
**Description:**
Defines the **[IUnknown](IUnknown.md)** implementation class.
You need to inherit this structure when developing a subclass of the **[IUnknown](IUnknown.md)** implementation class. Each **[IUnknown](IUnknown.md)** interface must correspond to one or more **[IUnknown](IUnknown.md)** implementation classes.
## **Summary**<a name="section559713923191900"></a>
## Data Fields<a name="pub-attribs"></a>
<a name="table905727140191900"></a>
<table><thead align="left"><tr id="row828602909191900"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p1902887869191900"><a name="p1902887869191900"></a><a name="p1902887869191900"></a>Variable Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p971681458191900"><a name="p971681458191900"></a><a name="p971681458191900"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row1967679010191900"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p279045397191900"><a name="p279045397191900"></a><a name="p279045397191900"></a><a href="IUnknownEntry.md#a5d0fd097aeef2c3a9766a47cf148d8b9">ver</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1191850188191900"><a name="p1191850188191900"></a><a name="p1191850188191900"></a>uint16&nbsp;</p>
</td>
</tr>
<tr id="row156820516191900"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p538806403191900"><a name="p538806403191900"></a><a name="p538806403191900"></a><a href="IUnknownEntry.md#afdf52f5e2c624790ab558ffb0c8aa9a9">ref</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p472559174191900"><a name="p472559174191900"></a><a name="p472559174191900"></a>int16&nbsp;</p>
</td>
</tr>
<tr id="row1863572732191900"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p234661748191900"><a name="p234661748191900"></a><a name="p234661748191900"></a><a href="IUnknownEntry.md#adb0c9a5863f934471bb2edf853690bb9">iUnknown</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p684288046191900"><a name="p684288046191900"></a><a name="p684288046191900"></a><a href="IUnknown.md">IUnknown</a>&nbsp;</p>
</td>
</tr>
</tbody>
</table>
## **Details**<a name="section1639010056191900"></a>
## **Field Documentation**<a name="section268299301191900"></a>
## iUnknown<a name="adb0c9a5863f934471bb2edf853690bb9"></a>
```
[IUnknown](IUnknown.md) IUnknownEntry::iUnknown
```
**Description:**
Implementation of **[IUnknown](IUnknown.md)** interface, which is related to the specific definition implementation.
## ref<a name="afdf52f5e2c624790ab558ffb0c8aa9a9"></a>
```
int16 IUnknownEntry::ref
```
**Description:**
Reference count of **[IUnknown](IUnknown.md)** interface.
## ver<a name="a5d0fd097aeef2c3a9766a47cf148d8b9"></a>
```
uint16 IUnknownEntry::ver
```
**Description:**
Version information of **[IUnknown](IUnknown.md)** interface.
# Identity<a name="ZH-CN_TOPIC_0000001054796537"></a>
## **Overview**<a name="section950175188191900"></a>
**Related Modules:**
[Samgr](Samgr.md)
**Description:**
Identifies a service and feature.
You can use this structure to identity a [IUnknown](IUnknown.md) feature to which messages will be sent through the asynchronous function of [IUnknown](IUnknown.md).
## **Summary**<a name="section589956340191900"></a>
## Data Fields<a name="pub-attribs"></a>
<a name="table9722272191900"></a>
<table><thead align="left"><tr id="row516228669191900"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p1797782894191900"><a name="p1797782894191900"></a><a name="p1797782894191900"></a>Variable Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p134693634191900"><a name="p134693634191900"></a><a name="p134693634191900"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row2050965711191900"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1815511345191900"><a name="p1815511345191900"></a><a name="p1815511345191900"></a><a href="Identity.md#a062375b8be3ad40e72263a7ce2268af3">serviceId</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p571977163191900"><a name="p571977163191900"></a><a name="p571977163191900"></a>int16&nbsp;</p>
</td>
</tr>
<tr id="row1783301586191900"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p184991736191900"><a name="p184991736191900"></a><a name="p184991736191900"></a><a href="Identity.md#a8a76b43d4bb4e3d861ff63e0716f178d">featureId</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p2016708199191900"><a name="p2016708199191900"></a><a name="p2016708199191900"></a>int16&nbsp;</p>
</td>
</tr>
<tr id="row1972222286191900"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p2008731916191900"><a name="p2008731916191900"></a><a name="p2008731916191900"></a><a href="Identity.md#ad34d38c75a24903672bb64f29c1b1132">queueId</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1657919581191900"><a name="p1657919581191900"></a><a name="p1657919581191900"></a>MQueueId&nbsp;</p>
</td>
</tr>
</tbody>
</table>
## **Details**<a name="section107323322191900"></a>
## **Field Documentation**<a name="section1141630383191900"></a>
## featureId<a name="a8a76b43d4bb4e3d861ff63e0716f178d"></a>
```
int16 Identity::featureId
```
**Description:**
[Feature](Feature.md) ID
## queueId<a name="ad34d38c75a24903672bb64f29c1b1132"></a>
```
MQueueId Identity::queueId
```
**Description:**
Message queue ID
## serviceId<a name="a062375b8be3ad40e72263a7ce2268af3"></a>
```
int16 Identity::serviceId
```
**Description:**
[Service](Service.md) ID
此差异已折叠。
# Kv\_store<a name="ZH-CN_TOPIC_0000001054715049"></a>
## **Overview**<a name="section113896978191846"></a>
Provides functions for obtaining, setting, and deleting a key-value pair.
Key-value pairs can be permanently stored in the file system. If [FEATURE\_KV\_CACHE](Utils_config.md#gad3d71669516ef0bb50e2b105507a6b29) is enabled, key-value pairs can be stored in the cache. For details about cache specifications, see [MAX\_CACHE\_SIZE](Utils_config.md#ga6c8469dfe973ac952cf40394bd2c160b). For details about the number of key-value pairs that can be stored in an application, see [MAX\_KV\_SUM](Utils_config.md#ga4f258bd7d7d52c6770cce77f3e16ce72).
**Since:**
1.0
**Version:**
1.0
## **Summary**<a name="section64797286191846"></a>
## Files<a name="files"></a>
<a name="table631312252191846"></a>
<table><thead align="left"><tr id="row1317969192191846"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p853491129191846"><a name="p853491129191846"></a><a name="p853491129191846"></a>File Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p1691065680191846"><a name="p1691065680191846"></a><a name="p1691065680191846"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row2026991670191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p2104701827191846"><a name="p2104701827191846"></a><a name="p2104701827191846"></a><a href="kv_store-h.md">kv_store.h</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p695426248191846"><a name="p695426248191846"></a><a name="p695426248191846"></a>Provides functions for obtaining, setting, and deleting a key-value pair. </p>
</td>
</tr>
</tbody>
</table>
## Functions<a name="func-members"></a>
<a name="table443064751191846"></a>
<table><thead align="left"><tr id="row1408440465191846"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p2106692517191846"><a name="p2106692517191846"></a><a name="p2106692517191846"></a>Function Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p142071045191846"><a name="p142071045191846"></a><a name="p142071045191846"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row1470532809191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1274503458191846"><a name="p1274503458191846"></a><a name="p1274503458191846"></a><a href="Kv_store.md#ga6e7d17b85aeb91c0cfa912ac141d41eb">UtilsGetValue</a> (const char *key, char *value, unsigned int len)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1060800865191846"><a name="p1060800865191846"></a><a name="p1060800865191846"></a>int&nbsp;</p>
<p id="p137925662191846"><a name="p137925662191846"></a><a name="p137925662191846"></a>Obtains the value matching a specified key from the file system or cache. </p>
</td>
</tr>
<tr id="row310590851191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1592840664191846"><a name="p1592840664191846"></a><a name="p1592840664191846"></a><a href="Kv_store.md#ga32e7222aed175357499f5ced0e85775f">UtilsSetValue</a> (const char *key, const char *value)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p79371101191846"><a name="p79371101191846"></a><a name="p79371101191846"></a>int&nbsp;</p>
<p id="p1977818844191846"><a name="p1977818844191846"></a><a name="p1977818844191846"></a>Adds or updates the value matching a specified key in the file system or cache. </p>
</td>
</tr>
<tr id="row390654639191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1648430121191846"><a name="p1648430121191846"></a><a name="p1648430121191846"></a><a href="Kv_store.md#ga803cc2bcb5206b0378ec25df7a179834">UtilsDeleteValue</a> (const char *key)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p17612581191846"><a name="p17612581191846"></a><a name="p17612581191846"></a>int&nbsp;</p>
<p id="p895957757191846"><a name="p895957757191846"></a><a name="p895957757191846"></a>Deletes the value matching a specified key from the file system or cache. </p>
</td>
</tr>
<tr id="row424625219191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p891276486191846"><a name="p891276486191846"></a><a name="p891276486191846"></a><a href="Kv_store.md#gaebe12bab9a2e181d1fea1095a5ce4d5a">ClearKVCache</a> (void)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p835387577191846"><a name="p835387577191846"></a><a name="p835387577191846"></a>int&nbsp;</p>
<p id="p1549086329191846"><a name="p1549086329191846"></a><a name="p1549086329191846"></a>Clears all key-value pairs from the cache. </p>
</td>
</tr>
</tbody>
</table>
## **Details**<a name="section289580228191846"></a>
## **Function Documentation**<a name="section1825019836191846"></a>
## ClearKVCache\(\)<a name="gaebe12bab9a2e181d1fea1095a5ce4d5a"></a>
```
int ClearKVCache (void )
```
**Description:**
Clears all key-value pairs from the cache.
**Attention:**
This function is available only if [FEATURE\_KV\_CACHE](Utils_config.md#gad3d71669516ef0bb50e2b105507a6b29) is enabled.
**Returns:**
Returns **0** if the operation is successful; returns **-1** otherwise.
## UtilsDeleteValue\(\)<a name="ga803cc2bcb5206b0378ec25df7a179834"></a>
```
int UtilsDeleteValue (const char * key)
```
**Description:**
Deletes the value matching a specified key from the file system or cache.
**Parameters:**
<a name="table1730489746191846"></a>
<table><thead align="left"><tr id="row1240795193191846"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p2087199046191846"><a name="p2087199046191846"></a><a name="p2087199046191846"></a>Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p130877684191846"><a name="p130877684191846"></a><a name="p130877684191846"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row1879498308191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">key</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates the key whose value is to be deleted. It allows only lowercase letters, digits, underscores (_), and dots (.). Its length cannot exceed 32 bytes (including the end-of-text character in the string). </td>
</tr>
</tbody>
</table>
**Returns:**
Returns **0** if the operation is successful; returns **-9** if a parameter is incorrect; returns **-1** in other scenarios.
## UtilsGetValue\(\)<a name="ga6e7d17b85aeb91c0cfa912ac141d41eb"></a>
```
int UtilsGetValue (const char * key, char * value, unsigned int len )
```
**Description:**
Obtains the value matching a specified key from the file system or cache.
**Parameters:**
<a name="table1847958804191846"></a>
<table><thead align="left"><tr id="row547793876191846"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p1050426889191846"><a name="p1050426889191846"></a><a name="p1050426889191846"></a>Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p381107983191846"><a name="p381107983191846"></a><a name="p381107983191846"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row860807149191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">key</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates the key to be indexed. It allows only lowercase letters, digits, underscores (_), and dots (.). Its length cannot exceed 32 bytes (including the end-of-text character in the string). </td>
</tr>
<tr id="row4403956191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">value</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates the buffer for storing the value that matches the key. This is an output parameter. </td>
</tr>
<tr id="row2029730397191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">len</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates the size of the value space in the buffer. </td>
</tr>
</tbody>
</table>
**Returns:**
Returns the length of the value if the operation is successful; returns **-9** if a parameter is incorrect; returns **-1** in other scenarios; returns **0** if the value is obtained from the cache.
## UtilsSetValue\(\)<a name="ga32e7222aed175357499f5ced0e85775f"></a>
```
int UtilsSetValue (const char * key, const char * value )
```
**Description:**
Adds or updates the value matching a specified key in the file system or cache.
**Parameters:**
<a name="table374320042191846"></a>
<table><thead align="left"><tr id="row1862089610191846"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p1112333845191846"><a name="p1112333845191846"></a><a name="p1112333845191846"></a>Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p274851841191846"><a name="p274851841191846"></a><a name="p274851841191846"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row19044626191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">key</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates the key whose value is to be added or updated. It allows only lowercase letters, digits, underscores (_), and dots (.). Its length cannot exceed 32 bytes (including the end-of-text character in the string). </td>
</tr>
<tr id="row1269967808191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">value</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates the value to be added or updated. Its length cannot exceed 128 bytes (including the end-of-text character in the string). </td>
</tr>
</tbody>
</table>
**Returns:**
Returns **0** if the operation is successful; returns **-9** if a parameter is incorrect; returns **-1** in other scenarios.
# MemInfo<a name="ZH-CN_TOPIC_0000001055036454"></a>
## **Overview**<a name="section1622698884191900"></a>
**Related Modules:**
[KAL](zh-cn_topic_0000001054595087.md)
**Description:**
Describes a memory pool.
## **Summary**<a name="section730135433191900"></a>
## Data Fields<a name="pub-attribs"></a>
<a name="table144197369191900"></a>
<table><thead align="left"><tr id="row1924199356191900"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p848585188191900"><a name="p848585188191900"></a><a name="p848585188191900"></a>Variable Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p1728190450191900"><a name="p1728190450191900"></a><a name="p1728190450191900"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row1123575392191900"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p92745250191900"><a name="p92745250191900"></a><a name="p92745250191900"></a><a href="zh-cn_topic_0000001054595087.md#gae36bc4b5086df8b29ba9c93239bb4aa3">total</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p753267432191900"><a name="p753267432191900"></a><a name="p753267432191900"></a>unsigned int&nbsp;</p>
</td>
</tr>
<tr id="row2015738272191900"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p315960331191900"><a name="p315960331191900"></a><a name="p315960331191900"></a><a href="zh-cn_topic_0000001054595087.md#gacf6bd852bfcb83e11793eba2d59979cf">used</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p758803712191900"><a name="p758803712191900"></a><a name="p758803712191900"></a>unsigned int&nbsp;</p>
</td>
</tr>
<tr id="row314954756191900"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1595660872191900"><a name="p1595660872191900"></a><a name="p1595660872191900"></a><a href="zh-cn_topic_0000001054595087.md#gab75adae81df2237c560b49f5faa91b1a">free</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1750105409191900"><a name="p1750105409191900"></a><a name="p1750105409191900"></a>unsigned int&nbsp;</p>
</td>
</tr>
<tr id="row415076787191900"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1531014417191900"><a name="p1531014417191900"></a><a name="p1531014417191900"></a><a href="zh-cn_topic_0000001054595087.md#gab6d8b14505fd8c1d8eac6067c4f88119">freeNodeNum</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1168547280191900"><a name="p1168547280191900"></a><a name="p1168547280191900"></a>unsigned int&nbsp;</p>
</td>
</tr>
<tr id="row279850701191900"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p247139921191900"><a name="p247139921191900"></a><a name="p247139921191900"></a><a href="zh-cn_topic_0000001054595087.md#gab25a44d9fdb8150ca4e9544a7061556c">usedNodeNum</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1656787410191900"><a name="p1656787410191900"></a><a name="p1656787410191900"></a>unsigned int&nbsp;</p>
</td>
</tr>
<tr id="row1335394546191900"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1667327453191900"><a name="p1667327453191900"></a><a name="p1667327453191900"></a><a href="zh-cn_topic_0000001054595087.md#ga217b3f6710fe68d1d66fd5cd2650a7be">maxFreeNodeSize</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p514879058191900"><a name="p514879058191900"></a><a name="p514879058191900"></a>unsigned int&nbsp;</p>
</td>
</tr>
<tr id="row826632286191900"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1733357289191900"><a name="p1733357289191900"></a><a name="p1733357289191900"></a><a href="zh-cn_topic_0000001054595087.md#gae0d28e6e11877301350a97630d06c682">mallocFailCount</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1792662771191900"><a name="p1792662771191900"></a><a name="p1792662771191900"></a>unsigned int&nbsp;</p>
</td>
</tr>
<tr id="row475587632191900"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1078189148191900"><a name="p1078189148191900"></a><a name="p1078189148191900"></a><a href="zh-cn_topic_0000001054595087.md#gada0d8e9b692e9000fe0db02db6567d4a">peekSize</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1834514088191900"><a name="p1834514088191900"></a><a name="p1834514088191900"></a>unsigned int&nbsp;</p>
</td>
</tr>
<tr id="row639296572191900"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p77592843191900"><a name="p77592843191900"></a><a name="p77592843191900"></a><a href="zh-cn_topic_0000001054595087.md#ga86cf478f001bad014a3566b9db7e3a43">totalLmp</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1145508593191900"><a name="p1145508593191900"></a><a name="p1145508593191900"></a>unsigned int&nbsp;</p>
</td>
</tr>
<tr id="row1691474753191900"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p2020325581191900"><a name="p2020325581191900"></a><a name="p2020325581191900"></a><a href="zh-cn_topic_0000001054595087.md#gacd3c292e8445268150881cb18c2f8f6d">usedLmp</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p194904069191900"><a name="p194904069191900"></a><a name="p194904069191900"></a>unsigned int&nbsp;</p>
</td>
</tr>
<tr id="row1872761012191900"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p159960386191900"><a name="p159960386191900"></a><a name="p159960386191900"></a><a href="zh-cn_topic_0000001054595087.md#ga21a8267ffdef5300c9158f7f23c19d68">freeLmp</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p947961095191900"><a name="p947961095191900"></a><a name="p947961095191900"></a>unsigned int&nbsp;</p>
</td>
</tr>
</tbody>
</table>
此差异已折叠。
# OpenHarmony内核<a name="ZH-CN_TOPIC_0000001055388122"></a>
- **[标准库](标准库.md)**
此差异已折叠。
# Power<a name="ZH-CN_TOPIC_0000001055075067"></a>
## **Overview**<a name="section1698468874191846"></a>
Provides device power management functions.
This module is used to reboot the device and set low power consumption for the device.
**Since:**
1.0
**Version:**
1.0
## **Summary**<a name="section1156846601191846"></a>
## Files<a name="files"></a>
<a name="table1989239798191846"></a>
<table><thead align="left"><tr id="row1882369618191846"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p501024172191846"><a name="p501024172191846"></a><a name="p501024172191846"></a>File Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p1584938409191846"><a name="p1584938409191846"></a><a name="p1584938409191846"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row1698897072191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1022350585191846"><a name="p1022350585191846"></a><a name="p1022350585191846"></a><a href="lowpower-h.md">lowpower.h</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p985219732191846"><a name="p985219732191846"></a><a name="p985219732191846"></a>Sets low power consumption for the device. </p>
</td>
</tr>
<tr id="row505880659191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p249703024191846"><a name="p249703024191846"></a><a name="p249703024191846"></a><a href="reset-h.md">reset.h</a></p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p48170559191846"><a name="p48170559191846"></a><a name="p48170559191846"></a>Reboots the device. </p>
</td>
</tr>
</tbody>
</table>
## Enumerations<a name="enum-members"></a>
<a name="table535211222191846"></a>
<table><thead align="left"><tr id="row1518440064191846"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p1386195491191846"><a name="p1386195491191846"></a><a name="p1386195491191846"></a>Enumeration Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p1342155005191846"><a name="p1342155005191846"></a><a name="p1342155005191846"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row765843043191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p155946825191846"><a name="p155946825191846"></a><a name="p155946825191846"></a><a href="Power.md#gaa6139ca73fa81742134fe74345ccb748">LpcType</a> { <a href="Power.md#ggaa6139ca73fa81742134fe74345ccb748a79dbeab2cc1e9d820df3b261984ffdf9">NO_SLEEP</a>, <a href="Power.md#ggaa6139ca73fa81742134fe74345ccb748a84d5857ff1535c751c3b15fea913ae40">LIGHT_SLEEP</a>, <a href="Power.md#ggaa6139ca73fa81742134fe74345ccb748a3c282494db59c58249a6b608e20050bf">DEEP_SLEEP</a> }</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1802232860191846"><a name="p1802232860191846"></a><a name="p1802232860191846"></a>Enumerates low power consumption modes. </p>
</td>
</tr>
<tr id="row137049048191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p881550911191846"><a name="p881550911191846"></a><a name="p881550911191846"></a><a href="Power.md#gaeac1b873015f5b0a8aa7f3c068507426">RebootCause</a> { &nbsp;&nbsp;<a href="Power.md#ggaeac1b873015f5b0a8aa7f3c068507426a04a0e86a44ea0d7600cd026650b5ffe7">SYS_REBOOT_CAUSE_UNKNOWN</a> = 0, <a href="Power.md#ggaeac1b873015f5b0a8aa7f3c068507426ab49da9db95acfa014af9f23d78dbb1a4">SYS_REBOOT_CAUSE_CMD</a>, <a href="Power.md#ggaeac1b873015f5b0a8aa7f3c068507426a7c1427e708ac62940fa085be165d8f85">SYS_REBOOT_CAUSE_UPG</a>, <a href="Power.md#ggaeac1b873015f5b0a8aa7f3c068507426aa88786682350e9f0a17f7a23554bd8d1">SYS_REBOOT_CAUSE_UPG_B</a>, &nbsp;&nbsp;<a href="Power.md#ggaeac1b873015f5b0a8aa7f3c068507426aeff008205aabb73ffa286cd4c0eaad89">SYS_REBOOT_CAUSE_WIFI_MODE</a>, <a href="Power.md#ggaeac1b873015f5b0a8aa7f3c068507426af1e3a68edd40db56d76067ed1e24b85b">SYS_REBOOT_CAUSE_USR_NORMAL_REBOOT</a>, <a href="Power.md#ggaeac1b873015f5b0a8aa7f3c068507426acb3dfe8998e30cc72aa0a6b70e2c5bcf">SYS_REBOOT_CAUSE_USR0</a>, <a href="Power.md#ggaeac1b873015f5b0a8aa7f3c068507426aa523e821f1c3f0917f08db5a2aad782c">SYS_REBOOT_CAUSE_USR1</a>, &nbsp;&nbsp;<a href="Power.md#ggaeac1b873015f5b0a8aa7f3c068507426af96d2c4f5a95fb704ec5296f0c417dbf">SYS_REBOOT_CAUSE_AT_BUSY</a>, <a href="Power.md#ggaeac1b873015f5b0a8aa7f3c068507426a14fea85ad30317c373b6609d33d36bde">SYS_REBOOT_CAUSE_MAX</a> }</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p385100433191846"><a name="p385100433191846"></a><a name="p385100433191846"></a>Enumerates reboot causes. </p>
</td>
</tr>
</tbody>
</table>
## Functions<a name="func-members"></a>
<a name="table1864079017191846"></a>
<table><thead align="left"><tr id="row482209266191846"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p2110875106191846"><a name="p2110875106191846"></a><a name="p2110875106191846"></a>Function Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p99326340191846"><a name="p99326340191846"></a><a name="p99326340191846"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row234286184191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1058368950191846"><a name="p1058368950191846"></a><a name="p1058368950191846"></a><a href="Power.md#gac4363d7384c17fd7dcc0b70b432ca750">LpcInit</a> (void)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p404917060191846"><a name="p404917060191846"></a><a name="p404917060191846"></a>unsigned int&nbsp;</p>
<p id="p179724906191846"><a name="p179724906191846"></a><a name="p179724906191846"></a>Initializes low power consumption. </p>
</td>
</tr>
<tr id="row1575652139191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1049881832191846"><a name="p1049881832191846"></a><a name="p1049881832191846"></a><a href="Power.md#ga6a7b9016d6742e82a044369b3f960554">LpcSetType</a> (<a href="Power.md#gaa6139ca73fa81742134fe74345ccb748">LpcType</a> type)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p418483883191846"><a name="p418483883191846"></a><a name="p418483883191846"></a>unsigned int&nbsp;</p>
<p id="p137651742191846"><a name="p137651742191846"></a><a name="p137651742191846"></a>Sets low power consumption for the device. </p>
</td>
</tr>
<tr id="row1779133799191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p1374313162191846"><a name="p1374313162191846"></a><a name="p1374313162191846"></a><a href="Power.md#ga3653c23553991eac26fa69f6a23e8987">RebootDevice</a> (<a href="Power.md#gaeac1b873015f5b0a8aa7f3c068507426">RebootCause</a> cause)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1380036526191846"><a name="p1380036526191846"></a><a name="p1380036526191846"></a>void&nbsp;</p>
<p id="p1165499843191846"><a name="p1165499843191846"></a><a name="p1165499843191846"></a>Reboots the device using different causes. </p>
</td>
</tr>
</tbody>
</table>
## **Details**<a name="section451223610191846"></a>
## **Enumeration Type Documentation**<a name="section978369075191846"></a>
## LpcType<a name="gaa6139ca73fa81742134fe74345ccb748"></a>
```
enum [LpcType](Power.md#gaa6139ca73fa81742134fe74345ccb748)
```
**Description:**
Enumerates low power consumption modes.
<a name="table164126278191846"></a>
<table><thead align="left"><tr id="row1392435691191846"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p301533492191846"><a name="p301533492191846"></a><a name="p301533492191846"></a>Enumerator</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p1074452775191846"><a name="p1074452775191846"></a><a name="p1074452775191846"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row515055975191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><strong id="ggaa6139ca73fa81742134fe74345ccb748a79dbeab2cc1e9d820df3b261984ffdf9"><a name="ggaa6139ca73fa81742134fe74345ccb748a79dbeab2cc1e9d820df3b261984ffdf9"></a><a name="ggaa6139ca73fa81742134fe74345ccb748a79dbeab2cc1e9d820df3b261984ffdf9"></a></strong>NO_SLEEP&nbsp;</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1764523222191846"><a name="p1764523222191846"></a><a name="p1764523222191846"></a>No sleep </p>
</td>
</tr>
<tr id="row637262573191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><strong id="ggaa6139ca73fa81742134fe74345ccb748a84d5857ff1535c751c3b15fea913ae40"><a name="ggaa6139ca73fa81742134fe74345ccb748a84d5857ff1535c751c3b15fea913ae40"></a><a name="ggaa6139ca73fa81742134fe74345ccb748a84d5857ff1535c751c3b15fea913ae40"></a></strong>LIGHT_SLEEP&nbsp;</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1698915899191846"><a name="p1698915899191846"></a><a name="p1698915899191846"></a>Light sleep </p>
</td>
</tr>
<tr id="row2107551857191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><strong id="ggaa6139ca73fa81742134fe74345ccb748a3c282494db59c58249a6b608e20050bf"><a name="ggaa6139ca73fa81742134fe74345ccb748a3c282494db59c58249a6b608e20050bf"></a><a name="ggaa6139ca73fa81742134fe74345ccb748a3c282494db59c58249a6b608e20050bf"></a></strong>DEEP_SLEEP&nbsp;</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p985952559191846"><a name="p985952559191846"></a><a name="p985952559191846"></a>Deep sleep </p>
</td>
</tr>
</tbody>
</table>
## RebootCause<a name="gaeac1b873015f5b0a8aa7f3c068507426"></a>
```
enum [RebootCause](Power.md#gaeac1b873015f5b0a8aa7f3c068507426)
```
**Description:**
Enumerates reboot causes.
<a name="table1520862138191846"></a>
<table><thead align="left"><tr id="row1755977744191846"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p125099925191846"><a name="p125099925191846"></a><a name="p125099925191846"></a>Enumerator</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p426671321191846"><a name="p426671321191846"></a><a name="p426671321191846"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row397976864191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><strong id="ggaeac1b873015f5b0a8aa7f3c068507426a04a0e86a44ea0d7600cd026650b5ffe7"><a name="ggaeac1b873015f5b0a8aa7f3c068507426a04a0e86a44ea0d7600cd026650b5ffe7"></a><a name="ggaeac1b873015f5b0a8aa7f3c068507426a04a0e86a44ea0d7600cd026650b5ffe7"></a></strong>SYS_REBOOT_CAUSE_UNKNOWN&nbsp;</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p85723376191846"><a name="p85723376191846"></a><a name="p85723376191846"></a>Unknown cause </p>
</td>
</tr>
<tr id="row2029532973191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><strong id="ggaeac1b873015f5b0a8aa7f3c068507426ab49da9db95acfa014af9f23d78dbb1a4"><a name="ggaeac1b873015f5b0a8aa7f3c068507426ab49da9db95acfa014af9f23d78dbb1a4"></a><a name="ggaeac1b873015f5b0a8aa7f3c068507426ab49da9db95acfa014af9f23d78dbb1a4"></a></strong>SYS_REBOOT_CAUSE_CMD&nbsp;</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1245930844191846"><a name="p1245930844191846"></a><a name="p1245930844191846"></a>System reboot </p>
</td>
</tr>
<tr id="row1283519104191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><strong id="ggaeac1b873015f5b0a8aa7f3c068507426a7c1427e708ac62940fa085be165d8f85"><a name="ggaeac1b873015f5b0a8aa7f3c068507426a7c1427e708ac62940fa085be165d8f85"></a><a name="ggaeac1b873015f5b0a8aa7f3c068507426a7c1427e708ac62940fa085be165d8f85"></a></strong>SYS_REBOOT_CAUSE_UPG&nbsp;</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p882530980191846"><a name="p882530980191846"></a><a name="p882530980191846"></a>Reboot upon an upgrade </p>
</td>
</tr>
<tr id="row1676343887191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><strong id="ggaeac1b873015f5b0a8aa7f3c068507426aa88786682350e9f0a17f7a23554bd8d1"><a name="ggaeac1b873015f5b0a8aa7f3c068507426aa88786682350e9f0a17f7a23554bd8d1"></a><a name="ggaeac1b873015f5b0a8aa7f3c068507426aa88786682350e9f0a17f7a23554bd8d1"></a></strong>SYS_REBOOT_CAUSE_UPG_B&nbsp;</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p699007623191846"><a name="p699007623191846"></a><a name="p699007623191846"></a>Reboot upon an upgrade on the backup partition </p>
</td>
</tr>
<tr id="row364670150191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><strong id="ggaeac1b873015f5b0a8aa7f3c068507426aeff008205aabb73ffa286cd4c0eaad89"><a name="ggaeac1b873015f5b0a8aa7f3c068507426aeff008205aabb73ffa286cd4c0eaad89"></a><a name="ggaeac1b873015f5b0a8aa7f3c068507426aeff008205aabb73ffa286cd4c0eaad89"></a></strong>SYS_REBOOT_CAUSE_WIFI_MODE&nbsp;</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p696976054191846"><a name="p696976054191846"></a><a name="p696976054191846"></a>Reboot in Wi-Fi mode </p>
</td>
</tr>
<tr id="row1938796584191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><strong id="ggaeac1b873015f5b0a8aa7f3c068507426af1e3a68edd40db56d76067ed1e24b85b"><a name="ggaeac1b873015f5b0a8aa7f3c068507426af1e3a68edd40db56d76067ed1e24b85b"></a><a name="ggaeac1b873015f5b0a8aa7f3c068507426af1e3a68edd40db56d76067ed1e24b85b"></a></strong>SYS_REBOOT_CAUSE_USR_NORMAL_REBOOT&nbsp;</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p117889563191846"><a name="p117889563191846"></a><a name="p117889563191846"></a>Normal reboot </p>
</td>
</tr>
<tr id="row1412054671191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><strong id="ggaeac1b873015f5b0a8aa7f3c068507426acb3dfe8998e30cc72aa0a6b70e2c5bcf"><a name="ggaeac1b873015f5b0a8aa7f3c068507426acb3dfe8998e30cc72aa0a6b70e2c5bcf"></a><a name="ggaeac1b873015f5b0a8aa7f3c068507426acb3dfe8998e30cc72aa0a6b70e2c5bcf"></a></strong>SYS_REBOOT_CAUSE_USR0&nbsp;</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1477093412191846"><a name="p1477093412191846"></a><a name="p1477093412191846"></a>Custom cause 0 </p>
</td>
</tr>
<tr id="row1468600672191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><strong id="ggaeac1b873015f5b0a8aa7f3c068507426aa523e821f1c3f0917f08db5a2aad782c"><a name="ggaeac1b873015f5b0a8aa7f3c068507426aa523e821f1c3f0917f08db5a2aad782c"></a><a name="ggaeac1b873015f5b0a8aa7f3c068507426aa523e821f1c3f0917f08db5a2aad782c"></a></strong>SYS_REBOOT_CAUSE_USR1&nbsp;</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1681745455191846"><a name="p1681745455191846"></a><a name="p1681745455191846"></a>Custom cause 1 </p>
</td>
</tr>
<tr id="row269370156191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><strong id="ggaeac1b873015f5b0a8aa7f3c068507426af96d2c4f5a95fb704ec5296f0c417dbf"><a name="ggaeac1b873015f5b0a8aa7f3c068507426af96d2c4f5a95fb704ec5296f0c417dbf"></a><a name="ggaeac1b873015f5b0a8aa7f3c068507426af96d2c4f5a95fb704ec5296f0c417dbf"></a></strong>SYS_REBOOT_CAUSE_AT_BUSY&nbsp;</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p287286510191846"><a name="p287286510191846"></a><a name="p287286510191846"></a>Reboot upon busy AT commands </p>
</td>
</tr>
<tr id="row918915771191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><strong id="ggaeac1b873015f5b0a8aa7f3c068507426a14fea85ad30317c373b6609d33d36bde"><a name="ggaeac1b873015f5b0a8aa7f3c068507426a14fea85ad30317c373b6609d33d36bde"></a><a name="ggaeac1b873015f5b0a8aa7f3c068507426a14fea85ad30317c373b6609d33d36bde"></a></strong>SYS_REBOOT_CAUSE_MAX&nbsp;</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p688922184191846"><a name="p688922184191846"></a><a name="p688922184191846"></a>Maximum value </p>
</td>
</tr>
</tbody>
</table>
## **Function Documentation**<a name="section455533125191846"></a>
## LpcInit\(\)<a name="gac4363d7384c17fd7dcc0b70b432ca750"></a>
```
unsigned int LpcInit (void )
```
**Description:**
Initializes low power consumption.
**Returns:**
Returns [WIFI\_IOT\_SUCCESS](Wifiiot.md#gae70eaf627c0370cc271dcb8060aee861) if the operation is successful; Returns an error code defined in [wifiiot\_errno.h](wifiiot_errno-h.md) otherwise.
## LpcSetType\(\)<a name="ga6a7b9016d6742e82a044369b3f960554"></a>
```
unsigned int LpcSetType ([LpcType](Power.md#gaa6139ca73fa81742134fe74345ccb748) type)
```
**Description:**
Sets low power consumption for the device.
**Parameters:**
<a name="table1216468474191846"></a>
<table><thead align="left"><tr id="row185072552191846"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p1822856225191846"><a name="p1822856225191846"></a><a name="p1822856225191846"></a>Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p868366359191846"><a name="p868366359191846"></a><a name="p868366359191846"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row752733970191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">type</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates the low power consumption mode to set. </td>
</tr>
</tbody>
</table>
**Returns:**
Returns [WIFI\_IOT\_SUCCESS](Wifiiot.md#gae70eaf627c0370cc271dcb8060aee861) if the operation is successful; Returns an error code defined in [wifiiot\_errno.h](wifiiot_errno-h.md) otherwise.
## RebootDevice\(\)<a name="ga3653c23553991eac26fa69f6a23e8987"></a>
```
void RebootDevice ([RebootCause](Power.md#gaeac1b873015f5b0a8aa7f3c068507426) cause)
```
**Description:**
Reboots the device using different causes.
**Parameters:**
<a name="table1246673451191846"></a>
<table><thead align="left"><tr id="row1294716830191846"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p997432359191846"><a name="p997432359191846"></a><a name="p997432359191846"></a>Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p867733004191846"><a name="p867733004191846"></a><a name="p867733004191846"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row612548614191846"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">cause</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates the reboot cause. </td>
</tr>
</tbody>
</table>
# Provider<a name="ZH-CN_TOPIC_0000001054476501"></a>
## **Overview**<a name="section663067880191900"></a>
**Related Modules:**
[Broadcast](Broadcast.md)
**Description:**
Defines the provider of events and data of a topic.
## **Summary**<a name="section1487115097191900"></a>
## Data Fields<a name="pub-attribs"></a>
<a name="table1289206452191900"></a>
<table><thead align="left"><tr id="row984823785191900"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p1804219399191900"><a name="p1804219399191900"></a><a name="p1804219399191900"></a>Variable Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p2057048956191900"><a name="p2057048956191900"></a><a name="p2057048956191900"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row408495216191900"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 "><p id="p590873746191900"><a name="p590873746191900"></a><a name="p590873746191900"></a><a href="Provider.md#afbce5ffb04137a55e45161a7ba8577b7">Publish</a> )(<a href="IUnknown.md">IUnknown</a> *iUnknown, const <a href="Broadcast.md#gaf03f5bc94cad32ab628a6cdee09b0542">Topic</a> *topic, uint8 *data, int16 len)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 "><p id="p1186582569191900"><a name="p1186582569191900"></a><a name="p1186582569191900"></a>BOOL(*&nbsp;</p>
<p id="p1651551524191900"><a name="p1651551524191900"></a><a name="p1651551524191900"></a>Publishes events and data of a specified topic. </p>
</td>
</tr>
</tbody>
</table>
## **Details**<a name="section1379136952191900"></a>
## **Field Documentation**<a name="section1071721486191900"></a>
## Publish<a name="afbce5ffb04137a55e45161a7ba8577b7"></a>
```
BOOL(* Provider::Publish) ([IUnknown](IUnknown.md) *iUnknown, const [Topic](Broadcast.md#gaf03f5bc94cad32ab628a6cdee09b0542) *topic, uint8 *data, int16 len)
```
**Description:**
Publishes events and data of a specified topic.
The events or data is published by the publisher, sent to all consumers who have subscribed to the topic, and processed by the consumers.
**Parameters:**
<a name="table319141948191900"></a>
<table><thead align="left"><tr id="row999890591191900"><th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.1"><p id="p840475230191900"><a name="p840475230191900"></a><a name="p840475230191900"></a>Name</p>
</th>
<th class="cellrowborder" valign="top" width="50%" id="mcps1.1.3.1.2"><p id="p439353547191900"><a name="p439353547191900"></a><a name="p439353547191900"></a>Description</p>
</th>
</tr>
</thead>
<tbody><tr id="row1788395504191900"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">iUnknown</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates external interface of the pub/sub feature. </td>
</tr>
<tr id="row1450382891191900"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">topic</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates the pointer to the topic to publish. </td>
</tr>
<tr id="row253019304191900"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">data</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates the pointer to the data to publish. </td>
</tr>
<tr id="row755808410191900"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.1 ">len</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.1.3.1.2 ">Indicates the length of the data to be published. The length must be the same as the <strong id="b1136706137191900"><a name="b1136706137191900"></a><a name="b1136706137191900"></a>data</strong> length. The caller must ensure the validity of this parameter. </td>
</tr>
</tbody>
</table>
**Returns:**
Returns **TRUE** if the topic is successfully published; returns **FALSE** otherwise.
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
# Utils子系统<a name="ZH-CN_TOPIC_0000001054915083"></a>
- **[Kv\_store](Kv_store.md)**
- **[Parameter](Parameter.md)**
- **[Utils\_config](Utils_config.md)**
- **[Utils\_file](Utils_file.md)**
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册