/* * * BlueZ - Bluetooth protocol stack for Linux * * Copyright (C) 2000-2001 Qualcomm Incorporated * Copyright (C) 2002-2003 Maxim Krasnyansky * Copyright (C) 2002-2010 Marcel Holtmann * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include "bluetooth.h" #include "hci.h" void baswap(bdaddr_t *dst, const bdaddr_t *src) { register unsigned char *d = (unsigned char *) dst; register const unsigned char *s = (const unsigned char *) src; register int i; for (i = 0; i < 6; i++) d[i] = s[5-i]; } char *batostr(const bdaddr_t *ba) { char *str = bt_malloc(18); if (!str) return NULL; sprintf(str, "%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X", ba->b[0], ba->b[1], ba->b[2], ba->b[3], ba->b[4], ba->b[5]); return str; } bdaddr_t *strtoba(const char *str) { bdaddr_t b; bdaddr_t *ba = bt_malloc(sizeof(*ba)); if (ba) { str2ba(str, &b); baswap(ba, &b); } return ba; } int ba2str(const bdaddr_t *ba, char *str) { return sprintf(str, "%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X", ba->b[5], ba->b[4], ba->b[3], ba->b[2], ba->b[1], ba->b[0]); } int str2ba(const char *str, bdaddr_t *ba) { int i; if (bachk(str) < 0) { memset(ba, 0, sizeof(*ba)); return -1; } for (i = 5; i >= 0; i--, str += 3) ba->b[i] = strtol(str, NULL, 16); return 0; } int ba2oui(const bdaddr_t *ba, char *str) { return sprintf(str, "%2.2X-%2.2X-%2.2X", ba->b[5], ba->b[4], ba->b[3]); } int bachk(const char *str) { if (!str) return -1; if (strlen(str) != 17) return -1; while (*str) { if (!isxdigit(*str++)) return -1; if (!isxdigit(*str++)) return -1; if (*str == 0) break; if (*str++ != ':') return -1; } return 0; } int baprintf(const char *format, ...) { va_list ap; int len; va_start(ap, format); len = vprintf(format, ap); va_end(ap); return len; } int bafprintf(FILE *stream, const char *format, ...) { va_list ap; int len; va_start(ap, format); len = vfprintf(stream, format, ap); va_end(ap); return len; } int basprintf(char *str, const char *format, ...) { va_list ap; int len; va_start(ap, format); len = vsnprintf(str, (~0U) >> 1, format, ap); va_end(ap); return len; } int basnprintf(char *str, size_t size, const char *format, ...) { va_list ap; int len; va_start(ap, format); len = vsnprintf(str, size, format, ap); va_end(ap); return len; } void *bt_malloc(size_t size) { return malloc(size); } void bt_free(void *ptr) { free(ptr); } /* Bluetooth error codes to Unix errno mapping */ int bt_error(uint16_t code) { switch (code) { case 0: return 0; case HCI_UNKNOWN_COMMAND: return EBADRQC; case HCI_NO_CONNECTION: return ENOTCONN; case HCI_HARDWARE_FAILURE: return EIO; case HCI_PAGE_TIMEOUT: return EHOSTDOWN; case HCI_AUTHENTICATION_FAILURE: return EACCES; case HCI_PIN_OR_KEY_MISSING: return EINVAL; case HCI_MEMORY_FULL: return ENOMEM; case HCI_CONNECTION_TIMEOUT: return ETIMEDOUT; case HCI_MAX_NUMBER_OF_CONNECTIONS: case HCI_MAX_NUMBER_OF_SCO_CONNECTIONS: return EMLINK; case HCI_ACL_CONNECTION_EXISTS: return EALREADY; case HCI_COMMAND_DISALLOWED: case HCI_TRANSACTION_COLLISION: case HCI_ROLE_SWITCH_PENDING: return EBUSY; case HCI_REJECTED_LIMITED_RESOURCES: case HCI_REJECTED_PERSONAL: case HCI_QOS_REJECTED: return ECONNREFUSED; case HCI_HOST_TIMEOUT: return ETIMEDOUT; case HCI_UNSUPPORTED_FEATURE: case HCI_QOS_NOT_SUPPORTED: case HCI_PAIRING_NOT_SUPPORTED: case HCI_CLASSIFICATION_NOT_SUPPORTED: case HCI_UNSUPPORTED_LMP_PARAMETER_VALUE: case HCI_PARAMETER_OUT_OF_RANGE: case HCI_QOS_UNACCEPTABLE_PARAMETER: return EOPNOTSUPP; case HCI_INVALID_PARAMETERS: case HCI_SLOT_VIOLATION: return EINVAL; case HCI_OE_USER_ENDED_CONNECTION: case HCI_OE_LOW_RESOURCES: case HCI_OE_POWER_OFF: return ECONNRESET; case HCI_CONNECTION_TERMINATED: return ECONNABORTED; case HCI_REPEATED_ATTEMPTS: return ELOOP; case HCI_REJECTED_SECURITY: case HCI_PAIRING_NOT_ALLOWED: case HCI_INSUFFICIENT_SECURITY: return EACCES; case HCI_UNSUPPORTED_REMOTE_FEATURE: return EPROTONOSUPPORT; case HCI_SCO_OFFSET_REJECTED: return ECONNREFUSED; case HCI_UNKNOWN_LMP_PDU: case HCI_INVALID_LMP_PARAMETERS: case HCI_LMP_ERROR_TRANSACTION_COLLISION: case HCI_LMP_PDU_NOT_ALLOWED: case HCI_ENCRYPTION_MODE_NOT_ACCEPTED: return EPROTO; default: return ENOSYS; } } const char *bt_compidtostr(int compid) { switch (compid) { case 0: return "Ericsson Technology Licensing"; case 1: return "Nokia Mobile Phones"; case 2: return "Intel Corp."; case 3: return "IBM Corp."; case 4: return "Toshiba Corp."; case 5: return "3Com"; case 6: return "Microsoft"; case 7: return "Lucent"; case 8: return "Motorola"; case 9: return "Infineon Technologies AG"; case 10: return "Cambridge Silicon Radio"; case 11: return "Silicon Wave"; case 12: return "Digianswer A/S"; case 13: return "Texas Instruments Inc."; case 14: return "Ceva, Inc. (formerly Parthus Technologies, Inc.)"; case 15: return "Broadcom Corporation"; case 16: return "Mitel Semiconductor"; case 17: return "Widcomm, Inc"; case 18: return "Zeevo, Inc."; case 19: return "Atmel Corporation"; case 20: return "Mitsubishi Electric Corporation"; case 21: return "RTX Telecom A/S"; case 22: return "KC Technology Inc."; case 23: return "NewLogic"; case 24: return "Transilica, Inc."; case 25: return "Rohde & Schwarz GmbH & Co. KG"; case 26: return "TTPCom Limited"; case 27: return "Signia Technologies, Inc."; case 28: return "Conexant Systems Inc."; case 29: return "Qualcomm"; case 30: return "Inventel"; case 31: return "AVM Berlin"; case 32: return "BandSpeed, Inc."; case 33: return "Mansella Ltd"; case 34: return "NEC Corporation"; case 35: return "WavePlus Technology Co., Ltd."; case 36: return "Alcatel"; case 37: return "NXP Semiconductors (formerly Philips Semiconductors)"; case 38: return "C Technologies"; case 39: return "Open Interface"; case 40: return "R F Micro Devices"; case 41: return "Hitachi Ltd"; case 42: return "Symbol Technologies, Inc."; case 43: return "Tenovis"; case 44: return "Macronix International Co. Ltd."; case 45: return "GCT Semiconductor"; case 46: return "Norwood Systems"; case 47: return "MewTel Technology Inc."; case 48: return "ST Microelectronics"; case 49: return "Synopsis"; case 50: return "Red-M (Communications) Ltd"; case 51: return "Commil Ltd"; case 52: return "Computer Access Technology Corporation (CATC)"; case 53: return "Eclipse (HQ Espana) S.L."; case 54: return "Renesas Electronics Corporation"; case 55: return "Mobilian Corporation"; case 56: return "Terax"; case 57: return "Integrated System Solution Corp."; case 58: return "Matsushita Electric Industrial Co., Ltd."; case 59: return "Gennum Corporation"; case 60: return "BlackBerry Limited (formerly Research In Motion)"; case 61: return "IPextreme, Inc."; case 62: return "Systems and Chips, Inc."; case 63: return "Bluetooth SIG, Inc."; case 64: return "Seiko Epson Corporation"; case 65: return "Integrated Silicon Solution Taiwan, Inc."; case 66: return "CONWISE Technology Corporation Ltd"; case 67: return "PARROT SA"; case 68: return "Socket Mobile"; case 69: return "Atheros Communications, Inc."; case 70: return "MediaTek, Inc."; case 71: return "Bluegiga"; case 72: return "Marvell Technology Group Ltd."; case 73: return "3DSP Corporation"; case 74: return "Accel Semiconductor Ltd."; case 75: return "Continental Automotive Systems"; case 76: return "Apple, Inc."; case 77: return "Staccato Communications, Inc."; case 78: return "Avago Technologies"; case 79: return "APT Licensing Ltd."; case 80: return "SiRF Technology"; case 81: return "Tzero Technologies, Inc."; case 82: return "J&M Corporation"; case 83: return "Free2move AB"; case 84: return "3DiJoy Corporation"; case 85: return "Plantronics, Inc."; case 86: return "Sony Ericsson Mobile Communications"; case 87: return "Harman International Industries, Inc."; case 88: return "Vizio, Inc."; case 89: return "Nordic Semiconductor ASA"; case 90: return "EM Microelectronic-Marin SA"; case 91: return "Ralink Technology Corporation"; case 92: return "Belkin International, Inc."; case 93: return "Realtek Semiconductor Corporation"; case 94: return "Stonestreet One, LLC"; case 95: return "Wicentric, Inc."; case 96: return "RivieraWaves S.A.S"; case 97: return "RDA Microelectronics"; case 98: return "Gibson Guitars"; case 99: return "MiCommand Inc."; case 100: return "Band XI International, LLC"; case 101: return "Hewlett-Packard Company"; case 102: return "9Solutions Oy"; case 103: return "GN Netcom A/S"; case 104: return "General Motors"; case 105: return "A&D Engineering, Inc."; case 106: return "MindTree Ltd."; case 107: return "Polar Electro OY"; case 108: return "Beautiful Enterprise Co., Ltd."; case 109: return "BriarTek, Inc."; case 110: return "Summit Data Communications, Inc."; case 111: return "Sound ID"; case 112: return "Monster, LLC"; case 113: return "connectBlue AB"; case 114: return "ShangHai Super Smart Electronics Co. Ltd."; case 115: return "Group Sense Ltd."; case 116: return "Zomm, LLC"; case 117: return "Samsung Electronics Co. Ltd."; case 118: return "Creative Technology Ltd."; case 119: return "Laird Technologies"; case 120: return "Nike, Inc."; case 121: return "lesswire AG"; case 122: return "MStar Semiconductor, Inc."; case 123: return "Hanlynn Technologies"; case 124: return "A & R Cambridge"; case 125: return "Seers Technology Co. Ltd"; case 126: return "Sports Tracking Technologies Ltd."; case 127: return "Autonet Mobile"; case 128: return "DeLorme Publishing Company, Inc."; case 129: return "WuXi Vimicro"; case 130: return "Sennheiser Communications A/S"; case 131: return "TimeKeeping Systems, Inc."; case 132: return "Ludus Helsinki Ltd."; case 133: return "BlueRadios, Inc."; case 134: return "equinox AG"; case 135: return "Garmin International, Inc."; case 136: return "Ecotest"; case 137: return "GN ReSound A/S"; case 138: return "Jawbone"; case 139: return "Topcorn Positioning Systems, LLC"; case 140: return "Gimbal Inc. (formerly Qualcomm Labs, Inc. and Qualcomm Retail Solutions, Inc.)"; case 141: return "Zscan Software"; case 142: return "Quintic Corp."; case 143: return "Stollman E+V GmbH"; case 144: return "Funai Electric Co., Ltd."; case 145: return "Advanced PANMOBIL Systems GmbH & Co. KG"; case 146: return "ThinkOptics, Inc."; case 147: return "Universal Electronics, Inc."; case 148: return "Airoha Technology Corp."; case 149: return "NEC Lighting, Ltd."; case 150: return "ODM Technology, Inc."; case 151: return "ConnecteDevice Ltd."; case 152: return "zer01.tv GmbH"; case 153: return "i.Tech Dynamic Global Distribution Ltd."; case 154: return "Alpwise"; case 155: return "Jiangsu Toppower Automotive Electronics Co., Ltd."; case 156: return "Colorfy, Inc."; case 157: return "Geoforce Inc."; case 158: return "Bose Corporation"; case 159: return "Suunto Oy"; case 160: return "Kensington Computer Products Group"; case 161: return "SR-Medizinelektronik"; case 162: return "Vertu Corporation Limited"; case 163: return "Meta Watch Ltd."; case 164: return "LINAK A/S"; case 165: return "OTL Dynamics LLC"; case 166: return "Panda Ocean Inc."; case 167: return "Visteon Corporation"; case 168: return "ARP Devices Limited"; case 169: return "Magneti Marelli S.p.A"; case 170: return "CAEN RFID srl"; case 171: return "Ingenieur-Systemgruppe Zahn GmbH"; case 172: return "Green Throttle Games"; case 173: return "Peter Systemtechnik GmbH"; case 174: return "Omegawave Oy"; case 175: return "Cinetix"; case 176: return "Passif Semiconductor Corp"; case 177: return "Saris Cycling Group, Inc"; case 178: return "Bekey A/S"; case 179: return "Clarinox Technologies Pty. Ltd."; case 180: return "BDE Technology Co., Ltd."; case 181: return "Swirl Networks"; case 182: return "Meso international"; case 183: return "TreLab Ltd"; case 184: return "Qualcomm Innovation Center, Inc. (QuIC)"; case 185: return "Johnson Controls, Inc."; case 186: return "Starkey Laboratories Inc."; case 187: return "S-Power Electronics Limited"; case 188: return "Ace Sensor Inc"; case 189: return "Aplix Corporation"; case 190: return "AAMP of America"; case 191: return "Stalmart Technology Limited"; case 192: return "AMICCOM Electronics Corporation"; case 193: return "Shenzhen Excelsecu Data Technology Co.,Ltd"; case 194: return "Geneq Inc."; case 195: return "adidas AG"; case 196: return "LG Electronics"; case 197: return "Onset Computer Corporation"; case 198: return "Selfly BV"; case 199: return "Quuppa Oy."; case 200: return "GeLo Inc"; case 201: return "Evluma"; case 202: return "MC10"; case 203: return "Binauric SE"; case 204: return "Beats Electronics"; case 205: return "Microchip Technology Inc."; case 206: return "Elgato Systems GmbH"; case 207: return "ARCHOS SA"; case 208: return "Dexcom, Inc."; case 209: return "Polar Electro Europe B.V."; case 210: return "Dialog Semiconductor B.V."; case 211: return "Taixingbang Technology (HK) Co,. LTD."; case 212: return "Kawantech"; case 213: return "Austco Communication Systems"; case 214: return "Timex Group USA, Inc."; case 215: return "Qualcomm Technologies, Inc."; case 216: return "Qualcomm Connected Experiences, Inc."; case 217: return "Voyetra Turtle Beach"; case 218: return "txtr GmbH"; case 219: return "Biosentronics"; case 220: return "Procter & Gamble"; case 221: return "Hosiden Corporation"; case 222: return "Muzik LLC"; case 223: return "Misfit Wearables Corp"; case 224: return "Google"; case 225: return "Danlers Ltd"; case 226: return "Semilink Inc"; case 227: return "inMusic Brands, Inc"; case 228: return "L.S. Research Inc."; case 229: return "Eden Software Consultants Ltd."; case 230: return "Freshtemp"; case 231: return "KS Technologies"; case 232: return "ACTS Technologies"; case 233: return "Vtrack Systems"; case 234: return "Nielsen-Kellerman Company"; case 235: return "Server Technology, Inc."; case 236: return "BioResearch Associates"; case 237: return "Jolly Logic, LLC"; case 238: return "Above Average Outcomes, Inc."; case 239: return "Bitsplitters GmbH"; case 240: return "PayPal, Inc."; case 241: return "Witron Technology Limited"; case 242: return "Aether Things Inc. (formerly Morse Project Inc.)"; case 243: return "Kent Displays Inc."; case 244: return "Nautilus Inc."; case 245: return "Smartifier Oy"; case 246: return "Elcometer Limited"; case 247: return "VSN Technologies Inc."; case 248: return "AceUni Corp., Ltd."; case 249: return "StickNFind"; case 250: return "Crystal Code AB"; case 251: return "KOUKAAM a.s."; case 252: return "Delphi Corporation"; case 253: return "ValenceTech Limited"; case 254: return "Reserved"; case 255: return "Typo Products, LLC"; case 256: return "TomTom International BV"; case 257: return "Fugoo, Inc"; case 258: return "Keiser Corporation"; case 259: return "Bang & Olufsen A/S"; case 260: return "PLUS Locations Systems Pty Ltd"; case 261: return "Ubiquitous Computing Technology Corporation"; case 262: return "Innovative Yachtter Solutions"; case 263: return "William Demant Holding A/S"; case 264: return "Chicony Electronics Co., Ltd."; case 265: return "Atus BV"; case 266: return "Codegate Ltd."; case 267: return "ERi, Inc."; case 268: return "Transducers Direct, LLC"; case 269: return "Fujitsu Ten Limited"; case 270: return "Audi AG"; case 271: return "HiSilicon Technologies Co., Ltd."; case 272: return "Nippon Seiki Co., Ltd."; case 273: return "Steelseries ApS"; case 274: return "Visybl Inc."; case 275: return "Openbrain Technologies, Co., Ltd."; case 276: return "Xensr"; case 277: return "e.solutions"; case 278: return "1OAK Technologies"; case 279: return "Wimoto Technologies Inc"; case 280: return "Radius Networks, Inc."; case 281: return "Wize Technology Co., Ltd."; case 282: return "Qualcomm Labs, Inc."; case 283: return "Aruba Networks"; case 284: return "Baidu"; case 285: return "Arendi AG"; case 286: return "Skoda Auto a.s."; case 287: return "Volkswagon AG"; case 288: return "Porsche AG"; case 289: return "Sino Wealth Electronic Ltd."; case 290: return "AirTurn, Inc."; case 291: return "Kinsa, Inc."; case 292: return "HID Global"; case 293: return "SEAT es"; case 294: return "Promethean Ltd."; case 295: return "Salutica Allied Solutions"; case 296: return "GPSI Group Pty Ltd"; case 297: return "Nimble Devices Oy"; case 298: return "Changzhou Yongse Infotech Co., Ltd"; case 299: return "SportIQ"; case 300: return "TEMEC Instruments B.V."; case 301: return "Sony Corporation"; case 302: return "ASSA ABLOY"; case 303: return "Clarion Co., Ltd."; case 304: return "Warehouse Innovations"; case 305: return "Cypress Semiconductor Corporation"; case 306: return "MADS Inc"; case 307: return "Blue Maestro Limited"; case 308: return "Resolution Products, Inc."; case 309: return "Airewear LLC"; case 310: return "Seed Labs, Inc. (formerly ETC sp. z.o.o.)"; case 311: return "Prestigio Plaza Ltd."; case 312: return "NTEO Inc."; case 313: return "Focus Systems Corporation"; case 314: return "Tencent Holdings Limited"; case 315: return "Allegion"; case 316: return "Murata Manufacuring Co., Ltd."; case 317: return "WirelessWERX"; case 318: return "Nod, Inc."; case 319: return "B&B Manufacturing Company"; case 320: return "Alpine Electronics (China) Co., Ltd"; case 321: return "FedEx Services"; case 322: return "Grape Systems Inc."; case 323: return "Bkon Connect"; case 324: return "Lintech GmbH"; case 325: return "Novatel Wireless"; case 326: return "Ciright"; case 327: return "Mighty Cast, Inc."; case 328: return "Ambimat Electronics"; case 329: return "Perytons Ltd."; case 330: return "Tivoli Audio, LLC"; case 331: return "Master Lock"; case 332: return "Mesh-Net Ltd"; case 333: return "Huizhou Desay SV Automotive CO., LTD."; case 334: return "Tangerine, Inc."; case 335: return "B&W Group Ltd."; case 336: return "Pioneer Corporation"; case 337: return "OnBeep"; case 338: return "Vernier Software & Technology"; case 339: return "ROL Ergo"; case 340: return "Pebble Technology"; case 341: return "NETATMO"; case 342: return "Accumulate AB"; case 343: return "Anhui Huami Information Technology Co., Ltd."; case 344: return "Inmite s.r.o."; case 345: return "ChefSteps, Inc."; case 346: return "micas AG"; case 347: return "Biomedical Research Ltd."; case 348: return "Pitius Tec S.L."; case 349: return "Estimote, Inc."; case 350: return "Unikey Technologies, Inc."; case 351: return "Timer Cap Co."; case 352: return "AwoX"; case 353: return "yikes"; case 354: return "MADSGlobal NZ Ltd."; case 355: return "PCH International"; case 356: return "Qingdao Yeelink Information Technology Co., Ltd."; case 357: return "Milwaukee Tool (formerly Milwaukee Electric Tools)"; case 358: return "MISHIK Pte Ltd"; case 359: return "Bayer HealthCare"; case 360: return "Spicebox LLC"; case 361: return "emberlight"; case 362: return "Cooper-Atkins Corporation"; case 363: return "Qblinks"; case 364: return "MYSPHERA"; case 365: return "LifeScan Inc"; case 366: return "Volantic AB"; case 367: return "Podo Labs, Inc"; case 368: return "Roche Diabetes Care AG"; case 369: return "Amazon Fulfillment Service"; case 370: return "Connovate Technology Private Limited"; case 371: return "Kocomojo, LLC"; case 372: return "Everykey LLC"; case 373: return "Dynamic Controls"; case 374: return "SentriLock"; case 375: return "I-SYST inc."; case 376: return "CASIO COMPUTER CO., LTD."; case 377: return "LAPIS Semiconductor Co., Ltd."; case 378: return "Telemonitor, Inc."; case 379: return "taskit GmbH"; case 380: return "Daimler AG"; case 381: return "BatAndCat"; case 382: return "BluDotz Ltd"; case 383: return "XTel ApS"; case 384: return "Gigaset Communications GmbH"; case 385: return "Gecko Health Innovations, Inc."; case 386: return "HOP Ubiquitous"; case 387: return "To Be Assigned"; case 388: return "Nectar"; case 389: return "bel'apps LLC"; case 390: return "CORE Lighting Ltd"; case 391: return "Seraphim Sense Ltd"; case 392: return "Unico RBC"; case 393: return "Physical Enterprises Inc."; case 394: return "Able Trend Technology Limited"; case 395: return "Konica Minolta, Inc."; case 396: return "Wilo SE"; case 397: return "Extron Design Services"; case 398: return "Fitbit, Inc."; case 399: return "Fireflies Systems"; case 400: return "Intelletto Technologies Inc."; case 401: return "FDK CORPORATION"; case 402: return "Cloudleaf, Inc"; case 403: return "Maveric Automation LLC"; case 404: return "Acoustic Stream Corporation"; case 405: return "Zuli"; case 406: return "Paxton Access Ltd"; case 407: return "WiSilica Inc"; case 408: return "Vengit Limited"; case 409: return "SALTO SYSTEMS S.L."; case 410: return "TRON Forum (formerly T-Engine Forum)"; case 411: return "CUBETECH s.r.o."; case 412: return "Cokiya Incorporated"; case 413: return "CVS Health"; case 414: return "Ceruus"; case 415: return "Strainstall Ltd"; case 416: return "Channel Enterprises (HK) Ltd."; case 417: return "FIAMM"; case 418: return "GIGALANE.CO.,LTD"; case 419: return "EROAD"; case 420: return "Mine Safety Appliances"; case 421: return "Icon Health and Fitness"; case 422: return "Asandoo GmbH"; case 423: return "ENERGOUS CORPORATION"; case 424: return "Taobao"; case 425: return "Canon Inc."; case 426: return "Geophysical Technology Inc."; case 427: return "Facebook, Inc."; case 428: return "Nipro Diagnostics, Inc."; case 429: return "FlightSafety International"; case 430: return "Earlens Corporation"; case 431: return "Sunrise Micro Devices, Inc."; case 432: return "Star Micronics Co., Ltd."; case 433: return "Netizens Sp. z o.o."; case 434: return "Nymi Inc."; case 435: return "Nytec, Inc."; case 436: return "Trineo Sp. z o.o."; case 437: return "Nest Labs Inc."; case 438: return "LM Technologies Ltd"; case 439: return "General Electric Company"; case 440: return "i+D3 S.L."; case 441: return "HANA Micron"; case 442: return "Stages Cycling LLC"; case 443: return "Cochlear Bone Anchored Solutions AB"; case 444: return "SenionLab AB"; case 445: return "Syszone Co., Ltd"; case 446: return "Pulsate Mobile Ltd."; case 447: return "Hong Kong HunterSun Electronic Limited"; case 448: return "pironex GmbH"; case 449: return "BRADATECH Corp."; case 450: return "Transenergooil AG"; case 451: return "Bunch"; case 452: return "DME Microelectronics"; case 453: return "Bitcraze AB"; case 454: return "HASWARE Inc."; case 455: return "Abiogenix Inc."; case 456: return "Poly-Control ApS"; case 457: return "Avi-on"; case 458: return "Laerdal Medical AS"; case 459: return "Fetch My Pet"; case 460: return "Sam Labs Ltd."; case 461: return "Chengdu Synwing Technology Ltd"; case 462: return "HOUWA SYSTEM DESIGN, k.k."; case 463: return "BSH"; case 464: return "Primus Inter Pares Ltd"; case 465: return "August"; case 466: return "Gill Electronics"; case 467: return "Sky Wave Design"; case 468: return "Newlab S.r.l."; case 469: return "ELAD srl"; case 470: return "G-wearables inc."; case 471: return "Squadrone Systems Inc."; case 472: return "Code Corporation"; case 473: return "Savant Systems LLC"; case 474: return "Logitech International SA"; case 475: return "Innblue Consulting"; case 476: return "iParking Ltd."; case 477: return "Koninklijke Philips Electronics N.V."; case 478: return "Minelab Electronics Pty Limited"; case 479: return "Bison Group Ltd."; case 480: return "Widex A/S"; case 481: return "Jolla Ltd"; case 482: return "Lectronix, Inc."; case 483: return "Caterpillar Inc"; case 484: return "Freedom Innovations"; case 485: return "Dynamic Devices Ltd"; case 486: return "Technology Solutions (UK) Ltd"; case 487: return "IPS Group Inc."; case 488: return "STIR"; case 489: return "Sano, Inc"; case 490: return "Advanced Application Design, Inc."; case 491: return "AutoMap LLC"; case 492: return "Spreadtrum Communications Shanghai Ltd"; case 493: return "CuteCircuit LTD"; case 494: return "Valeo Service"; case 495: return "Fullpower Technologies, Inc."; case 496: return "KloudNation"; case 497: return "Zebra Technologies Corporation"; case 498: return "Itron, Inc."; case 499: return "The University of Tokyo"; case 500: return "UTC Fire and Security"; case 501: return "Cool Webthings Limited"; case 502: return "DJO Global"; case 503: return "Gelliner Limited"; case 504: return "Anyka (Guangzhou) Microelectronics Technology Co, LTD"; case 505: return "Medtronic, Inc."; case 506: return "Gozio, Inc."; case 507: return "Form Lifting, LLC"; case 508: return "Wahoo Fitness, LLC"; case 509: return "Kontakt Micro-Location Sp. z o.o."; case 510: return "Radio System Corporation"; case 511: return "Freescale Semiconductor, Inc."; case 512: return "Verifone Systems PTe Ltd. Taiwan Branch"; case 513: return "AR Timing"; case 514: return "Rigado LLC"; case 515: return "Kemppi Oy"; case 516: return "Tapcentive Inc."; case 517: return "Smartbotics Inc."; case 518: return "Otter Products, LLC"; case 519: return "STEMP Inc."; case 520: return "LumiGeek LLC"; case 521: return "InvisionHeart Inc."; case 522: return "Macnica Inc."; case 523: return "Jaguar Land Rover Limited"; case 524: return "CoroWare Technologies, Inc"; case 525: return "Simplo Technology Co., LTD"; case 526: return "Omron Healthcare Co., LTD"; case 527: return "Comodule GMBH"; case 528: return "ikeGPS"; case 529: return "Telink Semiconductor Co. Ltd"; case 530: return "Interplan Co., Ltd"; case 531: return "Wyler AG"; case 532: return "IK Multimedia Production srl"; case 533: return "Lukoton Experience Oy"; case 534: return "MTI Ltd"; case 535: return "Tech4home, Lda"; case 536: return "Hiotech AB"; case 537: return "DOTT Limited"; case 538: return "Blue Speck Labs, LLC"; case 539: return "Cisco Systems Inc"; case 540: return "Mobicomm Inc"; case 541: return "Edamic"; case 542: return "Goodnet Ltd"; case 543: return "Luster Leaf Products Inc"; case 544: return "Manus Machina BV"; case 545: return "Mobiquity Networks Inc"; case 546: return "Praxis Dynamics"; case 547: return "Philip Morris Products S.A."; case 548: return "Comarch SA"; case 549: return "Nestlé Nespresso S.A."; case 550: return "Merlinia A/S"; case 551: return "LifeBEAM Technologies"; case 552: return "Twocanoes Labs, LLC"; case 553: return "Muoverti Limited"; case 554: return "Stamer Musikanlagen GMBH"; case 555: return "Tesla Motors"; case 556: return "Pharynks Corporation"; case 557: return "Lupine"; case 558: return "Siemens AG"; case 559: return "Huami (Shanghai) Culture Communication CO., LTD"; case 560: return "Foster Electric Company, Ltd"; case 561: return "ETA SA"; case 562: return "x-Senso Solutions Kft"; case 563: return "Shenzhen SuLong Communication Ltd"; case 564: return "FengFan (BeiJing) Technology Co, Ltd"; case 565: return "Qrio Inc"; case 566: return "Pitpatpet Ltd"; case 567: return "MSHeli s.r.l."; case 568: return "Trakm8 Ltd"; case 569: return "JIN CO, Ltd"; case 570: return "Alatech Technology"; case 571: return "Beijing CarePulse Electronic Technology Co, Ltd"; case 572: return "Awarepoint"; case 573: return "ViCentra B.V."; case 574: return "Raven Industries"; case 575: return "WaveWare Technologies"; case 576: return "Argenox Technologies"; case 577: return "Bragi GmbH"; case 578: return "16Lab Inc"; case 579: return "Masimo Corp"; case 580: return "Iotera Inc."; case 581: return "Endress+Hauser"; case 582: return "ACKme Networks, Inc."; case 583: return "FiftyThree Inc."; case 584: return "Parker Hannifin Corp"; case 585: return "Transcranial Ltd"; case 586: return "Uwatec AG"; case 587: return "Orlan LLC"; case 588: return "Blue Clover Devices"; case 589: return "M-Way Solutions GmbH"; case 590: return "Microtronics Engineering GmbH"; case 591: return "Schneider Schreibgeräte GmbH"; case 592: return "Sapphire Circuits LLC"; case 593: return "Lumo Bodytech Inc."; case 594: return "UKC Technosolution"; case 595: return "Xicato Inc."; case 596: return "Playbrush"; case 597: return "Dai Nippon Printing Co., Ltd."; case 598: return "G24 Power Limited"; case 599: return "AdBabble Local Commerce Inc."; case 600: return "Devialet SA"; case 601: return "ALTYOR"; case 602: return "University of Applied Sciences Valais/Haute Ecole Valaisanne"; case 603: return "Five Interactive, LLC dba Zendo"; case 604: return "NetEase (Hangzhou) Network co.Ltd."; case 605: return "Lexmark International Inc."; case 606: return "Fluke Corporation"; case 607: return "Yardarm Technologies"; case 608: return "SensaRx"; case 609: return "SECVRE GmbH"; case 610: return "Glacial Ridge Technologies"; case 611: return "Identiv, Inc."; case 612: return "DDS, Inc."; case 613: return "SMK Corporation"; case 614: return "Schawbel Technologies LLC"; case 615: return "XMI Systems SA"; case 616: return "Cerevo"; case 617: return "Torrox GmbH & Co KG"; case 618: return "Gemalto"; case 619: return "DEKA Research & Development Corp."; case 620: return "Domster Tadeusz Szydlowski"; case 621: return "Technogym SPA"; case 622: return "FLEURBAEY BVBA"; case 623: return "Aptcode Solutions"; case 624: return "LSI ADL Technology"; case 625: return "Animas Corp"; case 626: return "Alps Electric Co., Ltd."; case 627: return "OCEASOFT"; case 628: return "Motsai Research"; case 629: return "Geotab"; case 630: return "E.G.O. Elektro-Gerätebau GmbH"; case 631: return "bewhere inc"; case 632: return "Johnson Outdoors Inc"; case 633: return "steute Schaltgerate GmbH & Co. KG"; case 634: return "Ekomini inc."; case 635: return "DEFA AS"; case 636: return "Aseptika Ltd"; case 637: return "HUAWEI Technologies Co., Ltd. ( 华为技术有限公司 )"; case 638: return "HabitAware, LLC"; case 639: return "ruwido austria gmbh"; case 640: return "ITEC corporation"; case 641: return "StoneL"; case 642: return "Sonova AG"; case 643: return "Maven Machines, Inc."; case 644: return "Synapse Electronics"; case 645: return "Standard Innovation Inc."; case 646: return "RF Code, Inc."; case 647: return "Wally Ventures S.L."; case 648: return "Willowbank Electronics Ltd"; case 649: return "SK Telecom"; case 650: return "Jetro AS"; case 651: return "Code Gears LTD"; case 652: return "NANOLINK APS"; case 653: return "IF, LLC"; case 654: return "RF Digital Corp"; case 655: return "Church & Dwight Co., Inc"; case 656: return "Multibit Oy"; case 657: return "CliniCloud Inc"; case 658: return "SwiftSensors"; case 659: return "Blue Bite"; case 660: return "ELIAS GmbH"; case 661: return "Sivantos GmbH"; case 662: return "Petzl"; case 663: return "storm power ltd"; case 664: return "EISST Ltd"; case 665: return "Inexess Technology Simma KG"; case 666: return "Currant, Inc."; case 667: return "C2 Development, Inc."; case 668: return "Blue Sky Scientific, LLC"; case 669: return "ALOTTAZS LABS, LLC"; case 670: return "Kupson spol. s r.o."; case 671: return "Areus Engineering GmbH"; case 672: return "Impossible Camera GmbH"; case 673: return "InventureTrack Systems"; case 674: return "LockedUp"; case 675: return "Itude"; case 676: return "Pacific Lock Company"; case 677: return "Tendyron Corporation ( 天地融科技股份有限公司 )"; case 678: return "Robert Bosch GmbH"; case 679: return "Illuxtron international B.V."; case 680: return "miSport Ltd."; case 681: return "Chargelib"; case 682: return "Doppler Lab"; case 683: return "BBPOS Limited"; case 684: return "RTB Elektronik GmbH & Co. KG"; case 685: return "Rx Networks, Inc."; case 686: return "WeatherFlow, Inc."; case 687: return "Technicolor USA Inc."; case 688: return "Bestechnic(Shanghai),Ltd"; case 689: return "Raden Inc"; case 690: return "JouZen Oy"; case 691: return "CLABER S.P.A."; case 692: return "Hyginex, Inc."; case 693: return "HANSHIN ELECTRIC RAILWAY CO.,LTD."; case 694: return "Schneider Electric"; case 695: return "Oort Technologies LLC"; case 696: return "Chrono Therapeutics"; case 697: return "Rinnai Corporation"; case 698: return "Swissprime Technologies AG"; case 699: return "Koha.,Co.Ltd"; case 700: return "Genevac Ltd"; case 701: return "Chemtronics"; case 702: return "Seguro Technology Sp. z o.o."; case 703: return "Redbird Flight Simulations"; case 704: return "Dash Robotics"; case 705: return "LINE Corporation"; case 706: return "Guillemot Corporation"; case 707: return "Techtronic Power Tools Technology Limited"; case 708: return "Wilson Sporting Goods"; case 709: return "Lenovo (Singapore) Pte Ltd. ( 联想(新加坡) )"; case 710: return "Ayatan Sensors"; case 711: return "Electronics Tomorrow Limited"; case 712: return "VASCO Data Security International, Inc."; case 713: return "PayRange Inc."; case 714: return "ABOV Semiconductor"; case 715: return "AINA-Wireless Inc."; case 716: return "Eijkelkamp Soil & Water"; case 717: return "BMA ergonomics b.v."; case 718: return "Teva Branded Pharmaceutical Products R&D, Inc."; case 719: return "Anima"; case 720: return "3M"; case 721: return "Empatica Srl"; case 722: return "Afero, Inc."; case 723: return "Powercast Corporation"; case 724: return "Secuyou ApS"; case 725: return "OMRON Corporation"; case 726: return "Send Solutions"; case 727: return "NIPPON SYSTEMWARE CO.,LTD."; case 728: return "Neosfar"; case 729: return "Fliegl Agrartechnik GmbH"; case 730: return "Gilvader"; case 731: return "Digi International Inc (R)"; case 732: return "DeWalch Technologies, Inc."; case 733: return "Flint Rehabilitation Devices, LLC"; case 734: return "Samsung SDS Co., Ltd."; case 735: return "Blur Product Development"; case 736: return "University of Michigan"; case 737: return "Victron Energy BV"; case 738: return "NTT docomo"; case 739: return "Carmanah Technologies Corp."; case 740: return "Bytestorm Ltd."; case 741: return "Espressif Incorporated ( 乐鑫信息科技(上海)有限公司 )"; case 65535: return "internal use"; default: return "not assigned"; } }