1*f0166e5eSDmitry Eremin-Solenikov /* 2*f0166e5eSDmitry Eremin-Solenikov * IEEE 802.15.4 inteface for userspace 3*f0166e5eSDmitry Eremin-Solenikov * 4*f0166e5eSDmitry Eremin-Solenikov * Copyright 2007, 2008 Siemens AG 5*f0166e5eSDmitry Eremin-Solenikov * 6*f0166e5eSDmitry Eremin-Solenikov * This program is free software; you can redistribute it and/or modify 7*f0166e5eSDmitry Eremin-Solenikov * it under the terms of the GNU General Public License version 2 8*f0166e5eSDmitry Eremin-Solenikov * as published by the Free Software Foundation. 9*f0166e5eSDmitry Eremin-Solenikov * 10*f0166e5eSDmitry Eremin-Solenikov * This program is distributed in the hope that it will be useful, 11*f0166e5eSDmitry Eremin-Solenikov * but WITHOUT ANY WARRANTY; without even the implied warranty of 12*f0166e5eSDmitry Eremin-Solenikov * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13*f0166e5eSDmitry Eremin-Solenikov * GNU General Public License for more details. 14*f0166e5eSDmitry Eremin-Solenikov * 15*f0166e5eSDmitry Eremin-Solenikov * You should have received a copy of the GNU General Public License along 16*f0166e5eSDmitry Eremin-Solenikov * with this program; if not, write to the Free Software Foundation, Inc., 17*f0166e5eSDmitry Eremin-Solenikov * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18*f0166e5eSDmitry Eremin-Solenikov * 19*f0166e5eSDmitry Eremin-Solenikov * Written by: 20*f0166e5eSDmitry Eremin-Solenikov * Sergey Lapin <slapin@ossfans.org> 21*f0166e5eSDmitry Eremin-Solenikov * Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> 22*f0166e5eSDmitry Eremin-Solenikov */ 23*f0166e5eSDmitry Eremin-Solenikov 24*f0166e5eSDmitry Eremin-Solenikov #ifndef _AF_IEEE802154_H 25*f0166e5eSDmitry Eremin-Solenikov #define _AF_IEEE802154_H 26*f0166e5eSDmitry Eremin-Solenikov 27*f0166e5eSDmitry Eremin-Solenikov #include <linux/socket.h> /* for sa_family_t */ 28*f0166e5eSDmitry Eremin-Solenikov 29*f0166e5eSDmitry Eremin-Solenikov enum { 30*f0166e5eSDmitry Eremin-Solenikov IEEE802154_ADDR_NONE = 0x0, 31*f0166e5eSDmitry Eremin-Solenikov /* RESERVED = 0x01, */ 32*f0166e5eSDmitry Eremin-Solenikov IEEE802154_ADDR_SHORT = 0x2, /* 16-bit address + PANid */ 33*f0166e5eSDmitry Eremin-Solenikov IEEE802154_ADDR_LONG = 0x3, /* 64-bit address + PANid */ 34*f0166e5eSDmitry Eremin-Solenikov }; 35*f0166e5eSDmitry Eremin-Solenikov 36*f0166e5eSDmitry Eremin-Solenikov /* address length, octets */ 37*f0166e5eSDmitry Eremin-Solenikov #define IEEE802154_ADDR_LEN 8 38*f0166e5eSDmitry Eremin-Solenikov 39*f0166e5eSDmitry Eremin-Solenikov struct ieee802154_addr { 40*f0166e5eSDmitry Eremin-Solenikov int addr_type; 41*f0166e5eSDmitry Eremin-Solenikov u16 pan_id; 42*f0166e5eSDmitry Eremin-Solenikov union { 43*f0166e5eSDmitry Eremin-Solenikov u8 hwaddr[IEEE802154_ADDR_LEN]; 44*f0166e5eSDmitry Eremin-Solenikov u16 short_addr; 45*f0166e5eSDmitry Eremin-Solenikov }; 46*f0166e5eSDmitry Eremin-Solenikov }; 47*f0166e5eSDmitry Eremin-Solenikov 48*f0166e5eSDmitry Eremin-Solenikov #define IEEE802154_PANID_BROADCAST 0xffff 49*f0166e5eSDmitry Eremin-Solenikov #define IEEE802154_ADDR_BROADCAST 0xffff 50*f0166e5eSDmitry Eremin-Solenikov #define IEEE802154_ADDR_UNDEF 0xfffe 51*f0166e5eSDmitry Eremin-Solenikov 52*f0166e5eSDmitry Eremin-Solenikov struct sockaddr_ieee802154 { 53*f0166e5eSDmitry Eremin-Solenikov sa_family_t family; /* AF_IEEE802154 */ 54*f0166e5eSDmitry Eremin-Solenikov struct ieee802154_addr addr; 55*f0166e5eSDmitry Eremin-Solenikov }; 56*f0166e5eSDmitry Eremin-Solenikov 57*f0166e5eSDmitry Eremin-Solenikov /* master device */ 58*f0166e5eSDmitry Eremin-Solenikov #define IEEE802154_SIOC_ADD_SLAVE (SIOCDEVPRIVATE + 0) 59*f0166e5eSDmitry Eremin-Solenikov 60*f0166e5eSDmitry Eremin-Solenikov #endif 61