| 
									
										
										
										
											2007-02-09 23:24:33 +09:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  |    BlueZ - Bluetooth protocol stack for Linux | 
					
						
							|  |  |  |    Copyright (C) 2000-2001 Qualcomm Incorporated | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    This program is free software; you can redistribute it and/or modify | 
					
						
							|  |  |  |    it under the terms of the GNU General Public License version 2 as | 
					
						
							|  |  |  |    published by the Free Software Foundation; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | 
					
						
							|  |  |  |    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | 
					
						
							|  |  |  |    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. | 
					
						
							|  |  |  |    IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY | 
					
						
							| 
									
										
										
										
											2007-02-09 23:24:33 +09:00
										 |  |  |    CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES | 
					
						
							|  |  |  |    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | 
					
						
							|  |  |  |    ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  |    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-02-09 23:24:33 +09:00
										 |  |  |    ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, | 
					
						
							|  |  |  |    COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  |    SOFTWARE IS DISCLAIMED. | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Bluetooth kernel library. */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-16 23:32:42 -08:00
										 |  |  | #define pr_fmt(fmt) "Bluetooth: " fmt
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-23 04:04:22 -03:00
										 |  |  | #include <linux/export.h>
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | #include <net/bluetooth/bluetooth.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void baswap(bdaddr_t *dst, bdaddr_t *src) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	unsigned char *d = (unsigned char *) dst; | 
					
						
							|  |  |  | 	unsigned char *s = (unsigned char *) src; | 
					
						
							|  |  |  | 	unsigned int i; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	for (i = 0; i < 6; i++) | 
					
						
							|  |  |  | 		d[i] = s[5 - i]; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | EXPORT_SYMBOL(baswap); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Bluetooth error codes to Unix errno mapping */ | 
					
						
							| 
									
										
										
										
											2011-06-29 18:18:29 -07:00
										 |  |  | int bt_to_errno(__u16 code) | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | { | 
					
						
							|  |  |  | 	switch (code) { | 
					
						
							|  |  |  | 	case 0: | 
					
						
							|  |  |  | 		return 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	case 0x01: | 
					
						
							|  |  |  | 		return EBADRQC; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	case 0x02: | 
					
						
							|  |  |  | 		return ENOTCONN; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	case 0x03: | 
					
						
							|  |  |  | 		return EIO; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	case 0x04: | 
					
						
							| 
									
										
										
										
											2014-03-24 20:21:52 +02:00
										 |  |  | 	case 0x3c: | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 		return EHOSTDOWN; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	case 0x05: | 
					
						
							|  |  |  | 		return EACCES; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	case 0x06: | 
					
						
							|  |  |  | 		return EBADE; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	case 0x07: | 
					
						
							|  |  |  | 		return ENOMEM; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	case 0x08: | 
					
						
							|  |  |  | 		return ETIMEDOUT; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	case 0x09: | 
					
						
							|  |  |  | 		return EMLINK; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	case 0x0a: | 
					
						
							|  |  |  | 		return EMLINK; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	case 0x0b: | 
					
						
							|  |  |  | 		return EALREADY; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	case 0x0c: | 
					
						
							|  |  |  | 		return EBUSY; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	case 0x0d: | 
					
						
							|  |  |  | 	case 0x0e: | 
					
						
							|  |  |  | 	case 0x0f: | 
					
						
							|  |  |  | 		return ECONNREFUSED; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	case 0x10: | 
					
						
							|  |  |  | 		return ETIMEDOUT; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	case 0x11: | 
					
						
							|  |  |  | 	case 0x27: | 
					
						
							|  |  |  | 	case 0x29: | 
					
						
							|  |  |  | 	case 0x20: | 
					
						
							|  |  |  | 		return EOPNOTSUPP; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	case 0x12: | 
					
						
							|  |  |  | 		return EINVAL; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	case 0x13: | 
					
						
							|  |  |  | 	case 0x14: | 
					
						
							|  |  |  | 	case 0x15: | 
					
						
							|  |  |  | 		return ECONNRESET; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	case 0x16: | 
					
						
							|  |  |  | 		return ECONNABORTED; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	case 0x17: | 
					
						
							|  |  |  | 		return ELOOP; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	case 0x18: | 
					
						
							|  |  |  | 		return EACCES; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	case 0x1a: | 
					
						
							|  |  |  | 		return EPROTONOSUPPORT; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	case 0x1b: | 
					
						
							|  |  |  | 		return ECONNREFUSED; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	case 0x19: | 
					
						
							|  |  |  | 	case 0x1e: | 
					
						
							|  |  |  | 	case 0x23: | 
					
						
							|  |  |  | 	case 0x24: | 
					
						
							|  |  |  | 	case 0x25: | 
					
						
							|  |  |  | 		return EPROTO; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	default: | 
					
						
							|  |  |  | 		return ENOSYS; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2011-06-29 18:18:29 -07:00
										 |  |  | EXPORT_SYMBOL(bt_to_errno); | 
					
						
							| 
									
										
										
										
											2011-06-30 19:15:37 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-22 11:17:41 -07:00
										 |  |  | void bt_info(const char *format, ...) | 
					
						
							| 
									
										
										
										
											2012-02-16 23:32:42 -08:00
										 |  |  | { | 
					
						
							|  |  |  | 	struct va_format vaf; | 
					
						
							|  |  |  | 	va_list args; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	va_start(args, format); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	vaf.fmt = format; | 
					
						
							|  |  |  | 	vaf.va = &args; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-22 11:17:41 -07:00
										 |  |  | 	pr_info("%pV", &vaf); | 
					
						
							| 
									
										
										
										
											2012-02-16 23:32:42 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	va_end(args); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | EXPORT_SYMBOL(bt_info); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-22 11:17:41 -07:00
										 |  |  | void bt_err(const char *format, ...) | 
					
						
							| 
									
										
										
										
											2011-06-30 19:15:37 -03:00
										 |  |  | { | 
					
						
							|  |  |  | 	struct va_format vaf; | 
					
						
							|  |  |  | 	va_list args; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	va_start(args, format); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	vaf.fmt = format; | 
					
						
							|  |  |  | 	vaf.va = &args; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-22 11:17:41 -07:00
										 |  |  | 	pr_err("%pV", &vaf); | 
					
						
							| 
									
										
										
										
											2011-06-30 19:15:37 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	va_end(args); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2012-02-16 23:32:42 -08:00
										 |  |  | EXPORT_SYMBOL(bt_err); |