<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                >[success] 導師視頻講解:[去聽課](https://www.bilibili.com/video/BV1k34y1D7Vz/) >[success] **技術支持說明:** >**1**.一般以自主學習為主 > **2**.可到官方問答社區中提問:[**去提問**](https://bbs.csdn.net/forums/zigbee) > **3**.工程師**會盡快**解答社區問題,但他們是一線開發,【**難以保證**】解答時效,解答辛苦,感謝理解! <br/> ZCL主要包含有應用領域(Profile)、設備類型(Device)、集群(Cluster)、屬性(Attribute)和命令(Command)這幾部分內容。 <br/> ## **應用領域(Profile)** 前面的章節已經多次提過Profile了,在這里做一個正式的介紹。在ZigBee協議中,Profile是指應用領域。ZigBee協議中定義了多個Profile,例如面向家居自動的ZHA(ZigBee Home Automation)、面向照明的ZLL(ZigBee Light Link)等。本文一直在使用智能插座就是屬于ZHA這個Profile的產品。 ### ZigBee協議給**每種類型的Profile分配了一個固定的ID**,打開Profile/zcl_ha.h文件,可以找到ZHA Profile的ID值,代碼如下: ``` // Zigbee Home Automation Profile Identification #define ZCL_HA_PROFILE_ID 0x0104 ``` ### 打開協議棧中的Components\stack\zcl\zcl_ll.h文件,可以找到ZLL Profile的ID值,代碼如下: ``` // Zigbee Light Link Profile Identification #define ZLL_PROFILE_ID 0xc05e ``` ### 使用這個方式,還可以查看其它Profile的ID。在講解簡單描述符的章節中,曾經講到AppProfId字段表示這個簡單描述所屬的應用場景,它的取值其實就是這些Profile ID。 <br/> ## **設備類型(Device)** 每種Profile可以包含多種類型的設備,例如ZHA Profile中包含智能插座、溫濕度傳感器、窗簾控制器等類型的設備。每種類型的設備都被分配了一個ID,稱為Device ID,并且在同一個Profile,每個Device ID都是不同的。 ### 在 ZigBee 3.0 中,ZHA Profile中的各個設備類型被劃分為5大類,分別是Generic、Lighting、Closures、HVAC(Heating Ventilation and Air Conditioning,供暖通風與空氣調節)和IAS(Intruder Alarm Systems,入侵報警系統)。 ![](https://img.kancloud.cn/84/6a/846afb4235f1f21007cbd9f85f55d400_736x654.png =600x) ![](https://img.kancloud.cn/92/e6/92e66e9a7c3d209344f4e42287477d07_830x332.png =600x) ![](https://img.kancloud.cn/9f/a2/9fa2c66a3ed26fe8512413f490fb4ae6_832x192.png =600x) ![](https://img.kancloud.cn/90/ae/90ae4cfa5b99440b803c0424fa163ef6_832x334.png =600x) ![](https://img.kancloud.cn/fc/92/fc9299d5a9a9a204277cec5b8f912a60_830x208.png =600x) ### ZHA相關的源文件是Profile工程目錄下的zcl\_ha.h和zcl\_ha.c。打開zcl\_ha.h文件,可以找到以上所有設備類型的Device ID,代碼如下: 1.Generic ``` // Generic Device IDs #define ZCL_HA_DEVICEID_ON_OFF_SWITCH 0x0000 #define ZCL_HA_DEVICEID_LEVEL_CONTROL_SWITCH 0x0001 #define ZCL_HA_DEVICEID_ON_OFF_OUTPUT 0x0002 #define ZCL_HA_DEVICEID_LEVEL_CONTROLLABLE_OUTPUT 0x0003 #define ZCL_HA_DEVICEID_SCENE_SELECTOR 0x0004 #define ZCL_HA_DEVICEID_CONFIGURATION_TOOL 0x0005 #define ZCL_HA_DEVICEID_REMOTE_CONTROL 0x0006 #define ZCL_HA_DEVICEID_COMBINED_INTERFACE 0x0007 #define ZCL_HA_DEVICEID_RANGE_EXTENDER 0x0008 #define ZCL_HA_DEVICEID_MAINS_POWER_OUTLET 0x0009 #define ZCL_HA_DEVICEID_DOOR_LOCK 0x000A #define ZCL_HA_DEVICEID_DOOR_LOCK_CONTROLLER 0x000B #define ZCL_HA_DEVICEID_SIMPLE_SENSOR 0x000C #define ZCL_HA_DEVICEID_CONSUMPTION_AWARENESS_DEVICE 0x000D #define ZCL_HA_DEVICEID_HOME_GATEWAY 0x0050 #define ZCL_HA_DEVICEID_SMART_PLUG 0x0051 #define ZCL_HA_DEVICEID_WHITE_GOODS 0x0052 #define ZCL_HA_DEVICEID_METER_INTERFACE 0x0053 ``` 2.Lighting ``` // Lighting Device IDs #define ZCL_HA_DEVICEID_ON_OFF_LIGHT 0x0100 #define ZCL_HA_DEVICEID_DIMMABLE_LIGHT 0x0101 #define ZCL_HA_DEVICEID_COLORED_DIMMABLE_LIGHT 0x0102 #define ZCL_HA_DEVICEID_ON_OFF_LIGHT_SWITCH 0x0103 #define ZCL_HA_DEVICEID_DIMMER_SWITCH 0x0104 #define ZCL_HA_DEVICEID_COLOR_DIMMER_SWITCH 0x0105 #define ZCL_HA_DEVICEID_LIGHT_SENSOR 0x0106 #define ZCL_HA_DEVICEID_OCCUPANCY_SENSOR 0x0107 ``` 3.Closures ``` // Closures Device IDs #define ZCL_HA_DEVICEID_SHADE 0x0200 #define ZCL_HA_DEVICEID_SHADE_CONTROLLER 0x0201 #define ZCL_HA_DEVICEID_WINDOW_COVERING_DEVICE 0x0202 #define ZCL_HA_DEVICEID_WINDOW_COVERING_CONTROLLER 0x0203 ``` 4.HVAC ``` // HVAC Device IDs #define ZCL_HA_DEVICEID_HEATING_COOLING_UNIT 0x0300 #define ZCL_HA_DEVICEID_THERMOSTAT 0x0301 #define ZCL_HA_DEVICEID_TEMPERATURE_SENSOR 0x0302 #define ZCL_HA_DEVICEID_PUMP 0x0303 #define ZCL_HA_DEVICEID_PUMP_CONTROLLER 0x0304 #define ZCL_HA_DEVICEID_PRESSURE_SENSOR 0x0305 #define ZCL_HA_DEVICEID_FLOW_SENSOR 0x0306 #define ZCL_HA_DEVICEID_MINI_SPLIT_AC 0x0307 ``` 5.IAS ``` // Intruder Alarm Systems (IAS) Device IDs #define ZCL_HA_DEVICEID_IAS_CONTROL_INDICATING_EQUIPMENT 0x0400 #define ZCL_HA_DEVICEID_IAS_ANCILLARY_CONTROL_EQUIPMENT 0x0401 #define ZCL_HA_DEVICEID_IAS_ZONE 0x0402 #define ZCL_HA_DEVICEID_IAS_WARNING_DEVICE 0x0403 ``` <br/> ZLL相關的源文件在工程目錄Profile下的zcl_ll.h和zcl_ll.c,打開zcl_ll.h文件,可以找到ZLL Profile(領域)定義的Device ID,代碼如下: ``` // ZLL Basic Lighting Device IDs #define ZLL_DEVICEID_ON_OFF_LIGHT 0x0000 #define ZLL_DEVICEID_ON_OFF_PLUG_IN_UNIT 0x0010 #define ZLL_DEVICEID_DIMMABLE_LIGHT 0x0100 #define ZLL_DEVICEID_DIMMABLE_PLUG_IN_UNIT 0x0110 // ZLL Color Lighting Device IDs #define ZLL_DEVICEID_COLOR_LIGHT 0x0200 #define ZLL_DEVICEID_EXTENDED_COLOR_LIGHT 0x0210 #define ZLL_DEVICEID_COLOR_TEMPERATURE_LIGHT 0x0220 // ZLL Lighting Remotes Device IDs #define ZLL_DEVICEID_COLOR_CONTORLLER 0x0800 #define ZLL_DEVICEID_COLOR_SCENE_CONTROLLER 0x0810 #define ZLL_DEVICEID_NON_COLOR_CONTORLLER 0x0820 #define ZLL_DEVICEID_NON_COLOR_SCENE_CONTROLLER 0x0830 #define ZLL_DEVICEID_CONTROL_BRIDGE 0x0840 #define ZLL_DEVICEID_ON_OFF_SENSOR 0x0850 ``` 使用這個方式,還可以查看其它Profile中可以被使用的Device ID,在講解簡單描述符的章節中,曾經講到AppDeviceId字段表示這個設備的類型,它的取值其實就是這些Device ID值。 <br/> ## **集群(Cluster)** Cluster的作用是什么呢?讀者可以保持著這個疑問繼續往下閱讀。 ### 在講解AF通信的章節中,筆者自定義了3個Cluster ID,每個Cluster ID都代表著一個Cluster,用于表示不同的通信類型。這3個Cluster是筆者自定義的,并不是由ZigBee聯盟定義的,因此只有自己寫的代碼能夠理解它們的意義,其它開發者并不知道,所以這3個Cluster可以理解為是私有的。 ### 然而,ZigBee聯盟已經定義了許多標準的Cluster,可供所有開發者使用,這些Cluster可以理解為是公有的。每一個Cluster分配有一個唯一的ID,稱為 Cluster ID。這些Cluster可以分成兩類:屬于特定Profile的Cluster,以及各個Profile共用的、不屬于某個Profile的一般性Cluster(General Clusters)。 <br/> Cluster ID的定義在文件zcl.h中,本文列舉部分Cluster,代碼如下: (1)General Clusters ``` // General Clusters #define ZCL_CLUSTER_ID_GEN_BASIC 0x0000 #define ZCL_CLUSTER_ID_GEN_POWER_CFG 0x0001 #define ZCL_CLUSTER_ID_GEN_DEVICE_TEMP_CONFIG 0x0002 #define ZCL_CLUSTER_ID_GEN_IDENTIFY 0x0003 #define ZCL_CLUSTER_ID_GEN_GROUPS 0x0004 #define ZCL_CLUSTER_ID_GEN_SCENES 0x0005 #define ZCL_CLUSTER_ID_GEN_ON_OFF 0x0006 #define ZCL_CLUSTER_ID_GEN_ON_OFF_SWITCH_CONFIG 0x0007 #define ZCL_CLUSTER_ID_GEN_LEVEL_CONTROL 0x0008 #define ZCL_CLUSTER_ID_GEN_ALARMS 0x0009 #define ZCL_CLUSTER_ID_GEN_TIME 0x000A #define ZCL_CLUSTER_ID_GEN_LOCATION 0x000B #define ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC 0x000C #define ZCL_CLUSTER_ID_GEN_ANALOG_OUTPUT_BASIC 0x000D #define ZCL_CLUSTER_ID_GEN_ANALOG_VALUE_BASIC 0x000E #define ZCL_CLUSTER_ID_GEN_BINARY_INPUT_BASIC 0x000F #define ZCL_CLUSTER_ID_GEN_BINARY_OUTPUT_BASIC 0x0010 #define ZCL_CLUSTER_ID_GEN_BINARY_VALUE_BASIC 0x0011 #define ZCL_CLUSTER_ID_GEN_MULTISTATE_INPUT_BASIC 0x0012 #define ZCL_CLUSTER_ID_GEN_MULTISTATE_OUTPUT_BASIC 0x0013 #define ZCL_CLUSTER_ID_GEN_MULTISTATE_VALUE_BASIC 0x0014 #define ZCL_CLUSTER_ID_GEN_COMMISSIONING 0x0015 #define ZCL_CLUSTER_ID_GEN_PARTITION 0x0016 #define ZCL_CLUSTER_ID_GEN_POWER_PROFILE 0x001A #define ZCL_CLUSTER_ID_GEN_APPLIANCE_CONTROL 0x001B #define ZCL_CLUSTER_ID_GEN_POLL_CONTROL 0x0020 ``` (2)Retail Clusters ``` // Retail Clusters #define ZCL_CLUSTER_ID_MOBILE_DEVICE_CONFIGURATION 0x0022 #define ZCL_CLUSTER_ID_NEIGHBOR_CLEANING 0x0023 #define ZCL_CLUSTER_ID_NEAREST_GATEWAY 0x0024 ``` (3)Closures Clusters ``` // Closures Clusters #define ZCL_CLUSTER_ID_CLOSURES_SHADE_CONFIG 0x0100 #define ZCL_CLUSTER_ID_CLOSURES_DOOR_LOCK 0x0101 #define ZCL_CLUSTER_ID_CLOSURES_WINDOW_COVERING 0x0102 ``` (4)HVAC Clusters ``` // HVAC Clusters #define ZCL_CLUSTER_ID_HVAC_PUMP_CONFIG_CONTROL 0x0200 #define ZCL_CLUSTER_ID_HVAC_THERMOSTAT 0x0201 #define ZCL_CLUSTER_ID_HVAC_FAN_CONTROL 0x0202 #define ZCL_CLUSTER_ID_HVAC_DIHUMIDIFICATION_CONTROL 0x0203 #define ZCL_CLUSTER_ID_HVAC_USER_INTERFACE_CONFIG 0x0204 ``` (5)Lighting Clusters ``` // Lighting Clusters #define ZCL_CLUSTER_ID_LIGHTING_COLOR_CONTROL 0x0300 #define ZCL_CLUSTER_ID_LIGHTING_BALLAST_CONFIG 0x0301 ``` (6)Measurement and Sensing Clusters ``` // Measurement and Sensing Clusters #define ZCL_CLUSTER_ID_MS_ILLUMINANCE_MEASUREMENT 0x0400 #define ZCL_CLUSTER_ID_MS_ILLUMINANCE_LEVEL_SENSING_CONFIG 0x0401 #define ZCL_CLUSTER_ID_MS_TEMPERATURE_MEASUREMENT 0x0402 #define ZCL_CLUSTER_ID_MS_PRESSURE_MEASUREMENT 0x0403 #define ZCL_CLUSTER_ID_MS_FLOW_MEASUREMENT 0x0404 #define ZCL_CLUSTER_ID_MS_RELATIVE_HUMIDITY 0x0405 #define ZCL_CLUSTER_ID_MS_OCCUPANCY_SENSING 0x0406 ``` (7)Security and Safety (SS) Clusters ``` // Security and Safety (SS) Clusters #define ZCL_CLUSTER_ID_SS_IAS_ZONE 0x0500 #define ZCL_CLUSTER_ID_SS_IAS_ACE 0x0501 #define ZCL_CLUSTER_ID_SS_IAS_WD 0x0502 ``` (8)Protocol Interfaces ``` // Protocol Interfaces #define ZCL_CLUSTER_ID_PI_GENERIC_TUNNEL 0x0600 #define ZCL_CLUSTER_ID_PI_BACNET_PROTOCOL_TUNNEL 0x0601 #define ZCL_CLUSTER_ID_PI_ANALOG_INPUT_BACNET_REG 0x0602 #define ZCL_CLUSTER_ID_PI_ANALOG_INPUT_BACNET_EXT 0x0603 #define ZCL_CLUSTER_ID_PI_ANALOG_OUTPUT_BACNET_REG 0x0604 #define ZCL_CLUSTER_ID_PI_ANALOG_OUTPUT_BACNET_EXT 0x0605 #define ZCL_CLUSTER_ID_PI_ANALOG_VALUE_BACNET_REG 0x0606 #define ZCL_CLUSTER_ID_PI_ANALOG_VALUE_BACNET_EXT 0x0607 #define ZCL_CLUSTER_ID_PI_BINARY_INPUT_BACNET_REG 0x0608 #define ZCL_CLUSTER_ID_PI_BINARY_INPUT_BACNET_EXT 0x0609 #define ZCL_CLUSTER_ID_PI_BINARY_OUTPUT_BACNET_REG 0x060A #define ZCL_CLUSTER_ID_PI_BINARY_OUTPUT_BACNET_EXT 0x060B #define ZCL_CLUSTER_ID_PI_BINARY_VALUE_BACNET_REG 0x060C #define ZCL_CLUSTER_ID_PI_BINARY_VALUE_BACNET_EXT 0x060D #define ZCL_CLUSTER_ID_PI_MULTISTATE_INPUT_BACNET_REG 0x060E #define ZCL_CLUSTER_ID_PI_MULTISTATE_INPUT_BACNET_EXT 0x060F #define ZCL_CLUSTER_ID_PI_MULTISTATE_OUTPUT_BACNET_REG 0x0610 #define ZCL_CLUSTER_ID_PI_MULTISTATE_OUTPUT_BACNET_EXT 0x0611 #define ZCL_CLUSTER_ID_PI_MULTISTATE_VALUE_BACNET_REG 0x0612 #define ZCL_CLUSTER_ID_PI_MULTISTATE_VALUE_BACNET_EXT 0x0613 #define ZCL_CLUSTER_ID_PI_11073_PROTOCOL_TUNNEL 0x0614 #define ZCL_CLUSTER_ID_PI_ISO7818_PROTOCOL_TUNNEL 0x0615 #define ZCL_CLUSTER_ID_PI_RETAIL_TUNNEL 0x0617 ``` (9)Smart Energy (SE) Clusters ``` // Smart Energy (SE) Clusters #define ZCL_CLUSTER_ID_SE_PRICE 0x0700 #define ZCL_CLUSTER_ID_SE_DRLC 0x0701 #define ZCL_CLUSTER_ID_SE_METERING 0x0702 #define ZCL_CLUSTER_ID_SE_MESSAGING 0x0703 #define ZCL_CLUSTER_ID_SE_TUNNELING 0x0704 #define ZCL_CLUSTER_ID_SE_PREPAYMENT 0x0705 #define ZCL_CLUSTER_ID_SE_ENERGY_MGMT 0x0706 #define ZCL_CLUSTER_ID_SE_CALENDAR 0x0707 #define ZCL_CLUSTER_ID_SE_DEVICE_MGMT 0x0708 #define ZCL_CLUSTER_ID_SE_EVENTS 0x0709 #define ZCL_CLUSTER_ID_SE_MDU_PAIRING 0x070A #define ZCL_CLUSTER_ID_SE_KEY_ESTABLISHMENT 0x0800 #define ZCL_CLUSTER_ID_TELECOMMUNICATIONS_INFORMATION 0x0900 #define ZCL_CLUSTER_ID_TELECOMMUNICATIONS_CHATTING 0x0904 #define ZCL_CLUSTER_ID_TELECOMMUNICATIONS_VOICE_OVER_ZIGBEE 0x0905 #define ZCL_CLUSTER_ID_HA_APPLIANCE_IDENTIFICATION 0x0B00 #define ZCL_CLUSTER_ID_HA_METER_IDENTIFICATION 0x0B01 #define ZCL_CLUSTER_ID_HA_APPLIANCE_EVENTS_ALERTS 0x0B02 #define ZCL_CLUSTER_ID_HA_APPLIANCE_STATISTICS 0x0B03 #define ZCL_CLUSTER_ID_HA_ELECTRICAL_MEASUREMENT 0x0B04 #define ZCL_CLUSTER_ID_HA_DIAGNOSTIC 0x0B05 ``` (10)Light Link cluster ``` // Light Link cluster #define ZCL_CLUSTER_ID_TOUCHLINK 0x1000 ``` <br/> 每個Cluster中可以包含多個特定的屬性(Attribute)和命令(Command)。 <br/> ## **屬性(Attribute)** 與面向對象編程思想中屬性類似,這里的屬性是用來描述描述某一類事物的特點的,例如老虎的屬性有性別、年齡和體重等屬性。ZigBee聯盟除了預定義了多個Cluster,還為每個Cluster預定義了一組對應的屬性供開發者使用。Cluster應該包含哪幾個屬性,可由開發者自行定義。 ### 打開zcl\_samplesw\_data.c文件,可以找到如圖所示代碼。 ![](https://img.kancloud.cn/f2/14/f214b3b7c7263586b41c9420c6129e40_732x870.png =400x) 上述代碼中創建了一個屬性數組,這是一個結構體數組。分析一下其中的第1個元素: ``` { ZCL_CLUSTER_ID_GEN_BASIC,//Basic Cluster,由ZigBee聯盟預定義 { //Attribute record ATTRID_BASIC_ZCL_VERSION,//ZCL版本號屬性,由ZigBee聯盟自定義 ZCL_DATATYPE_UINT8,//說明這個屬性的數據類型是8個比特位的變量(無符號整型變量) ACCESS_CONTROL_READ,//說明這個屬性只能被讀取不能被修改 (void*)&zclSampleSw_ZCLVersion//函數引用,暫不做講解 } } ``` 上述代碼的設計有點特別,其主要工作內容是往ZCL\_CLUSTER\_ID\_GEN\_BASIC這個Cluster中添加ATTRID\_BASIC\_ZCL\_VERSION這個屬性,并且說明這個屬性的數據類型和只能被讀取。 ### 再觀察一下下面的兩個元素,會發現其實是把另外兩個屬性也添加進ZCL\_CLUSTER\_ID\_GEN\_BASIC這個Cluster中。如此一來,這個Cluster便包含了3個屬性,以及這3個屬性對應的操作命令。 <br/> ## **命令(Command)** 開發者可以讓源設備向目標設備的某個Cluster發送命令。當目標設備接收到這條命令時,需要執行與該Cluster相關的處理,例如修改該Cluster的中的屬性等。 ### 每個Cluster都包含有一組特定的命令,即每個Cluster只能接收一組特定的命令。命令可以分為兩種,分別是基礎命令和屬性關聯命令。 * **基礎命令** 每個Cluster均包含基礎命令,即基礎命令能被所有Cluster接收,例如讀命令、寫命令和上報命令等,這部分命令的定義在zcl.h文件中,如圖所示。 ![](https://img.kancloud.cn/4b/3d/4b3d9f36af7aafb5a0b277136d555473_550x450.png =400x) ### * **Cluster限定命令** Cluster限定命令只存在于某些特定的Cluster中,即Cluster限定命令只能被某些特定的Cluster接收。打開zcl\_general.h,可以找到如圖所示代碼: ![](https://img.kancloud.cn/b4/59/b45930e9f938560b0a6fb3362970bc71_634x522.png =400x) 其中的COMMAND\_OFF和COMMAND\_ON就是專門作用于ON\_OFF Cluster的命令。 <br/> ## **Cluster應用舉例** 現在終于可以舉個例子說明Cluster的用途了。現在需要設計一盞支持亮度調整的ZigBee燈,可以用兩個Cluster來描述其服務,分別是開關Cluster和亮度Cluster。 * **開關Cluster**用于表示和控制這個燈的開關狀態,因此開關Cluster應該包**含一個開關屬性**,并且能夠被開命令和關命令來控制。 * **亮度Cluster**用于表示和控制這個燈的亮度,因此亮度Cluster應該**包含一個亮度屬性**,并且能夠被調整亮度命令來控制。 從這個例子可以看出Cluster的作用是非常強大的,可用于在邏輯上實現設備的各個服務,而且其用途遠不止于此,后續章節將講解Cluster的更多用途。 <br/> <br/> ## **項目定制** * 如需項目定制開發,可掃碼添加項目經理好友(注明“**項目定制**”) * 定制范圍:**NB-IoT**、**CATn(4G)**、**WiFi**、**ZigBee**、**BLE Mesh**以及**STM32**、**嵌入式Linux**等IoT技術方案 * 善學坊官網:[www.sxf-iot.com](https://www.sxf-iot.com/) ![](https://img.kancloud.cn/ca/73/ca739f92cab220a3059378642e3bd502_430x430.png =200x) * 非項目定制**勿擾**,此處**非**技術支持
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看