0sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget)/translations/zh_CN/networking/ieee802154modnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/zh_TW/networking/ieee802154modnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/it_IT/networking/ieee802154modnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ja_JP/networking/ieee802154modnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ko_KR/networking/ieee802154modnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/pt_BR/networking/ieee802154modnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/sp_SP/networking/ieee802154modnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(hIEEE 802.15.4 Developer's Guideh]h!IEEE 802.15.4 Developer’s Guide}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhC/var/lib/git/docbuild/linux/Documentation/networking/ieee802154.rsthKubh)}(hhh](h)}(h Introductionh]h Introduction}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hThe IEEE 802.15.4 working group focuses on standardization of the bottom two layers: Medium Access Control (MAC) and Physical access (PHY). And there are mainly two options available for upper layers:h]hThe IEEE 802.15.4 working group focuses on standardization of the bottom two layers: Medium Access Control (MAC) and Physical access (PHY). And there are mainly two options available for upper layers:}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh bullet_list)}(hhh](h list_item)}(h6ZigBee - proprietary protocol from the ZigBee Allianceh]h)}(hhh]h6ZigBee - proprietary protocol from the ZigBee Alliance}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(h?6LoWPAN - IPv6 networking over low rate personal area networks h]h)}(h>6LoWPAN - IPv6 networking over low rate personal area networksh]h>6LoWPAN - IPv6 networking over low rate personal area networks}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hj ubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubeh}(h]h ]h"]h$]h&]bullet-uh1hhhhK hhhhubh)}(hThe goal of the Linux-wpan is to provide a complete implementation of the IEEE 802.15.4 and 6LoWPAN protocols. IEEE 802.15.4 is a stack of protocols for organizing Low-Rate Wireless Personal Area Networks.h]hThe goal of the Linux-wpan is to provide a complete implementation of the IEEE 802.15.4 and 6LoWPAN protocols. IEEE 802.15.4 is a stack of protocols for organizing Low-Rate Wireless Personal Area Networks.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(h*The stack is composed of three main parts:h]h*The stack is composed of three main parts:}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(hIEEE 802.15.4 layer; We have chosen to use plain Berkeley socket API, the generic Linux networking stack to transfer IEEE 802.15.4 data messages and a special protocol over netlink for configuration/managementh]h)}(hIEEE 802.15.4 layer; We have chosen to use plain Berkeley socket API, the generic Linux networking stack to transfer IEEE 802.15.4 data messages and a special protocol over netlink for configuration/managementh]hIEEE 802.15.4 layer; We have chosen to use plain Berkeley socket API, the generic Linux networking stack to transfer IEEE 802.15.4 data messages and a special protocol over netlink for configuration/management}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjIubah}(h]h ]h"]h$]h&]uh1hhjFhhhhhNubh)}(hBMAC - provides access to shared channel and reliable data deliveryh]h)}(hjch]hBMAC - provides access to shared channel and reliable data delivery}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjaubah}(h]h ]h"]h$]h&]uh1hhjFhhhhhNubh)}(h PHY - represents device drivers h]h)}(hPHY - represents device driversh]hPHY - represents device drivers}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjxubah}(h]h ]h"]h$]h&]uh1hhjFhhhhhNubeh}(h]h ]h"]h$]h&]j(j)uh1hhhhKhhhhubeh}(h] introductionah ]h"] introductionah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Socket APIh]h Socket API}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh literal_block)}(h.int sd = socket(PF_IEEE802154, SOCK_DGRAM, 0);h]h.int sd = socket(PF_IEEE802154, SOCK_DGRAM, 0);}hjsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1jhhhKhjhhubh)}(hXThe address family, socket addresses etc. are defined in the include/net/af_ieee802154.h header or in the special header in the userspace package (see either https://linux-wpan.org/wpan-tools.html or the git tree at https://github.com/linux-wpan/wpan-tools).h](hThe address family, socket addresses etc. are defined in the include/net/af_ieee802154.h header or in the special header in the userspace package (see either }(hjhhhNhNubh reference)}(h&https://linux-wpan.org/wpan-tools.htmlh]h&https://linux-wpan.org/wpan-tools.html}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1jhjubh or the git tree at }(hjhhhNhNubj)}(h(https://github.com/linux-wpan/wpan-toolsh]h(https://github.com/linux-wpan/wpan-tools}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1jhjubh).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK!hjhhubeh}(h] socket-apiah ]h"] socket apiah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h6LoWPAN Linux implementationh]h6LoWPAN Linux implementation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK'ubh)}(hXThe IEEE 802.15.4 standard specifies an MTU of 127 bytes, yielding about 80 octets of actual MAC payload once security is turned on, on a wireless link with a link throughput of 250 kbps or less. The 6LoWPAN adaptation format [RFC4944] was specified to carry IPv6 datagrams over such constrained links, taking into account limited bandwidth, memory, or energy resources that are expected in applications such as wireless Sensor Networks. [RFC4944] defines a Mesh Addressing header to support sub-IP forwarding, a Fragmentation header to support the IPv6 minimum MTU requirement [RFC2460], and stateless header compression for IPv6 datagrams (LOWPAN_HC1 and LOWPAN_HC2) to reduce the relatively large IPv6 and UDP headers down to (in the best case) several bytes.h]hXThe IEEE 802.15.4 standard specifies an MTU of 127 bytes, yielding about 80 octets of actual MAC payload once security is turned on, on a wireless link with a link throughput of 250 kbps or less. The 6LoWPAN adaptation format [RFC4944] was specified to carry IPv6 datagrams over such constrained links, taking into account limited bandwidth, memory, or energy resources that are expected in applications such as wireless Sensor Networks. [RFC4944] defines a Mesh Addressing header to support sub-IP forwarding, a Fragmentation header to support the IPv6 minimum MTU requirement [RFC2460], and stateless header compression for IPv6 datagrams (LOWPAN_HC1 and LOWPAN_HC2) to reduce the relatively large IPv6 and UDP headers down to (in the best case) several bytes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK)hjhhubh)}(hIn September 2011 the standard update was published - [RFC6282]. It deprecates HC1 and HC2 compression and defines IPHC encoding format which is used in this Linux implementation.h]hIn September 2011 the standard update was published - [RFC6282]. It deprecates HC1 and HC2 compression and defines IPHC encoding format which is used in this Linux implementation.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hjhhubh)}(haAll the code related to 6lowpan you may find in files: net/6lowpan/* and net/ieee802154/6lowpan/*h]haAll the code related to 6lowpan you may find in files: net/6lowpan/* and net/ieee802154/6lowpan/*}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK8hjhhubh)}(hTo setup a 6LoWPAN interface you need: 1. Add IEEE802.15.4 interface and set channel and PAN ID; 2. Add 6lowpan interface by command like: # ip link add link wpan0 name lowpan0 type lowpan 3. Bring up 'lowpan0' interfaceh]hTo setup a 6LoWPAN interface you need: 1. Add IEEE802.15.4 interface and set channel and PAN ID; 2. Add 6lowpan interface by command like: # ip link add link wpan0 name lowpan0 type lowpan 3. Bring up ‘lowpan0’ interface}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK;hjhhubeh}(h]lowpan-linux-implementationah ]h"]6lowpan linux implementationah$]h&]uh1hhhhhhhhK'ubh)}(hhh](h)}(hDriversh]hDrivers}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPhhhhhKBubh)}(hXLike with WiFi, there are several types of devices implementing IEEE 802.15.4. 1) 'HardMAC'. The MAC layer is implemented in the device itself, the device exports a management (e.g. MLME) and data API. 2) 'SoftMAC' or just radio. These types of devices are just radio transceivers possibly with some kinds of acceleration like automatic CRC computation and comparison, automagic ACK handling, address matching, etc.h]hXLike with WiFi, there are several types of devices implementing IEEE 802.15.4. 1) ‘HardMAC’. The MAC layer is implemented in the device itself, the device exports a management (e.g. MLME) and data API. 2) ‘SoftMAC’ or just radio. These types of devices are just radio transceivers possibly with some kinds of acceleration like automatic CRC computation and comparison, automagic ACK handling, address matching, etc.}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKDhjPhhubh)}(hUEach type of device requires a different approach to be hooked into the Linux kernel.h]hUEach type of device requires a different approach to be hooked into the Linux kernel.}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKKhjPhhubh)}(hhh](h)}(hHardMACh]hHardMAC}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}hhhhhKOubh)}(hXJSee the header include/net/ieee802154_netdev.h. You have to implement Linux net_device, with .type = ARPHRD_IEEE802154. Data is exchanged with socket family code via plain sk_buffs. On skb reception skb->cb must contain additional info as described in the struct ieee802154_mac_cb. During packet transmission the skb->cb is used to provide additional data to the device's header_ops->create function. Be aware that this data can be overridden later (when socket code submits skb to qdisc), so if you need something from that cb later, you should store info in the skb->data on your own.h]hXLSee the header include/net/ieee802154_netdev.h. You have to implement Linux net_device, with .type = ARPHRD_IEEE802154. Data is exchanged with socket family code via plain sk_buffs. On skb reception skb->cb must contain additional info as described in the struct ieee802154_mac_cb. During packet transmission the skb->cb is used to provide additional data to the device’s header_ops->create function. Be aware that this data can be overridden later (when socket code submits skb to qdisc), so if you need something from that cb later, you should store info in the skb->data on your own.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKQhj}hhubh)}(hXTo hook the MLME interface you have to populate the ml_priv field of your net_device with a pointer to struct ieee802154_mlme_ops instance. The fields assoc_req, assoc_resp, disassoc_req, start_req, and scan_req are optional. All other fields are required.h]hXTo hook the MLME interface you have to populate the ml_priv field of your net_device with a pointer to struct ieee802154_mlme_ops instance. The fields assoc_req, assoc_resp, disassoc_req, start_req, and scan_req are optional. All other fields are required.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKZhj}hhubeh}(h]hardmacah ]h"]hardmacah$]h&]uh1hhjPhhhhhKOubh)}(hhh](h)}(hSoftMACh]hSoftMAC}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK`ubh)}(hThe MAC is the middle layer in the IEEE 802.15.4 Linux stack. At the moment, it provides an interface for driver registration and management of slave interfaces.h]hThe MAC is the middle layer in the IEEE 802.15.4 Linux stack. At the moment, it provides an interface for driver registration and management of slave interfaces.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKbhjhhubh)}(hNOTE: Currently the only monitor device type is supported - it's IEEE 802.15.4 stack interface for network sniffers (e.g. WireShark).h]hNOTE: Currently the only monitor device type is supported - it’s IEEE 802.15.4 stack interface for network sniffers (e.g. WireShark).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKfhjhhubh)}(h(This layer is going to be extended soon.h]h(This layer is going to be extended soon.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKihjhhubh)}(hRSee header include/net/mac802154.h and several drivers in drivers/net/ieee802154/.h]hRSee header include/net/mac802154.h and several drivers in drivers/net/ieee802154/.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKkhjhhubeh}(h]softmacah ]h"]softmacah$]h&]uh1hhjPhhhhhK`ubh)}(hhh](h)}(h Fake driversh]h Fake drivers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKoubh)}(hIn addition there is a driver available which simulates a real device with SoftMAC (fakelb - IEEE 802.15.4 loopback driver) interface. This option provides a possibility to test and debug the stack without usage of real hardware.h]hIn addition there is a driver available which simulates a real device with SoftMAC (fakelb - IEEE 802.15.4 loopback driver) interface. This option provides a possibility to test and debug the stack without usage of real hardware.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKqhjhhubeh}(h] fake-driversah ]h"] fake driversah$]h&]uh1hhjPhhhhhKoubeh}(h]driversah ]h"]driversah$]h&]uh1hhhhhhhhKBubh)}(hhh](h)}(hDevice drivers APIh]hDevice drivers API}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hhhhhKvubh)}(h8The include/net/mac802154.h defines following functions:h]h8The include/net/mac802154.h defines following functions:}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKxhj2hhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](single$ieee802154_alloc_device (C function)c.ieee802154_alloc_devicehNtauh1jQhj2hhhNhNubhdesc)}(hhh](hdesc_signature)}(h]struct ieee802154_dev *ieee802154_alloc_device (size_t priv_size, struct ieee802154_ops *ops)h]hdesc_signature_line)}(h\struct ieee802154_dev *ieee802154_alloc_device(size_t priv_size, struct ieee802154_ops *ops)h](hdesc_sig_keyword)}(hstructh]hstruct}(hjuhhhNhNubah}(h]h ]kah"]h$]h&]uh1jshjohhhhhKzubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhjohhhhhKzubh)}(hhh]h desc_sig_name)}(hieee802154_devh]hieee802154_dev}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomaincreftype identifier reftargetjmodnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)}jieee802154_alloc_devicesbc.ieee802154_alloc_deviceasbuh1hhjohhhhhKzubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjohhhhhKzubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjohhhhhKzubh desc_name)}(hieee802154_alloc_deviceh]j)}(hjh]hieee802154_alloc_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&]jjuh1jhjohhhhhKzubhdesc_parameterlist)}(h.(size_t priv_size, struct ieee802154_ops *ops)h](hdesc_parameter)}(hsize_t priv_sizeh](h)}(hhh]j)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.ieee802154_alloc_deviceasbuh1hhjubj)}(h h]h }(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h priv_sizeh]h priv_size}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct ieee802154_ops *opsh](jt)}(hjwh]hstruct}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjOubj)}(h h]h }(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubh)}(hhh]j)}(hieee802154_opsh]hieee802154_ops}(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjsmodnameN classnameNjj)}j]jc.ieee802154_alloc_deviceasbuh1hhjOubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubj)}(hopsh]hops}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjohhhhhKzubeh}(h]h ]h"]h$]h&]jj add_permalinkuh1jmsphinx_line_type declaratorhjihhhhhKzubah}(h]j`ah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jghhhKzhjdhhubh desc_content)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjdhhhhhKzubeh}(h]h ](jfunctioneh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1jbhhhj2hNhNubh)}(h.Allocation of IEEE 802.15.4 compatible device.h]h.Allocation of IEEE 802.15.4 compatible device.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK|hj2hhubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^#ieee802154_free_device (C function)c.ieee802154_free_devicehNtauh1jQhj2hhhNhNubjc)}(hhh](jh)}(h7void ieee802154_free_device(struct ieee802154_dev *dev)h]jn)}(h7void ieee802154_free_device(struct ieee802154_dev *dev)h](hdesc_sig_keyword_type)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jhjhhhhhK~ubj)}(h h]h }(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhhhK~ubj)}(hieee802154_free_deviceh]j)}(hieee802154_free_deviceh]hieee802154_free_device}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhhhK~ubj)}(h(struct ieee802154_dev *dev)h]j)}(hstruct ieee802154_dev *devh](jt)}(hjwh]hstruct}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjSubj)}(h h]h }(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubh)}(hhh]j)}(hieee802154_devh]hieee802154_dev}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjwmodnameN classnameNjj)}j]j)}jj=sbc.ieee802154_free_deviceasbuh1hhjSubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubj)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjOubah}(h]h ]h"]h$]h&]jjuh1jhjhhhhhK~ubeh}(h]h ]h"]h$]h&]jjjuh1jmjjhjhhhhhK~ubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jghhhK~hj hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhj hhhhhK~ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jbhhhj2hNhNubh)}(hFreeing allocated device.h]hFreeing allocated device.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj2hhubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^'ieee802154_register_device (C function)c.ieee802154_register_devicehNtauh1jQhj2hhhNhNubjc)}(hhh](jh)}(h:int ieee802154_register_device(struct ieee802154_dev *dev)h]jn)}(h:int ieee802154_register_device(struct ieee802154_dev *dev)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j%ah"]h$]h&]uh1jhj hhhhhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhhhKubj)}(hieee802154_register_deviceh]j)}(hieee802154_register_deviceh]hieee802154_register_device}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj hhhhhKubj)}(h(struct ieee802154_dev *dev)h]j)}(hstruct ieee802154_dev *devh](jt)}(hjwh]hstruct}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjFubj)}(h h]h }(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubh)}(hhh]j)}(hieee802154_devh]hieee802154_dev}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjjmodnameN classnameNjj)}j]j)}jj0sbc.ieee802154_register_deviceasbuh1hhjFubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubj)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjBubah}(h]h ]h"]h$]h&]jjuh1jhj hhhhhKubeh}(h]h ]h"]h$]h&]jjjuh1jmjjhjhhhhhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jghhhKhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhhhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jbhhhj2hNhNubh)}(hRegister PHY in the system.h]hRegister PHY in the system.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj2hhubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^)ieee802154_unregister_device (C function)c.ieee802154_unregister_devicehNtauh1jQhj2hhhNhNubjc)}(hhh](jh)}(h=void ieee802154_unregister_device(struct ieee802154_dev *dev)h]jn)}(h=void ieee802154_unregister_device(struct ieee802154_dev *dev)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j%ah"]h$]h&]uh1jhjhhhhhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhhhKubj)}(hieee802154_unregister_deviceh]j)}(hieee802154_unregister_deviceh]hieee802154_unregister_device}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhhhKubj)}(h(struct ieee802154_dev *dev)h]j)}(hstruct ieee802154_dev *devh](jt)}(hjwh]hstruct}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj9ubj)}(h h]h }(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubh)}(hhh]j)}(hieee802154_devh]hieee802154_dev}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj]modnameN classnameNjj)}j]j)}jj#sbc.ieee802154_unregister_deviceasbuh1hhj9ubj)}(h h]h }(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubj)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj5ubah}(h]h ]h"]h$]h&]jjuh1jhjhhhhhKubeh}(h]h ]h"]h$]h&]jjjuh1jmjjhjhhhhhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jghhhKhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhhhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jbhhhj2hNhNubh)}(hFreeing registered PHY.h]hFreeing registered PHY.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj2hhubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^"ieee802154_rx_irqsafe (C function)c.ieee802154_rx_irqsafehNtauh1jQhj2hhhNhNubjc)}(hhh](jh)}(hQvoid ieee802154_rx_irqsafe(struct ieee802154_hw *hw, struct sk_buff *skb, u8 lqi)h]jn)}(hQvoid ieee802154_rx_irqsafe(struct ieee802154_hw *hw, struct sk_buff *skb, u8 lqi)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j%ah"]h$]h&]uh1jhjhhhhhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhhhKubj)}(hieee802154_rx_irqsafeh]j)}(hieee802154_rx_irqsafeh]hieee802154_rx_irqsafe}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhhhKubj)}(h7(struct ieee802154_hw *hw, struct sk_buff *skb, u8 lqi)h](j)}(hstruct ieee802154_hw *hwh](jt)}(hjwh]hstruct}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj,ubj)}(h h]h }(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubh)}(hhh]j)}(h ieee802154_hwh]h ieee802154_hw}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjPmodnameN classnameNjj)}j]j)}jjsbc.ieee802154_rx_irqsafeasbuh1hhj,ubj)}(h h]h }(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubj)}(hjh]h*}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubj)}(hhwh]hhw}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj(ubj)}(hstruct sk_buff *skbh](jt)}(hjwh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hsk_buffh]hsk_buff}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jjc.ieee802154_rx_irqsafeasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hskbh]hskb}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj(ubj)}(hu8 lqih](h)}(hhh]j)}(hu8h]hu8}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jjc.ieee802154_rx_irqsafeasbuh1hhj ubj)}(h h]h }(hj3 hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hlqih]hlqi}(hjA hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj(ubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhhhKubeh}(h]h ]h"]h$]h&]jjjuh1jmjjhjhhhhhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jghhhKhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhhhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjt jjt jjjuh1jbhhhj2hNhNubh)}(hTelling 802.15.4 module there is a new received frame in the skb with the RF Link Quality Indicator (LQI) from the hardware device.h]hTelling 802.15.4 module there is a new received frame in the skb with the RF Link Quality Indicator (LQI) from the hardware device.}(hjx hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj2hhubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^%ieee802154_xmit_complete (C function)c.ieee802154_xmit_completehNtauh1jQhj2hhhNhNubjc)}(hhh](jh)}(h_void ieee802154_xmit_complete(struct ieee802154_hw *hw, struct sk_buff *skb, bool ifs_handling)h]jn)}(h_void ieee802154_xmit_complete(struct ieee802154_hw *hw, struct sk_buff *skb, bool ifs_handling)h](j)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]j%ah"]h$]h&]uh1jhj hhhhhKubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhhhKubj)}(hieee802154_xmit_completeh]j)}(hieee802154_xmit_completeh]hieee802154_xmit_complete}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj hhhhhKubj)}(hB(struct ieee802154_hw *hw, struct sk_buff *skb, bool ifs_handling)h](j)}(hstruct ieee802154_hw *hwh](jt)}(hjwh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j)}(h ieee802154_hwh]h ieee802154_hw}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jj sbc.ieee802154_xmit_completeasbuh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hj' hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hhwh]hhw}(hj4 hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubj)}(hstruct sk_buff *skbh](jt)}(hjwh]hstruct}(hjM hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjI ubj)}(h h]h }(hjZ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjI ubh)}(hhh]j)}(hsk_buffh]hsk_buff}(hjk hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjh ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjm modnameN classnameNjj)}j]j c.ieee802154_xmit_completeasbuh1hhjI ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjI ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjI ubj)}(hskbh]hskb}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjI ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubj)}(hbool ifs_handlingh](j)}(hboolh]hbool}(hj hhhNhNubah}(h]h ]j%ah"]h$]h&]uh1jhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(h ifs_handlingh]h ifs_handling}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubeh}(h]h ]h"]h$]h&]jjuh1jhj hhhhhKubeh}(h]h ]h"]h$]h&]jjjuh1jmjjhj hhhhhKubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jghhhKhj hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhj hhhhhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1jbhhhj2hNhNubh)}(hfTelling 802.15.4 module the frame in the skb is or going to be transmitted through the hardware deviceh]hfTelling 802.15.4 module the frame in the skb is or going to be transmitted through the hardware device}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj2hhubh)}(hmThe device driver must implement the following callbacks in the IEEE 802.15.4 operations structure at least::h]hlThe device driver must implement the following callbacks in the IEEE 802.15.4 operations structure at least:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj2hhubj)}(hXfstruct ieee802154_ops { ... int (*start)(struct ieee802154_hw *hw); void (*stop)(struct ieee802154_hw *hw); ... int (*xmit_async)(struct ieee802154_hw *hw, struct sk_buff *skb); int (*ed)(struct ieee802154_hw *hw, u8 *level); int (*set_channel)(struct ieee802154_hw *hw, u8 page, u8 channel); ... };h]hXfstruct ieee802154_ops { ... int (*start)(struct ieee802154_hw *hw); void (*stop)(struct ieee802154_hw *hw); ... int (*xmit_async)(struct ieee802154_hw *hw, struct sk_buff *skb); int (*ed)(struct ieee802154_hw *hw, u8 *level); int (*set_channel)(struct ieee802154_hw *hw, u8 page, u8 channel); ... };}hj, sbah}(h]h ]h"]h$]h&]jjuh1jhhhKhj2hhubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^start (C function)c.starthNtauh1jQhj2hhhNhNubjc)}(hhh](jh)}(h#int start(struct ieee802154_hw *hw)h]jn)}(h#int start(struct ieee802154_hw *hw)h](j)}(hinth]hint}(hjS hhhNhNubah}(h]h ]j%ah"]h$]h&]uh1jhjO hhhhhKubj)}(h h]h }(hja hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjO hhhhhKubj)}(hstarth]j)}(hstarth]hstart}(hjs hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjo ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjO hhhhhKubj)}(h(struct ieee802154_hw *hw)h]j)}(hstruct ieee802154_hw *hwh](jt)}(hjwh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j)}(h ieee802154_hwh]h ieee802154_hw}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jju sbc.startasbuh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hhwh]hhw}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubah}(h]h ]h"]h$]h&]jjuh1jhjO hhhhhKubeh}(h]h ]h"]h$]h&]jjjuh1jmjjhjK hhhhhKubah}(h]jF ah ](jjeh"]h$]h&]jj)jhuh1jghhhKhjH hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjH hhhhhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1jbhhhj2hNhNubh)}(hJHandler that 802.15.4 module calls for the hardware device initialization.h]hJHandler that 802.15.4 module calls for the hardware device initialization.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj2hhubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^stop (C function)c.stophNtauh1jQhj2hhhNhNubjc)}(hhh](jh)}(h#void stop(struct ieee802154_hw *hw)h]jn)}(h#void stop(struct ieee802154_hw *hw)h](j)}(hvoidh]hvoid}(hjF hhhNhNubah}(h]h ]j%ah"]h$]h&]uh1jhjB hhhhhKubj)}(h h]h }(hjT hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjB hhhhhKubj)}(hstoph]j)}(hstoph]hstop}(hjf hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjb ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjB hhhhhKubj)}(h(struct ieee802154_hw *hw)h]j)}(hstruct ieee802154_hw *hwh](jt)}(hjwh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj~ ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ ubh)}(hhh]j)}(h ieee802154_hwh]h ieee802154_hw}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jjh sbc.stopasbuh1hhj~ ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ ubj)}(hhwh]hhw}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjz ubah}(h]h ]h"]h$]h&]jjuh1jhjB hhhhhKubeh}(h]h ]h"]h$]h&]jjjuh1jmjjhj> hhhhhKubah}(h]j9 ah ](jjeh"]h$]h&]jj)jhuh1jghhhKhj; hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhj; hhhhhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1jbhhhj2hNhNubh)}(hCHandler that 802.15.4 module calls for the hardware device cleanup.h]hCHandler that 802.15.4 module calls for the hardware device cleanup.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj2hhubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^xmit_async (C function) c.xmit_asynchNtauh1jQhj2hhhNhNubjc)}(hhh](jh)}(h=int xmit_async(struct ieee802154_hw *hw, struct sk_buff *skb)h]jn)}(h=int xmit_async(struct ieee802154_hw *hw, struct sk_buff *skb)h](j)}(hinth]hint}(hj9 hhhNhNubah}(h]h ]j%ah"]h$]h&]uh1jhj5 hhhhhKubj)}(h h]h }(hjG hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5 hhhhhKubj)}(h xmit_asynch]j)}(h xmit_asynch]h xmit_async}(hjY hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjU ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj5 hhhhhKubj)}(h/(struct ieee802154_hw *hw, struct sk_buff *skb)h](j)}(hstruct ieee802154_hw *hwh](jt)}(hjwh]hstruct}(hju hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjq ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjq ubh)}(hhh]j)}(h ieee802154_hwh]h ieee802154_hw}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jj[ sb c.xmit_asyncasbuh1hhjq ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjq ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjq ubj)}(hhwh]hhw}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjq ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjm ubj)}(hstruct sk_buff *skbh](jt)}(hjwh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j)}(hsk_buffh]hsk_buff}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j c.xmit_asyncasbuh1hhj ubj)}(h h]h }(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hskbh]hskb}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjm ubeh}(h]h ]h"]h$]h&]jjuh1jhj5 hhhhhKubeh}(h]h ]h"]h$]h&]jjjuh1jmjjhj1 hhhhhKubah}(h]j, ah ](jjeh"]h$]h&]jj)jhuh1jghhhKhj. hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhj. hhhhhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjqjjqjjjuh1jbhhhj2hNhNubh)}(hqHandler that 802.15.4 module calls for each frame in the skb going to be transmitted through the hardware device.h]hqHandler that 802.15.4 module calls for each frame in the skb going to be transmitted through the hardware device.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj2hhubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^ed (C function)c.edhNtauh1jQhj2hhhNhNubjc)}(hhh](jh)}(h+int ed(struct ieee802154_hw *hw, u8 *level)h]jn)}(h+int ed(struct ieee802154_hw *hw, u8 *level)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j%ah"]h$]h&]uh1jhjhhhhhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhhhKubj)}(hedh]j)}(hedh]hed}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhhhKubj)}(h%(struct ieee802154_hw *hw, u8 *level)h](j)}(hstruct ieee802154_hw *hwh](jt)}(hjwh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h ieee802154_hwh]h ieee802154_hw}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.edasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hhwh]hhw}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(h u8 *levelh](h)}(hhh]j)}(hu8h]hu8}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjOmodnameN classnameNjj)}j]jc.edasbuh1hhjFubj)}(h h]h }(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubj)}(hjh]h*}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubj)}(hlevelh]hlevel}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhhhKubeh}(h]h ]h"]h$]h&]jjjuh1jmjjhjhhhhhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jghhhKhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhhhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jbhhhj2hNhNubh)}(hQHandler that 802.15.4 module calls for Energy Detection from the hardware device.h]hQHandler that 802.15.4 module calls for Energy Detection from the hardware device.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj2hhubjR)}(hhh]h}(h]h ]h"]h$]h&]entries](j^set_channel (C function) c.set_channelhNtauh1jQhj2hhhNhNubjc)}(hhh](jh)}(h>int set_channel(struct ieee802154_hw *hw, u8 page, u8 channel)h]jn)}(h>int set_channel(struct ieee802154_hw *hw, u8 page, u8 channel)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j%ah"]h$]h&]uh1jhjhhhhhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhhhKubj)}(h set_channelh]j)}(h set_channelh]h set_channel}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhhhKubj)}(h/(struct ieee802154_hw *hw, u8 page, u8 channel)h](j)}(hstruct ieee802154_hw *hwh](jt)}(hjwh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj)}(h h]h }(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h ieee802154_hwh]h ieee802154_hw}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj@modnameN classnameNjj)}j]j)}jjsb c.set_channelasbuh1hhjubj)}(h h]h }(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hhwh]hhw}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hu8 pageh](h)}(hhh]j)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jZ c.set_channelasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hpageh]hpage}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(h u8 channelh](h)}(hhh]j)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jZ c.set_channelasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hchannelh]hchannel}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhhhKubeh}(h]h ]h"]h$]h&]jjjuh1jmjjhjhhhhhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jghhhKhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhhhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj<jj<jjjuh1jbhhhj2hNhNubh)}(hCSet radio for listening on specific channel of the hardware device.h]hCSet radio for listening on specific channel of the hardware device.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj2hhubh)}(hDMoreover IEEE 802.15.4 device operations structure should be filled.h]hDMoreover IEEE 802.15.4 device operations structure should be filled.}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj2hhubeh}(h]device-drivers-apiah ]h"]device drivers apiah$]h&]uh1hhhhhhhhKvubeh}(h]ieee-802-15-4-developer-s-guideah ]h"]ieee 802.15.4 developer's guideah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehʌ _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(jijfjjjjjMjJj/j,jjjjj'j$jaj^u nametypes}(jijjjMj/jjj'jauh}(jfhjhjjjJjj,jPjj}jjj$jj^j2j`jij jjjjjjjj j jF jK j9 j> j, j1 jjjju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.