/*1BlueZ - Bluetooth protocol stack for Linux2Copyright (C) 2000-2001 Qualcomm Incorporated34Written 2000,2001 by Maxim Krasnyansky <[email protected]>56This program is free software; you can redistribute it and/or modify7it under the terms of the GNU General Public License version 2 as8published by the Free Software Foundation;910THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS11OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,12FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.13IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY14CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES15WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN16ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF17OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.1819ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,20COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS21SOFTWARE IS DISCLAIMED.22*/2324/* Bluetooth kernel library. */2526#include <linux/module.h>2728#include <linux/kernel.h>29#include <linux/stddef.h>30#include <linux/string.h>31#include <asm/errno.h>3233#include <net/bluetooth/bluetooth.h>3435void baswap(bdaddr_t *dst, bdaddr_t *src)36{37unsigned char *d = (unsigned char *) dst;38unsigned char *s = (unsigned char *) src;39unsigned int i;4041for (i = 0; i < 6; i++)42d[i] = s[5 - i];43}44EXPORT_SYMBOL(baswap);4546char *batostr(bdaddr_t *ba)47{48static char str[2][18];49static int i = 1;5051i ^= 1;52sprintf(str[i], "%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X",53ba->b[5], ba->b[4], ba->b[3],54ba->b[2], ba->b[1], ba->b[0]);5556return str[i];57}58EXPORT_SYMBOL(batostr);5960/* Bluetooth error codes to Unix errno mapping */61int bt_err(__u16 code)62{63switch (code) {64case 0:65return 0;6667case 0x01:68return EBADRQC;6970case 0x02:71return ENOTCONN;7273case 0x03:74return EIO;7576case 0x04:77return EHOSTDOWN;7879case 0x05:80return EACCES;8182case 0x06:83return EBADE;8485case 0x07:86return ENOMEM;8788case 0x08:89return ETIMEDOUT;9091case 0x09:92return EMLINK;9394case 0x0a:95return EMLINK;9697case 0x0b:98return EALREADY;99100case 0x0c:101return EBUSY;102103case 0x0d:104case 0x0e:105case 0x0f:106return ECONNREFUSED;107108case 0x10:109return ETIMEDOUT;110111case 0x11:112case 0x27:113case 0x29:114case 0x20:115return EOPNOTSUPP;116117case 0x12:118return EINVAL;119120case 0x13:121case 0x14:122case 0x15:123return ECONNRESET;124125case 0x16:126return ECONNABORTED;127128case 0x17:129return ELOOP;130131case 0x18:132return EACCES;133134case 0x1a:135return EPROTONOSUPPORT;136137case 0x1b:138return ECONNREFUSED;139140case 0x19:141case 0x1e:142case 0x23:143case 0x24:144case 0x25:145return EPROTO;146147default:148return ENOSYS;149}150}151EXPORT_SYMBOL(bt_err);152153154