Buttplug sex toy control library

feat: Simplify comm info storage for de/serialization

Instead of trying to constrain types, make de/serialization for communication
types look like internal storage of the data. This makes life way easier for actually
writing out user configs.

+3572 -2993
+2113 -1665
buttplug/buttplug-device-config/build-config/buttplug-device-config-v3.json
··· 5 }, 6 "protocols": { 7 "lovense": { 8 - "btle": { 9 - "names": [ 10 - "LVS-*", 11 - "LOVE-*" 12 - ], 13 - "manufacturer-data": [ 14 - { 15 - "company": 620, 16 - "data": [ 17 - 255, 18 - 33 19 - ] 20 - } 21 - ], 22 - "services": { 23 - "0000fff0-0000-1000-8000-00805f9b34fb": { 24 - "tx": "0000fff2-0000-1000-8000-00805f9b34fb", 25 - "rx": "0000fff1-0000-1000-8000-00805f9b34fb" 26 - }, 27 - "6e400001-b5a3-f393-e0a9-e50e24dcca9e": { 28 - "tx": "6e400002-b5a3-f393-e0a9-e50e24dcca9e", 29 - "rx": "6e400003-b5a3-f393-e0a9-e50e24dcca9e" 30 - }, 31 - "50300001-0024-4bd4-bbd5-a6920e4c5653": { 32 - "tx": "50300002-0024-4bd4-bbd5-a6920e4c5653", 33 - "rx": "50300003-0024-4bd4-bbd5-a6920e4c5653" 34 - }, 35 - "57300001-0023-4bd4-bbd5-a6920e4c5653": { 36 - "tx": "57300002-0023-4bd4-bbd5-a6920e4c5653", 37 - "rx": "57300003-0023-4bd4-bbd5-a6920e4c5653" 38 - }, 39 - "5a300001-0024-4bd4-bbd5-a6920e4c5653": { 40 - "tx": "5a300002-0024-4bd4-bbd5-a6920e4c5653", 41 - "rx": "5a300003-0024-4bd4-bbd5-a6920e4c5653" 42 - }, 43 - "50300001-0023-4bd4-bbd5-a6920e4c5653": { 44 - "tx": "50300002-0023-4bd4-bbd5-a6920e4c5653", 45 - "rx": "50300003-0023-4bd4-bbd5-a6920e4c5653" 46 - }, 47 - "53300001-0023-4bd4-bbd5-a6920e4c5653": { 48 - "tx": "53300002-0023-4bd4-bbd5-a6920e4c5653", 49 - "rx": "53300003-0023-4bd4-bbd5-a6920e4c5653" 50 - }, 51 - "5a300001-0023-4bd4-bbd5-a6920e4c5653": { 52 - "tx": "5a300002-0023-4bd4-bbd5-a6920e4c5653", 53 - "rx": "5a300003-0023-4bd4-bbd5-a6920e4c5653" 54 - }, 55 - "4f300001-0023-4bd4-bbd5-a6920e4c5653": { 56 - "tx": "4f300002-0023-4bd4-bbd5-a6920e4c5653", 57 - "rx": "4f300003-0023-4bd4-bbd5-a6920e4c5653" 58 - }, 59 - "42300001-0023-4bd4-bbd5-a6920e4c5653": { 60 - "tx": "42300002-0023-4bd4-bbd5-a6920e4c5653", 61 - "rx": "42300003-0023-4bd4-bbd5-a6920e4c5653" 62 - }, 63 - "43300001-0023-4bd4-bbd5-a6920e4c5653": { 64 - "tx": "43300002-0023-4bd4-bbd5-a6920e4c5653", 65 - "rx": "43300003-0023-4bd4-bbd5-a6920e4c5653" 66 - }, 67 - "4c300001-0023-4bd4-bbd5-a6920e4c5653": { 68 - "tx": "4c300002-0023-4bd4-bbd5-a6920e4c5653", 69 - "rx": "4c300003-0023-4bd4-bbd5-a6920e4c5653" 70 - }, 71 - "4c410001-0023-4bd4-bbd5-a6920e4c5653": { 72 - "tx": "4c410002-0023-4bd4-bbd5-a6920e4c5653", 73 - "rx": "4c410003-0023-4bd4-bbd5-a6920e4c5653" 74 - }, 75 - "56300001-0023-4bd4-bbd5-a6920e4c5653": { 76 - "tx": "56300002-0023-4bd4-bbd5-a6920e4c5653", 77 - "rx": "56300003-0023-4bd4-bbd5-a6920e4c5653" 78 - }, 79 - "58300001-0023-4bd4-bbd5-a6920e4c5653": { 80 - "tx": "58300002-0023-4bd4-bbd5-a6920e4c5653", 81 - "rx": "58300003-0023-4bd4-bbd5-a6920e4c5653" 82 - }, 83 - "52300001-0023-4bd4-bbd5-a6920e4c5653": { 84 - "tx": "52300002-0023-4bd4-bbd5-a6920e4c5653", 85 - "rx": "52300003-0023-4bd4-bbd5-a6920e4c5653" 86 - }, 87 - "46300001-0023-4bd4-bbd5-a6920e4c5653": { 88 - "tx": "46300002-0023-4bd4-bbd5-a6920e4c5653", 89 - "rx": "46300003-0023-4bd4-bbd5-a6920e4c5653" 90 - }, 91 - "50300011-0023-4bd4-bbd5-a6920e4c5653": { 92 - "tx": "50300012-0023-4bd4-bbd5-a6920e4c5653", 93 - "rx": "50300013-0023-4bd4-bbd5-a6920e4c5653" 94 - }, 95 - "4a300001-0023-4bd4-bbd5-a6920e4c5653": { 96 - "tx": "4a300002-0023-4bd4-bbd5-a6920e4c5653", 97 - "rx": "4a300003-0023-4bd4-bbd5-a6920e4c5653" 98 - }, 99 - "45440001-0023-4bd4-bbd5-a6920e4c5653": { 100 - "tx": "45440002-0023-4bd4-bbd5-a6920e4c5653", 101 - "rx": "45440003-0023-4bd4-bbd5-a6920e4c5653" 102 - }, 103 - "45420001-0023-4bd4-bbd5-a6920e4c5653": { 104 - "tx": "45420002-0023-4bd4-bbd5-a6920e4c5653", 105 - "rx": "45420003-0023-4bd4-bbd5-a6920e4c5653" 106 - }, 107 - "54300001-0023-4bd4-bbd5-a6920e4c5653": { 108 - "tx": "54300002-0023-4bd4-bbd5-a6920e4c5653", 109 - "rx": "54300003-0023-4bd4-bbd5-a6920e4c5653" 110 - }, 111 - "45490001-0023-4bd4-bbd5-a6920e4c5653": { 112 - "tx": "45490002-0023-4bd4-bbd5-a6920e4c5653", 113 - "rx": "45490003-0023-4bd4-bbd5-a6920e4c5653" 114 - }, 115 - "4e300001-0023-4bd4-bbd5-a6920e4c5653": { 116 - "tx": "4e300002-0023-4bd4-bbd5-a6920e4c5653", 117 - "rx": "4e300003-0023-4bd4-bbd5-a6920e4c5653" 118 - }, 119 - "45410001-0023-4bd4-bbd5-a6920e4c5653": { 120 - "tx": "45410002-0023-4bd4-bbd5-a6920e4c5653", 121 - "rx": "45410003-0023-4bd4-bbd5-a6920e4c5653" 122 - }, 123 - "51300001-0023-4bd4-bbd5-a6920e4c5653": { 124 - "tx": "51300002-0023-4bd4-bbd5-a6920e4c5653", 125 - "rx": "51300003-0023-4bd4-bbd5-a6920e4c5653" 126 - }, 127 - "45460001-0023-4bd4-bbd5-a6920e4c5653": { 128 - "tx": "45460002-0023-4bd4-bbd5-a6920e4c5653", 129 - "rx": "45460003-0023-4bd4-bbd5-a6920e4c5653" 130 - }, 131 - "454c0001-0023-4bd4-bbd5-a6920e4c5653": { 132 - "tx": "454c0002-0023-4bd4-bbd5-a6920e4c5653", 133 - "rx": "454c0003-0023-4bd4-bbd5-a6920e4c5653" 134 - }, 135 - "55300001-0023-4bd4-bbd5-a6920e4c5653": { 136 - "tx": "55300002-0023-4bd4-bbd5-a6920e4c5653", 137 - "rx": "55300003-0023-4bd4-bbd5-a6920e4c5653" 138 - }, 139 - "53440001-0023-4bd4-bbd5-a6920e4c5653": { 140 - "tx": "53440002-0023-4bd4-bbd5-a6920e4c5653", 141 - "rx": "53440003-0023-4bd4-bbd5-a6920e4c5653" 142 - }, 143 - "48300001-0023-4bd4-bbd5-a6920e4c5653": { 144 - "tx": "48300002-0023-4bd4-bbd5-a6920e4c5653", 145 - "rx": "48300003-0023-4bd4-bbd5-a6920e4c5653" 146 - } 147 - } 148 - }, 149 "defaults": { 150 "name": "Lovense Device", 151 "features": [ ··· 838 } 839 ] 840 } 841 ] 842 }, 843 "lovense-connect-service": { 844 - "lovense-connect-service": { 845 - "exists": true 846 - }, 847 "defaults": { 848 "name": "Lovense Connect Service Device", 849 "features": [ ··· 1510 } 1511 ] 1512 } 1513 ] 1514 }, 1515 "xinput": { 1516 - "xinput": { 1517 - "exists": true 1518 - }, 1519 "defaults": { 1520 "name": "XBox (XInput) Compatible Gamepad", 1521 "features": [ ··· 1544 } 1545 } 1546 ] 1547 - } 1548 - }, 1549 - "kiiroo-v2": { 1550 - "btle": { 1551 - "names": [ 1552 - "Launch", 1553 - "Onyx2" 1554 - ], 1555 - "services": { 1556 - "88f80580-0000-01e6-aace-0002a5d5c51b": { 1557 - "tx": "88f80581-0000-01e6-aace-0002a5d5c51b", 1558 - "rx": "88f80582-0000-01e6-aace-0002a5d5c51b", 1559 - "firmware": "88f80583-0000-01e6-aace-0002a5d5c51b" 1560 - }, 1561 - "f60402a6-0293-4bdb-9f20-6758133f7090": { 1562 - "tx": "02962ac9-e86f-4094-989d-231d69995fc2", 1563 - "rx": "d44d0393-0731-43b3-a373-8fc70b1f3323", 1564 - "firmware": "c7b7a04b-2cc4-40ff-8b10-5d531d1161db" 1565 } 1566 } 1567 - }, 1568 "defaults": { 1569 "name": "Kiiroo v2 Device", 1570 "features": [ ··· 1595 ], 1596 "name": "Kiiroo Onyx 2" 1597 } 1598 ] 1599 }, 1600 "libo-elle": { 1601 - "btle": { 1602 - "names": [ 1603 - "PiPiJing", 1604 - "Shuidi" 1605 - ], 1606 - "services": { 1607 - "00006000-0000-1000-8000-00805f9b34fb": { 1608 - "tx": "00006001-0000-1000-8000-00805f9b34fb", 1609 - "txmode": "00006002-0000-1000-8000-00805f9b34fb" 1610 - } 1611 - } 1612 - }, 1613 "defaults": { 1614 "name": "Libo Elle Device", 1615 "features": [ ··· 1640 ], 1641 "name": "Libo Elle 2" 1642 } 1643 ] 1644 }, 1645 "libo-shark": { 1646 - "btle": { 1647 - "names": [ 1648 - "ShaYu" 1649 - ], 1650 - "services": { 1651 - "00006000-0000-1000-8000-00805f9b34fb": { 1652 - "tx": "00006001-0000-1000-8000-00805f9b34fb", 1653 - "txmode": "00006002-0000-1000-8000-00805f9b34fb" 1654 - } 1655 - } 1656 - }, 1657 "defaults": { 1658 "name": "Libo Shark", 1659 "features": [ ··· 1682 } 1683 } 1684 ] 1685 - } 1686 }, 1687 "libo-karen": { 1688 - "btle": { 1689 - "names": [ 1690 - "SuoYinQiu" 1691 - ], 1692 - "services": { 1693 - "00006000-0000-1000-8000-00805f9b34fb": { 1694 - "tx": "00006001-0000-1000-8000-00805f9b34fb", 1695 - "txmode": "00006002-0000-1000-8000-00805f9b34fb" 1696 - }, 1697 - "00006050-0000-1000-8000-00805f9b34fb": { 1698 - "rxpressure": "00006051-0000-1000-8000-00805f9b34fb" 1699 - } 1700 - } 1701 - }, 1702 "defaults": { 1703 "name": "Libo Karen", 1704 "features": [] 1705 - } 1706 - }, 1707 - "libo-vibes": { 1708 - "btle": { 1709 - "names": [ 1710 - "XiaoLu", 1711 - "LuXiaoHan", 1712 - "BaiHu", 1713 - "Gugudai", 1714 - "Yuyi", 1715 - "LuWuShuang", 1716 - "LiBo", 1717 - "QingTing", 1718 - "Huohu", 1719 - "Yuyi", 1720 - "Haima" 1721 - ], 1722 - "services": { 1723 - "00006000-0000-1000-8000-00805f9b34fb": { 1724 - "tx": "00006001-0000-1000-8000-00805f9b34fb", 1725 - "txmode": "00006002-0000-1000-8000-00805f9b34fb" 1726 } 1727 } 1728 - }, 1729 "defaults": { 1730 "name": "Libo Vibes Device", 1731 "features": [ ··· 1902 } 1903 ] 1904 } 1905 ] 1906 }, 1907 "magic-motion-1": { 1908 - "btle": { 1909 - "names": [ 1910 - "Smart Mini Vibe*", 1911 - "Flamingo", 1912 - "Flamingo T", 1913 - "Smart Bean", 1914 - "Smart Bean3", 1915 - "Magic Cell", 1916 - "Magic Wand", 1917 - "Fugu", 1918 - "Fugu2", 1919 - "Gballs2", 1920 - "GBalls3", 1921 - "FM-LILAC-101", 1922 - "Xone", 1923 - "CBT002" 1924 - ], 1925 - "services": { 1926 - "78667579-7b48-43db-b8c5-7928a6b0a335": { 1927 - "tx": "78667579-a914-49a4-8333-aa3c0cd8fedc" 1928 - }, 1929 - "0000180f-0000-1000-8000-00805f9b34fb": { 1930 - "rxblebattery": "00002a19-0000-1000-8000-00805f9b34fb" 1931 - } 1932 - } 1933 - }, 1934 "defaults": { 1935 "name": "Magic Motion V1 Device", 1936 "features": [ ··· 2080 ], 2081 "name": "FunTown Caleo" 2082 } 2083 ] 2084 }, 2085 "magic-motion-2": { 2086 - "btle": { 2087 - "names": [ 2088 - "Eidolon", 2089 - "Lipstick", 2090 - "Sword", 2091 - "Curve", 2092 - "Solstice X", 2093 - "funwand", 2094 - "CBT001" 2095 - ], 2096 - "services": { 2097 - "78667579-7b48-43db-b8c5-7928a6b0a335": { 2098 - "tx": "78667579-a914-49a4-8333-aa3c0cd8fedc" 2099 - }, 2100 - "0000180f-0000-1000-8000-00805f9b34fb": { 2101 - "rxblebattery": "00002a19-0000-1000-8000-00805f9b34fb" 2102 - } 2103 - } 2104 - }, 2105 "defaults": { 2106 "name": "Magic Motion V2 Device", 2107 "features": [ ··· 2300 } 2301 ] 2302 } 2303 ] 2304 }, 2305 "magic-motion-3": { 2306 - "btle": { 2307 - "names": [ 2308 - "Krush" 2309 - ], 2310 - "services": { 2311 - "78667579-7b48-43db-b8c5-7928a6b0a335": { 2312 - "tx": "78667579-a914-49a4-8333-aa3c0cd8fedc" 2313 - }, 2314 - "0000180f-0000-1000-8000-00805f9b34fb": { 2315 - "rxblebattery": "00002a19-0000-1000-8000-00805f9b34fb" 2316 - } 2317 - } 2318 - }, 2319 "defaults": { 2320 "name": "LoveLife Krush", 2321 "features": [ ··· 2347 } 2348 } 2349 ] 2350 - } 2351 }, 2352 "magic-motion-4": { 2353 - "btle": { 2354 - "names": [ 2355 - "funone", 2356 - "Magic Sundi", 2357 - "Kegel Coach", 2358 - "Magic Lotos", 2359 - "nyx", 2360 - "umi", 2361 - "funkegel", 2362 - "bobi2" 2363 - ], 2364 - "services": { 2365 - "78667579-7b48-43db-b8c5-7928a6b0a335": { 2366 - "tx": "78667579-a914-49a4-8333-aa3c0cd8fedc" 2367 - }, 2368 - "0000180f-0000-1000-8000-00805f9b34fb": { 2369 - "rxblebattery": "00002a19-0000-1000-8000-00805f9b34fb" 2370 - } 2371 - } 2372 - }, 2373 "defaults": { 2374 "name": "Magic Motion V4 Device", 2375 "features": [ ··· 2533 } 2534 ] 2535 } 2536 ] 2537 }, 2538 "mysteryvibe": { 2539 - "btle": { 2540 - "names": [ 2541 - "MV Crescendo", 2542 - "MV Tenuto ", 2543 - "MV Poco " 2544 - ], 2545 - "services": { 2546 - "f0006900-110c-478b-b74b-6f403b364a9c": { 2547 - "txmode": "f0006901-110c-478b-b74b-6f403b364a9c", 2548 - "txvibrate": "f0006903-110c-478b-b74b-6f403b364a9c" 2549 - } 2550 - } 2551 - }, 2552 "defaults": { 2553 "name": "Mysteryvibe Device", 2554 "features": [ ··· 2671 } 2672 ] 2673 } 2674 ] 2675 }, 2676 "mysteryvibe-v2": { 2677 - "btle": { 2678 - "names": [ 2679 - "6907 MV1", 2680 - "6908 MV1", 2681 - "6909 MV1", 2682 - "6914 MV1", 2683 - "6915 MV1" 2684 - ], 2685 - "services": { 2686 - "f0006900-110c-478b-b74b-6f403b364a9c": { 2687 - "txmode": "f0006901-110c-478b-b74b-6f403b364a9c", 2688 - "txvibrate": "f0006903-110c-478b-b74b-6f403b364a9c" 2689 - } 2690 - } 2691 - }, 2692 "defaults": { 2693 "name": "Mysteryvibe V2 Device", 2694 "features": [ ··· 2949 } 2950 ] 2951 } 2952 ] 2953 }, 2954 "picobong": { 2955 - "btle": { 2956 - "names": [ 2957 - "Blow hole", 2958 - "Picobong Male Toy", 2959 - "Diver", 2960 - "Picobong Egg", 2961 - "Life guard", 2962 - "Picobong Ring", 2963 - "Surfer", 2964 - "Picobong Butt Plug", 2965 - "Egg driver", 2966 - "Surfer_plug" 2967 - ], 2968 - "services": { 2969 - "0000fff0-0000-1000-8000-00805f9b34fb": { 2970 - "tx": "0000fff1-0000-1000-8000-00805f9b34fb" 2971 - } 2972 - } 2973 - }, 2974 "defaults": { 2975 "name": "Picobong Device", 2976 "features": [ ··· 3019 ], 3020 "name": "Picobong Surfer" 3021 } 3022 ] 3023 }, 3024 "vibratissimo": { 3025 - "btle": { 3026 - "names": [ 3027 - "Vibratissimo" 3028 - ], 3029 - "services": { 3030 - "00001523-1212-efde-1523-785feabcd123": { 3031 - "txmode": "00001524-1212-efde-1523-785feabcd123", 3032 - "txvibrate": "00001526-1212-efde-1523-785feabcd123", 3033 - "rx": "00001527-1212-efde-1523-785feabcd123" 3034 - }, 3035 - "0000180a-0000-1000-8000-00805f9b34fb": { 3036 - "rxblemodel": "00002a24-0000-1000-8000-00805f9b34fb" 3037 - }, 3038 - "0000180f-0000-1000-8000-00805f9b34fb": { 3039 - "rxblebattery": "00002a19-0000-1000-8000-00805f9b34fb" 3040 - } 3041 - } 3042 - }, 3043 "defaults": { 3044 "name": "Vibratissimo Device", 3045 "features": [ ··· 3181 } 3182 ] 3183 } 3184 ] 3185 }, 3186 "wevibe": { 3187 - "btle": { 3188 - "names": [ 3189 - "Cougar", 3190 - "4 Plus", 3191 - "4_Plus", 3192 - "4plus", 3193 - "Bloom", 3194 - "classic", 3195 - "Classic", 3196 - "Ditto", 3197 - "Gala", 3198 - "Jive", 3199 - "Nova", 3200 - "Pivot", 3201 - "Rave", 3202 - "Sync", 3203 - "Verge", 3204 - "Wish" 3205 - ], 3206 - "services": { 3207 - "f000bb03-0451-4000-b000-000000000000": { 3208 - "tx": "f000c000-0451-4000-b000-000000000000", 3209 - "rx": "f000b000-0451-4000-b000-000000000000" 3210 - } 3211 - } 3212 - }, 3213 "defaults": { 3214 "name": "WeVibe Device", 3215 "features": [ ··· 3403 } 3404 ] 3405 } 3406 ] 3407 }, 3408 "wevibe-8bit": { 3409 - "btle": { 3410 - "names": [ 3411 - "Melt", 3412 - "Moxie", 3413 - "Vector", 3414 - "Wand", 3415 - "Bond", 3416 - "Nelson", 3417 - "Nova2", 3418 - "Nova_2", 3419 - "Nova 2" 3420 - ], 3421 - "services": { 3422 - "f000bb03-0451-4000-b000-000000000000": { 3423 - "tx": "f000c000-0451-4000-b000-000000000000", 3424 - "rx": "f000b000-0451-4000-b000-000000000000" 3425 - } 3426 - } 3427 - }, 3428 "defaults": { 3429 "name": "WeVibe 8-bit Device", 3430 "features": [ ··· 3576 } 3577 ] 3578 } 3579 ] 3580 }, 3581 "wevibe-legacy": { 3582 - "btle": { 3583 - "names": [ 3584 - "Reina", 3585 - "imassager", 3586 - "Interactive Massager", 3587 - "03" 3588 - ], 3589 - "services": { 3590 - "f000bb03-0451-4000-b000-000000000000": { 3591 - "tx": "f000c000-0451-4000-b000-000000000000", 3592 - "rx": "f000b000-0451-4000-b000-000000000000" 3593 - } 3594 - } 3595 - }, 3596 "defaults": { 3597 "name": "WeVibe Realm Reina", 3598 "features": [] 3599 - } 3600 }, 3601 "wevibe-chorus": { 3602 - "btle": { 3603 - "names": [ 3604 - "Chorus", 3605 - "skeena", 3606 - "Sync 2", 3607 - "Sync Lite" 3608 - ], 3609 - "services": { 3610 - "f000bb03-0451-4000-b000-000000000000": { 3611 - "tx": "f000c000-0451-4000-b000-000000000000", 3612 - "rx": "f000b000-0451-4000-b000-000000000000" 3613 - } 3614 - } 3615 - }, 3616 "defaults": { 3617 "name": "WeVibe Chorus", 3618 "features": [ ··· 3695 } 3696 ] 3697 } 3698 ] 3699 }, 3700 "youcups": { 3701 - "btle": { 3702 - "names": [ 3703 - "Youcups" 3704 - ], 3705 - "services": { 3706 - "0000fee9-0000-1000-8000-00805f9b34fb": { 3707 - "tx": "d44bc439-abfd-45a2-b575-925416129600" 3708 - } 3709 - } 3710 - }, 3711 "defaults": { 3712 "name": "Youcups Warrior II", 3713 "features": [ ··· 3724 } 3725 } 3726 ] 3727 - } 3728 }, 3729 "cueme": { 3730 - "btle": { 3731 - "names": [ 3732 - "FUNCODE_*" 3733 - ], 3734 - "services": { 3735 - "0000fff0-0000-1000-8000-00805f9b34fb": { 3736 - "tx": "0000fff1-0000-1000-8000-00805f9b34fb" 3737 - } 3738 - } 3739 - }, 3740 "defaults": { 3741 "name": "Cueme Device", 3742 "features": [ ··· 3907 } 3908 ] 3909 } 3910 ] 3911 }, 3912 "kiiroo-v2-vibrator": { 3913 - "btle": { 3914 - "names": [ 3915 - "Pearl2", 3916 - "Pearl2+", 3917 - "Fuse", 3918 - "Virtual Blowbot", 3919 - "Titan", 3920 - "Virtual Rabbit" 3921 - ], 3922 - "services": { 3923 - "88f82580-0000-01e6-aace-0002a5d5c51b": { 3924 - "tx": "88f82581-0000-01e6-aace-0002a5d5c51b", 3925 - "rxtouch": "88f82582-0000-01e6-aace-0002a5d5c51b", 3926 - "rxaccel": "88f82584-0000-01e6-aace-0002a5d5c51b" 3927 - } 3928 - } 3929 - }, 3930 "defaults": { 3931 "name": "Kiiroo V2 Vibrator Device", 3932 "features": [ ··· 4149 } 4150 ] 4151 } 4152 ] 4153 }, 4154 "kiiroo-v21": { 4155 - "btle": { 4156 - "names": [ 4157 - "Titan1.1", 4158 - "Cliona", 4159 - "Pearl2.1", 4160 - "OhMiBod 4.0", 4161 - "OhMiBod LUMEN", 4162 - "OhMiBod NEX3", 4163 - "OhMiBod ESCA", 4164 - "OhMiBod Foxy", 4165 - "OhMiBod Chill Panty Vibe", 4166 - "OhMiBod Sphinx", 4167 - "Pulse Interactive", 4168 - "Fuse1.1" 4169 - ], 4170 - "services": { 4171 - "00001900-0000-1000-8000-00805f9b34fb": { 4172 - "whitelist": "00001901-0000-1000-8000-00805f9b34fb", 4173 - "tx": "00001902-0000-1000-8000-00805f9b34fb", 4174 - "rx": "00001903-0000-1000-8000-00805f9b34fb" 4175 - }, 4176 - "a0d70001-4c16-4ba7-977a-d394920e13a3": { 4177 - "tx": "a0d70002-4c16-4ba7-977a-d394920e13a3", 4178 - "rx": "a0d70003-4c16-4ba7-977a-d394920e13a3" 4179 - } 4180 - } 4181 - }, 4182 "defaults": { 4183 "name": "Kiiroo V2.1 Device", 4184 "features": [] ··· 4432 } 4433 ] 4434 } 4435 ] 4436 }, 4437 "kiiroo-v21-initialized": { 4438 - "btle": { 4439 - "names": [ 4440 - "Rey", 4441 - "We-Vibe Rocketman", 4442 - "Realm1.1", 4443 - "Onyx2.1", 4444 - "Onyx+", 4445 - "KEON", 4446 - "Keon R2" 4447 - ], 4448 - "services": { 4449 - "00001900-0000-1000-8000-00805f9b34fb": { 4450 - "whitelist": "00001901-0000-1000-8000-00805f9b34fb", 4451 - "tx": "00001902-0000-1000-8000-00805f9b34fb", 4452 - "rx": "00001903-0000-1000-8000-00805f9b34fb" 4453 - } 4454 - } 4455 - }, 4456 "defaults": { 4457 "name": "Kiiroo V2.1 Initialized Device", 4458 "features": [] ··· 4541 } 4542 ] 4543 } 4544 ] 4545 }, 4546 "vorze-cyclone-x": { 4547 - "hid": [ 4548 - { 4549 - "vendor-id": 1155, 4550 - "product-id": 22352 4551 - } 4552 - ], 4553 "defaults": { 4554 "name": "Vorze Cyclone X10 Device", 4555 "features": [ ··· 4566 } 4567 } 4568 ] 4569 - } 4570 - }, 4571 - "rez-trancevibrator": { 4572 - "usb": [ 4573 { 4574 - "vendor-id": 2889, 4575 - "product-id": 1615 4576 } 4577 - ], 4578 "defaults": { 4579 "name": "Rez TranceVibrator", 4580 "features": [ ··· 4591 } 4592 } 4593 ] 4594 - } 4595 - }, 4596 - "kiiroo-v1": { 4597 - "btle": { 4598 - "names": [ 4599 - "ONYX", 4600 - "PEARL" 4601 - ], 4602 - "services": { 4603 - "49535343-fe7d-4ae5-8fa9-9fafd205e455": { 4604 - "rx": "49535343-1e4d-4bd9-ba61-23c647249616", 4605 - "tx": "49535343-8841-43f4-a8d4-ecbe34729bb3", 4606 - "command": "49535343-aca3-481c-91ec-d85e28a60318" 4607 } 4608 } 4609 - }, 4610 "defaults": { 4611 "name": "Kiiroo V1 Device", 4612 "features": [] ··· 4652 } 4653 ] 4654 } 4655 ] 4656 }, 4657 "vorze-sa": { 4658 - "btle": { 4659 - "names": [ 4660 - "Bach smart", 4661 - "CycSA", 4662 - "UFOSA", 4663 - "UFO-TW", 4664 - "VorzePiston", 4665 - "ROCKET" 4666 - ], 4667 - "services": { 4668 - "40ee1111-63ec-4b7f-8ce7-712efd55b90e": { 4669 - "tx": "40ee2222-63ec-4b7f-8ce7-712efd55b90e" 4670 - } 4671 - } 4672 - }, 4673 "defaults": { 4674 "name": "Vorze Device", 4675 "features": [] ··· 4807 } 4808 ] 4809 } 4810 ] 4811 }, 4812 "youou": { 4813 - "btle": { 4814 - "names": [ 4815 - "VX001_*" 4816 - ], 4817 - "services": { 4818 - "0000fff0-0000-1000-8000-00805f9b34fb": { 4819 - "tx": "0000fff6-0000-1000-8000-00805f9b34fb" 4820 - } 4821 - } 4822 - }, 4823 "defaults": { 4824 "name": "Youou Wand Vibrator", 4825 "features": [ ··· 4836 } 4837 } 4838 ] 4839 - } 4840 }, 4841 "realtouch": { 4842 - "hid": [ 4843 - { 4844 - "vendor-id": 8020, 4845 - "product-id": 1 4846 - } 4847 - ], 4848 "defaults": { 4849 "name": "RealTouch", 4850 "features": [ ··· 4861 } 4862 } 4863 ] 4864 - } 4865 - }, 4866 - "prettylove": { 4867 - "btle": { 4868 - "names": [ 4869 - "Aogu BLE *" 4870 - ], 4871 - "services": { 4872 - "0000ffe5-0000-1000-8000-00805f9b34fb": { 4873 - "tx": "0000ffe9-0000-1000-8000-00805f9b34fb", 4874 - "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 4875 } 4876 } 4877 - }, 4878 "defaults": { 4879 "name": "Pretty Love Device", 4880 "features": [ ··· 4891 } 4892 } 4893 ] 4894 - } 4895 }, 4896 "svakom": { 4897 - "btle": { 4898 - "names": [ 4899 - "Aogu SUV", 4900 - "Aogu SCB", 4901 - "Emma NEO", 4902 - "Phoenix NEO" 4903 - ], 4904 - "services": { 4905 - "0000ffe0-0000-1000-8000-00805f9b34fb": { 4906 - "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 4907 - "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 4908 - } 4909 - } 4910 - }, 4911 "defaults": { 4912 "name": "Svakom Device", 4913 "features": [ ··· 4944 ], 4945 "name": "Svakom Emma Neo" 4946 } 4947 ] 4948 }, 4949 "svakom-v2": { 4950 - "btle": { 4951 - "names": [ 4952 - "116", 4953 - "117", 4954 - "118", 4955 - "Viviana", 4956 - "Ella NEO", 4957 - "S38A", 4958 - "Vick NEO", 4959 - "Vick Neo", 4960 - "STG05A", 4961 - "QH-SJ007A" 4962 - ], 4963 - "services": { 4964 - "0000ffe0-0000-1000-8000-00805f9b34fb": { 4965 - "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 4966 - "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 4967 - } 4968 - } 4969 - }, 4970 "defaults": { 4971 "name": "Svakom Device v2", 4972 "features": [ ··· 5040 ], 5041 "name": "Svakom Winni 2" 5042 } 5043 ] 5044 }, 5045 "svakom-v3": { 5046 - "btle": { 5047 - "names": [ 5048 - "Phoenix Neo 2", 5049 - "FK008A", 5050 - "Hannes NEO", 5051 - "QH-SX007E" 5052 - ], 5053 - "services": { 5054 - "0000ffe0-0000-1000-8000-00805f9b34fb": { 5055 - "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 5056 - "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 5057 - } 5058 - } 5059 - }, 5060 "defaults": { 5061 "name": "Svakom Device v3", 5062 "features": [ ··· 5153 } 5154 ] 5155 } 5156 ] 5157 }, 5158 "svakom-v4": { 5159 - "btle": { 5160 - "names": [ 5161 - "B2CM6", 5162 - "ERICA" 5163 - ], 5164 - "services": { 5165 - "0000ffe0-0000-1000-8000-00805f9b34fb": { 5166 - "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 5167 - "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 5168 - } 5169 - } 5170 - }, 5171 "defaults": { 5172 "name": "Svakom Device v4", 5173 "features": [ ··· 5210 ], 5211 "name": "Svakom Erica" 5212 } 5213 ] 5214 }, 5215 "svakom-sam": { 5216 - "btle": { 5217 - "names": [ 5218 - "Sam Neo" 5219 - ], 5220 - "services": { 5221 - "0000ae00-0000-1000-8000-00805f9b34fb": { 5222 - "tx": "0000ae01-0000-1000-8000-00805f9b34fb", 5223 - "rx": "0000ae02-0000-1000-8000-00805f9b34fb", 5224 - "txmode": "0000ae10-0000-1000-8000-00805f9b34fb" 5225 - }, 5226 - "0000ffac-0000-1000-8000-00805f9b34fb": { 5227 - "firmware": "0000ffb4-0000-1000-8000-00805f9b34fb" 5228 - } 5229 - } 5230 - }, 5231 "defaults": { 5232 "name": "Svakom Sam Neo", 5233 "features": [ ··· 5256 } 5257 } 5258 ] 5259 - } 5260 }, 5261 "svakom-alex": { 5262 - "btle": { 5263 - "names": [ 5264 - "Alex NEO", 5265 - "S63E Alex NEO" 5266 - ], 5267 - "services": { 5268 - "0000ffe0-0000-1000-8000-00805f9b34fb": { 5269 - "tx": "0000ffe1-0000-1000-8000-00805f9b34fb" 5270 - } 5271 - } 5272 - }, 5273 "defaults": { 5274 "name": "Svakom Alex Neo", 5275 "features": [ ··· 5286 } 5287 } 5288 ] 5289 - } 5290 - }, 5291 - "svakom-alex-v2": { 5292 - "btle": { 5293 - "names": [ 5294 - "Alex NEO 2" 5295 - ], 5296 - "services": { 5297 - "0000ffe0-0000-1000-8000-00805f9b34fb": { 5298 - "tx": "0000ffe1-0000-1000-8000-00805f9b34fb" 5299 } 5300 } 5301 - }, 5302 "defaults": { 5303 "name": "Svakom Alex Neo 2", 5304 "features": [ ··· 5315 } 5316 } 5317 ] 5318 - } 5319 }, 5320 "svakom-dt250a": { 5321 - "btle": { 5322 - "names": [ 5323 - "DT250A" 5324 - ], 5325 - "services": { 5326 - "0000ffe0-0000-1000-8000-00805f9b34fb": { 5327 - "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 5328 - "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 5329 - } 5330 - } 5331 - }, 5332 "defaults": { 5333 "name": "Coleur Dor DT250A", 5334 "features": [ ··· 5369 } 5370 } 5371 ] 5372 - } 5373 - }, 5374 - "svakom-iker": { 5375 - "btle": { 5376 - "names": [ 5377 - "Iker*" 5378 - ], 5379 - "manufacturer-data": [ 5380 - { 5381 - "company": 39, 5382 - "data": [ 5383 - 83, 5384 - 86, 5385 - 65, 5386 - 1, 5387 - 11, 5388 - 18, 5389 - 1, 5390 - 51, 5391 - 68, 5392 - 85, 5393 - 202, 5394 - 8 5395 - ] 5396 - } 5397 - ], 5398 - "services": { 5399 - "0000ffe0-0000-1000-8000-00805f9b34fb": { 5400 - "tx": "0000ffe1-0000-1000-8000-00805f9b34fb" 5401 } 5402 } 5403 - }, 5404 "defaults": { 5405 "name": "Svakom Iker", 5406 "features": [ ··· 5429 } 5430 } 5431 ] 5432 - } 5433 - }, 5434 - "svakom-pulse": { 5435 - "btle": { 5436 - "names": [ 5437 - "SWK-SX013A", 5438 - "Pulse Union", 5439 - "Pulse Galaxie", 5440 - "SX033APP", 5441 - "BX288A", 5442 - "QH-SX045A-B" 5443 - ], 5444 - "services": { 5445 - "0000ffe0-0000-1000-8000-00805f9b34fb": { 5446 - "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 5447 - "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 5448 } 5449 } 5450 - }, 5451 "defaults": { 5452 "name": "Svakom Pulse Device", 5453 "features": [ ··· 5502 ], 5503 "name": "Coleur Dor VX045A" 5504 } 5505 ] 5506 }, 5507 "svakom-suitcase": { 5508 - "btle": { 5509 - "names": [ 5510 - "VX357A-BLE-V1.0", 5511 - "VX236A-BLE-V1.0" 5512 - ], 5513 - "services": { 5514 - "0000ffe0-0000-1000-8000-00805f9b34fb": { 5515 - "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 5516 - "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 5517 - } 5518 - } 5519 - }, 5520 "defaults": { 5521 "name": "Svakom Magic Suitcase", 5522 "features": [ ··· 5553 ], 5554 "name": "Coleur Dor VX236A" 5555 } 5556 ] 5557 }, 5558 "svakom-tarax": { 5559 - "btle": { 5560 - "names": [ 5561 - "SX218A" 5562 - ], 5563 - "services": { 5564 - "0000ffe0-0000-1000-8000-00805f9b34fb": { 5565 - "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 5566 - "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 5567 - } 5568 - } 5569 - }, 5570 "defaults": { 5571 "name": "ToyCod Tara X", 5572 "features": [ ··· 5597 } 5598 } 5599 ] 5600 - } 5601 }, 5602 "svakom-avaneo": { 5603 - "btle": { 5604 - "names": [ 5605 - "SX218A", 5606 - "Ava Neo" 5607 - ], 5608 - "services": { 5609 - "0000ffe0-0000-1000-8000-00805f9b34fb": { 5610 - "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 5611 - "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 5612 - } 5613 - } 5614 - }, 5615 "defaults": { 5616 "name": "Svakom Ava Neo", 5617 "features": [ ··· 5640 } 5641 } 5642 ] 5643 - } 5644 - }, 5645 - "svakom-barnard": { 5646 - "btle": { 5647 - "names": [ 5648 - "DG239A" 5649 - ], 5650 - "services": { 5651 - "0000ffe0-0000-1000-8000-00805f9b34fb": { 5652 - "tx": "0000ffe1-0000-1000-8000-00805f9b34fb" 5653 } 5654 } 5655 - }, 5656 "defaults": { 5657 "name": "Fantasy Cup Barnard", 5658 "features": [ ··· 5681 } 5682 } 5683 ] 5684 - } 5685 }, 5686 "realov": { 5687 - "btle": { 5688 - "names": [ 5689 - "REALOV_VIBE" 5690 - ], 5691 - "services": { 5692 - "0000ffe0-0000-1000-8000-00805f9b34fb": { 5693 - "tx": "0000ffe1-0000-1000-8000-00805f9b34fb" 5694 - } 5695 - } 5696 - }, 5697 "defaults": { 5698 "name": "Realov Device", 5699 "features": [ ··· 5710 } 5711 } 5712 ] 5713 - } 5714 - }, 5715 - "motorbunny": { 5716 - "btle": { 5717 - "names": [ 5718 - "MB Controller", 5719 - "MB LINK 201" 5720 - ], 5721 - "services": { 5722 - "0000fff0-0000-1000-8000-00805f9b34fb": { 5723 - "tx": "0000fff6-0000-1000-8000-00805f9b34fb" 5724 } 5725 } 5726 - }, 5727 "defaults": { 5728 "name": "Motorbunny Device", 5729 "features": [ ··· 5766 ], 5767 "name": "Motorbunny Buck" 5768 } 5769 ] 5770 }, 5771 "zalo": { 5772 - "btle": { 5773 - "names": [ 5774 - "ZALO-Queen", 5775 - "ZALO-King", 5776 - "ZALO-Jeanne" 5777 - ], 5778 - "services": { 5779 - "0000fff0-0000-1000-8000-00805f9b34fb": { 5780 - "tx": "0000fff1-0000-1000-8000-00805f9b34fb" 5781 - } 5782 - } 5783 - }, 5784 "defaults": { 5785 "name": "Zalo Device", 5786 "features": [ ··· 5869 ], 5870 "name": "Zalo Jeanne" 5871 } 5872 ] 5873 }, 5874 "sayberx": { 5875 - "btle": { 5876 - "names": [ 5877 - "SayberX", 5878 - "X-Ring *" 5879 - ], 5880 - "services": { 5881 - "0000fff0-0000-1000-8000-00805f9b34fb": { 5882 - "tx": "0000fff6-0000-1000-8000-00805f9b34fb", 5883 - "rx": "0000fff8-0000-1000-8000-00805f9b34fb" 5884 - } 5885 - } 5886 - }, 5887 "defaults": { 5888 "name": "SayberX Device", 5889 "features": [] ··· 5915 ], 5916 "name": "Sayber X-Ring" 5917 } 5918 ] 5919 }, 5920 "muse": { 5921 - "btle": { 5922 - "names": [ 5923 - "WB-ZDB-WST", 5924 - "WB-TDD" 5925 - ], 5926 - "services": { 5927 - "0000aaa0-0000-1000-8000-00805f9b34fb": { 5928 - "tx": "0000aaa1-0000-1000-8000-00805f9b34fb" 5929 - } 5930 - } 5931 - }, 5932 "defaults": { 5933 "name": "Muse Device", 5934 "features": [ ··· 5959 ], 5960 "name": "Galaku Panty Vib" 5961 } 5962 ] 5963 }, 5964 "lelo-f1s": { 5965 - "btle": { 5966 - "names": [ 5967 - "F1s" 5968 - ], 5969 - "services": { 5970 - "0000fff0-0000-1000-8000-00805f9b34fb": { 5971 - "tx": "0000fff1-0000-1000-8000-00805f9b34fb", 5972 - "rx": "00000aa4-0000-1000-8000-00805f9b34fb" 5973 - } 5974 - } 5975 - }, 5976 "defaults": { 5977 "name": "Lelo F1s", 5978 "features": [ ··· 6001 } 6002 } 6003 ] 6004 - } 6005 - }, 6006 - "lelo-f1sv2": { 6007 - "btle": { 6008 - "names": [ 6009 - "F1SV2A", 6010 - "F1SV2X" 6011 - ], 6012 - "services": { 6013 - "0000fff0-0000-1000-8000-00805f9b34fb": { 6014 - "tx": "0000fff1-0000-1000-8000-00805f9b34fb", 6015 - "whitelist": "00000a10-0000-1000-8000-00805f9b34fb", 6016 - "rx": "00000a04-0000-1000-8000-00805f9b34fb" 6017 } 6018 } 6019 - }, 6020 "defaults": { 6021 "name": "Lelo F1s V2", 6022 "features": [ ··· 6045 } 6046 } 6047 ] 6048 - } 6049 - }, 6050 - "lelo-harmony": { 6051 - "btle": { 6052 - "names": [ 6053 - "IdaWave", 6054 - "Ida Wave", 6055 - "TianiHarmony", 6056 - "Tiani Harmony", 6057 - "TOR3", 6058 - "Hugo2" 6059 - ], 6060 - "services": { 6061 - "0000fff0-0000-1000-8000-00805f9b34fb": { 6062 - "command": "0000fff1-0000-1000-8000-00805f9b34fb", 6063 - "tx": "0000fff2-0000-1000-8000-00805f9b34fb", 6064 - "whitelist": "00000a11-0000-1000-8000-00805f9b34fb" 6065 } 6066 } 6067 - }, 6068 "defaults": { 6069 "name": "Lelo Tiani Harmony", 6070 "features": [ ··· 6154 ], 6155 "name": "Lelo Hugo 2" 6156 } 6157 ] 6158 }, 6159 "aneros": { 6160 - "btle": { 6161 - "names": [ 6162 - "Massage Demo" 6163 - ], 6164 - "services": { 6165 - "0000ff00-0000-1000-8000-00805f9b34fb": { 6166 - "tx": "0000ff01-0000-1000-8000-00805f9b34fb" 6167 - } 6168 - } 6169 - }, 6170 "defaults": { 6171 "name": "Aneros Vivi", 6172 "features": [ ··· 6197 } 6198 } 6199 ] 6200 - } 6201 - }, 6202 - "lovehoney-desire": { 6203 - "btle": { 6204 - "names": [ 6205 - "PROSTATE VIBE", 6206 - "KNICKER VIBE", 6207 - "LOVE EGG" 6208 - ], 6209 - "services": { 6210 - "0000ff00-0000-1000-8000-00805f9b34fb": { 6211 - "tx": "0000ff01-0000-1000-8000-00805f9b34fb" 6212 } 6213 } 6214 - }, 6215 "defaults": { 6216 "name": "Lovehoney Device", 6217 "features": [ ··· 6288 } 6289 ] 6290 } 6291 ] 6292 }, 6293 "twerkingbutt": { 6294 - "btle": { 6295 - "names": [ 6296 - "BODIKANG", 6297 - "Twerking Butt", 6298 - "TwerkingButt" 6299 - ], 6300 - "services": { 6301 - "00000a60-0000-1000-8000-00805f9b34fb": { 6302 - "tx": "00000a66-0000-1000-8000-00805f9b34fb", 6303 - "rx": "00000a67-0000-1000-8000-00805f9b34fb" 6304 - } 6305 - } 6306 - }, 6307 "defaults": { 6308 "name": "Twerking Butt", 6309 "features": [] 6310 - } 6311 - }, 6312 - "maxpro": { 6313 - "btle": { 6314 - "names": [ 6315 - "M2" 6316 - ], 6317 - "services": { 6318 - "6e400001-b5a3-f393-e0a9-e50e24dcca9e": { 6319 - "tx": "6e400002-b5a3-f393-e0a9-e50e24dcca9e" 6320 } 6321 } 6322 - }, 6323 "defaults": { 6324 "name": "MaxPro 2", 6325 "features": [ ··· 6336 } 6337 } 6338 ] 6339 - } 6340 - }, 6341 - "nobra": { 6342 - "btle": { 6343 - "names": [ 6344 - "NobraControl*" 6345 - ], 6346 - "services": { 6347 - "0000abf0-0000-1000-8000-00805f9b34fb": { 6348 - "tx": "0000abf1-0000-1000-8000-00805f9b34fb" 6349 - } 6350 - } 6351 }, 6352 - "serial": [ 6353 { 6354 - "port": "default", 6355 - "baud-rate": 19200, 6356 - "data-bits": 8, 6357 - "parity": "N", 6358 - "stop-bits": 1 6359 } 6360 - ], 6361 "defaults": { 6362 "name": "Nobra's Silicone Dreams Toy", 6363 "features": [ ··· 6374 } 6375 } 6376 ] 6377 - } 6378 - }, 6379 - "thehandy": { 6380 - "btle": { 6381 - "names": [ 6382 - "The Handy" 6383 - ], 6384 - "services": { 6385 - "1775244d-6b43-439b-877c-060f2d9bed07": { 6386 - "firmware": "1775ff51-6b43-439b-877c-060f2d9bed07", 6387 - "tx": "1775ff55-6b43-439b-877c-060f2d9bed07" 6388 } 6389 } 6390 - }, 6391 "defaults": { 6392 "name": "The Handy", 6393 "features": [ ··· 6404 } 6405 } 6406 ] 6407 - } 6408 }, 6409 "cachito": { 6410 - "btle": { 6411 - "names": [ 6412 - "CCTSK", 6413 - "CCTXueGao" 6414 - ], 6415 - "services": { 6416 - "0000fff0-0000-1000-8000-00805f9b34fb": { 6417 - "tx": "0000fff2-0000-1000-8000-00805f9b34fb" 6418 - } 6419 - } 6420 - }, 6421 "defaults": { 6422 "name": "Cachito Device", 6423 "features": [ ··· 6460 ], 6461 "name": "Cachito Ice Cream" 6462 } 6463 ] 6464 }, 6465 "jejoue": { 6466 - "btle": { 6467 - "names": [ 6468 - "Je Joue" 6469 - ], 6470 - "services": { 6471 - "0000fff0-0000-1000-8000-00805f9b34fb": { 6472 - "tx": "0000fff1-0000-1000-8000-00805f9b34fb" 6473 - } 6474 - } 6475 - }, 6476 "defaults": { 6477 "name": "Je Joue Device", 6478 "features": [ ··· 6501 } 6502 } 6503 ] 6504 - } 6505 }, 6506 "lovenuts": { 6507 - "btle": { 6508 - "names": [ 6509 - "Love_Nuts" 6510 - ], 6511 - "services": { 6512 - "0000fff0-0000-1000-8000-00805f9b34fb": { 6513 - "tx": "0000fff1-0000-1000-8000-00805f9b34fb" 6514 - } 6515 - } 6516 - }, 6517 "defaults": { 6518 "name": "Love Nut", 6519 "features": [ ··· 6530 } 6531 } 6532 ] 6533 - } 6534 - }, 6535 - "patoo": { 6536 - "btle": { 6537 - "names": [ 6538 - "PTVEA*", 6539 - "PBT*", 6540 - "PCS*", 6541 - "PHT*" 6542 - ], 6543 - "services": { 6544 - "f000aa64-0451-4000-b000-000000000000": { 6545 - "txmode": "f000aa65-0451-4000-b000-000000000000", 6546 - "tx": "f000aa68-0451-4000-b000-000000000000" 6547 } 6548 } 6549 - }, 6550 "defaults": { 6551 "name": "Patoo Device", 6552 "features": [ ··· 6615 } 6616 ] 6617 } 6618 ] 6619 }, 6620 "tcode-v03": { 6621 - "serial": [ 6622 - { 6623 - "port": "default", 6624 - "baud-rate": 115200, 6625 - "data-bits": 8, 6626 - "parity": "N", 6627 - "stop-bits": 1 6628 - } 6629 - ], 6630 "defaults": { 6631 "name": "TCode v0.3 (Single Linear Axis)", 6632 "features": [ ··· 6643 } 6644 } 6645 ] 6646 - } 6647 }, 6648 "fredorch": { 6649 - "btle": { 6650 - "names": [ 6651 - "YXlinksSPP" 6652 - ], 6653 - "services": { 6654 - "0000ffb0-0000-1000-8000-00805f9b34fb": { 6655 - "tx": "0000ffb1-0000-1000-8000-00805f9b34fb", 6656 - "rx": "0000ffb2-0000-1000-8000-00805f9b34fb" 6657 - } 6658 - } 6659 - }, 6660 "defaults": { 6661 "name": "Fredorch Device", 6662 "features": [ ··· 6673 } 6674 } 6675 ] 6676 - } 6677 - }, 6678 - "fredorch-rotary": { 6679 - "btle": { 6680 - "names": [ 6681 - "M1_*" 6682 - ], 6683 - "services": { 6684 - "0000ae10-0000-1000-8000-00805f9b34fb": { 6685 - "tx": "0000ae01-0000-1000-8000-00805f9b34fb", 6686 - "rx": "0000ae02-0000-1000-8000-00805f9b34fb" 6687 } 6688 } 6689 - }, 6690 "defaults": { 6691 "name": "Fredorch Rotary Device", 6692 "features": [ ··· 6704 } 6705 } 6706 ] 6707 - } 6708 }, 6709 "mizzzee": { 6710 - "btle": { 6711 - "names": [ 6712 - "NFY008" 6713 - ], 6714 - "services": { 6715 - "0000eea0-0000-1000-8000-00805f9b34fb": { 6716 - "tx": "0000eea1-0000-1000-8000-00805f9b34fb" 6717 - } 6718 - } 6719 - }, 6720 "defaults": { 6721 "name": "Mizz Zee Device", 6722 "features": [ ··· 6733 } 6734 } 6735 ] 6736 - } 6737 }, 6738 "mizzzee-v2": { 6739 - "btle": { 6740 - "names": [ 6741 - "XHT" 6742 - ], 6743 - "services": { 6744 - "0000eea0-0000-1000-8000-00805f9b34fb": { 6745 - "tx": "0000ee01-0000-1000-8000-00805f9b34fb" 6746 - } 6747 - } 6748 - }, 6749 "defaults": { 6750 "name": "Mizz Zee Device", 6751 "features": [ ··· 6762 } 6763 } 6764 ] 6765 - } 6766 - }, 6767 - "mizzzee-v3": { 6768 - "btle": { 6769 - "names": [ 6770 - "XHTKJ" 6771 - ], 6772 - "services": { 6773 - "0000ff10-0000-1000-8000-00805f9b34fb": { 6774 - "tx": "0000ff12-0000-1000-8000-00805f9b34fb" 6775 } 6776 } 6777 - }, 6778 "defaults": { 6779 "name": "Mizz Zee Device", 6780 "features": [ ··· 6791 } 6792 } 6793 ] 6794 - } 6795 - }, 6796 - "htk_bm": { 6797 - "btle": { 6798 - "names": [ 6799 - "HTK-BLE-BM001" 6800 - ], 6801 - "services": { 6802 - "0000180f-0000-1000-8000-00805f9b34fb": { 6803 - "rxblebattery": "00002a19-0000-1000-8000-00805f9b34fb" 6804 - }, 6805 - "00001802-0000-1000-8000-00805f9b34fb": { 6806 - "tx": "00002a06-0000-1000-8000-00805f9b34fb" 6807 } 6808 } 6809 - }, 6810 "defaults": { 6811 "name": "HTK Breast Massager", 6812 "features": [ ··· 6835 } 6836 } 6837 ] 6838 - } 6839 }, 6840 "ankni": { 6841 - "btle": { 6842 - "names": [ 6843 - "DSJM" 6844 - ], 6845 - "services": { 6846 - "0000fe00-0000-1000-8000-00805f9b34fb": { 6847 - "tx": "0000fe01-0000-1000-8000-00805f9b34fb" 6848 - }, 6849 - "0000fffe-0000-1000-8000-00805f9b34fb": { 6850 - "tx": "0000fe02-0000-1000-8000-00805f9b34fb" 6851 - }, 6852 - "0000180a-0000-1000-8000-00805f9b34fb": { 6853 - "generic0": "00002a50-0000-1000-8000-00805f9b34fb" 6854 - } 6855 - } 6856 - }, 6857 "defaults": { 6858 "name": "Roselex Device", 6859 "features": [ ··· 6870 } 6871 } 6872 ] 6873 - } 6874 - }, 6875 - "hgod": { 6876 - "btle": { 6877 - "names": [ 6878 - "AMN NEO" 6879 - ], 6880 - "services": { 6881 - "0000ffe3-0000-1000-8000-00805f9b34fb": { 6882 - "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 6883 - "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 6884 } 6885 } 6886 - }, 6887 "defaults": { 6888 "name": "Hgod Device", 6889 "features": [ ··· 6900 } 6901 } 6902 ] 6903 - } 6904 - }, 6905 - "lovedistance": { 6906 - "btle": { 6907 - "names": [ 6908 - "REACH G", 6909 - "REACH", 6910 - "MAG", 6911 - "SPAN", 6912 - "RANGE" 6913 - ], 6914 - "services": { 6915 - "0000ff00-0000-1000-8000-00805f9b34fb": { 6916 - "tx": "0000ff01-0000-1000-8000-00805f9b34fb", 6917 - "rx": "0000ff02-0000-1000-8000-00805f9b34fb" 6918 } 6919 } 6920 - }, 6921 "defaults": { 6922 "name": "Love Distance Device", 6923 "features": [ ··· 6966 ], 6967 "name": "Love Distance Range" 6968 } 6969 ] 6970 }, 6971 "satisfyer": { 6972 - "btle": { 6973 - "names": [ 6974 - "SF *" 6975 - ], 6976 - "manufacturer-data": [ 6977 - { 6978 - "company": 93, 6979 - "data": [ 6980 - 0, 6981 - 0, 6982 - 39 6983 - ] 6984 - }, 6985 - { 6986 - "company": 93, 6987 - "data": [ 6988 - 0, 6989 - 0, 6990 - 40 6991 - ] 6992 - } 6993 - ], 6994 - "services": { 6995 - "0000180a-0000-1000-8000-00805f9b34fb": { 6996 - "rxblemodel": "00002a24-0000-1000-8000-00805f9b34fb" 6997 - }, 6998 - "51361500-c5e7-47c7-8a6e-47ebc99d80e8": { 6999 - "command": "51361501-c5e7-47c7-8a6e-47ebc99d80e8", 7000 - "tx": "51361502-c5e7-47c7-8a6e-47ebc99d80e8" 7001 - } 7002 - } 7003 - }, 7004 "defaults": { 7005 "name": "Satisfyer Device", 7006 "features": [ ··· 8829 } 8830 ] 8831 } 8832 ] 8833 }, 8834 "mannuo": { 8835 - "btle": { 8836 - "names": [ 8837 - "Sex toys", 8838 - "Sex Toys", 8839 - "LXCDVP", 8840 - "MANO PRODUCT" 8841 - ], 8842 - "services": { 8843 - "0000fff0-0000-1000-8000-00805f9b34fb": { 8844 - "tx": "0000fff1-0000-1000-8000-00805f9b34fb", 8845 - "rx": "0000fff4-0000-1000-8000-00805f9b34fb" 8846 - } 8847 - } 8848 - }, 8849 "defaults": { 8850 "name": "ManNuo Device", 8851 "features": [ ··· 8862 } 8863 } 8864 ] 8865 - } 8866 - }, 8867 - "kgoal-boost": { 8868 - "btle": { 8869 - "names": [ 8870 - "Boost" 8871 - ], 8872 - "services": { 8873 - "0000180f-0000-1000-8000-00805f9b34fb": { 8874 - "rxblebattery": "00002a19-0000-1000-8000-00805f9b34fb" 8875 - }, 8876 - "8e7c6065-7656-17ad-1b41-b53d1a548e0d": { 8877 - "rxpressure": "10c2be2d-d2d5-b7a8-5f42-e2468c9ebbf5" 8878 } 8879 } 8880 - }, 8881 "defaults": { 8882 "name": "KGoal Boost", 8883 "features": [ ··· 8897 } 8898 } 8899 ] 8900 - } 8901 - }, 8902 - "meese": { 8903 - "btle": { 8904 - "names": [ 8905 - "Meese-V389", 8906 - "Meese-cd" 8907 - ], 8908 - "services": { 8909 - "0000ffe0-0000-1000-8000-00805f9b34fb": { 8910 - "tx": "0000ffe1-0000-1000-8000-00805f9b34fb" 8911 } 8912 } 8913 - }, 8914 "defaults": { 8915 "name": "Meese Device", 8916 "features": [ ··· 8967 } 8968 ] 8969 } 8970 ] 8971 }, 8972 "hismith": { 8973 - "btle": { 8974 - "names": [ 8975 - "HISMITH", 8976 - "Wildolo", 8977 - "\u0007HISMITH" 8978 - ], 8979 - "services": { 8980 - "0000ffe5-0000-1000-8000-00805f9b34fb": { 8981 - "tx": "0000ffe9-0000-1000-8000-00805f9b34fb" 8982 - }, 8983 - "0000ff90-0000-1000-8000-00805f9b34fb": { 8984 - "rxblemodel": "0000ff96-0000-1000-8000-00805f9b34fb" 8985 - } 8986 - } 8987 - }, 8988 "defaults": { 8989 "name": "Hismith device", 8990 "features": [ ··· 9075 } 9076 ] 9077 } 9078 ] 9079 }, 9080 "hismith-mini": { 9081 - "btle": { 9082 - "names": [ 9083 - "Auxfun-Box", 9084 - "Sinloli", 9085 - "Sinloli-Sherry", 9086 - "Eropair *", 9087 - "HISMITH S1" 9088 - ], 9089 - "services": { 9090 - "0000ffe5-0000-1000-8000-00805f9b34fb": { 9091 - "tx": "0000ffe9-0000-1000-8000-00805f9b34fb" 9092 - }, 9093 - "0000ff90-0000-1000-8000-00805f9b34fb": { 9094 - "rxblemodel": "0000ff96-0000-1000-8000-00805f9b34fb" 9095 - } 9096 - } 9097 - }, 9098 "defaults": { 9099 "name": "Hismith Mini device", 9100 "features": [ ··· 9262 } 9263 ] 9264 } 9265 ] 9266 }, 9267 "hismith-servo": { 9268 - "btle": { 9269 - "names": [ 9270 - "HISMITH S2" 9271 - ], 9272 - "services": { 9273 - "0000ffe5-0000-1000-8000-00805f9b34fb": { 9274 - "tx": "0000ffe9-0000-1000-8000-00805f9b34fb" 9275 - }, 9276 - "0000ff90-0000-1000-8000-00805f9b34fb": { 9277 - "rxblemodel": "0000ff96-0000-1000-8000-00805f9b34fb" 9278 - } 9279 - } 9280 - }, 9281 "defaults": { 9282 "name": "Hismith servo device", 9283 "features": [ ··· 9303 ], 9304 "name": "Hismith Servo" 9305 } 9306 ] 9307 }, 9308 "wetoy": { 9309 - "btle": { 9310 - "names": [ 9311 - "WeToy" 9312 - ], 9313 - "services": { 9314 - "0000fff0-0000-1000-8000-00805f9b34fb": { 9315 - "tx": "0000fff3-0000-1000-8000-00805f9b34fb" 9316 - } 9317 - } 9318 - }, 9319 "defaults": { 9320 "name": "WeToy MiNa", 9321 "features": [ ··· 9332 } 9333 } 9334 ] 9335 - } 9336 - }, 9337 - "pink_punch": { 9338 - "btle": { 9339 - "names": [ 9340 - "Pink_Punch", 9341 - "PinkPunch_Peachu" 9342 - ], 9343 - "services": { 9344 - "0000ffe0-0000-1000-8000-00805f9b34fb": { 9345 - "tx": "0000ffe1-0000-1000-8000-00805f9b34fb" 9346 } 9347 } 9348 - }, 9349 "defaults": { 9350 "name": "Pink Punch Sunset Mushroom", 9351 "configurations": [ ··· 9370 } 9371 } 9372 ] 9373 - } 9374 - }, 9375 - "sakuraneko": { 9376 - "btle": { 9377 - "names": [ 9378 - "sakuraneko-01", 9379 - "sakuraneko-02", 9380 - "sakuraneko-03", 9381 - "sakuraneko-04" 9382 - ], 9383 - "services": { 9384 - "0000ffe0-0000-1000-8000-00805f9b34fb": { 9385 - "tx": "0000ffe1-0000-1000-8000-00805f9b34fb" 9386 } 9387 } 9388 - }, 9389 "defaults": { 9390 "name": "Sakuraneko Device", 9391 "features": [ ··· 9454 } 9455 ] 9456 } 9457 ] 9458 }, 9459 "synchro": { 9460 - "btle": { 9461 - "names": [ 9462 - "Shinkuro", 9463 - "synchro2", 9464 - "synchro EX" 9465 - ], 9466 - "services": { 9467 - "0000ffe0-0000-1000-8000-00805f9b34fb": { 9468 - "tx": "0000ffe1-0000-1000-8000-00805f9b34fb" 9469 - } 9470 - } 9471 - }, 9472 "defaults": { 9473 "name": "Synchro", 9474 "features": [ ··· 9493 ], 9494 "name": "Synchro Exchange" 9495 } 9496 ] 9497 }, 9498 "tryfun": { 9499 - "btle": { 9500 - "names": [ 9501 - "TRYFUN-ONE" 9502 - ], 9503 - "services": { 9504 - "0000ff10-0000-1000-8000-00805f9b34fb": { 9505 - "tx": "0000fff1-0000-1000-8000-00805f9b34fb" 9506 - } 9507 - } 9508 - }, 9509 "defaults": { 9510 "name": "TryFun Yuan Series", 9511 "features": [ ··· 9534 } 9535 } 9536 ] 9537 - } 9538 - }, 9539 - "metaxsire": { 9540 - "btle": { 9541 - "names": [ 9542 - "Rex", 9543 - "Cali", 9544 - "Olis", 9545 - "LY213A01" 9546 - ], 9547 - "services": { 9548 - "0000ffe0-0000-1000-8000-00805f9b34fb": { 9549 - "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 9550 - "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 9551 } 9552 } 9553 - }, 9554 "defaults": { 9555 "name": "metaXsire Device", 9556 "features": [ ··· 9683 } 9684 ] 9685 } 9686 ] 9687 }, 9688 "metaxsire-repeat": { 9689 - "btle": { 9690 - "names": [ 9691 - "LY199B01", 9692 - "LY234A01", 9693 - "LY271A01", 9694 - "LY270A01" 9695 - ], 9696 - "services": { 9697 - "0000ffe0-0000-1000-8000-00805f9b34fb": { 9698 - "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 9699 - "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 9700 - } 9701 - } 9702 - }, 9703 "defaults": { 9704 "name": "Cooxer Bullet Vibe", 9705 "features": [ ··· 9742 ], 9743 "name": "metaXsire Una" 9744 } 9745 ] 9746 }, 9747 "metaxsire-v2": { 9748 - "btle": { 9749 - "names": [ 9750 - "LY272A01" 9751 - ], 9752 - "services": { 9753 - "0000bae0-0000-1000-8000-00805f9b34fb": { 9754 - "tx": "0000bae1-0000-1000-8000-00805f9b34fb" 9755 - } 9756 - } 9757 - }, 9758 "defaults": { 9759 "name": "metaXsire Nolan", 9760 "features": [ ··· 9783 } 9784 } 9785 ] 9786 - } 9787 }, 9788 "metaxsire-v3": { 9789 - "btle": { 9790 - "names": [ 9791 - "TAY001" 9792 - ], 9793 - "services": { 9794 - "0000fff0-0000-1000-8000-00805f9b34fb": { 9795 - "tx": "0000fe02-0000-1000-8000-00805f9b34fb" 9796 - } 9797 - } 9798 - }, 9799 "defaults": { 9800 "name": "metaXsire Tay", 9801 "features": [ ··· 9812 } 9813 } 9814 ] 9815 - } 9816 - }, 9817 - "cowgirl": { 9818 - "btle": { 9819 - "names": [ 9820 - "THE COWGIRL", 9821 - "THE UNICORN" 9822 - ], 9823 - "services": { 9824 - "0000fe00-0000-1000-8000-00805f9b34fb": { 9825 - "tx": "0000fe01-0000-1000-8000-00805f9b34fb" 9826 } 9827 } 9828 - }, 9829 "defaults": { 9830 "name": "The Cowgirl Device", 9831 "features": [ ··· 9868 ], 9869 "name": "The Unicorn" 9870 } 9871 ] 9872 }, 9873 "galaku-pump": { 9874 - "btle": { 9875 - "names": [ 9876 - "V415" 9877 - ], 9878 - "services": { 9879 - "00001000-0000-1000-8000-00805f9b34fb": { 9880 - "tx": "00001001-0000-1000-8000-00805f9b34fb" 9881 - } 9882 - } 9883 - }, 9884 "defaults": { 9885 "name": "Galaku Device", 9886 "features": [ ··· 9917 ], 9918 "name": "Galaku Nebula" 9919 } 9920 ] 9921 }, 9922 "xibao": { 9923 - "btle": { 9924 - "names": [ 9925 - "CCYB_*" 9926 - ], 9927 - "services": { 9928 - "0000fff0-0000-1000-8000-00805f9b34fb": { 9929 - "tx": "0000fff2-0000-1000-8000-00805f9b34fb" 9930 - } 9931 - } 9932 - }, 9933 "defaults": { 9934 "name": "Xibao Smart Masturbation Cup", 9935 "features": [ ··· 9946 } 9947 } 9948 ] 9949 - } 9950 }, 9951 "sensee": { 9952 - "btle": { 9953 - "names": [ 9954 - "CTY222S4" 9955 - ], 9956 - "services": { 9957 - "0000fff0-0000-1000-8000-00805f9b34fb": { 9958 - "tx": "0000fff5-0000-1000-8000-00805f9b34fb" 9959 - } 9960 - } 9961 - }, 9962 "defaults": { 9963 "name": "Sensee Diandou Rabbit", 9964 "features": [ ··· 9975 } 9976 } 9977 ] 9978 - } 9979 }, 9980 "sensee-capsule": { 9981 - "btle": { 9982 - "names": [ 9983 - "CCPA10S2" 9984 - ], 9985 - "services": { 9986 - "0000fff0-0000-1000-8000-00805f9b34fb": { 9987 - "tx": "0000fff5-0000-1000-8000-00805f9b34fb" 9988 - } 9989 - } 9990 - }, 9991 "defaults": { 9992 "name": "Sensee Capsule", 9993 "features": [ ··· 10016 } 10017 } 10018 ] 10019 - } 10020 - }, 10021 - "fox": { 10022 - "btle": { 10023 - "names": [ 10024 - "FOX", 10025 - "FOX M70 Pro", 10026 - "FoxM70Pro" 10027 - ], 10028 - "services": { 10029 - "0000ae00-0000-1000-8000-00805f9b34fb": { 10030 - "tx": "0000ae01-0000-1000-8000-00805f9b34fb" 10031 } 10032 } 10033 - }, 10034 "defaults": { 10035 "name": "Fox Device", 10036 "features": [ ··· 10047 } 10048 } 10049 ] 10050 - } 10051 }, 10052 "kizuna": { 10053 - "serial": [ 10054 - { 10055 - "port": "default", 10056 - "baud-rate": 19200, 10057 - "data-bits": 8, 10058 - "parity": "N", 10059 - "stop-bits": 1 10060 - } 10061 - ], 10062 "defaults": { 10063 "name": "Kizuna Smart", 10064 "features": [ ··· 10075 } 10076 } 10077 ] 10078 - } 10079 - }, 10080 - "xiuxiuda": { 10081 - "btle": { 10082 - "names": [ 10083 - "XXD-Lush*" 10084 - ], 10085 - "services": { 10086 - "53300001-0023-4bd4-bbd5-a6920e4c5653": { 10087 - "tx": "53300003-0023-4bd4-bbd5-a6920e4c5653" 10088 } 10089 } 10090 - }, 10091 "defaults": { 10092 "name": "Xiuxiuda Device", 10093 "features": [ ··· 10104 } 10105 } 10106 ] 10107 - } 10108 }, 10109 "longlosttouch": { 10110 - "btle": { 10111 - "names": [ 10112 - "RS-KNW" 10113 - ], 10114 - "services": { 10115 - "0000cb60-0000-1000-8000-00805f9b34fb": { 10116 - "tx": "0000cb61-0000-1000-8000-00805f9b34fb", 10117 - "rx": "0000cb62-0000-1000-8000-00805f9b34fb" 10118 - } 10119 - } 10120 - }, 10121 "defaults": { 10122 "name": "Long Lost Touch Possible Kiss", 10123 "features": [ ··· 10146 } 10147 } 10148 ] 10149 - } 10150 - }, 10151 - "adrienlastic": { 10152 - "btle": { 10153 - "names": [ 10154 - "Placeholder to avoid conflict with bad attempt to clone a Lovense Lush" 10155 - ], 10156 - "advertised-services": [ 10157 - "00001320-0000-1000-8000-00805f9b34fb" 10158 - ], 10159 - "services": { 10160 - "6e400001-b5a3-f393-e0a9-e50e24dcca9e": { 10161 - "tx": "6e400002-b5a3-f393-e0a9-e50e24dcca9e" 10162 } 10163 } 10164 - }, 10165 "defaults": { 10166 "name": "Adrien Lastic Device", 10167 "features": [ ··· 10192 ], 10193 "name": "Adrien Lastic Revelation" 10194 } 10195 ] 10196 }, 10197 "nintendo-joycon": { 10198 - "hid": [ 10199 - { 10200 - "vendor-id": 1406, 10201 - "product-id": 8199 10202 - }, 10203 - { 10204 - "vendor-id": 1406, 10205 - "product-id": 8198 10206 - }, 10207 - { 10208 - "vendor-id": 1406, 10209 - "product-id": 8201 10210 - } 10211 - ], 10212 "defaults": { 10213 "name": "Nintendo Joycon", 10214 "features": [ ··· 10225 } 10226 } 10227 ] 10228 - } 10229 - }, 10230 - "foreo": { 10231 - "btle": { 10232 - "names": [ 10233 - "FOFO", 10234 - "LUNA fofo", 10235 - "LUNA FOFO", 10236 - "LUNA PLAY SMART", 10237 - "LUNA PLAYSMART2", 10238 - "LUNA PLAY SMART2", 10239 - "LUNA play smart2", 10240 - "LUNA play smart 2", 10241 - "LUNA 3", 10242 - "LUNA3", 10243 - "LUNA3PLUS", 10244 - "LUNA3 PLUS", 10245 - "LUNA 3 PLUS", 10246 - "LUNA 3 plus", 10247 - "LUNA 3 MEN", 10248 - "LUNA3MEN", 10249 - "LUNA MINI3", 10250 - "LUNA MINI 3", 10251 - "LUNA mini 3", 10252 - "LUNA4PLUS", 10253 - "LUNA4", 10254 - "LUNA 4", 10255 - "LUNA4PLUS", 10256 - "LUNA4 PLUS", 10257 - "LUNA 4 plus", 10258 - "LUNA4MEN", 10259 - "LUNA 4 MEN", 10260 - "LUNA 4 FOR MEN", 10261 - "LUNA MINI4", 10262 - "LUNA MINI 4", 10263 - "LUNA mini 4", 10264 - "LUNA 4 mini", 10265 - "UFO", 10266 - "UFO mini", 10267 - "UFO MINI", 10268 - "UFO MIN", 10269 - "UFO2", 10270 - "UFO 2", 10271 - "UFOMINI2", 10272 - "UFO mini 2", 10273 - "UFO3", 10274 - "UFO3mini", 10275 - "UFO3go", 10276 - "UFO3led", 10277 - "BEAR", 10278 - "BEAR_MINI", 10279 - "BEAR MINI", 10280 - "BEAR mini", 10281 - "BEAR2", 10282 - "BEAR 2", 10283 - "BEAR2go", 10284 - "BEAR2body", 10285 - "BEAR2eyes", 10286 - "KIWI", 10287 - "KIWI derma" 10288 - ], 10289 - "services": { 10290 - "0000fff0-0000-1000-8000-00805f9b34fb": { 10291 - "tx": "0000fff1-0000-1000-8000-00805f9b34fb" 10292 } 10293 } 10294 - }, 10295 "defaults": { 10296 "name": "Foreo Device", 10297 "features": [ ··· 10494 ], 10495 "name": "Foreo KIWI derma" 10496 } 10497 ] 10498 }, 10499 "monsterpub": { 10500 - "btle": { 10501 - "names": [ 10502 - "MonsterPub" 10503 - ], 10504 - "services": { 10505 - "00006000-0000-1000-8000-00805f9b34fb": { 10506 - "tx": "00006001-0000-1000-8000-00805f9b34fb", 10507 - "txmode": "00006002-0000-1000-8000-00805f9b34fb", 10508 - "txvibrate": "00006003-0000-1000-8000-00805f9b34fb" 10509 - }, 10510 - "00006010-0000-1000-8000-00805f9b34fb": { 10511 - "rxblemodel": "00006014-0000-1000-8000-00805f9b34fb" 10512 - }, 10513 - "00008000-0000-1000-8000-00805f9b34fb": { 10514 - "rx": "00008001-0000-1000-8000-00805f9b34fb" 10515 - } 10516 - } 10517 - }, 10518 "defaults": { 10519 "name": "Sistalk MonsterPub Device", 10520 "features": [ ··· 10673 ], 10674 "name": "Sistalk MonsterPub BeatHeart" 10675 } 10676 ] 10677 }, 10678 "joyhub": { 10679 - "btle": { 10680 - "names": [ 10681 - "J-Petalwish2", 10682 - "J-VortexTongue", 10683 - "J-Velocity", 10684 - "JOYHUB-ROSELLA2", 10685 - "J-VibSiren", 10686 - "J-ElixirEgg", 10687 - "J-RetroGuard", 10688 - "J-TrueForm3" 10689 - ], 10690 - "services": { 10691 - "0000ffa0-0000-1000-8000-00805f9b34fb": { 10692 - "tx": "0000ffa1-0000-1000-8000-00805f9b34fb" 10693 - } 10694 - } 10695 - }, 10696 "defaults": { 10697 "name": "JoyHub Device", 10698 "features": [ ··· 10864 } 10865 ] 10866 } 10867 ] 10868 }, 10869 "joyhub-v2": { 10870 - "btle": { 10871 - "names": [ 10872 - "J-Pearlconch", 10873 - "J-PetiteRose", 10874 - "J-MoonHorn", 10875 - "J-VibTrefoil", 10876 - "J-Panther", 10877 - "J-Mecha", 10878 - "J-Lagoon", 10879 - "J-Firedragon" 10880 - ], 10881 - "services": { 10882 - "0000ffa0-0000-1000-8000-00805f9b34fb": { 10883 - "tx": "0000ffa1-0000-1000-8000-00805f9b34fb" 10884 - } 10885 - } 10886 - }, 10887 "defaults": { 10888 "name": "JoyHub Device", 10889 "features": [ ··· 11163 } 11164 ] 11165 } 11166 ] 11167 }, 11168 "itoys": { 11169 - "btle": { 11170 - "names": [ 11171 - "26-021-B" 11172 - ], 11173 - "services": { 11174 - "0000ffa0-0000-1000-8000-00805f9b34fb": { 11175 - "tx": "0000ffa1-0000-1000-8000-00805f9b34fb" 11176 - } 11177 - } 11178 - }, 11179 "defaults": { 11180 "name": "iToys Seagull", 11181 "features": [ ··· 11192 } 11193 } 11194 ] 11195 - } 11196 }, 11197 "leten": { 11198 - "btle": { 11199 - "names": [ 11200 - "T528-LT", 11201 - "F537-LT", 11202 - "F520B-LT", 11203 - "F520A-LT" 11204 - ], 11205 - "services": { 11206 - "0000fff0-0000-1000-8000-00805f9b34fb": { 11207 - "tx": "0000fff1-0000-1000-8000-00805f9b34fb" 11208 - }, 11209 - "0000ffe0-0000-1000-8000-00805f9b34fb": { 11210 - "rx": "0000ffe1-0000-1000-8000-00805f9b34fb" 11211 - } 11212 - } 11213 - }, 11214 "defaults": { 11215 "name": "Leten Device", 11216 "features": [ ··· 11227 } 11228 } 11229 ] 11230 - } 11231 - }, 11232 - "vibcrafter": { 11233 - "btle": { 11234 - "names": [ 11235 - "be gentle" 11236 - ], 11237 - "services": { 11238 - "53300051-0060-4bd4-bbe5-a6920e4c5663": { 11239 - "tx": "53300052-0060-4bd4-bbe5-a6920e4c5663", 11240 - "rx": "53300053-0060-4bd4-bbe5-a6920e4c5663" 11241 } 11242 } 11243 - }, 11244 "defaults": { 11245 "name": "VibCrafter Device", 11246 "features": [ ··· 11269 } 11270 } 11271 ] 11272 - } 11273 } 11274 } 11275 }
··· 5 }, 6 "protocols": { 7 "lovense": { 8 "defaults": { 9 "name": "Lovense Device", 10 "features": [ ··· 697 } 698 ] 699 } 700 + ], 701 + "communication": [ 702 + { 703 + "btle": { 704 + "names": [ 705 + "LVS-*", 706 + "LOVE-*" 707 + ], 708 + "manufacturer-data": [ 709 + { 710 + "company": 620, 711 + "data": [ 712 + 255, 713 + 33 714 + ] 715 + } 716 + ], 717 + "services": { 718 + "0000fff0-0000-1000-8000-00805f9b34fb": { 719 + "tx": "0000fff2-0000-1000-8000-00805f9b34fb", 720 + "rx": "0000fff1-0000-1000-8000-00805f9b34fb" 721 + }, 722 + "6e400001-b5a3-f393-e0a9-e50e24dcca9e": { 723 + "tx": "6e400002-b5a3-f393-e0a9-e50e24dcca9e", 724 + "rx": "6e400003-b5a3-f393-e0a9-e50e24dcca9e" 725 + }, 726 + "50300001-0024-4bd4-bbd5-a6920e4c5653": { 727 + "tx": "50300002-0024-4bd4-bbd5-a6920e4c5653", 728 + "rx": "50300003-0024-4bd4-bbd5-a6920e4c5653" 729 + }, 730 + "57300001-0023-4bd4-bbd5-a6920e4c5653": { 731 + "tx": "57300002-0023-4bd4-bbd5-a6920e4c5653", 732 + "rx": "57300003-0023-4bd4-bbd5-a6920e4c5653" 733 + }, 734 + "5a300001-0024-4bd4-bbd5-a6920e4c5653": { 735 + "tx": "5a300002-0024-4bd4-bbd5-a6920e4c5653", 736 + "rx": "5a300003-0024-4bd4-bbd5-a6920e4c5653" 737 + }, 738 + "50300001-0023-4bd4-bbd5-a6920e4c5653": { 739 + "tx": "50300002-0023-4bd4-bbd5-a6920e4c5653", 740 + "rx": "50300003-0023-4bd4-bbd5-a6920e4c5653" 741 + }, 742 + "53300001-0023-4bd4-bbd5-a6920e4c5653": { 743 + "tx": "53300002-0023-4bd4-bbd5-a6920e4c5653", 744 + "rx": "53300003-0023-4bd4-bbd5-a6920e4c5653" 745 + }, 746 + "5a300001-0023-4bd4-bbd5-a6920e4c5653": { 747 + "tx": "5a300002-0023-4bd4-bbd5-a6920e4c5653", 748 + "rx": "5a300003-0023-4bd4-bbd5-a6920e4c5653" 749 + }, 750 + "4f300001-0023-4bd4-bbd5-a6920e4c5653": { 751 + "tx": "4f300002-0023-4bd4-bbd5-a6920e4c5653", 752 + "rx": "4f300003-0023-4bd4-bbd5-a6920e4c5653" 753 + }, 754 + "42300001-0023-4bd4-bbd5-a6920e4c5653": { 755 + "tx": "42300002-0023-4bd4-bbd5-a6920e4c5653", 756 + "rx": "42300003-0023-4bd4-bbd5-a6920e4c5653" 757 + }, 758 + "43300001-0023-4bd4-bbd5-a6920e4c5653": { 759 + "tx": "43300002-0023-4bd4-bbd5-a6920e4c5653", 760 + "rx": "43300003-0023-4bd4-bbd5-a6920e4c5653" 761 + }, 762 + "4c300001-0023-4bd4-bbd5-a6920e4c5653": { 763 + "tx": "4c300002-0023-4bd4-bbd5-a6920e4c5653", 764 + "rx": "4c300003-0023-4bd4-bbd5-a6920e4c5653" 765 + }, 766 + "4c410001-0023-4bd4-bbd5-a6920e4c5653": { 767 + "tx": "4c410002-0023-4bd4-bbd5-a6920e4c5653", 768 + "rx": "4c410003-0023-4bd4-bbd5-a6920e4c5653" 769 + }, 770 + "56300001-0023-4bd4-bbd5-a6920e4c5653": { 771 + "tx": "56300002-0023-4bd4-bbd5-a6920e4c5653", 772 + "rx": "56300003-0023-4bd4-bbd5-a6920e4c5653" 773 + }, 774 + "58300001-0023-4bd4-bbd5-a6920e4c5653": { 775 + "tx": "58300002-0023-4bd4-bbd5-a6920e4c5653", 776 + "rx": "58300003-0023-4bd4-bbd5-a6920e4c5653" 777 + }, 778 + "52300001-0023-4bd4-bbd5-a6920e4c5653": { 779 + "tx": "52300002-0023-4bd4-bbd5-a6920e4c5653", 780 + "rx": "52300003-0023-4bd4-bbd5-a6920e4c5653" 781 + }, 782 + "46300001-0023-4bd4-bbd5-a6920e4c5653": { 783 + "tx": "46300002-0023-4bd4-bbd5-a6920e4c5653", 784 + "rx": "46300003-0023-4bd4-bbd5-a6920e4c5653" 785 + }, 786 + "50300011-0023-4bd4-bbd5-a6920e4c5653": { 787 + "tx": "50300012-0023-4bd4-bbd5-a6920e4c5653", 788 + "rx": "50300013-0023-4bd4-bbd5-a6920e4c5653" 789 + }, 790 + "4a300001-0023-4bd4-bbd5-a6920e4c5653": { 791 + "tx": "4a300002-0023-4bd4-bbd5-a6920e4c5653", 792 + "rx": "4a300003-0023-4bd4-bbd5-a6920e4c5653" 793 + }, 794 + "45440001-0023-4bd4-bbd5-a6920e4c5653": { 795 + "tx": "45440002-0023-4bd4-bbd5-a6920e4c5653", 796 + "rx": "45440003-0023-4bd4-bbd5-a6920e4c5653" 797 + }, 798 + "45420001-0023-4bd4-bbd5-a6920e4c5653": { 799 + "tx": "45420002-0023-4bd4-bbd5-a6920e4c5653", 800 + "rx": "45420003-0023-4bd4-bbd5-a6920e4c5653" 801 + }, 802 + "54300001-0023-4bd4-bbd5-a6920e4c5653": { 803 + "tx": "54300002-0023-4bd4-bbd5-a6920e4c5653", 804 + "rx": "54300003-0023-4bd4-bbd5-a6920e4c5653" 805 + }, 806 + "45490001-0023-4bd4-bbd5-a6920e4c5653": { 807 + "tx": "45490002-0023-4bd4-bbd5-a6920e4c5653", 808 + "rx": "45490003-0023-4bd4-bbd5-a6920e4c5653" 809 + }, 810 + "4e300001-0023-4bd4-bbd5-a6920e4c5653": { 811 + "tx": "4e300002-0023-4bd4-bbd5-a6920e4c5653", 812 + "rx": "4e300003-0023-4bd4-bbd5-a6920e4c5653" 813 + }, 814 + "45410001-0023-4bd4-bbd5-a6920e4c5653": { 815 + "tx": "45410002-0023-4bd4-bbd5-a6920e4c5653", 816 + "rx": "45410003-0023-4bd4-bbd5-a6920e4c5653" 817 + }, 818 + "51300001-0023-4bd4-bbd5-a6920e4c5653": { 819 + "tx": "51300002-0023-4bd4-bbd5-a6920e4c5653", 820 + "rx": "51300003-0023-4bd4-bbd5-a6920e4c5653" 821 + }, 822 + "45460001-0023-4bd4-bbd5-a6920e4c5653": { 823 + "tx": "45460002-0023-4bd4-bbd5-a6920e4c5653", 824 + "rx": "45460003-0023-4bd4-bbd5-a6920e4c5653" 825 + }, 826 + "454c0001-0023-4bd4-bbd5-a6920e4c5653": { 827 + "tx": "454c0002-0023-4bd4-bbd5-a6920e4c5653", 828 + "rx": "454c0003-0023-4bd4-bbd5-a6920e4c5653" 829 + }, 830 + "55300001-0023-4bd4-bbd5-a6920e4c5653": { 831 + "tx": "55300002-0023-4bd4-bbd5-a6920e4c5653", 832 + "rx": "55300003-0023-4bd4-bbd5-a6920e4c5653" 833 + }, 834 + "53440001-0023-4bd4-bbd5-a6920e4c5653": { 835 + "tx": "53440002-0023-4bd4-bbd5-a6920e4c5653", 836 + "rx": "53440003-0023-4bd4-bbd5-a6920e4c5653" 837 + }, 838 + "48300001-0023-4bd4-bbd5-a6920e4c5653": { 839 + "tx": "48300002-0023-4bd4-bbd5-a6920e4c5653", 840 + "rx": "48300003-0023-4bd4-bbd5-a6920e4c5653" 841 + } 842 + } 843 + } 844 + } 845 ] 846 }, 847 "lovense-connect-service": { 848 "defaults": { 849 "name": "Lovense Connect Service Device", 850 "features": [ ··· 1511 } 1512 ] 1513 } 1514 + ], 1515 + "communication": [ 1516 + { 1517 + "lovense-connect-service": { 1518 + "exists": true 1519 + } 1520 + } 1521 ] 1522 }, 1523 "xinput": { 1524 "defaults": { 1525 "name": "XBox (XInput) Compatible Gamepad", 1526 "features": [ ··· 1549 } 1550 } 1551 ] 1552 + }, 1553 + "communication": [ 1554 + { 1555 + "xinput": { 1556 + "exists": true 1557 } 1558 } 1559 + ] 1560 + }, 1561 + "kiiroo-v2": { 1562 "defaults": { 1563 "name": "Kiiroo v2 Device", 1564 "features": [ ··· 1589 ], 1590 "name": "Kiiroo Onyx 2" 1591 } 1592 + ], 1593 + "communication": [ 1594 + { 1595 + "btle": { 1596 + "names": [ 1597 + "Launch", 1598 + "Onyx2" 1599 + ], 1600 + "services": { 1601 + "88f80580-0000-01e6-aace-0002a5d5c51b": { 1602 + "tx": "88f80581-0000-01e6-aace-0002a5d5c51b", 1603 + "rx": "88f80582-0000-01e6-aace-0002a5d5c51b", 1604 + "firmware": "88f80583-0000-01e6-aace-0002a5d5c51b" 1605 + }, 1606 + "f60402a6-0293-4bdb-9f20-6758133f7090": { 1607 + "tx": "02962ac9-e86f-4094-989d-231d69995fc2", 1608 + "rx": "d44d0393-0731-43b3-a373-8fc70b1f3323", 1609 + "firmware": "c7b7a04b-2cc4-40ff-8b10-5d531d1161db" 1610 + } 1611 + } 1612 + } 1613 + } 1614 ] 1615 }, 1616 "libo-elle": { 1617 "defaults": { 1618 "name": "Libo Elle Device", 1619 "features": [ ··· 1644 ], 1645 "name": "Libo Elle 2" 1646 } 1647 + ], 1648 + "communication": [ 1649 + { 1650 + "btle": { 1651 + "names": [ 1652 + "PiPiJing", 1653 + "Shuidi" 1654 + ], 1655 + "services": { 1656 + "00006000-0000-1000-8000-00805f9b34fb": { 1657 + "tx": "00006001-0000-1000-8000-00805f9b34fb", 1658 + "txmode": "00006002-0000-1000-8000-00805f9b34fb" 1659 + } 1660 + } 1661 + } 1662 + } 1663 ] 1664 }, 1665 "libo-shark": { 1666 "defaults": { 1667 "name": "Libo Shark", 1668 "features": [ ··· 1691 } 1692 } 1693 ] 1694 + }, 1695 + "communication": [ 1696 + { 1697 + "btle": { 1698 + "names": [ 1699 + "ShaYu" 1700 + ], 1701 + "services": { 1702 + "00006000-0000-1000-8000-00805f9b34fb": { 1703 + "tx": "00006001-0000-1000-8000-00805f9b34fb", 1704 + "txmode": "00006002-0000-1000-8000-00805f9b34fb" 1705 + } 1706 + } 1707 + } 1708 + } 1709 + ] 1710 }, 1711 "libo-karen": { 1712 "defaults": { 1713 "name": "Libo Karen", 1714 "features": [] 1715 + }, 1716 + "communication": [ 1717 + { 1718 + "btle": { 1719 + "names": [ 1720 + "SuoYinQiu" 1721 + ], 1722 + "services": { 1723 + "00006000-0000-1000-8000-00805f9b34fb": { 1724 + "tx": "00006001-0000-1000-8000-00805f9b34fb", 1725 + "txmode": "00006002-0000-1000-8000-00805f9b34fb" 1726 + }, 1727 + "00006050-0000-1000-8000-00805f9b34fb": { 1728 + "rxpressure": "00006051-0000-1000-8000-00805f9b34fb" 1729 + } 1730 + } 1731 } 1732 } 1733 + ] 1734 + }, 1735 + "libo-vibes": { 1736 "defaults": { 1737 "name": "Libo Vibes Device", 1738 "features": [ ··· 1909 } 1910 ] 1911 } 1912 + ], 1913 + "communication": [ 1914 + { 1915 + "btle": { 1916 + "names": [ 1917 + "XiaoLu", 1918 + "LuXiaoHan", 1919 + "BaiHu", 1920 + "Gugudai", 1921 + "Yuyi", 1922 + "LuWuShuang", 1923 + "LiBo", 1924 + "QingTing", 1925 + "Huohu", 1926 + "Yuyi", 1927 + "Haima" 1928 + ], 1929 + "services": { 1930 + "00006000-0000-1000-8000-00805f9b34fb": { 1931 + "tx": "00006001-0000-1000-8000-00805f9b34fb", 1932 + "txmode": "00006002-0000-1000-8000-00805f9b34fb" 1933 + } 1934 + } 1935 + } 1936 + } 1937 ] 1938 }, 1939 "magic-motion-1": { 1940 "defaults": { 1941 "name": "Magic Motion V1 Device", 1942 "features": [ ··· 2086 ], 2087 "name": "FunTown Caleo" 2088 } 2089 + ], 2090 + "communication": [ 2091 + { 2092 + "btle": { 2093 + "names": [ 2094 + "Smart Mini Vibe*", 2095 + "Flamingo", 2096 + "Flamingo T", 2097 + "Smart Bean", 2098 + "Smart Bean3", 2099 + "Magic Cell", 2100 + "Magic Wand", 2101 + "Fugu", 2102 + "Fugu2", 2103 + "Gballs2", 2104 + "GBalls3", 2105 + "FM-LILAC-101", 2106 + "Xone", 2107 + "CBT002" 2108 + ], 2109 + "services": { 2110 + "78667579-7b48-43db-b8c5-7928a6b0a335": { 2111 + "tx": "78667579-a914-49a4-8333-aa3c0cd8fedc" 2112 + }, 2113 + "0000180f-0000-1000-8000-00805f9b34fb": { 2114 + "rxblebattery": "00002a19-0000-1000-8000-00805f9b34fb" 2115 + } 2116 + } 2117 + } 2118 + } 2119 ] 2120 }, 2121 "magic-motion-2": { 2122 "defaults": { 2123 "name": "Magic Motion V2 Device", 2124 "features": [ ··· 2317 } 2318 ] 2319 } 2320 + ], 2321 + "communication": [ 2322 + { 2323 + "btle": { 2324 + "names": [ 2325 + "Eidolon", 2326 + "Lipstick", 2327 + "Sword", 2328 + "Curve", 2329 + "Solstice X", 2330 + "funwand", 2331 + "CBT001" 2332 + ], 2333 + "services": { 2334 + "78667579-7b48-43db-b8c5-7928a6b0a335": { 2335 + "tx": "78667579-a914-49a4-8333-aa3c0cd8fedc" 2336 + }, 2337 + "0000180f-0000-1000-8000-00805f9b34fb": { 2338 + "rxblebattery": "00002a19-0000-1000-8000-00805f9b34fb" 2339 + } 2340 + } 2341 + } 2342 + } 2343 ] 2344 }, 2345 "magic-motion-3": { 2346 "defaults": { 2347 "name": "LoveLife Krush", 2348 "features": [ ··· 2374 } 2375 } 2376 ] 2377 + }, 2378 + "communication": [ 2379 + { 2380 + "btle": { 2381 + "names": [ 2382 + "Krush" 2383 + ], 2384 + "services": { 2385 + "78667579-7b48-43db-b8c5-7928a6b0a335": { 2386 + "tx": "78667579-a914-49a4-8333-aa3c0cd8fedc" 2387 + }, 2388 + "0000180f-0000-1000-8000-00805f9b34fb": { 2389 + "rxblebattery": "00002a19-0000-1000-8000-00805f9b34fb" 2390 + } 2391 + } 2392 + } 2393 + } 2394 + ] 2395 }, 2396 "magic-motion-4": { 2397 "defaults": { 2398 "name": "Magic Motion V4 Device", 2399 "features": [ ··· 2557 } 2558 ] 2559 } 2560 + ], 2561 + "communication": [ 2562 + { 2563 + "btle": { 2564 + "names": [ 2565 + "funone", 2566 + "Magic Sundi", 2567 + "Kegel Coach", 2568 + "Magic Lotos", 2569 + "nyx", 2570 + "umi", 2571 + "funkegel", 2572 + "bobi2" 2573 + ], 2574 + "services": { 2575 + "78667579-7b48-43db-b8c5-7928a6b0a335": { 2576 + "tx": "78667579-a914-49a4-8333-aa3c0cd8fedc" 2577 + }, 2578 + "0000180f-0000-1000-8000-00805f9b34fb": { 2579 + "rxblebattery": "00002a19-0000-1000-8000-00805f9b34fb" 2580 + } 2581 + } 2582 + } 2583 + } 2584 ] 2585 }, 2586 "mysteryvibe": { 2587 "defaults": { 2588 "name": "Mysteryvibe Device", 2589 "features": [ ··· 2706 } 2707 ] 2708 } 2709 + ], 2710 + "communication": [ 2711 + { 2712 + "btle": { 2713 + "names": [ 2714 + "MV Crescendo", 2715 + "MV Tenuto ", 2716 + "MV Poco " 2717 + ], 2718 + "services": { 2719 + "f0006900-110c-478b-b74b-6f403b364a9c": { 2720 + "txmode": "f0006901-110c-478b-b74b-6f403b364a9c", 2721 + "txvibrate": "f0006903-110c-478b-b74b-6f403b364a9c" 2722 + } 2723 + } 2724 + } 2725 + } 2726 ] 2727 }, 2728 "mysteryvibe-v2": { 2729 "defaults": { 2730 "name": "Mysteryvibe V2 Device", 2731 "features": [ ··· 2986 } 2987 ] 2988 } 2989 + ], 2990 + "communication": [ 2991 + { 2992 + "btle": { 2993 + "names": [ 2994 + "6907 MV1", 2995 + "6908 MV1", 2996 + "6909 MV1", 2997 + "6914 MV1", 2998 + "6915 MV1" 2999 + ], 3000 + "services": { 3001 + "f0006900-110c-478b-b74b-6f403b364a9c": { 3002 + "txmode": "f0006901-110c-478b-b74b-6f403b364a9c", 3003 + "txvibrate": "f0006903-110c-478b-b74b-6f403b364a9c" 3004 + } 3005 + } 3006 + } 3007 + } 3008 ] 3009 }, 3010 "picobong": { 3011 "defaults": { 3012 "name": "Picobong Device", 3013 "features": [ ··· 3056 ], 3057 "name": "Picobong Surfer" 3058 } 3059 + ], 3060 + "communication": [ 3061 + { 3062 + "btle": { 3063 + "names": [ 3064 + "Blow hole", 3065 + "Picobong Male Toy", 3066 + "Diver", 3067 + "Picobong Egg", 3068 + "Life guard", 3069 + "Picobong Ring", 3070 + "Surfer", 3071 + "Picobong Butt Plug", 3072 + "Egg driver", 3073 + "Surfer_plug" 3074 + ], 3075 + "services": { 3076 + "0000fff0-0000-1000-8000-00805f9b34fb": { 3077 + "tx": "0000fff1-0000-1000-8000-00805f9b34fb" 3078 + } 3079 + } 3080 + } 3081 + } 3082 ] 3083 }, 3084 "vibratissimo": { 3085 "defaults": { 3086 "name": "Vibratissimo Device", 3087 "features": [ ··· 3223 } 3224 ] 3225 } 3226 + ], 3227 + "communication": [ 3228 + { 3229 + "btle": { 3230 + "names": [ 3231 + "Vibratissimo" 3232 + ], 3233 + "services": { 3234 + "00001523-1212-efde-1523-785feabcd123": { 3235 + "txmode": "00001524-1212-efde-1523-785feabcd123", 3236 + "txvibrate": "00001526-1212-efde-1523-785feabcd123", 3237 + "rx": "00001527-1212-efde-1523-785feabcd123" 3238 + }, 3239 + "0000180a-0000-1000-8000-00805f9b34fb": { 3240 + "rxblemodel": "00002a24-0000-1000-8000-00805f9b34fb" 3241 + }, 3242 + "0000180f-0000-1000-8000-00805f9b34fb": { 3243 + "rxblebattery": "00002a19-0000-1000-8000-00805f9b34fb" 3244 + } 3245 + } 3246 + } 3247 + } 3248 ] 3249 }, 3250 "wevibe": { 3251 "defaults": { 3252 "name": "WeVibe Device", 3253 "features": [ ··· 3441 } 3442 ] 3443 } 3444 + ], 3445 + "communication": [ 3446 + { 3447 + "btle": { 3448 + "names": [ 3449 + "Cougar", 3450 + "4 Plus", 3451 + "4_Plus", 3452 + "4plus", 3453 + "Bloom", 3454 + "classic", 3455 + "Classic", 3456 + "Ditto", 3457 + "Gala", 3458 + "Jive", 3459 + "Nova", 3460 + "Pivot", 3461 + "Rave", 3462 + "Sync", 3463 + "Verge", 3464 + "Wish" 3465 + ], 3466 + "services": { 3467 + "f000bb03-0451-4000-b000-000000000000": { 3468 + "tx": "f000c000-0451-4000-b000-000000000000", 3469 + "rx": "f000b000-0451-4000-b000-000000000000" 3470 + } 3471 + } 3472 + } 3473 + } 3474 ] 3475 }, 3476 "wevibe-8bit": { 3477 "defaults": { 3478 "name": "WeVibe 8-bit Device", 3479 "features": [ ··· 3625 } 3626 ] 3627 } 3628 + ], 3629 + "communication": [ 3630 + { 3631 + "btle": { 3632 + "names": [ 3633 + "Melt", 3634 + "Moxie", 3635 + "Vector", 3636 + "Wand", 3637 + "Bond", 3638 + "Nelson", 3639 + "Nova2", 3640 + "Nova_2", 3641 + "Nova 2" 3642 + ], 3643 + "services": { 3644 + "f000bb03-0451-4000-b000-000000000000": { 3645 + "tx": "f000c000-0451-4000-b000-000000000000", 3646 + "rx": "f000b000-0451-4000-b000-000000000000" 3647 + } 3648 + } 3649 + } 3650 + } 3651 ] 3652 }, 3653 "wevibe-legacy": { 3654 "defaults": { 3655 "name": "WeVibe Realm Reina", 3656 "features": [] 3657 + }, 3658 + "communication": [ 3659 + { 3660 + "btle": { 3661 + "names": [ 3662 + "Reina", 3663 + "imassager", 3664 + "Interactive Massager", 3665 + "03" 3666 + ], 3667 + "services": { 3668 + "f000bb03-0451-4000-b000-000000000000": { 3669 + "tx": "f000c000-0451-4000-b000-000000000000", 3670 + "rx": "f000b000-0451-4000-b000-000000000000" 3671 + } 3672 + } 3673 + } 3674 + } 3675 + ] 3676 }, 3677 "wevibe-chorus": { 3678 "defaults": { 3679 "name": "WeVibe Chorus", 3680 "features": [ ··· 3757 } 3758 ] 3759 } 3760 + ], 3761 + "communication": [ 3762 + { 3763 + "btle": { 3764 + "names": [ 3765 + "Chorus", 3766 + "skeena", 3767 + "Sync 2", 3768 + "Sync Lite" 3769 + ], 3770 + "services": { 3771 + "f000bb03-0451-4000-b000-000000000000": { 3772 + "tx": "f000c000-0451-4000-b000-000000000000", 3773 + "rx": "f000b000-0451-4000-b000-000000000000" 3774 + } 3775 + } 3776 + } 3777 + } 3778 ] 3779 }, 3780 "youcups": { 3781 "defaults": { 3782 "name": "Youcups Warrior II", 3783 "features": [ ··· 3794 } 3795 } 3796 ] 3797 + }, 3798 + "communication": [ 3799 + { 3800 + "btle": { 3801 + "names": [ 3802 + "Youcups" 3803 + ], 3804 + "services": { 3805 + "0000fee9-0000-1000-8000-00805f9b34fb": { 3806 + "tx": "d44bc439-abfd-45a2-b575-925416129600" 3807 + } 3808 + } 3809 + } 3810 + } 3811 + ] 3812 }, 3813 "cueme": { 3814 "defaults": { 3815 "name": "Cueme Device", 3816 "features": [ ··· 3981 } 3982 ] 3983 } 3984 + ], 3985 + "communication": [ 3986 + { 3987 + "btle": { 3988 + "names": [ 3989 + "FUNCODE_*" 3990 + ], 3991 + "services": { 3992 + "0000fff0-0000-1000-8000-00805f9b34fb": { 3993 + "tx": "0000fff1-0000-1000-8000-00805f9b34fb" 3994 + } 3995 + } 3996 + } 3997 + } 3998 ] 3999 }, 4000 "kiiroo-v2-vibrator": { 4001 "defaults": { 4002 "name": "Kiiroo V2 Vibrator Device", 4003 "features": [ ··· 4220 } 4221 ] 4222 } 4223 + ], 4224 + "communication": [ 4225 + { 4226 + "btle": { 4227 + "names": [ 4228 + "Pearl2", 4229 + "Pearl2+", 4230 + "Fuse", 4231 + "Virtual Blowbot", 4232 + "Titan", 4233 + "Virtual Rabbit" 4234 + ], 4235 + "services": { 4236 + "88f82580-0000-01e6-aace-0002a5d5c51b": { 4237 + "tx": "88f82581-0000-01e6-aace-0002a5d5c51b", 4238 + "rxtouch": "88f82582-0000-01e6-aace-0002a5d5c51b", 4239 + "rxaccel": "88f82584-0000-01e6-aace-0002a5d5c51b" 4240 + } 4241 + } 4242 + } 4243 + } 4244 ] 4245 }, 4246 "kiiroo-v21": { 4247 "defaults": { 4248 "name": "Kiiroo V2.1 Device", 4249 "features": [] ··· 4497 } 4498 ] 4499 } 4500 + ], 4501 + "communication": [ 4502 + { 4503 + "btle": { 4504 + "names": [ 4505 + "Titan1.1", 4506 + "Cliona", 4507 + "Pearl2.1", 4508 + "OhMiBod 4.0", 4509 + "OhMiBod LUMEN", 4510 + "OhMiBod NEX3", 4511 + "OhMiBod ESCA", 4512 + "OhMiBod Foxy", 4513 + "OhMiBod Chill Panty Vibe", 4514 + "OhMiBod Sphinx", 4515 + "Pulse Interactive", 4516 + "Fuse1.1" 4517 + ], 4518 + "services": { 4519 + "00001900-0000-1000-8000-00805f9b34fb": { 4520 + "whitelist": "00001901-0000-1000-8000-00805f9b34fb", 4521 + "tx": "00001902-0000-1000-8000-00805f9b34fb", 4522 + "rx": "00001903-0000-1000-8000-00805f9b34fb" 4523 + }, 4524 + "a0d70001-4c16-4ba7-977a-d394920e13a3": { 4525 + "tx": "a0d70002-4c16-4ba7-977a-d394920e13a3", 4526 + "rx": "a0d70003-4c16-4ba7-977a-d394920e13a3" 4527 + } 4528 + } 4529 + } 4530 + } 4531 ] 4532 }, 4533 "kiiroo-v21-initialized": { 4534 "defaults": { 4535 "name": "Kiiroo V2.1 Initialized Device", 4536 "features": [] ··· 4619 } 4620 ] 4621 } 4622 + ], 4623 + "communication": [ 4624 + { 4625 + "btle": { 4626 + "names": [ 4627 + "Rey", 4628 + "We-Vibe Rocketman", 4629 + "Realm1.1", 4630 + "Onyx2.1", 4631 + "Onyx+", 4632 + "KEON", 4633 + "Keon R2" 4634 + ], 4635 + "services": { 4636 + "00001900-0000-1000-8000-00805f9b34fb": { 4637 + "whitelist": "00001901-0000-1000-8000-00805f9b34fb", 4638 + "tx": "00001902-0000-1000-8000-00805f9b34fb", 4639 + "rx": "00001903-0000-1000-8000-00805f9b34fb" 4640 + } 4641 + } 4642 + } 4643 + } 4644 ] 4645 }, 4646 "vorze-cyclone-x": { 4647 "defaults": { 4648 "name": "Vorze Cyclone X10 Device", 4649 "features": [ ··· 4660 } 4661 } 4662 ] 4663 + }, 4664 + "communication": [ 4665 { 4666 + "hid": { 4667 + "pairs": [ 4668 + { 4669 + "vendor-id": 1155, 4670 + "product-id": 22352 4671 + } 4672 + ] 4673 + } 4674 } 4675 + ] 4676 + }, 4677 + "rez-trancevibrator": { 4678 "defaults": { 4679 "name": "Rez TranceVibrator", 4680 "features": [ ··· 4691 } 4692 } 4693 ] 4694 + }, 4695 + "communication": [ 4696 + { 4697 + "usb": { 4698 + "pairs": [ 4699 + { 4700 + "vendor-id": 2889, 4701 + "product-id": 1615 4702 + } 4703 + ] 4704 } 4705 } 4706 + ] 4707 + }, 4708 + "kiiroo-v1": { 4709 "defaults": { 4710 "name": "Kiiroo V1 Device", 4711 "features": [] ··· 4751 } 4752 ] 4753 } 4754 + ], 4755 + "communication": [ 4756 + { 4757 + "btle": { 4758 + "names": [ 4759 + "ONYX", 4760 + "PEARL" 4761 + ], 4762 + "services": { 4763 + "49535343-fe7d-4ae5-8fa9-9fafd205e455": { 4764 + "rx": "49535343-1e4d-4bd9-ba61-23c647249616", 4765 + "tx": "49535343-8841-43f4-a8d4-ecbe34729bb3", 4766 + "command": "49535343-aca3-481c-91ec-d85e28a60318" 4767 + } 4768 + } 4769 + } 4770 + } 4771 ] 4772 }, 4773 "vorze-sa": { 4774 "defaults": { 4775 "name": "Vorze Device", 4776 "features": [] ··· 4908 } 4909 ] 4910 } 4911 + ], 4912 + "communication": [ 4913 + { 4914 + "btle": { 4915 + "names": [ 4916 + "Bach smart", 4917 + "CycSA", 4918 + "UFOSA", 4919 + "UFO-TW", 4920 + "VorzePiston", 4921 + "ROCKET" 4922 + ], 4923 + "services": { 4924 + "40ee1111-63ec-4b7f-8ce7-712efd55b90e": { 4925 + "tx": "40ee2222-63ec-4b7f-8ce7-712efd55b90e" 4926 + } 4927 + } 4928 + } 4929 + } 4930 ] 4931 }, 4932 "youou": { 4933 "defaults": { 4934 "name": "Youou Wand Vibrator", 4935 "features": [ ··· 4946 } 4947 } 4948 ] 4949 + }, 4950 + "communication": [ 4951 + { 4952 + "btle": { 4953 + "names": [ 4954 + "VX001_*" 4955 + ], 4956 + "services": { 4957 + "0000fff0-0000-1000-8000-00805f9b34fb": { 4958 + "tx": "0000fff6-0000-1000-8000-00805f9b34fb" 4959 + } 4960 + } 4961 + } 4962 + } 4963 + ] 4964 }, 4965 "realtouch": { 4966 "defaults": { 4967 "name": "RealTouch", 4968 "features": [ ··· 4979 } 4980 } 4981 ] 4982 + }, 4983 + "communication": [ 4984 + { 4985 + "hid": { 4986 + "pairs": [ 4987 + { 4988 + "vendor-id": 8020, 4989 + "product-id": 1 4990 + } 4991 + ] 4992 } 4993 } 4994 + ] 4995 + }, 4996 + "prettylove": { 4997 "defaults": { 4998 "name": "Pretty Love Device", 4999 "features": [ ··· 5010 } 5011 } 5012 ] 5013 + }, 5014 + "communication": [ 5015 + { 5016 + "btle": { 5017 + "names": [ 5018 + "Aogu BLE *" 5019 + ], 5020 + "services": { 5021 + "0000ffe5-0000-1000-8000-00805f9b34fb": { 5022 + "tx": "0000ffe9-0000-1000-8000-00805f9b34fb", 5023 + "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 5024 + } 5025 + } 5026 + } 5027 + } 5028 + ] 5029 }, 5030 "svakom": { 5031 "defaults": { 5032 "name": "Svakom Device", 5033 "features": [ ··· 5064 ], 5065 "name": "Svakom Emma Neo" 5066 } 5067 + ], 5068 + "communication": [ 5069 + { 5070 + "btle": { 5071 + "names": [ 5072 + "Aogu SUV", 5073 + "Aogu SCB", 5074 + "Emma NEO", 5075 + "Phoenix NEO" 5076 + ], 5077 + "services": { 5078 + "0000ffe0-0000-1000-8000-00805f9b34fb": { 5079 + "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 5080 + "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 5081 + } 5082 + } 5083 + } 5084 + } 5085 ] 5086 }, 5087 "svakom-v2": { 5088 "defaults": { 5089 "name": "Svakom Device v2", 5090 "features": [ ··· 5158 ], 5159 "name": "Svakom Winni 2" 5160 } 5161 + ], 5162 + "communication": [ 5163 + { 5164 + "btle": { 5165 + "names": [ 5166 + "116", 5167 + "117", 5168 + "118", 5169 + "Viviana", 5170 + "Ella NEO", 5171 + "S38A", 5172 + "Vick NEO", 5173 + "Vick Neo", 5174 + "STG05A", 5175 + "QH-SJ007A" 5176 + ], 5177 + "services": { 5178 + "0000ffe0-0000-1000-8000-00805f9b34fb": { 5179 + "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 5180 + "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 5181 + } 5182 + } 5183 + } 5184 + } 5185 ] 5186 }, 5187 "svakom-v3": { 5188 "defaults": { 5189 "name": "Svakom Device v3", 5190 "features": [ ··· 5281 } 5282 ] 5283 } 5284 + ], 5285 + "communication": [ 5286 + { 5287 + "btle": { 5288 + "names": [ 5289 + "Phoenix Neo 2", 5290 + "FK008A", 5291 + "Hannes NEO", 5292 + "QH-SX007E" 5293 + ], 5294 + "services": { 5295 + "0000ffe0-0000-1000-8000-00805f9b34fb": { 5296 + "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 5297 + "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 5298 + } 5299 + } 5300 + } 5301 + } 5302 ] 5303 }, 5304 "svakom-v4": { 5305 "defaults": { 5306 "name": "Svakom Device v4", 5307 "features": [ ··· 5344 ], 5345 "name": "Svakom Erica" 5346 } 5347 + ], 5348 + "communication": [ 5349 + { 5350 + "btle": { 5351 + "names": [ 5352 + "B2CM6", 5353 + "ERICA" 5354 + ], 5355 + "services": { 5356 + "0000ffe0-0000-1000-8000-00805f9b34fb": { 5357 + "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 5358 + "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 5359 + } 5360 + } 5361 + } 5362 + } 5363 ] 5364 }, 5365 "svakom-sam": { 5366 "defaults": { 5367 "name": "Svakom Sam Neo", 5368 "features": [ ··· 5391 } 5392 } 5393 ] 5394 + }, 5395 + "communication": [ 5396 + { 5397 + "btle": { 5398 + "names": [ 5399 + "Sam Neo" 5400 + ], 5401 + "services": { 5402 + "0000ae00-0000-1000-8000-00805f9b34fb": { 5403 + "tx": "0000ae01-0000-1000-8000-00805f9b34fb", 5404 + "rx": "0000ae02-0000-1000-8000-00805f9b34fb", 5405 + "txmode": "0000ae10-0000-1000-8000-00805f9b34fb" 5406 + }, 5407 + "0000ffac-0000-1000-8000-00805f9b34fb": { 5408 + "firmware": "0000ffb4-0000-1000-8000-00805f9b34fb" 5409 + } 5410 + } 5411 + } 5412 + } 5413 + ] 5414 }, 5415 "svakom-alex": { 5416 "defaults": { 5417 "name": "Svakom Alex Neo", 5418 "features": [ ··· 5429 } 5430 } 5431 ] 5432 + }, 5433 + "communication": [ 5434 + { 5435 + "btle": { 5436 + "names": [ 5437 + "Alex NEO", 5438 + "S63E Alex NEO" 5439 + ], 5440 + "services": { 5441 + "0000ffe0-0000-1000-8000-00805f9b34fb": { 5442 + "tx": "0000ffe1-0000-1000-8000-00805f9b34fb" 5443 + } 5444 + } 5445 } 5446 } 5447 + ] 5448 + }, 5449 + "svakom-alex-v2": { 5450 "defaults": { 5451 "name": "Svakom Alex Neo 2", 5452 "features": [ ··· 5463 } 5464 } 5465 ] 5466 + }, 5467 + "communication": [ 5468 + { 5469 + "btle": { 5470 + "names": [ 5471 + "Alex NEO 2" 5472 + ], 5473 + "services": { 5474 + "0000ffe0-0000-1000-8000-00805f9b34fb": { 5475 + "tx": "0000ffe1-0000-1000-8000-00805f9b34fb" 5476 + } 5477 + } 5478 + } 5479 + } 5480 + ] 5481 }, 5482 "svakom-dt250a": { 5483 "defaults": { 5484 "name": "Coleur Dor DT250A", 5485 "features": [ ··· 5520 } 5521 } 5522 ] 5523 + }, 5524 + "communication": [ 5525 + { 5526 + "btle": { 5527 + "names": [ 5528 + "DT250A" 5529 + ], 5530 + "services": { 5531 + "0000ffe0-0000-1000-8000-00805f9b34fb": { 5532 + "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 5533 + "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 5534 + } 5535 + } 5536 } 5537 } 5538 + ] 5539 + }, 5540 + "svakom-iker": { 5541 "defaults": { 5542 "name": "Svakom Iker", 5543 "features": [ ··· 5566 } 5567 } 5568 ] 5569 + }, 5570 + "communication": [ 5571 + { 5572 + "btle": { 5573 + "names": [ 5574 + "Iker*" 5575 + ], 5576 + "manufacturer-data": [ 5577 + { 5578 + "company": 39, 5579 + "data": [ 5580 + 83, 5581 + 86, 5582 + 65, 5583 + 1, 5584 + 11, 5585 + 18, 5586 + 1, 5587 + 51, 5588 + 68, 5589 + 85, 5590 + 202, 5591 + 8 5592 + ] 5593 + } 5594 + ], 5595 + "services": { 5596 + "0000ffe0-0000-1000-8000-00805f9b34fb": { 5597 + "tx": "0000ffe1-0000-1000-8000-00805f9b34fb" 5598 + } 5599 + } 5600 } 5601 } 5602 + ] 5603 + }, 5604 + "svakom-pulse": { 5605 "defaults": { 5606 "name": "Svakom Pulse Device", 5607 "features": [ ··· 5656 ], 5657 "name": "Coleur Dor VX045A" 5658 } 5659 + ], 5660 + "communication": [ 5661 + { 5662 + "btle": { 5663 + "names": [ 5664 + "SWK-SX013A", 5665 + "Pulse Union", 5666 + "Pulse Galaxie", 5667 + "SX033APP", 5668 + "BX288A", 5669 + "QH-SX045A-B" 5670 + ], 5671 + "services": { 5672 + "0000ffe0-0000-1000-8000-00805f9b34fb": { 5673 + "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 5674 + "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 5675 + } 5676 + } 5677 + } 5678 + } 5679 ] 5680 }, 5681 "svakom-suitcase": { 5682 "defaults": { 5683 "name": "Svakom Magic Suitcase", 5684 "features": [ ··· 5715 ], 5716 "name": "Coleur Dor VX236A" 5717 } 5718 + ], 5719 + "communication": [ 5720 + { 5721 + "btle": { 5722 + "names": [ 5723 + "VX357A-BLE-V1.0", 5724 + "VX236A-BLE-V1.0" 5725 + ], 5726 + "services": { 5727 + "0000ffe0-0000-1000-8000-00805f9b34fb": { 5728 + "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 5729 + "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 5730 + } 5731 + } 5732 + } 5733 + } 5734 ] 5735 }, 5736 "svakom-tarax": { 5737 "defaults": { 5738 "name": "ToyCod Tara X", 5739 "features": [ ··· 5764 } 5765 } 5766 ] 5767 + }, 5768 + "communication": [ 5769 + { 5770 + "btle": { 5771 + "names": [ 5772 + "SX218A" 5773 + ], 5774 + "services": { 5775 + "0000ffe0-0000-1000-8000-00805f9b34fb": { 5776 + "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 5777 + "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 5778 + } 5779 + } 5780 + } 5781 + } 5782 + ] 5783 }, 5784 "svakom-avaneo": { 5785 "defaults": { 5786 "name": "Svakom Ava Neo", 5787 "features": [ ··· 5810 } 5811 } 5812 ] 5813 + }, 5814 + "communication": [ 5815 + { 5816 + "btle": { 5817 + "names": [ 5818 + "SX218A", 5819 + "Ava Neo" 5820 + ], 5821 + "services": { 5822 + "0000ffe0-0000-1000-8000-00805f9b34fb": { 5823 + "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 5824 + "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 5825 + } 5826 + } 5827 } 5828 } 5829 + ] 5830 + }, 5831 + "svakom-barnard": { 5832 "defaults": { 5833 "name": "Fantasy Cup Barnard", 5834 "features": [ ··· 5857 } 5858 } 5859 ] 5860 + }, 5861 + "communication": [ 5862 + { 5863 + "btle": { 5864 + "names": [ 5865 + "DG239A" 5866 + ], 5867 + "services": { 5868 + "0000ffe0-0000-1000-8000-00805f9b34fb": { 5869 + "tx": "0000ffe1-0000-1000-8000-00805f9b34fb" 5870 + } 5871 + } 5872 + } 5873 + } 5874 + ] 5875 }, 5876 "realov": { 5877 "defaults": { 5878 "name": "Realov Device", 5879 "features": [ ··· 5890 } 5891 } 5892 ] 5893 + }, 5894 + "communication": [ 5895 + { 5896 + "btle": { 5897 + "names": [ 5898 + "REALOV_VIBE" 5899 + ], 5900 + "services": { 5901 + "0000ffe0-0000-1000-8000-00805f9b34fb": { 5902 + "tx": "0000ffe1-0000-1000-8000-00805f9b34fb" 5903 + } 5904 + } 5905 } 5906 } 5907 + ] 5908 + }, 5909 + "motorbunny": { 5910 "defaults": { 5911 "name": "Motorbunny Device", 5912 "features": [ ··· 5949 ], 5950 "name": "Motorbunny Buck" 5951 } 5952 + ], 5953 + "communication": [ 5954 + { 5955 + "btle": { 5956 + "names": [ 5957 + "MB Controller", 5958 + "MB LINK 201" 5959 + ], 5960 + "services": { 5961 + "0000fff0-0000-1000-8000-00805f9b34fb": { 5962 + "tx": "0000fff6-0000-1000-8000-00805f9b34fb" 5963 + } 5964 + } 5965 + } 5966 + } 5967 ] 5968 }, 5969 "zalo": { 5970 "defaults": { 5971 "name": "Zalo Device", 5972 "features": [ ··· 6055 ], 6056 "name": "Zalo Jeanne" 6057 } 6058 + ], 6059 + "communication": [ 6060 + { 6061 + "btle": { 6062 + "names": [ 6063 + "ZALO-Queen", 6064 + "ZALO-King", 6065 + "ZALO-Jeanne" 6066 + ], 6067 + "services": { 6068 + "0000fff0-0000-1000-8000-00805f9b34fb": { 6069 + "tx": "0000fff1-0000-1000-8000-00805f9b34fb" 6070 + } 6071 + } 6072 + } 6073 + } 6074 ] 6075 }, 6076 "sayberx": { 6077 "defaults": { 6078 "name": "SayberX Device", 6079 "features": [] ··· 6105 ], 6106 "name": "Sayber X-Ring" 6107 } 6108 + ], 6109 + "communication": [ 6110 + { 6111 + "btle": { 6112 + "names": [ 6113 + "SayberX", 6114 + "X-Ring *" 6115 + ], 6116 + "services": { 6117 + "0000fff0-0000-1000-8000-00805f9b34fb": { 6118 + "tx": "0000fff6-0000-1000-8000-00805f9b34fb", 6119 + "rx": "0000fff8-0000-1000-8000-00805f9b34fb" 6120 + } 6121 + } 6122 + } 6123 + } 6124 ] 6125 }, 6126 "muse": { 6127 "defaults": { 6128 "name": "Muse Device", 6129 "features": [ ··· 6154 ], 6155 "name": "Galaku Panty Vib" 6156 } 6157 + ], 6158 + "communication": [ 6159 + { 6160 + "btle": { 6161 + "names": [ 6162 + "WB-ZDB-WST", 6163 + "WB-TDD" 6164 + ], 6165 + "services": { 6166 + "0000aaa0-0000-1000-8000-00805f9b34fb": { 6167 + "tx": "0000aaa1-0000-1000-8000-00805f9b34fb" 6168 + } 6169 + } 6170 + } 6171 + } 6172 ] 6173 }, 6174 "lelo-f1s": { 6175 "defaults": { 6176 "name": "Lelo F1s", 6177 "features": [ ··· 6200 } 6201 } 6202 ] 6203 + }, 6204 + "communication": [ 6205 + { 6206 + "btle": { 6207 + "names": [ 6208 + "F1s" 6209 + ], 6210 + "services": { 6211 + "0000fff0-0000-1000-8000-00805f9b34fb": { 6212 + "tx": "0000fff1-0000-1000-8000-00805f9b34fb", 6213 + "rx": "00000aa4-0000-1000-8000-00805f9b34fb" 6214 + } 6215 + } 6216 } 6217 } 6218 + ] 6219 + }, 6220 + "lelo-f1sv2": { 6221 "defaults": { 6222 "name": "Lelo F1s V2", 6223 "features": [ ··· 6246 } 6247 } 6248 ] 6249 + }, 6250 + "communication": [ 6251 + { 6252 + "btle": { 6253 + "names": [ 6254 + "F1SV2A", 6255 + "F1SV2X" 6256 + ], 6257 + "services": { 6258 + "0000fff0-0000-1000-8000-00805f9b34fb": { 6259 + "tx": "0000fff1-0000-1000-8000-00805f9b34fb", 6260 + "whitelist": "00000a10-0000-1000-8000-00805f9b34fb", 6261 + "rx": "00000a04-0000-1000-8000-00805f9b34fb" 6262 + } 6263 + } 6264 } 6265 } 6266 + ] 6267 + }, 6268 + "lelo-harmony": { 6269 "defaults": { 6270 "name": "Lelo Tiani Harmony", 6271 "features": [ ··· 6355 ], 6356 "name": "Lelo Hugo 2" 6357 } 6358 + ], 6359 + "communication": [ 6360 + { 6361 + "btle": { 6362 + "names": [ 6363 + "IdaWave", 6364 + "Ida Wave", 6365 + "TianiHarmony", 6366 + "Tiani Harmony", 6367 + "TOR3", 6368 + "Hugo2" 6369 + ], 6370 + "services": { 6371 + "0000fff0-0000-1000-8000-00805f9b34fb": { 6372 + "command": "0000fff1-0000-1000-8000-00805f9b34fb", 6373 + "tx": "0000fff2-0000-1000-8000-00805f9b34fb", 6374 + "whitelist": "00000a11-0000-1000-8000-00805f9b34fb" 6375 + } 6376 + } 6377 + } 6378 + } 6379 ] 6380 }, 6381 "aneros": { 6382 "defaults": { 6383 "name": "Aneros Vivi", 6384 "features": [ ··· 6409 } 6410 } 6411 ] 6412 + }, 6413 + "communication": [ 6414 + { 6415 + "btle": { 6416 + "names": [ 6417 + "Massage Demo" 6418 + ], 6419 + "services": { 6420 + "0000ff00-0000-1000-8000-00805f9b34fb": { 6421 + "tx": "0000ff01-0000-1000-8000-00805f9b34fb" 6422 + } 6423 + } 6424 } 6425 } 6426 + ] 6427 + }, 6428 + "lovehoney-desire": { 6429 "defaults": { 6430 "name": "Lovehoney Device", 6431 "features": [ ··· 6502 } 6503 ] 6504 } 6505 + ], 6506 + "communication": [ 6507 + { 6508 + "btle": { 6509 + "names": [ 6510 + "PROSTATE VIBE", 6511 + "KNICKER VIBE", 6512 + "LOVE EGG" 6513 + ], 6514 + "services": { 6515 + "0000ff00-0000-1000-8000-00805f9b34fb": { 6516 + "tx": "0000ff01-0000-1000-8000-00805f9b34fb" 6517 + } 6518 + } 6519 + } 6520 + } 6521 ] 6522 }, 6523 "twerkingbutt": { 6524 "defaults": { 6525 "name": "Twerking Butt", 6526 "features": [] 6527 + }, 6528 + "communication": [ 6529 + { 6530 + "btle": { 6531 + "names": [ 6532 + "BODIKANG", 6533 + "Twerking Butt", 6534 + "TwerkingButt" 6535 + ], 6536 + "services": { 6537 + "00000a60-0000-1000-8000-00805f9b34fb": { 6538 + "tx": "00000a66-0000-1000-8000-00805f9b34fb", 6539 + "rx": "00000a67-0000-1000-8000-00805f9b34fb" 6540 + } 6541 + } 6542 } 6543 } 6544 + ] 6545 + }, 6546 + "maxpro": { 6547 "defaults": { 6548 "name": "MaxPro 2", 6549 "features": [ ··· 6560 } 6561 } 6562 ] 6563 }, 6564 + "communication": [ 6565 { 6566 + "btle": { 6567 + "names": [ 6568 + "M2" 6569 + ], 6570 + "services": { 6571 + "6e400001-b5a3-f393-e0a9-e50e24dcca9e": { 6572 + "tx": "6e400002-b5a3-f393-e0a9-e50e24dcca9e" 6573 + } 6574 + } 6575 + } 6576 } 6577 + ] 6578 + }, 6579 + "nobra": { 6580 "defaults": { 6581 "name": "Nobra's Silicone Dreams Toy", 6582 "features": [ ··· 6593 } 6594 } 6595 ] 6596 + }, 6597 + "communication": [ 6598 + { 6599 + "btle": { 6600 + "names": [ 6601 + "NobraControl*" 6602 + ], 6603 + "services": { 6604 + "0000abf0-0000-1000-8000-00805f9b34fb": { 6605 + "tx": "0000abf1-0000-1000-8000-00805f9b34fb" 6606 + } 6607 + } 6608 + } 6609 + }, 6610 + { 6611 + "serial": { 6612 + "ports": [ 6613 + { 6614 + "port": "default", 6615 + "baud-rate": 19200, 6616 + "data-bits": 8, 6617 + "parity": "N", 6618 + "stop-bits": 1 6619 + } 6620 + ] 6621 } 6622 } 6623 + ] 6624 + }, 6625 + "thehandy": { 6626 "defaults": { 6627 "name": "The Handy", 6628 "features": [ ··· 6639 } 6640 } 6641 ] 6642 + }, 6643 + "communication": [ 6644 + { 6645 + "btle": { 6646 + "names": [ 6647 + "The Handy" 6648 + ], 6649 + "services": { 6650 + "1775244d-6b43-439b-877c-060f2d9bed07": { 6651 + "firmware": "1775ff51-6b43-439b-877c-060f2d9bed07", 6652 + "tx": "1775ff55-6b43-439b-877c-060f2d9bed07" 6653 + } 6654 + } 6655 + } 6656 + } 6657 + ] 6658 }, 6659 "cachito": { 6660 "defaults": { 6661 "name": "Cachito Device", 6662 "features": [ ··· 6699 ], 6700 "name": "Cachito Ice Cream" 6701 } 6702 + ], 6703 + "communication": [ 6704 + { 6705 + "btle": { 6706 + "names": [ 6707 + "CCTSK", 6708 + "CCTXueGao" 6709 + ], 6710 + "services": { 6711 + "0000fff0-0000-1000-8000-00805f9b34fb": { 6712 + "tx": "0000fff2-0000-1000-8000-00805f9b34fb" 6713 + } 6714 + } 6715 + } 6716 + } 6717 ] 6718 }, 6719 "jejoue": { 6720 "defaults": { 6721 "name": "Je Joue Device", 6722 "features": [ ··· 6745 } 6746 } 6747 ] 6748 + }, 6749 + "communication": [ 6750 + { 6751 + "btle": { 6752 + "names": [ 6753 + "Je Joue" 6754 + ], 6755 + "services": { 6756 + "0000fff0-0000-1000-8000-00805f9b34fb": { 6757 + "tx": "0000fff1-0000-1000-8000-00805f9b34fb" 6758 + } 6759 + } 6760 + } 6761 + } 6762 + ] 6763 }, 6764 "lovenuts": { 6765 "defaults": { 6766 "name": "Love Nut", 6767 "features": [ ··· 6778 } 6779 } 6780 ] 6781 + }, 6782 + "communication": [ 6783 + { 6784 + "btle": { 6785 + "names": [ 6786 + "Love_Nuts" 6787 + ], 6788 + "services": { 6789 + "0000fff0-0000-1000-8000-00805f9b34fb": { 6790 + "tx": "0000fff1-0000-1000-8000-00805f9b34fb" 6791 + } 6792 + } 6793 } 6794 } 6795 + ] 6796 + }, 6797 + "patoo": { 6798 "defaults": { 6799 "name": "Patoo Device", 6800 "features": [ ··· 6863 } 6864 ] 6865 } 6866 + ], 6867 + "communication": [ 6868 + { 6869 + "btle": { 6870 + "names": [ 6871 + "PTVEA*", 6872 + "PBT*", 6873 + "PCS*", 6874 + "PHT*" 6875 + ], 6876 + "services": { 6877 + "f000aa64-0451-4000-b000-000000000000": { 6878 + "txmode": "f000aa65-0451-4000-b000-000000000000", 6879 + "tx": "f000aa68-0451-4000-b000-000000000000" 6880 + } 6881 + } 6882 + } 6883 + } 6884 ] 6885 }, 6886 "tcode-v03": { 6887 "defaults": { 6888 "name": "TCode v0.3 (Single Linear Axis)", 6889 "features": [ ··· 6900 } 6901 } 6902 ] 6903 + }, 6904 + "communication": [ 6905 + { 6906 + "serial": { 6907 + "ports": [ 6908 + { 6909 + "port": "default", 6910 + "baud-rate": 115200, 6911 + "data-bits": 8, 6912 + "parity": "N", 6913 + "stop-bits": 1 6914 + } 6915 + ] 6916 + } 6917 + } 6918 + ] 6919 }, 6920 "fredorch": { 6921 "defaults": { 6922 "name": "Fredorch Device", 6923 "features": [ ··· 6934 } 6935 } 6936 ] 6937 + }, 6938 + "communication": [ 6939 + { 6940 + "btle": { 6941 + "names": [ 6942 + "YXlinksSPP" 6943 + ], 6944 + "services": { 6945 + "0000ffb0-0000-1000-8000-00805f9b34fb": { 6946 + "tx": "0000ffb1-0000-1000-8000-00805f9b34fb", 6947 + "rx": "0000ffb2-0000-1000-8000-00805f9b34fb" 6948 + } 6949 + } 6950 } 6951 } 6952 + ] 6953 + }, 6954 + "fredorch-rotary": { 6955 "defaults": { 6956 "name": "Fredorch Rotary Device", 6957 "features": [ ··· 6969 } 6970 } 6971 ] 6972 + }, 6973 + "communication": [ 6974 + { 6975 + "btle": { 6976 + "names": [ 6977 + "M1_*" 6978 + ], 6979 + "services": { 6980 + "0000ae10-0000-1000-8000-00805f9b34fb": { 6981 + "tx": "0000ae01-0000-1000-8000-00805f9b34fb", 6982 + "rx": "0000ae02-0000-1000-8000-00805f9b34fb" 6983 + } 6984 + } 6985 + } 6986 + } 6987 + ] 6988 }, 6989 "mizzzee": { 6990 "defaults": { 6991 "name": "Mizz Zee Device", 6992 "features": [ ··· 7003 } 7004 } 7005 ] 7006 + }, 7007 + "communication": [ 7008 + { 7009 + "btle": { 7010 + "names": [ 7011 + "NFY008" 7012 + ], 7013 + "services": { 7014 + "0000eea0-0000-1000-8000-00805f9b34fb": { 7015 + "tx": "0000eea1-0000-1000-8000-00805f9b34fb" 7016 + } 7017 + } 7018 + } 7019 + } 7020 + ] 7021 }, 7022 "mizzzee-v2": { 7023 "defaults": { 7024 "name": "Mizz Zee Device", 7025 "features": [ ··· 7036 } 7037 } 7038 ] 7039 + }, 7040 + "communication": [ 7041 + { 7042 + "btle": { 7043 + "names": [ 7044 + "XHT" 7045 + ], 7046 + "services": { 7047 + "0000eea0-0000-1000-8000-00805f9b34fb": { 7048 + "tx": "0000ee01-0000-1000-8000-00805f9b34fb" 7049 + } 7050 + } 7051 } 7052 } 7053 + ] 7054 + }, 7055 + "mizzzee-v3": { 7056 "defaults": { 7057 "name": "Mizz Zee Device", 7058 "features": [ ··· 7069 } 7070 } 7071 ] 7072 + }, 7073 + "communication": [ 7074 + { 7075 + "btle": { 7076 + "names": [ 7077 + "XHTKJ" 7078 + ], 7079 + "services": { 7080 + "0000ff10-0000-1000-8000-00805f9b34fb": { 7081 + "tx": "0000ff12-0000-1000-8000-00805f9b34fb" 7082 + } 7083 + } 7084 } 7085 } 7086 + ] 7087 + }, 7088 + "htk_bm": { 7089 "defaults": { 7090 "name": "HTK Breast Massager", 7091 "features": [ ··· 7114 } 7115 } 7116 ] 7117 + }, 7118 + "communication": [ 7119 + { 7120 + "btle": { 7121 + "names": [ 7122 + "HTK-BLE-BM001" 7123 + ], 7124 + "services": { 7125 + "0000180f-0000-1000-8000-00805f9b34fb": { 7126 + "rxblebattery": "00002a19-0000-1000-8000-00805f9b34fb" 7127 + }, 7128 + "00001802-0000-1000-8000-00805f9b34fb": { 7129 + "tx": "00002a06-0000-1000-8000-00805f9b34fb" 7130 + } 7131 + } 7132 + } 7133 + } 7134 + ] 7135 }, 7136 "ankni": { 7137 "defaults": { 7138 "name": "Roselex Device", 7139 "features": [ ··· 7150 } 7151 } 7152 ] 7153 + }, 7154 + "communication": [ 7155 + { 7156 + "btle": { 7157 + "names": [ 7158 + "DSJM" 7159 + ], 7160 + "services": { 7161 + "0000fe00-0000-1000-8000-00805f9b34fb": { 7162 + "tx": "0000fe01-0000-1000-8000-00805f9b34fb" 7163 + }, 7164 + "0000fffe-0000-1000-8000-00805f9b34fb": { 7165 + "tx": "0000fe02-0000-1000-8000-00805f9b34fb" 7166 + }, 7167 + "0000180a-0000-1000-8000-00805f9b34fb": { 7168 + "generic0": "00002a50-0000-1000-8000-00805f9b34fb" 7169 + } 7170 + } 7171 } 7172 } 7173 + ] 7174 + }, 7175 + "hgod": { 7176 "defaults": { 7177 "name": "Hgod Device", 7178 "features": [ ··· 7189 } 7190 } 7191 ] 7192 + }, 7193 + "communication": [ 7194 + { 7195 + "btle": { 7196 + "names": [ 7197 + "AMN NEO" 7198 + ], 7199 + "services": { 7200 + "0000ffe3-0000-1000-8000-00805f9b34fb": { 7201 + "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 7202 + "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 7203 + } 7204 + } 7205 } 7206 } 7207 + ] 7208 + }, 7209 + "lovedistance": { 7210 "defaults": { 7211 "name": "Love Distance Device", 7212 "features": [ ··· 7255 ], 7256 "name": "Love Distance Range" 7257 } 7258 + ], 7259 + "communication": [ 7260 + { 7261 + "btle": { 7262 + "names": [ 7263 + "REACH G", 7264 + "REACH", 7265 + "MAG", 7266 + "SPAN", 7267 + "RANGE" 7268 + ], 7269 + "services": { 7270 + "0000ff00-0000-1000-8000-00805f9b34fb": { 7271 + "tx": "0000ff01-0000-1000-8000-00805f9b34fb", 7272 + "rx": "0000ff02-0000-1000-8000-00805f9b34fb" 7273 + } 7274 + } 7275 + } 7276 + } 7277 ] 7278 }, 7279 "satisfyer": { 7280 "defaults": { 7281 "name": "Satisfyer Device", 7282 "features": [ ··· 9105 } 9106 ] 9107 } 9108 + ], 9109 + "communication": [ 9110 + { 9111 + "btle": { 9112 + "names": [ 9113 + "SF *" 9114 + ], 9115 + "manufacturer-data": [ 9116 + { 9117 + "company": 93, 9118 + "data": [ 9119 + 0, 9120 + 0, 9121 + 39 9122 + ] 9123 + }, 9124 + { 9125 + "company": 93, 9126 + "data": [ 9127 + 0, 9128 + 0, 9129 + 40 9130 + ] 9131 + } 9132 + ], 9133 + "services": { 9134 + "0000180a-0000-1000-8000-00805f9b34fb": { 9135 + "rxblemodel": "00002a24-0000-1000-8000-00805f9b34fb" 9136 + }, 9137 + "51361500-c5e7-47c7-8a6e-47ebc99d80e8": { 9138 + "command": "51361501-c5e7-47c7-8a6e-47ebc99d80e8", 9139 + "tx": "51361502-c5e7-47c7-8a6e-47ebc99d80e8" 9140 + } 9141 + } 9142 + } 9143 + } 9144 ] 9145 }, 9146 "mannuo": { 9147 "defaults": { 9148 "name": "ManNuo Device", 9149 "features": [ ··· 9160 } 9161 } 9162 ] 9163 + }, 9164 + "communication": [ 9165 + { 9166 + "btle": { 9167 + "names": [ 9168 + "Sex toys", 9169 + "Sex Toys", 9170 + "LXCDVP", 9171 + "MANO PRODUCT" 9172 + ], 9173 + "services": { 9174 + "0000fff0-0000-1000-8000-00805f9b34fb": { 9175 + "tx": "0000fff1-0000-1000-8000-00805f9b34fb", 9176 + "rx": "0000fff4-0000-1000-8000-00805f9b34fb" 9177 + } 9178 + } 9179 } 9180 } 9181 + ] 9182 + }, 9183 + "kgoal-boost": { 9184 "defaults": { 9185 "name": "KGoal Boost", 9186 "features": [ ··· 9200 } 9201 } 9202 ] 9203 + }, 9204 + "communication": [ 9205 + { 9206 + "btle": { 9207 + "names": [ 9208 + "Boost" 9209 + ], 9210 + "services": { 9211 + "0000180f-0000-1000-8000-00805f9b34fb": { 9212 + "rxblebattery": "00002a19-0000-1000-8000-00805f9b34fb" 9213 + }, 9214 + "8e7c6065-7656-17ad-1b41-b53d1a548e0d": { 9215 + "rxpressure": "10c2be2d-d2d5-b7a8-5f42-e2468c9ebbf5" 9216 + } 9217 + } 9218 } 9219 } 9220 + ] 9221 + }, 9222 + "meese": { 9223 "defaults": { 9224 "name": "Meese Device", 9225 "features": [ ··· 9276 } 9277 ] 9278 } 9279 + ], 9280 + "communication": [ 9281 + { 9282 + "btle": { 9283 + "names": [ 9284 + "Meese-V389", 9285 + "Meese-cd" 9286 + ], 9287 + "services": { 9288 + "0000ffe0-0000-1000-8000-00805f9b34fb": { 9289 + "tx": "0000ffe1-0000-1000-8000-00805f9b34fb" 9290 + } 9291 + } 9292 + } 9293 + } 9294 ] 9295 }, 9296 "hismith": { 9297 "defaults": { 9298 "name": "Hismith device", 9299 "features": [ ··· 9384 } 9385 ] 9386 } 9387 + ], 9388 + "communication": [ 9389 + { 9390 + "btle": { 9391 + "names": [ 9392 + "HISMITH", 9393 + "Wildolo", 9394 + "\u0007HISMITH" 9395 + ], 9396 + "services": { 9397 + "0000ffe5-0000-1000-8000-00805f9b34fb": { 9398 + "tx": "0000ffe9-0000-1000-8000-00805f9b34fb" 9399 + }, 9400 + "0000ff90-0000-1000-8000-00805f9b34fb": { 9401 + "rxblemodel": "0000ff96-0000-1000-8000-00805f9b34fb" 9402 + } 9403 + } 9404 + } 9405 + } 9406 ] 9407 }, 9408 "hismith-mini": { 9409 "defaults": { 9410 "name": "Hismith Mini device", 9411 "features": [ ··· 9573 } 9574 ] 9575 } 9576 + ], 9577 + "communication": [ 9578 + { 9579 + "btle": { 9580 + "names": [ 9581 + "Auxfun-Box", 9582 + "Sinloli", 9583 + "Sinloli-Sherry", 9584 + "Eropair *", 9585 + "HISMITH S1" 9586 + ], 9587 + "services": { 9588 + "0000ffe5-0000-1000-8000-00805f9b34fb": { 9589 + "tx": "0000ffe9-0000-1000-8000-00805f9b34fb" 9590 + }, 9591 + "0000ff90-0000-1000-8000-00805f9b34fb": { 9592 + "rxblemodel": "0000ff96-0000-1000-8000-00805f9b34fb" 9593 + } 9594 + } 9595 + } 9596 + } 9597 ] 9598 }, 9599 "hismith-servo": { 9600 "defaults": { 9601 "name": "Hismith servo device", 9602 "features": [ ··· 9622 ], 9623 "name": "Hismith Servo" 9624 } 9625 + ], 9626 + "communication": [ 9627 + { 9628 + "btle": { 9629 + "names": [ 9630 + "HISMITH S2" 9631 + ], 9632 + "services": { 9633 + "0000ffe5-0000-1000-8000-00805f9b34fb": { 9634 + "tx": "0000ffe9-0000-1000-8000-00805f9b34fb" 9635 + }, 9636 + "0000ff90-0000-1000-8000-00805f9b34fb": { 9637 + "rxblemodel": "0000ff96-0000-1000-8000-00805f9b34fb" 9638 + } 9639 + } 9640 + } 9641 + } 9642 ] 9643 }, 9644 "wetoy": { 9645 "defaults": { 9646 "name": "WeToy MiNa", 9647 "features": [ ··· 9658 } 9659 } 9660 ] 9661 + }, 9662 + "communication": [ 9663 + { 9664 + "btle": { 9665 + "names": [ 9666 + "WeToy" 9667 + ], 9668 + "services": { 9669 + "0000fff0-0000-1000-8000-00805f9b34fb": { 9670 + "tx": "0000fff3-0000-1000-8000-00805f9b34fb" 9671 + } 9672 + } 9673 } 9674 } 9675 + ] 9676 + }, 9677 + "pink_punch": { 9678 "defaults": { 9679 "name": "Pink Punch Sunset Mushroom", 9680 "configurations": [ ··· 9699 } 9700 } 9701 ] 9702 + }, 9703 + "communication": [ 9704 + { 9705 + "btle": { 9706 + "names": [ 9707 + "Pink_Punch", 9708 + "PinkPunch_Peachu" 9709 + ], 9710 + "services": { 9711 + "0000ffe0-0000-1000-8000-00805f9b34fb": { 9712 + "tx": "0000ffe1-0000-1000-8000-00805f9b34fb" 9713 + } 9714 + } 9715 } 9716 } 9717 + ] 9718 + }, 9719 + "sakuraneko": { 9720 "defaults": { 9721 "name": "Sakuraneko Device", 9722 "features": [ ··· 9785 } 9786 ] 9787 } 9788 + ], 9789 + "communication": [ 9790 + { 9791 + "btle": { 9792 + "names": [ 9793 + "sakuraneko-01", 9794 + "sakuraneko-02", 9795 + "sakuraneko-03", 9796 + "sakuraneko-04" 9797 + ], 9798 + "services": { 9799 + "0000ffe0-0000-1000-8000-00805f9b34fb": { 9800 + "tx": "0000ffe1-0000-1000-8000-00805f9b34fb" 9801 + } 9802 + } 9803 + } 9804 + } 9805 ] 9806 }, 9807 "synchro": { 9808 "defaults": { 9809 "name": "Synchro", 9810 "features": [ ··· 9829 ], 9830 "name": "Synchro Exchange" 9831 } 9832 + ], 9833 + "communication": [ 9834 + { 9835 + "btle": { 9836 + "names": [ 9837 + "Shinkuro", 9838 + "synchro2", 9839 + "synchro EX" 9840 + ], 9841 + "services": { 9842 + "0000ffe0-0000-1000-8000-00805f9b34fb": { 9843 + "tx": "0000ffe1-0000-1000-8000-00805f9b34fb" 9844 + } 9845 + } 9846 + } 9847 + } 9848 ] 9849 }, 9850 "tryfun": { 9851 "defaults": { 9852 "name": "TryFun Yuan Series", 9853 "features": [ ··· 9876 } 9877 } 9878 ] 9879 + }, 9880 + "communication": [ 9881 + { 9882 + "btle": { 9883 + "names": [ 9884 + "TRYFUN-ONE" 9885 + ], 9886 + "services": { 9887 + "0000ff10-0000-1000-8000-00805f9b34fb": { 9888 + "tx": "0000fff1-0000-1000-8000-00805f9b34fb" 9889 + } 9890 + } 9891 } 9892 } 9893 + ] 9894 + }, 9895 + "metaxsire": { 9896 "defaults": { 9897 "name": "metaXsire Device", 9898 "features": [ ··· 10025 } 10026 ] 10027 } 10028 + ], 10029 + "communication": [ 10030 + { 10031 + "btle": { 10032 + "names": [ 10033 + "Rex", 10034 + "Cali", 10035 + "Olis", 10036 + "LY213A01" 10037 + ], 10038 + "services": { 10039 + "0000ffe0-0000-1000-8000-00805f9b34fb": { 10040 + "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 10041 + "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 10042 + } 10043 + } 10044 + } 10045 + } 10046 ] 10047 }, 10048 "metaxsire-repeat": { 10049 "defaults": { 10050 "name": "Cooxer Bullet Vibe", 10051 "features": [ ··· 10088 ], 10089 "name": "metaXsire Una" 10090 } 10091 + ], 10092 + "communication": [ 10093 + { 10094 + "btle": { 10095 + "names": [ 10096 + "LY199B01", 10097 + "LY234A01", 10098 + "LY271A01", 10099 + "LY270A01" 10100 + ], 10101 + "services": { 10102 + "0000ffe0-0000-1000-8000-00805f9b34fb": { 10103 + "tx": "0000ffe1-0000-1000-8000-00805f9b34fb", 10104 + "rx": "0000ffe2-0000-1000-8000-00805f9b34fb" 10105 + } 10106 + } 10107 + } 10108 + } 10109 ] 10110 }, 10111 "metaxsire-v2": { 10112 "defaults": { 10113 "name": "metaXsire Nolan", 10114 "features": [ ··· 10137 } 10138 } 10139 ] 10140 + }, 10141 + "communication": [ 10142 + { 10143 + "btle": { 10144 + "names": [ 10145 + "LY272A01" 10146 + ], 10147 + "services": { 10148 + "0000bae0-0000-1000-8000-00805f9b34fb": { 10149 + "tx": "0000bae1-0000-1000-8000-00805f9b34fb" 10150 + } 10151 + } 10152 + } 10153 + } 10154 + ] 10155 }, 10156 "metaxsire-v3": { 10157 "defaults": { 10158 "name": "metaXsire Tay", 10159 "features": [ ··· 10170 } 10171 } 10172 ] 10173 + }, 10174 + "communication": [ 10175 + { 10176 + "btle": { 10177 + "names": [ 10178 + "TAY001" 10179 + ], 10180 + "services": { 10181 + "0000fff0-0000-1000-8000-00805f9b34fb": { 10182 + "tx": "0000fe02-0000-1000-8000-00805f9b34fb" 10183 + } 10184 + } 10185 } 10186 } 10187 + ] 10188 + }, 10189 + "cowgirl": { 10190 "defaults": { 10191 "name": "The Cowgirl Device", 10192 "features": [ ··· 10229 ], 10230 "name": "The Unicorn" 10231 } 10232 + ], 10233 + "communication": [ 10234 + { 10235 + "btle": { 10236 + "names": [ 10237 + "THE COWGIRL", 10238 + "THE UNICORN" 10239 + ], 10240 + "services": { 10241 + "0000fe00-0000-1000-8000-00805f9b34fb": { 10242 + "tx": "0000fe01-0000-1000-8000-00805f9b34fb" 10243 + } 10244 + } 10245 + } 10246 + } 10247 ] 10248 }, 10249 "galaku-pump": { 10250 "defaults": { 10251 "name": "Galaku Device", 10252 "features": [ ··· 10283 ], 10284 "name": "Galaku Nebula" 10285 } 10286 + ], 10287 + "communication": [ 10288 + { 10289 + "btle": { 10290 + "names": [ 10291 + "V415" 10292 + ], 10293 + "services": { 10294 + "00001000-0000-1000-8000-00805f9b34fb": { 10295 + "tx": "00001001-0000-1000-8000-00805f9b34fb" 10296 + } 10297 + } 10298 + } 10299 + } 10300 ] 10301 }, 10302 "xibao": { 10303 "defaults": { 10304 "name": "Xibao Smart Masturbation Cup", 10305 "features": [ ··· 10316 } 10317 } 10318 ] 10319 + }, 10320 + "communication": [ 10321 + { 10322 + "btle": { 10323 + "names": [ 10324 + "CCYB_*" 10325 + ], 10326 + "services": { 10327 + "0000fff0-0000-1000-8000-00805f9b34fb": { 10328 + "tx": "0000fff2-0000-1000-8000-00805f9b34fb" 10329 + } 10330 + } 10331 + } 10332 + } 10333 + ] 10334 }, 10335 "sensee": { 10336 "defaults": { 10337 "name": "Sensee Diandou Rabbit", 10338 "features": [ ··· 10349 } 10350 } 10351 ] 10352 + }, 10353 + "communication": [ 10354 + { 10355 + "btle": { 10356 + "names": [ 10357 + "CTY222S4" 10358 + ], 10359 + "services": { 10360 + "0000fff0-0000-1000-8000-00805f9b34fb": { 10361 + "tx": "0000fff5-0000-1000-8000-00805f9b34fb" 10362 + } 10363 + } 10364 + } 10365 + } 10366 + ] 10367 }, 10368 "sensee-capsule": { 10369 "defaults": { 10370 "name": "Sensee Capsule", 10371 "features": [ ··· 10394 } 10395 } 10396 ] 10397 + }, 10398 + "communication": [ 10399 + { 10400 + "btle": { 10401 + "names": [ 10402 + "CCPA10S2" 10403 + ], 10404 + "services": { 10405 + "0000fff0-0000-1000-8000-00805f9b34fb": { 10406 + "tx": "0000fff5-0000-1000-8000-00805f9b34fb" 10407 + } 10408 + } 10409 } 10410 } 10411 + ] 10412 + }, 10413 + "fox": { 10414 "defaults": { 10415 "name": "Fox Device", 10416 "features": [ ··· 10427 } 10428 } 10429 ] 10430 + }, 10431 + "communication": [ 10432 + { 10433 + "btle": { 10434 + "names": [ 10435 + "FOX", 10436 + "FOX M70 Pro", 10437 + "FoxM70Pro" 10438 + ], 10439 + "services": { 10440 + "0000ae00-0000-1000-8000-00805f9b34fb": { 10441 + "tx": "0000ae01-0000-1000-8000-00805f9b34fb" 10442 + } 10443 + } 10444 + } 10445 + } 10446 + ] 10447 }, 10448 "kizuna": { 10449 "defaults": { 10450 "name": "Kizuna Smart", 10451 "features": [ ··· 10462 } 10463 } 10464 ] 10465 + }, 10466 + "communication": [ 10467 + { 10468 + "serial": { 10469 + "ports": [ 10470 + { 10471 + "port": "default", 10472 + "baud-rate": 19200, 10473 + "data-bits": 8, 10474 + "parity": "N", 10475 + "stop-bits": 1 10476 + } 10477 + ] 10478 } 10479 } 10480 + ] 10481 + }, 10482 + "xiuxiuda": { 10483 "defaults": { 10484 "name": "Xiuxiuda Device", 10485 "features": [ ··· 10496 } 10497 } 10498 ] 10499 + }, 10500 + "communication": [ 10501 + { 10502 + "btle": { 10503 + "names": [ 10504 + "XXD-Lush*" 10505 + ], 10506 + "services": { 10507 + "53300001-0023-4bd4-bbd5-a6920e4c5653": { 10508 + "tx": "53300003-0023-4bd4-bbd5-a6920e4c5653" 10509 + } 10510 + } 10511 + } 10512 + } 10513 + ] 10514 }, 10515 "longlosttouch": { 10516 "defaults": { 10517 "name": "Long Lost Touch Possible Kiss", 10518 "features": [ ··· 10541 } 10542 } 10543 ] 10544 + }, 10545 + "communication": [ 10546 + { 10547 + "btle": { 10548 + "names": [ 10549 + "RS-KNW" 10550 + ], 10551 + "services": { 10552 + "0000cb60-0000-1000-8000-00805f9b34fb": { 10553 + "tx": "0000cb61-0000-1000-8000-00805f9b34fb", 10554 + "rx": "0000cb62-0000-1000-8000-00805f9b34fb" 10555 + } 10556 + } 10557 } 10558 } 10559 + ] 10560 + }, 10561 + "adrienlastic": { 10562 "defaults": { 10563 "name": "Adrien Lastic Device", 10564 "features": [ ··· 10589 ], 10590 "name": "Adrien Lastic Revelation" 10591 } 10592 + ], 10593 + "communication": [ 10594 + { 10595 + "btle": { 10596 + "names": [ 10597 + "Placeholder to avoid conflict with bad attempt to clone a Lovense Lush" 10598 + ], 10599 + "advertised-services": [ 10600 + "00001320-0000-1000-8000-00805f9b34fb" 10601 + ], 10602 + "services": { 10603 + "6e400001-b5a3-f393-e0a9-e50e24dcca9e": { 10604 + "tx": "6e400002-b5a3-f393-e0a9-e50e24dcca9e" 10605 + } 10606 + } 10607 + } 10608 + } 10609 ] 10610 }, 10611 "nintendo-joycon": { 10612 "defaults": { 10613 "name": "Nintendo Joycon", 10614 "features": [ ··· 10625 } 10626 } 10627 ] 10628 + }, 10629 + "communication": [ 10630 + { 10631 + "hid": { 10632 + "pairs": [ 10633 + { 10634 + "vendor-id": 1406, 10635 + "product-id": 8199 10636 + }, 10637 + { 10638 + "vendor-id": 1406, 10639 + "product-id": 8198 10640 + }, 10641 + { 10642 + "vendor-id": 1406, 10643 + "product-id": 8201 10644 + } 10645 + ] 10646 } 10647 } 10648 + ] 10649 + }, 10650 + "foreo": { 10651 "defaults": { 10652 "name": "Foreo Device", 10653 "features": [ ··· 10850 ], 10851 "name": "Foreo KIWI derma" 10852 } 10853 + ], 10854 + "communication": [ 10855 + { 10856 + "btle": { 10857 + "names": [ 10858 + "FOFO", 10859 + "LUNA fofo", 10860 + "LUNA FOFO", 10861 + "LUNA PLAY SMART", 10862 + "LUNA PLAYSMART2", 10863 + "LUNA PLAY SMART2", 10864 + "LUNA play smart2", 10865 + "LUNA play smart 2", 10866 + "LUNA 3", 10867 + "LUNA3", 10868 + "LUNA3PLUS", 10869 + "LUNA3 PLUS", 10870 + "LUNA 3 PLUS", 10871 + "LUNA 3 plus", 10872 + "LUNA 3 MEN", 10873 + "LUNA3MEN", 10874 + "LUNA MINI3", 10875 + "LUNA MINI 3", 10876 + "LUNA mini 3", 10877 + "LUNA4PLUS", 10878 + "LUNA4", 10879 + "LUNA 4", 10880 + "LUNA4PLUS", 10881 + "LUNA4 PLUS", 10882 + "LUNA 4 plus", 10883 + "LUNA4MEN", 10884 + "LUNA 4 MEN", 10885 + "LUNA 4 FOR MEN", 10886 + "LUNA MINI4", 10887 + "LUNA MINI 4", 10888 + "LUNA mini 4", 10889 + "LUNA 4 mini", 10890 + "UFO", 10891 + "UFO mini", 10892 + "UFO MINI", 10893 + "UFO MIN", 10894 + "UFO2", 10895 + "UFO 2", 10896 + "UFOMINI2", 10897 + "UFO mini 2", 10898 + "UFO3", 10899 + "UFO3mini", 10900 + "UFO3go", 10901 + "UFO3led", 10902 + "BEAR", 10903 + "BEAR_MINI", 10904 + "BEAR MINI", 10905 + "BEAR mini", 10906 + "BEAR2", 10907 + "BEAR 2", 10908 + "BEAR2go", 10909 + "BEAR2body", 10910 + "BEAR2eyes", 10911 + "KIWI", 10912 + "KIWI derma" 10913 + ], 10914 + "services": { 10915 + "0000fff0-0000-1000-8000-00805f9b34fb": { 10916 + "tx": "0000fff1-0000-1000-8000-00805f9b34fb" 10917 + } 10918 + } 10919 + } 10920 + } 10921 ] 10922 }, 10923 "monsterpub": { 10924 "defaults": { 10925 "name": "Sistalk MonsterPub Device", 10926 "features": [ ··· 11079 ], 11080 "name": "Sistalk MonsterPub BeatHeart" 11081 } 11082 + ], 11083 + "communication": [ 11084 + { 11085 + "btle": { 11086 + "names": [ 11087 + "MonsterPub" 11088 + ], 11089 + "services": { 11090 + "00006000-0000-1000-8000-00805f9b34fb": { 11091 + "tx": "00006001-0000-1000-8000-00805f9b34fb", 11092 + "txmode": "00006002-0000-1000-8000-00805f9b34fb", 11093 + "txvibrate": "00006003-0000-1000-8000-00805f9b34fb" 11094 + }, 11095 + "00006010-0000-1000-8000-00805f9b34fb": { 11096 + "rxblemodel": "00006014-0000-1000-8000-00805f9b34fb" 11097 + }, 11098 + "00008000-0000-1000-8000-00805f9b34fb": { 11099 + "rx": "00008001-0000-1000-8000-00805f9b34fb" 11100 + } 11101 + } 11102 + } 11103 + } 11104 ] 11105 }, 11106 "joyhub": { 11107 "defaults": { 11108 "name": "JoyHub Device", 11109 "features": [ ··· 11275 } 11276 ] 11277 } 11278 + ], 11279 + "communication": [ 11280 + { 11281 + "btle": { 11282 + "names": [ 11283 + "J-Petalwish2", 11284 + "J-VortexTongue", 11285 + "J-Velocity", 11286 + "JOYHUB-ROSELLA2", 11287 + "J-VibSiren", 11288 + "J-ElixirEgg", 11289 + "J-RetroGuard", 11290 + "J-TrueForm3" 11291 + ], 11292 + "services": { 11293 + "0000ffa0-0000-1000-8000-00805f9b34fb": { 11294 + "tx": "0000ffa1-0000-1000-8000-00805f9b34fb" 11295 + } 11296 + } 11297 + } 11298 + } 11299 ] 11300 }, 11301 "joyhub-v2": { 11302 "defaults": { 11303 "name": "JoyHub Device", 11304 "features": [ ··· 11578 } 11579 ] 11580 } 11581 + ], 11582 + "communication": [ 11583 + { 11584 + "btle": { 11585 + "names": [ 11586 + "J-Pearlconch", 11587 + "J-PetiteRose", 11588 + "J-MoonHorn", 11589 + "J-VibTrefoil", 11590 + "J-Panther", 11591 + "J-Mecha", 11592 + "J-Lagoon", 11593 + "J-Firedragon" 11594 + ], 11595 + "services": { 11596 + "0000ffa0-0000-1000-8000-00805f9b34fb": { 11597 + "tx": "0000ffa1-0000-1000-8000-00805f9b34fb" 11598 + } 11599 + } 11600 + } 11601 + } 11602 ] 11603 }, 11604 "itoys": { 11605 "defaults": { 11606 "name": "iToys Seagull", 11607 "features": [ ··· 11618 } 11619 } 11620 ] 11621 + }, 11622 + "communication": [ 11623 + { 11624 + "btle": { 11625 + "names": [ 11626 + "26-021-B" 11627 + ], 11628 + "services": { 11629 + "0000ffa0-0000-1000-8000-00805f9b34fb": { 11630 + "tx": "0000ffa1-0000-1000-8000-00805f9b34fb" 11631 + } 11632 + } 11633 + } 11634 + } 11635 + ] 11636 }, 11637 "leten": { 11638 "defaults": { 11639 "name": "Leten Device", 11640 "features": [ ··· 11651 } 11652 } 11653 ] 11654 + }, 11655 + "communication": [ 11656 + { 11657 + "btle": { 11658 + "names": [ 11659 + "T528-LT", 11660 + "F537-LT", 11661 + "F520B-LT", 11662 + "F520A-LT" 11663 + ], 11664 + "services": { 11665 + "0000fff0-0000-1000-8000-00805f9b34fb": { 11666 + "tx": "0000fff1-0000-1000-8000-00805f9b34fb" 11667 + }, 11668 + "0000ffe0-0000-1000-8000-00805f9b34fb": { 11669 + "rx": "0000ffe1-0000-1000-8000-00805f9b34fb" 11670 + } 11671 + } 11672 } 11673 } 11674 + ] 11675 + }, 11676 + "vibcrafter": { 11677 "defaults": { 11678 "name": "VibCrafter Device", 11679 "features": [ ··· 11702 } 11703 } 11704 ] 11705 + }, 11706 + "communication": [ 11707 + { 11708 + "btle": { 11709 + "names": [ 11710 + "be gentle" 11711 + ], 11712 + "services": { 11713 + "53300051-0060-4bd4-bbe5-a6920e4c5663": { 11714 + "tx": "53300052-0060-4bd4-bbe5-a6920e4c5663", 11715 + "rx": "53300053-0060-4bd4-bbe5-a6920e4c5663" 11716 + } 11717 + } 11718 + } 11719 + } 11720 + ] 11721 } 11722 } 11723 }
+19 -1
buttplug/buttplug-device-config/convert-v2-to-v3.js
··· 87 } 88 89 // Get document, or throw exception on error 90 - const doc = yaml.load(fs.readFileSync('./device-config-v2/buttplug-device-config.yml', 'utf8')); 91 for (var protocol in doc["protocols"]) { 92 console.log(protocol); 93 if (doc["protocols"][protocol]["defaults"] === undefined) { 94 console.log("No defaults for protocol"); 95 }
··· 87 } 88 89 // Get document, or throw exception on error 90 + const doc = yaml.load(fs.readFileSync('./device-config-v2/buttplug-device-config-v2.yml', 'utf8')); 91 for (var protocol in doc["protocols"]) { 92 console.log(protocol); 93 + let comm_array = []; 94 + for (var comm_type of ["btle", "hid", "usb", "serial", "xinput", "lovense-connect-service"]) 95 + if (doc["protocols"][protocol][comm_type]) { 96 + let obj = {}; 97 + if (["serial"].includes(comm_type)) { 98 + obj[comm_type] = {}; 99 + obj[comm_type]["ports"] = doc["protocols"][protocol][comm_type]; 100 + } else if (["hid", "usb"].includes(comm_type)) { 101 + obj[comm_type] = {}; 102 + obj[comm_type]["pairs"] = doc["protocols"][protocol][comm_type]; 103 + } else { 104 + obj[comm_type] = doc["protocols"][protocol][comm_type]; 105 + } 106 + comm_array.push(obj); 107 + doc["protocols"][protocol][comm_type] = undefined; 108 + } 109 + doc["protocols"][protocol]["communication"] = comm_array; 110 + 111 if (doc["protocols"][protocol]["defaults"] === undefined) { 112 console.log("No defaults for protocol"); 113 }
+119 -88
buttplug/buttplug-device-config/device-config-v3/buttplug-device-config-schema-v3.json
··· 91 ] 92 }, 93 "serial-definition": { 94 - "type": "array", 95 - "items": { 96 - "type": "object", 97 - "properties": { 98 - "port": { 99 - "type": "string" 100 - }, 101 - "baud-rate": { 102 - "type": "integer" 103 - }, 104 - "data-bits": { 105 - "type": "integer" 106 - }, 107 - "parity": { 108 - "type": "string" 109 }, 110 - "stop-bits": { 111 - "type": "integer" 112 - } 113 - }, 114 - "required": [ 115 - "port", 116 - "baud-rate", 117 - "data-bits", 118 - "parity", 119 - "stop-bits" 120 - ], 121 - "additionalProperties": false 122 }, 123 - "minItems": 1 124 }, 125 "xinput-definition": { 126 "type": "object", ··· 139 } 140 }, 141 "usb-definition": { 142 - "type": "array", 143 - "items": { 144 - "type": "object", 145 - "properties": { 146 - "vendor-id": { 147 - "type": "integer", 148 - "minimum": 0, 149 - "maximum": 65535 150 }, 151 - "product-id": { 152 - "type": "integer", 153 - "minimum": 0, 154 - "maximum": 65535 155 - } 156 - }, 157 - "required": [ 158 - "vendor-id", 159 - "product-id" 160 - ], 161 - "additionalProperties": false 162 }, 163 - "minItems": 1 164 }, 165 "step-range": { 166 "description": "Specifies the range of steps to use for a device. Devices will use the low end value as a stop.", ··· 401 "^.*$": { 402 "type": "object", 403 "properties": { 404 - "btle": { 405 - "$ref": "#/components/btle-definition" 406 - }, 407 - "serial": { 408 - "$ref": "#/components/serial-definition" 409 - }, 410 - "websocket": { 411 - "$ref": "#/components/websocket-definition" 412 - }, 413 - "usb": { 414 - "$ref": "#/components/usb-definition" 415 }, 416 - "hid": { 417 - "$ref": "#/components/usb-definition" 418 - }, 419 - "xinput": { 420 - "$ref": "#/components/xinput-definition" 421 - }, 422 - "lovense-connect-service": { 423 - "$ref": "#/components/lovense-connect-service-definition" 424 - }, 425 - "defaults": { 426 - "$ref": "#/components/defaults-definition" 427 - }, 428 - "configurations": { 429 - "$ref": "#/components/configurations-definition" 430 } 431 } 432 } ··· 436 "user-configs": { 437 "type": "object", 438 "properties": { 439 - "specifiers": { 440 "type": "object", 441 "patternProperties": { 442 "^.*$": { 443 "type": "object", 444 "properties": { 445 - "btle": { 446 - "$ref": "#/components/btle-definition" 447 - }, 448 - "serial": { 449 - "$ref": "#/components/serial-definition" 450 - }, 451 - "websocket": { 452 - "$ref": "#/components/websocket-definition" 453 - }, 454 - "usb": { 455 - "$ref": "#/components/usb-definition" 456 - }, 457 - "hid": { 458 - "$ref": "#/components/usb-definition" 459 } 460 } 461 },
··· 91 ] 92 }, 93 "serial-definition": { 94 + "type": "object", 95 + "properties": { 96 + "ports": { 97 + "type": "array", 98 + "items": { 99 + "type": "object", 100 + "properties": { 101 + "port": { 102 + "type": "string" 103 + }, 104 + "baud-rate": { 105 + "type": "integer" 106 + }, 107 + "data-bits": { 108 + "type": "integer" 109 + }, 110 + "parity": { 111 + "type": "string" 112 + }, 113 + "stop-bits": { 114 + "type": "integer" 115 + } 116 + }, 117 + "required": [ 118 + "port", 119 + "baud-rate", 120 + "data-bits", 121 + "parity", 122 + "stop-bits" 123 + ], 124 + "additionalProperties": false 125 }, 126 + "minItems": 1 127 + } 128 }, 129 + "required": ["ports"] 130 }, 131 "xinput-definition": { 132 "type": "object", ··· 145 } 146 }, 147 "usb-definition": { 148 + "type": "object", 149 + "properties": { 150 + "pairs": { 151 + "type": "array", 152 + "items": { 153 + "type": "object", 154 + "properties": { 155 + "vendor-id": { 156 + "type": "integer", 157 + "minimum": 0, 158 + "maximum": 65535 159 + }, 160 + "product-id": { 161 + "type": "integer", 162 + "minimum": 0, 163 + "maximum": 65535 164 + } 165 + }, 166 + "required": [ 167 + "vendor-id", 168 + "product-id" 169 + ], 170 + "additionalProperties": false 171 }, 172 + "minItems": 1 173 + } 174 }, 175 + "required": ["pairs"] 176 }, 177 "step-range": { 178 "description": "Specifies the range of steps to use for a device. Devices will use the low end value as a stop.", ··· 413 "^.*$": { 414 "type": "object", 415 "properties": { 416 + "communication": { 417 + "type": "array", 418 + "items": { 419 + "type": "object", 420 + "properties": { 421 + "btle": { 422 + "$ref": "#/components/btle-definition" 423 + }, 424 + "serial": { 425 + "$ref": "#/components/serial-definition" 426 + }, 427 + "websocket": { 428 + "$ref": "#/components/websocket-definition" 429 + }, 430 + "usb": { 431 + "$ref": "#/components/usb-definition" 432 + }, 433 + "hid": { 434 + "$ref": "#/components/usb-definition" 435 + }, 436 + "xinput": { 437 + "$ref": "#/components/xinput-definition" 438 + }, 439 + "lovense-connect-service": { 440 + "$ref": "#/components/lovense-connect-service-definition" 441 + } 442 + } 443 + }, 444 + "maxProperties": 1 445 }, 446 + "devices": { 447 + "type": "object", 448 + "properties": { 449 + "defaults": { 450 + "$ref": "#/components/defaults-definition" 451 + }, 452 + "configurations": { 453 + "$ref": "#/components/configurations-definition" 454 + } 455 + } 456 } 457 } 458 } ··· 462 "user-configs": { 463 "type": "object", 464 "properties": { 465 + "communication": { 466 "type": "object", 467 "patternProperties": { 468 "^.*$": { 469 "type": "object", 470 "properties": { 471 + "communication": { 472 + "type": "object", 473 + "properties": { 474 + "btle": { 475 + "$ref": "#/components/btle-definition" 476 + }, 477 + "serial": { 478 + "$ref": "#/components/serial-definition" 479 + }, 480 + "websocket": { 481 + "$ref": "#/components/websocket-definition" 482 + }, 483 + "usb": { 484 + "$ref": "#/components/usb-definition" 485 + }, 486 + "hid": { 487 + "$ref": "#/components/usb-definition" 488 + } 489 + } 490 } 491 } 492 },
+1233 -1116
buttplug/buttplug-device-config/device-config-v3/buttplug-device-config-v3.yml
··· 3 minor: 0 4 protocols: 5 lovense: 6 - btle: 7 - names: 8 - - LVS-* 9 - - LOVE-* 10 - manufacturer-data: 11 - - company: 620 12 - data: 13 - - 255 14 - - 33 15 - services: 16 - 0000fff0-0000-1000-8000-00805f9b34fb: 17 - tx: 0000fff2-0000-1000-8000-00805f9b34fb 18 - rx: 0000fff1-0000-1000-8000-00805f9b34fb 19 - 6e400001-b5a3-f393-e0a9-e50e24dcca9e: 20 - tx: 6e400002-b5a3-f393-e0a9-e50e24dcca9e 21 - rx: 6e400003-b5a3-f393-e0a9-e50e24dcca9e 22 - 50300001-0024-4bd4-bbd5-a6920e4c5653: 23 - tx: 50300002-0024-4bd4-bbd5-a6920e4c5653 24 - rx: 50300003-0024-4bd4-bbd5-a6920e4c5653 25 - 57300001-0023-4bd4-bbd5-a6920e4c5653: 26 - tx: 57300002-0023-4bd4-bbd5-a6920e4c5653 27 - rx: 57300003-0023-4bd4-bbd5-a6920e4c5653 28 - 5a300001-0024-4bd4-bbd5-a6920e4c5653: 29 - tx: 5a300002-0024-4bd4-bbd5-a6920e4c5653 30 - rx: 5a300003-0024-4bd4-bbd5-a6920e4c5653 31 - 50300001-0023-4bd4-bbd5-a6920e4c5653: 32 - tx: 50300002-0023-4bd4-bbd5-a6920e4c5653 33 - rx: 50300003-0023-4bd4-bbd5-a6920e4c5653 34 - 53300001-0023-4bd4-bbd5-a6920e4c5653: 35 - tx: 53300002-0023-4bd4-bbd5-a6920e4c5653 36 - rx: 53300003-0023-4bd4-bbd5-a6920e4c5653 37 - 5a300001-0023-4bd4-bbd5-a6920e4c5653: 38 - tx: 5a300002-0023-4bd4-bbd5-a6920e4c5653 39 - rx: 5a300003-0023-4bd4-bbd5-a6920e4c5653 40 - 4f300001-0023-4bd4-bbd5-a6920e4c5653: 41 - tx: 4f300002-0023-4bd4-bbd5-a6920e4c5653 42 - rx: 4f300003-0023-4bd4-bbd5-a6920e4c5653 43 - 42300001-0023-4bd4-bbd5-a6920e4c5653: 44 - tx: 42300002-0023-4bd4-bbd5-a6920e4c5653 45 - rx: 42300003-0023-4bd4-bbd5-a6920e4c5653 46 - 43300001-0023-4bd4-bbd5-a6920e4c5653: 47 - tx: 43300002-0023-4bd4-bbd5-a6920e4c5653 48 - rx: 43300003-0023-4bd4-bbd5-a6920e4c5653 49 - 4c300001-0023-4bd4-bbd5-a6920e4c5653: 50 - tx: 4c300002-0023-4bd4-bbd5-a6920e4c5653 51 - rx: 4c300003-0023-4bd4-bbd5-a6920e4c5653 52 - 4c410001-0023-4bd4-bbd5-a6920e4c5653: 53 - tx: 4c410002-0023-4bd4-bbd5-a6920e4c5653 54 - rx: 4c410003-0023-4bd4-bbd5-a6920e4c5653 55 - 56300001-0023-4bd4-bbd5-a6920e4c5653: 56 - tx: 56300002-0023-4bd4-bbd5-a6920e4c5653 57 - rx: 56300003-0023-4bd4-bbd5-a6920e4c5653 58 - 58300001-0023-4bd4-bbd5-a6920e4c5653: 59 - tx: 58300002-0023-4bd4-bbd5-a6920e4c5653 60 - rx: 58300003-0023-4bd4-bbd5-a6920e4c5653 61 - 52300001-0023-4bd4-bbd5-a6920e4c5653: 62 - tx: 52300002-0023-4bd4-bbd5-a6920e4c5653 63 - rx: 52300003-0023-4bd4-bbd5-a6920e4c5653 64 - 46300001-0023-4bd4-bbd5-a6920e4c5653: 65 - tx: 46300002-0023-4bd4-bbd5-a6920e4c5653 66 - rx: 46300003-0023-4bd4-bbd5-a6920e4c5653 67 - 50300011-0023-4bd4-bbd5-a6920e4c5653: 68 - tx: 50300012-0023-4bd4-bbd5-a6920e4c5653 69 - rx: 50300013-0023-4bd4-bbd5-a6920e4c5653 70 - 4a300001-0023-4bd4-bbd5-a6920e4c5653: 71 - tx: 4a300002-0023-4bd4-bbd5-a6920e4c5653 72 - rx: 4a300003-0023-4bd4-bbd5-a6920e4c5653 73 - 45440001-0023-4bd4-bbd5-a6920e4c5653: 74 - tx: 45440002-0023-4bd4-bbd5-a6920e4c5653 75 - rx: 45440003-0023-4bd4-bbd5-a6920e4c5653 76 - 45420001-0023-4bd4-bbd5-a6920e4c5653: 77 - tx: 45420002-0023-4bd4-bbd5-a6920e4c5653 78 - rx: 45420003-0023-4bd4-bbd5-a6920e4c5653 79 - 54300001-0023-4bd4-bbd5-a6920e4c5653: 80 - tx: 54300002-0023-4bd4-bbd5-a6920e4c5653 81 - rx: 54300003-0023-4bd4-bbd5-a6920e4c5653 82 - 45490001-0023-4bd4-bbd5-a6920e4c5653: 83 - tx: 45490002-0023-4bd4-bbd5-a6920e4c5653 84 - rx: 45490003-0023-4bd4-bbd5-a6920e4c5653 85 - 4e300001-0023-4bd4-bbd5-a6920e4c5653: 86 - tx: 4e300002-0023-4bd4-bbd5-a6920e4c5653 87 - rx: 4e300003-0023-4bd4-bbd5-a6920e4c5653 88 - 45410001-0023-4bd4-bbd5-a6920e4c5653: 89 - tx: 45410002-0023-4bd4-bbd5-a6920e4c5653 90 - rx: 45410003-0023-4bd4-bbd5-a6920e4c5653 91 - 51300001-0023-4bd4-bbd5-a6920e4c5653: 92 - tx: 51300002-0023-4bd4-bbd5-a6920e4c5653 93 - rx: 51300003-0023-4bd4-bbd5-a6920e4c5653 94 - 45460001-0023-4bd4-bbd5-a6920e4c5653: 95 - tx: 45460002-0023-4bd4-bbd5-a6920e4c5653 96 - rx: 45460003-0023-4bd4-bbd5-a6920e4c5653 97 - 454c0001-0023-4bd4-bbd5-a6920e4c5653: 98 - tx: 454c0002-0023-4bd4-bbd5-a6920e4c5653 99 - rx: 454c0003-0023-4bd4-bbd5-a6920e4c5653 100 - 55300001-0023-4bd4-bbd5-a6920e4c5653: 101 - tx: 55300002-0023-4bd4-bbd5-a6920e4c5653 102 - rx: 55300003-0023-4bd4-bbd5-a6920e4c5653 103 - 53440001-0023-4bd4-bbd5-a6920e4c5653: 104 - tx: 53440002-0023-4bd4-bbd5-a6920e4c5653 105 - rx: 53440003-0023-4bd4-bbd5-a6920e4c5653 106 - 48300001-0023-4bd4-bbd5-a6920e4c5653: 107 - tx: 48300002-0023-4bd4-bbd5-a6920e4c5653 108 - rx: 48300003-0023-4bd4-bbd5-a6920e4c5653 109 defaults: 110 name: Lovense Device 111 features: ··· 490 - 100 491 messages: 492 - SensorReadCmd 493 lovense-connect-service: 494 - lovense-connect-service: 495 - exists: true 496 defaults: 497 name: Lovense Connect Service Device 498 features: ··· 862 - 100 863 messages: 864 - SensorReadCmd 865 xinput: 866 - xinput: 867 - exists: true 868 defaults: 869 name: XBox (XInput) Compatible Gamepad 870 features: ··· 882 - 65535 883 messages: 884 - ScalarCmd 885 kiiroo-v2: 886 - btle: 887 - names: 888 - - Launch 889 - - Onyx2 890 - services: 891 - 88f80580-0000-01e6-aace-0002a5d5c51b: 892 - tx: 88f80581-0000-01e6-aace-0002a5d5c51b 893 - rx: 88f80582-0000-01e6-aace-0002a5d5c51b 894 - firmware: 88f80583-0000-01e6-aace-0002a5d5c51b 895 - f60402a6-0293-4bdb-9f20-6758133f7090: 896 - tx: 02962ac9-e86f-4094-989d-231d69995fc2 897 - rx: d44d0393-0731-43b3-a373-8fc70b1f3323 898 - firmware: c7b7a04b-2cc4-40ff-8b10-5d531d1161db 899 defaults: 900 name: Kiiroo v2 Device 901 features: ··· 913 - identifier: 914 - Onyx2 915 name: Kiiroo Onyx 2 916 libo-elle: 917 - btle: 918 - names: 919 - - PiPiJing 920 - - Shuidi 921 - services: 922 - 00006000-0000-1000-8000-00805f9b34fb: 923 - tx: 00006001-0000-1000-8000-00805f9b34fb 924 - txmode: 00006002-0000-1000-8000-00805f9b34fb 925 defaults: 926 name: Libo Elle Device 927 features: ··· 939 - identifier: 940 - Shuidi 941 name: Libo Elle 2 942 libo-shark: 943 - btle: 944 - names: 945 - - ShaYu 946 - services: 947 - 00006000-0000-1000-8000-00805f9b34fb: 948 - tx: 00006001-0000-1000-8000-00805f9b34fb 949 - txmode: 00006002-0000-1000-8000-00805f9b34fb 950 defaults: 951 name: Libo Shark 952 features: ··· 964 - 3 965 messages: 966 - ScalarCmd 967 libo-karen: 968 - btle: 969 - names: 970 - - SuoYinQiu 971 - services: 972 - 00006000-0000-1000-8000-00805f9b34fb: 973 - tx: 00006001-0000-1000-8000-00805f9b34fb 974 - txmode: 00006002-0000-1000-8000-00805f9b34fb 975 - 00006050-0000-1000-8000-00805f9b34fb: 976 - rxpressure: 00006051-0000-1000-8000-00805f9b34fb 977 defaults: 978 name: Libo Karen 979 features: [] 980 libo-vibes: 981 - btle: 982 - names: 983 - - XiaoLu 984 - - LuXiaoHan 985 - - BaiHu 986 - - Gugudai 987 - - Yuyi 988 - - LuWuShuang 989 - - LiBo 990 - - QingTing 991 - - Huohu 992 - - Yuyi 993 - - Haima 994 - services: 995 - 00006000-0000-1000-8000-00805f9b34fb: 996 - tx: 00006001-0000-1000-8000-00805f9b34fb 997 - txmode: 00006002-0000-1000-8000-00805f9b34fb 998 defaults: 999 name: Libo Vibes Device 1000 features: ··· 1092 - 3 1093 messages: 1094 - ScalarCmd 1095 magic-motion-1: 1096 - btle: 1097 - names: 1098 - - Smart Mini Vibe* 1099 - - Flamingo 1100 - - Flamingo T 1101 - - Smart Bean 1102 - - Smart Bean3 1103 - - Magic Cell 1104 - - Magic Wand 1105 - - Fugu 1106 - - Fugu2 1107 - - Gballs2 1108 - - GBalls3 1109 - - FM-LILAC-101 1110 - - Xone 1111 - - CBT002 1112 - services: 1113 - 78667579-7b48-43db-b8c5-7928a6b0a335: 1114 - tx: 78667579-a914-49a4-8333-aa3c0cd8fedc 1115 - 0000180f-0000-1000-8000-00805f9b34fb: 1116 - rxblebattery: 00002a19-0000-1000-8000-00805f9b34fb 1117 defaults: 1118 name: Magic Motion V1 Device 1119 features: ··· 1194 - identifier: 1195 - CBT002 1196 name: FunTown Caleo 1197 magic-motion-2: 1198 - btle: 1199 - names: 1200 - - Eidolon 1201 - - Lipstick 1202 - - Sword 1203 - - Curve 1204 - - Solstice X 1205 - - funwand 1206 - - CBT001 1207 - services: 1208 - 78667579-7b48-43db-b8c5-7928a6b0a335: 1209 - tx: 78667579-a914-49a4-8333-aa3c0cd8fedc 1210 - 0000180f-0000-1000-8000-00805f9b34fb: 1211 - rxblebattery: 00002a19-0000-1000-8000-00805f9b34fb 1212 defaults: 1213 name: Magic Motion V2 Device 1214 features: ··· 1318 - 100 1319 messages: 1320 - SensorReadCmd 1321 magic-motion-3: 1322 - btle: 1323 - names: 1324 - - Krush 1325 - services: 1326 - 78667579-7b48-43db-b8c5-7928a6b0a335: 1327 - tx: 78667579-a914-49a4-8333-aa3c0cd8fedc 1328 - 0000180f-0000-1000-8000-00805f9b34fb: 1329 - rxblebattery: 00002a19-0000-1000-8000-00805f9b34fb 1330 defaults: 1331 name: LoveLife Krush 1332 features: ··· 1345 - 100 1346 messages: 1347 - SensorReadCmd 1348 magic-motion-4: 1349 - btle: 1350 - names: 1351 - - funone 1352 - - Magic Sundi 1353 - - Kegel Coach 1354 - - Magic Lotos 1355 - - nyx 1356 - - umi 1357 - - funkegel 1358 - - bobi2 1359 - services: 1360 - 78667579-7b48-43db-b8c5-7928a6b0a335: 1361 - tx: 78667579-a914-49a4-8333-aa3c0cd8fedc 1362 - 0000180f-0000-1000-8000-00805f9b34fb: 1363 - rxblebattery: 00002a19-0000-1000-8000-00805f9b34fb 1364 defaults: 1365 name: Magic Motion V4 Device 1366 features: ··· 1450 - 100 1451 messages: 1452 - SensorReadCmd 1453 mysteryvibe: 1454 - btle: 1455 - names: 1456 - - MV Crescendo 1457 - - 'MV Tenuto ' 1458 - - 'MV Poco ' 1459 - services: 1460 - f0006900-110c-478b-b74b-6f403b364a9c: 1461 - txmode: f0006901-110c-478b-b74b-6f403b364a9c 1462 - txvibrate: f0006903-110c-478b-b74b-6f403b364a9c 1463 defaults: 1464 name: Mysteryvibe Device 1465 features: ··· 1530 - 56 1531 messages: 1532 - ScalarCmd 1533 mysteryvibe-v2: 1534 - btle: 1535 - names: 1536 - - 6907 MV1 1537 - - 6908 MV1 1538 - - 6909 MV1 1539 - - 6914 MV1 1540 - - 6915 MV1 1541 - services: 1542 - f0006900-110c-478b-b74b-6f403b364a9c: 1543 - txmode: f0006901-110c-478b-b74b-6f403b364a9c 1544 - txvibrate: f0006903-110c-478b-b74b-6f403b364a9c 1545 defaults: 1546 name: Mysteryvibe V2 Device 1547 features: ··· 1691 - 56 1692 messages: 1693 - ScalarCmd 1694 picobong: 1695 - btle: 1696 - names: 1697 - - Blow hole 1698 - - Picobong Male Toy 1699 - - Diver 1700 - - Picobong Egg 1701 - - Life guard 1702 - - Picobong Ring 1703 - - Surfer 1704 - - Picobong Butt Plug 1705 - - Egg driver 1706 - - Surfer_plug 1707 - services: 1708 - 0000fff0-0000-1000-8000-00805f9b34fb: 1709 - tx: 0000fff1-0000-1000-8000-00805f9b34fb 1710 defaults: 1711 name: Picobong Device 1712 features: ··· 1736 - Egg driver 1737 - Surfer_plug 1738 name: Picobong Surfer 1739 vibratissimo: 1740 - btle: 1741 - names: 1742 - - Vibratissimo 1743 - services: 1744 - 00001523-1212-efde-1523-785feabcd123: 1745 - txmode: 00001524-1212-efde-1523-785feabcd123 1746 - txvibrate: 00001526-1212-efde-1523-785feabcd123 1747 - rx: 00001527-1212-efde-1523-785feabcd123 1748 - 0000180a-0000-1000-8000-00805f9b34fb: 1749 - rxblemodel: 00002a24-0000-1000-8000-00805f9b34fb 1750 - 0000180f-0000-1000-8000-00805f9b34fb: 1751 - rxblebattery: 00002a19-0000-1000-8000-00805f9b34fb 1752 defaults: 1753 name: Vibratissimo Device 1754 features: ··· 1829 - 100 1830 messages: 1831 - SensorReadCmd 1832 wevibe: 1833 - btle: 1834 - names: 1835 - - Cougar 1836 - - 4 Plus 1837 - - 4_Plus 1838 - - 4plus 1839 - - Bloom 1840 - - classic 1841 - - Classic 1842 - - Ditto 1843 - - Gala 1844 - - Jive 1845 - - Nova 1846 - - Pivot 1847 - - Rave 1848 - - Sync 1849 - - Verge 1850 - - Wish 1851 - services: 1852 - f000bb03-0451-4000-b000-000000000000: 1853 - tx: f000c000-0451-4000-b000-000000000000 1854 - rx: f000b000-0451-4000-b000-000000000000 1855 defaults: 1856 name: WeVibe Device 1857 features: ··· 1961 - 15 1962 messages: 1963 - ScalarCmd 1964 wevibe-8bit: 1965 - btle: 1966 - names: 1967 - - Melt 1968 - - Moxie 1969 - - Vector 1970 - - Wand 1971 - - Bond 1972 - - Nelson 1973 - - Nova2 1974 - - Nova_2 1975 - - Nova 2 1976 - services: 1977 - f000bb03-0451-4000-b000-000000000000: 1978 - tx: f000c000-0451-4000-b000-000000000000 1979 - rx: f000b000-0451-4000-b000-000000000000 1980 defaults: 1981 name: WeVibe 8-bit Device 1982 features: ··· 2063 - 27 2064 messages: 2065 - ScalarCmd 2066 wevibe-legacy: 2067 - btle: 2068 - names: 2069 - - Reina 2070 - - imassager 2071 - - Interactive Massager 2072 - - '03' 2073 - services: 2074 - f000bb03-0451-4000-b000-000000000000: 2075 - tx: f000c000-0451-4000-b000-000000000000 2076 - rx: f000b000-0451-4000-b000-000000000000 2077 defaults: 2078 name: WeVibe Realm Reina 2079 features: [] 2080 wevibe-chorus: 2081 - btle: 2082 - names: 2083 - - Chorus 2084 - - skeena 2085 - - Sync 2 2086 - - Sync Lite 2087 - services: 2088 - f000bb03-0451-4000-b000-000000000000: 2089 - tx: f000c000-0451-4000-b000-000000000000 2090 - rx: f000b000-0451-4000-b000-000000000000 2091 defaults: 2092 name: WeVibe Chorus 2093 features: ··· 2135 - 30 2136 messages: 2137 - ScalarCmd 2138 youcups: 2139 - btle: 2140 - names: 2141 - - Youcups 2142 - services: 2143 - 0000fee9-0000-1000-8000-00805f9b34fb: 2144 - tx: d44bc439-abfd-45a2-b575-925416129600 2145 defaults: 2146 name: Youcups Warrior II 2147 features: ··· 2152 - 8 2153 messages: 2154 - ScalarCmd 2155 cueme: 2156 - btle: 2157 - names: 2158 - - FUNCODE_* 2159 - services: 2160 - 0000fff0-0000-1000-8000-00805f9b34fb: 2161 - tx: 0000fff1-0000-1000-8000-00805f9b34fb 2162 defaults: 2163 name: Cueme Device 2164 features: ··· 2257 - 15 2258 messages: 2259 - ScalarCmd 2260 kiiroo-v2-vibrator: 2261 - btle: 2262 - names: 2263 - - Pearl2 2264 - - Pearl2+ 2265 - - Fuse 2266 - - Virtual Blowbot 2267 - - Titan 2268 - - Virtual Rabbit 2269 - services: 2270 - 88f82580-0000-01e6-aace-0002a5d5c51b: 2271 - tx: 88f82581-0000-01e6-aace-0002a5d5c51b 2272 - rxtouch: 88f82582-0000-01e6-aace-0002a5d5c51b 2273 - rxaccel: 88f82584-0000-01e6-aace-0002a5d5c51b 2274 defaults: 2275 name: Kiiroo V2 Vibrator Device 2276 features: ··· 2397 - 100 2398 messages: 2399 - ScalarCmd 2400 kiiroo-v21: 2401 - btle: 2402 - names: 2403 - - Titan1.1 2404 - - Cliona 2405 - - Pearl2.1 2406 - - OhMiBod 4.0 2407 - - OhMiBod LUMEN 2408 - - OhMiBod NEX3 2409 - - OhMiBod ESCA 2410 - - OhMiBod Foxy 2411 - - OhMiBod Chill Panty Vibe 2412 - - OhMiBod Sphinx 2413 - - Pulse Interactive 2414 - - Fuse1.1 2415 - services: 2416 - 00001900-0000-1000-8000-00805f9b34fb: 2417 - whitelist: 00001901-0000-1000-8000-00805f9b34fb 2418 - tx: 00001902-0000-1000-8000-00805f9b34fb 2419 - rx: 00001903-0000-1000-8000-00805f9b34fb 2420 - a0d70001-4c16-4ba7-977a-d394920e13a3: 2421 - tx: a0d70002-4c16-4ba7-977a-d394920e13a3 2422 - rx: a0d70003-4c16-4ba7-977a-d394920e13a3 2423 defaults: 2424 name: Kiiroo V2.1 Device 2425 features: [] ··· 2561 - 100 2562 messages: 2563 - ScalarCmd 2564 kiiroo-v21-initialized: 2565 - btle: 2566 - names: 2567 - - Rey 2568 - - We-Vibe Rocketman 2569 - - Realm1.1 2570 - - Onyx2.1 2571 - - Onyx+ 2572 - - KEON 2573 - - Keon R2 2574 - services: 2575 - 00001900-0000-1000-8000-00805f9b34fb: 2576 - whitelist: 00001901-0000-1000-8000-00805f9b34fb 2577 - tx: 00001902-0000-1000-8000-00805f9b34fb 2578 - rx: 00001903-0000-1000-8000-00805f9b34fb 2579 defaults: 2580 name: Kiiroo V2.1 Initialized Device 2581 features: [] ··· 2627 - 99 2628 messages: 2629 - LinearCmd 2630 vorze-cyclone-x: 2631 - hid: 2632 - - vendor-id: 1155 2633 - product-id: 22352 2634 defaults: 2635 name: Vorze Cyclone X10 Device 2636 features: ··· 2641 - 10 2642 messages: 2643 - RotateCmd 2644 rez-trancevibrator: 2645 - usb: 2646 - - vendor-id: 2889 2647 - product-id: 1615 2648 defaults: 2649 name: Rez TranceVibrator 2650 features: ··· 2655 - 255 2656 messages: 2657 - ScalarCmd 2658 kiiroo-v1: 2659 - btle: 2660 - names: 2661 - - ONYX 2662 - - PEARL 2663 - services: 2664 - 49535343-fe7d-4ae5-8fa9-9fafd205e455: 2665 - rx: 49535343-1e4d-4bd9-ba61-23c647249616 2666 - tx: 49535343-8841-43f4-a8d4-ecbe34729bb3 2667 - command: 49535343-aca3-481c-91ec-d85e28a60318 2668 defaults: 2669 name: Kiiroo V1 Device 2670 features: [] ··· 2691 - 4 2692 messages: 2693 - LinearCmd 2694 vorze-sa: 2695 - btle: 2696 - names: 2697 - - Bach smart 2698 - - CycSA 2699 - - UFOSA 2700 - - UFO-TW 2701 - - VorzePiston 2702 - - ROCKET 2703 - services: 2704 - 40ee1111-63ec-4b7f-8ce7-712efd55b90e: 2705 - tx: 40ee2222-63ec-4b7f-8ce7-712efd55b90e 2706 defaults: 2707 name: Vorze Device 2708 features: [] ··· 2780 - 99 2781 messages: 2782 - LinearCmd 2783 youou: 2784 - btle: 2785 - names: 2786 - - VX001_* 2787 - services: 2788 - 0000fff0-0000-1000-8000-00805f9b34fb: 2789 - tx: 0000fff6-0000-1000-8000-00805f9b34fb 2790 defaults: 2791 name: Youou Wand Vibrator 2792 features: ··· 2797 - 255 2798 messages: 2799 - ScalarCmd 2800 realtouch: 2801 - hid: 2802 - - vendor-id: 8020 2803 - product-id: 1 2804 defaults: 2805 name: RealTouch 2806 features: ··· 2811 - 99 2812 messages: 2813 - LinearCmd 2814 prettylove: 2815 - btle: 2816 - names: 2817 - - Aogu BLE * 2818 - services: 2819 - 0000ffe5-0000-1000-8000-00805f9b34fb: 2820 - tx: 0000ffe9-0000-1000-8000-00805f9b34fb 2821 - rx: 0000ffe2-0000-1000-8000-00805f9b34fb 2822 defaults: 2823 name: Pretty Love Device 2824 features: ··· 2829 - 3 2830 messages: 2831 - ScalarCmd 2832 svakom: 2833 - btle: 2834 - names: 2835 - - Aogu SUV 2836 - - Aogu SCB 2837 - - Emma NEO 2838 - - Phoenix NEO 2839 - services: 2840 - 0000ffe0-0000-1000-8000-00805f9b34fb: 2841 - tx: 0000ffe1-0000-1000-8000-00805f9b34fb 2842 - rx: 0000ffe2-0000-1000-8000-00805f9b34fb 2843 defaults: 2844 name: Svakom Device 2845 features: ··· 2860 - identifier: 2861 - Emma NEO 2862 name: Svakom Emma Neo 2863 svakom-v2: 2864 - btle: 2865 - names: 2866 - - '116' 2867 - - '117' 2868 - - '118' 2869 - - Viviana 2870 - - Ella NEO 2871 - - S38A 2872 - - Vick NEO 2873 - - Vick Neo 2874 - - STG05A 2875 - - QH-SJ007A 2876 - services: 2877 - 0000ffe0-0000-1000-8000-00805f9b34fb: 2878 - tx: 0000ffe1-0000-1000-8000-00805f9b34fb 2879 - rx: 0000ffe2-0000-1000-8000-00805f9b34fb 2880 defaults: 2881 name: Svakom Device v2 2882 features: ··· 2916 - identifier: 2917 - QH-SJ007A 2918 name: Svakom Winni 2 2919 svakom-v3: 2920 - btle: 2921 - names: 2922 - - Phoenix Neo 2 2923 - - FK008A 2924 - - Hannes NEO 2925 - - QH-SX007E 2926 - services: 2927 - 0000ffe0-0000-1000-8000-00805f9b34fb: 2928 - tx: 0000ffe1-0000-1000-8000-00805f9b34fb 2929 - rx: 0000ffe2-0000-1000-8000-00805f9b34fb 2930 defaults: 2931 name: Svakom Device v3 2932 features: ··· 2982 - 1 2983 messages: 2984 - ScalarCmd 2985 svakom-v4: 2986 - btle: 2987 - names: 2988 - - B2CM6 2989 - - ERICA 2990 - services: 2991 - 0000ffe0-0000-1000-8000-00805f9b34fb: 2992 - tx: 0000ffe1-0000-1000-8000-00805f9b34fb 2993 - rx: 0000ffe2-0000-1000-8000-00805f9b34fb 2994 defaults: 2995 name: Svakom Device v4 2996 features: ··· 3015 - identifier: 3016 - ERICA 3017 name: Svakom Erica 3018 svakom-sam: 3019 - btle: 3020 - names: 3021 - - Sam Neo 3022 - services: 3023 - 0000ae00-0000-1000-8000-00805f9b34fb: 3024 - tx: 0000ae01-0000-1000-8000-00805f9b34fb 3025 - rx: 0000ae02-0000-1000-8000-00805f9b34fb 3026 - txmode: 0000ae10-0000-1000-8000-00805f9b34fb 3027 - 0000ffac-0000-1000-8000-00805f9b34fb: 3028 - firmware: 0000ffb4-0000-1000-8000-00805f9b34fb 3029 defaults: 3030 name: Svakom Sam Neo 3031 features: ··· 3043 - 1 3044 messages: 3045 - ScalarCmd 3046 svakom-alex: 3047 - btle: 3048 - names: 3049 - - Alex NEO 3050 - - S63E Alex NEO 3051 - services: 3052 - 0000ffe0-0000-1000-8000-00805f9b34fb: 3053 - tx: 0000ffe1-0000-1000-8000-00805f9b34fb 3054 defaults: 3055 name: Svakom Alex Neo 3056 features: ··· 3061 - 3 3062 messages: 3063 - ScalarCmd 3064 svakom-alex-v2: 3065 - btle: 3066 - names: 3067 - - Alex NEO 2 3068 - services: 3069 - 0000ffe0-0000-1000-8000-00805f9b34fb: 3070 - tx: 0000ffe1-0000-1000-8000-00805f9b34fb 3071 defaults: 3072 name: Svakom Alex Neo 2 3073 features: ··· 3078 - 3 3079 messages: 3080 - ScalarCmd 3081 svakom-dt250a: 3082 - btle: 3083 - names: 3084 - - DT250A 3085 - services: 3086 - 0000ffe0-0000-1000-8000-00805f9b34fb: 3087 - tx: 0000ffe1-0000-1000-8000-00805f9b34fb 3088 - rx: 0000ffe2-0000-1000-8000-00805f9b34fb 3089 defaults: 3090 name: Coleur Dor DT250A 3091 features: ··· 3110 - 2 3111 messages: 3112 - ScalarCmd 3113 svakom-iker: 3114 - btle: 3115 - names: 3116 - - Iker* 3117 - manufacturer-data: 3118 - - company: 39 3119 - data: 3120 - - 83 3121 - - 86 3122 - - 65 3123 - - 1 3124 - - 11 3125 - - 18 3126 - - 1 3127 - - 51 3128 - - 68 3129 - - 85 3130 - - 202 3131 - - 8 3132 - services: 3133 - 0000ffe0-0000-1000-8000-00805f9b34fb: 3134 - tx: 0000ffe1-0000-1000-8000-00805f9b34fb 3135 defaults: 3136 name: Svakom Iker 3137 features: ··· 3149 - 5 3150 messages: 3151 - ScalarCmd 3152 svakom-pulse: 3153 - btle: 3154 - names: 3155 - - SWK-SX013A 3156 - - Pulse Union 3157 - - Pulse Galaxie 3158 - - SX033APP 3159 - - BX288A 3160 - - QH-SX045A-B 3161 - services: 3162 - 0000ffe0-0000-1000-8000-00805f9b34fb: 3163 - tx: 0000ffe1-0000-1000-8000-00805f9b34fb 3164 - rx: 0000ffe2-0000-1000-8000-00805f9b34fb 3165 defaults: 3166 name: Svakom Pulse Device 3167 features: ··· 3191 - identifier: 3192 - QH-SX045A-B 3193 name: Coleur Dor VX045A 3194 svakom-suitcase: 3195 - btle: 3196 - names: 3197 - - VX357A-BLE-V1.0 3198 - - VX236A-BLE-V1.0 3199 - services: 3200 - 0000ffe0-0000-1000-8000-00805f9b34fb: 3201 - tx: 0000ffe1-0000-1000-8000-00805f9b34fb 3202 - rx: 0000ffe2-0000-1000-8000-00805f9b34fb 3203 defaults: 3204 name: Svakom Magic Suitcase 3205 features: ··· 3221 - identifier: 3222 - VX236A-BLE-V1.0 3223 name: Coleur Dor VX236A 3224 svakom-tarax: 3225 - btle: 3226 - names: 3227 - - SX218A 3228 - services: 3229 - 0000ffe0-0000-1000-8000-00805f9b34fb: 3230 - tx: 0000ffe1-0000-1000-8000-00805f9b34fb 3231 - rx: 0000ffe2-0000-1000-8000-00805f9b34fb 3232 defaults: 3233 name: ToyCod Tara X 3234 features: ··· 3248 - 3 3249 messages: 3250 - ScalarCmd 3251 svakom-avaneo: 3252 - btle: 3253 - names: 3254 - - SX218A 3255 - - Ava Neo 3256 - services: 3257 - 0000ffe0-0000-1000-8000-00805f9b34fb: 3258 - tx: 0000ffe1-0000-1000-8000-00805f9b34fb 3259 - rx: 0000ffe2-0000-1000-8000-00805f9b34fb 3260 defaults: 3261 name: Svakom Ava Neo 3262 features: ··· 3274 - 1 3275 messages: 3276 - ScalarCmd 3277 svakom-barnard: 3278 - btle: 3279 - names: 3280 - - DG239A 3281 - services: 3282 - 0000ffe0-0000-1000-8000-00805f9b34fb: 3283 - tx: 0000ffe1-0000-1000-8000-00805f9b34fb 3284 defaults: 3285 name: Fantasy Cup Barnard 3286 features: ··· 3298 - 3 3299 messages: 3300 - ScalarCmd 3301 realov: 3302 - btle: 3303 - names: 3304 - - REALOV_VIBE 3305 - services: 3306 - 0000ffe0-0000-1000-8000-00805f9b34fb: 3307 - tx: 0000ffe1-0000-1000-8000-00805f9b34fb 3308 defaults: 3309 name: Realov Device 3310 features: ··· 3315 - 50 3316 messages: 3317 - ScalarCmd 3318 motorbunny: 3319 - btle: 3320 - names: 3321 - - MB Controller 3322 - - MB LINK 201 3323 - services: 3324 - 0000fff0-0000-1000-8000-00805f9b34fb: 3325 - tx: 0000fff6-0000-1000-8000-00805f9b34fb 3326 defaults: 3327 name: Motorbunny Device 3328 features: ··· 3347 - identifier: 3348 - MB LINK 201 3349 name: Motorbunny Buck 3350 zalo: 3351 - btle: 3352 - names: 3353 - - ZALO-Queen 3354 - - ZALO-King 3355 - - ZALO-Jeanne 3356 - services: 3357 - 0000fff0-0000-1000-8000-00805f9b34fb: 3358 - tx: 0000fff1-0000-1000-8000-00805f9b34fb 3359 defaults: 3360 name: Zalo Device 3361 features: ··· 3406 - identifier: 3407 - ZALO-Jeanne 3408 name: Zalo Jeanne 3409 sayberx: 3410 - btle: 3411 - names: 3412 - - SayberX 3413 - - X-Ring * 3414 - services: 3415 - 0000fff0-0000-1000-8000-00805f9b34fb: 3416 - tx: 0000fff6-0000-1000-8000-00805f9b34fb 3417 - rx: 0000fff8-0000-1000-8000-00805f9b34fb 3418 defaults: 3419 name: SayberX Device 3420 features: [] ··· 3433 - identifier: 3434 - X-Ring 3435 name: Sayber X-Ring 3436 muse: 3437 - btle: 3438 - names: 3439 - - WB-ZDB-WST 3440 - - WB-TDD 3441 - services: 3442 - 0000aaa0-0000-1000-8000-00805f9b34fb: 3443 - tx: 0000aaa1-0000-1000-8000-00805f9b34fb 3444 defaults: 3445 name: Muse Device 3446 features: ··· 3458 - identifier: 3459 - WB-TDD 3460 name: Galaku Panty Vib 3461 lelo-f1s: 3462 - btle: 3463 - names: 3464 - - F1s 3465 - services: 3466 - 0000fff0-0000-1000-8000-00805f9b34fb: 3467 - tx: 0000fff1-0000-1000-8000-00805f9b34fb 3468 - rx: 00000aa4-0000-1000-8000-00805f9b34fb 3469 defaults: 3470 name: Lelo F1s 3471 features: ··· 3483 - 100 3484 messages: 3485 - ScalarCmd 3486 lelo-f1sv2: 3487 - btle: 3488 - names: 3489 - - F1SV2A 3490 - - F1SV2X 3491 - services: 3492 - 0000fff0-0000-1000-8000-00805f9b34fb: 3493 - tx: 0000fff1-0000-1000-8000-00805f9b34fb 3494 - whitelist: 00000a10-0000-1000-8000-00805f9b34fb 3495 - rx: 00000a04-0000-1000-8000-00805f9b34fb 3496 defaults: 3497 name: Lelo F1s V2 3498 features: ··· 3510 - 100 3511 messages: 3512 - ScalarCmd 3513 lelo-harmony: 3514 - btle: 3515 - names: 3516 - - IdaWave 3517 - - Ida Wave 3518 - - TianiHarmony 3519 - - Tiani Harmony 3520 - - TOR3 3521 - - Hugo2 3522 - services: 3523 - 0000fff0-0000-1000-8000-00805f9b34fb: 3524 - command: 0000fff1-0000-1000-8000-00805f9b34fb 3525 - tx: 0000fff2-0000-1000-8000-00805f9b34fb 3526 - whitelist: 00000a11-0000-1000-8000-00805f9b34fb 3527 defaults: 3528 name: Lelo Tiani Harmony 3529 features: ··· 3575 - identifier: 3576 - Hugo2 3577 name: Lelo Hugo 2 3578 aneros: 3579 - btle: 3580 - names: 3581 - - Massage Demo 3582 - services: 3583 - 0000ff00-0000-1000-8000-00805f9b34fb: 3584 - tx: 0000ff01-0000-1000-8000-00805f9b34fb 3585 defaults: 3586 name: Aneros Vivi 3587 features: ··· 3601 - 127 3602 messages: 3603 - ScalarCmd 3604 lovehoney-desire: 3605 - btle: 3606 - names: 3607 - - PROSTATE VIBE 3608 - - KNICKER VIBE 3609 - - LOVE EGG 3610 - services: 3611 - 0000ff00-0000-1000-8000-00805f9b34fb: 3612 - tx: 0000ff01-0000-1000-8000-00805f9b34fb 3613 defaults: 3614 name: Lovehoney Device 3615 features: ··· 3653 - 127 3654 messages: 3655 - ScalarCmd 3656 twerkingbutt: 3657 - btle: 3658 - names: 3659 - - BODIKANG 3660 - - Twerking Butt 3661 - - TwerkingButt 3662 - services: 3663 - 00000a60-0000-1000-8000-00805f9b34fb: 3664 - tx: 00000a66-0000-1000-8000-00805f9b34fb 3665 - rx: 00000a67-0000-1000-8000-00805f9b34fb 3666 defaults: 3667 name: Twerking Butt 3668 features: [] 3669 maxpro: 3670 - btle: 3671 - names: 3672 - - M2 3673 - services: 3674 - 6e400001-b5a3-f393-e0a9-e50e24dcca9e: 3675 - tx: 6e400002-b5a3-f393-e0a9-e50e24dcca9e 3676 defaults: 3677 name: MaxPro 2 3678 features: ··· 3683 - 100 3684 messages: 3685 - ScalarCmd 3686 nobra: 3687 - btle: 3688 - names: 3689 - - NobraControl* 3690 - services: 3691 - 0000abf0-0000-1000-8000-00805f9b34fb: 3692 - tx: 0000abf1-0000-1000-8000-00805f9b34fb 3693 - serial: 3694 - - port: default 3695 - baud-rate: 19200 3696 - data-bits: 8 3697 - parity: 'N' 3698 - stop-bits: 1 3699 defaults: 3700 name: Nobra's Silicone Dreams Toy 3701 features: ··· 3706 - 15 3707 messages: 3708 - ScalarCmd 3709 thehandy: 3710 - btle: 3711 - names: 3712 - - The Handy 3713 - services: 3714 - 1775244d-6b43-439b-877c-060f2d9bed07: 3715 - firmware: 1775ff51-6b43-439b-877c-060f2d9bed07 3716 - tx: 1775ff55-6b43-439b-877c-060f2d9bed07 3717 defaults: 3718 name: The Handy 3719 features: ··· 3724 - 100 3725 messages: 3726 - LinearCmd 3727 cachito: 3728 - btle: 3729 - names: 3730 - - CCTSK 3731 - - CCTXueGao 3732 - services: 3733 - 0000fff0-0000-1000-8000-00805f9b34fb: 3734 - tx: 0000fff2-0000-1000-8000-00805f9b34fb 3735 defaults: 3736 name: Cachito Device 3737 features: ··· 3756 - identifier: 3757 - CCTXueGao 3758 name: Cachito Ice Cream 3759 jejoue: 3760 - btle: 3761 - names: 3762 - - Je Joue 3763 - services: 3764 - 0000fff0-0000-1000-8000-00805f9b34fb: 3765 - tx: 0000fff1-0000-1000-8000-00805f9b34fb 3766 defaults: 3767 name: Je Joue Device 3768 features: ··· 3780 - 5 3781 messages: 3782 - ScalarCmd 3783 lovenuts: 3784 - btle: 3785 - names: 3786 - - Love_Nuts 3787 - services: 3788 - 0000fff0-0000-1000-8000-00805f9b34fb: 3789 - tx: 0000fff1-0000-1000-8000-00805f9b34fb 3790 defaults: 3791 name: Love Nut 3792 features: ··· 3797 - 15 3798 messages: 3799 - ScalarCmd 3800 patoo: 3801 - btle: 3802 - names: 3803 - - PTVEA* 3804 - - PBT* 3805 - - PCS* 3806 - - PHT* 3807 - services: 3808 - f000aa64-0451-4000-b000-000000000000: 3809 - txmode: f000aa65-0451-4000-b000-000000000000 3810 - tx: f000aa68-0451-4000-b000-000000000000 3811 defaults: 3812 name: Patoo Device 3813 features: ··· 3846 - 100 3847 messages: 3848 - ScalarCmd 3849 tcode-v03: 3850 - serial: 3851 - - port: default 3852 - baud-rate: 115200 3853 - data-bits: 8 3854 - parity: 'N' 3855 - stop-bits: 1 3856 defaults: 3857 name: TCode v0.3 (Single Linear Axis) 3858 features: ··· 3863 - 100 3864 messages: 3865 - LinearCmd 3866 fredorch: 3867 - btle: 3868 - names: 3869 - - YXlinksSPP 3870 - services: 3871 - 0000ffb0-0000-1000-8000-00805f9b34fb: 3872 - tx: 0000ffb1-0000-1000-8000-00805f9b34fb 3873 - rx: 0000ffb2-0000-1000-8000-00805f9b34fb 3874 defaults: 3875 name: Fredorch Device 3876 features: ··· 3881 - 150 3882 messages: 3883 - LinearCmd 3884 fredorch-rotary: 3885 - btle: 3886 - names: 3887 - - M1_* 3888 - services: 3889 - 0000ae10-0000-1000-8000-00805f9b34fb: 3890 - tx: 0000ae01-0000-1000-8000-00805f9b34fb 3891 - rx: 0000ae02-0000-1000-8000-00805f9b34fb 3892 defaults: 3893 name: Fredorch Rotary Device 3894 features: ··· 3900 - 20 3901 messages: 3902 - ScalarCmd 3903 mizzzee: 3904 - btle: 3905 - names: 3906 - - NFY008 3907 - services: 3908 - 0000eea0-0000-1000-8000-00805f9b34fb: 3909 - tx: 0000eea1-0000-1000-8000-00805f9b34fb 3910 defaults: 3911 name: Mizz Zee Device 3912 features: ··· 3917 - 68 3918 messages: 3919 - ScalarCmd 3920 mizzzee-v2: 3921 - btle: 3922 - names: 3923 - - XHT 3924 - services: 3925 - 0000eea0-0000-1000-8000-00805f9b34fb: 3926 - tx: 0000ee01-0000-1000-8000-00805f9b34fb 3927 defaults: 3928 name: Mizz Zee Device 3929 features: ··· 3934 - 68 3935 messages: 3936 - ScalarCmd 3937 mizzzee-v3: 3938 - btle: 3939 - names: 3940 - - XHTKJ 3941 - services: 3942 - 0000ff10-0000-1000-8000-00805f9b34fb: 3943 - tx: 0000ff12-0000-1000-8000-00805f9b34fb 3944 defaults: 3945 name: Mizz Zee Device 3946 features: ··· 3951 - 1000 3952 messages: 3953 - ScalarCmd 3954 htk_bm: 3955 - btle: 3956 - names: 3957 - - HTK-BLE-BM001 3958 - services: 3959 - 0000180f-0000-1000-8000-00805f9b34fb: 3960 - rxblebattery: 00002a19-0000-1000-8000-00805f9b34fb 3961 - 00001802-0000-1000-8000-00805f9b34fb: 3962 - tx: 00002a06-0000-1000-8000-00805f9b34fb 3963 defaults: 3964 name: HTK Breast Massager 3965 features: ··· 3977 - 1 3978 messages: 3979 - ScalarCmd 3980 ankni: 3981 - btle: 3982 - names: 3983 - - DSJM 3984 - services: 3985 - 0000fe00-0000-1000-8000-00805f9b34fb: 3986 - tx: 0000fe01-0000-1000-8000-00805f9b34fb 3987 - 0000fffe-0000-1000-8000-00805f9b34fb: 3988 - tx: 0000fe02-0000-1000-8000-00805f9b34fb 3989 - 0000180a-0000-1000-8000-00805f9b34fb: 3990 - generic0: 00002a50-0000-1000-8000-00805f9b34fb 3991 defaults: 3992 name: Roselex Device 3993 features: ··· 3998 - 3 3999 messages: 4000 - ScalarCmd 4001 hgod: 4002 - btle: 4003 - names: 4004 - - AMN NEO 4005 - services: 4006 - 0000ffe3-0000-1000-8000-00805f9b34fb: 4007 - tx: 0000ffe1-0000-1000-8000-00805f9b34fb 4008 - rx: 0000ffe2-0000-1000-8000-00805f9b34fb 4009 defaults: 4010 name: Hgod Device 4011 features: ··· 4016 - 10 4017 messages: 4018 - ScalarCmd 4019 lovedistance: 4020 - btle: 4021 - names: 4022 - - REACH G 4023 - - REACH 4024 - - MAG 4025 - - SPAN 4026 - - RANGE 4027 - services: 4028 - 0000ff00-0000-1000-8000-00805f9b34fb: 4029 - tx: 0000ff01-0000-1000-8000-00805f9b34fb 4030 - rx: 0000ff02-0000-1000-8000-00805f9b34fb 4031 defaults: 4032 name: Love Distance Device 4033 features: ··· 4054 - identifier: 4055 - RANGE 4056 name: Love Distance Range 4057 satisfyer: 4058 - btle: 4059 - names: 4060 - - SF * 4061 - manufacturer-data: 4062 - - company: 93 4063 - data: 4064 - - 0 4065 - - 0 4066 - - 39 4067 - - company: 93 4068 - data: 4069 - - 0 4070 - - 0 4071 - - 40 4072 - services: 4073 - 0000180a-0000-1000-8000-00805f9b34fb: 4074 - rxblemodel: 00002a24-0000-1000-8000-00805f9b34fb 4075 - 51361500-c5e7-47c7-8a6e-47ebc99d80e8: 4076 - command: 51361501-c5e7-47c7-8a6e-47ebc99d80e8 4077 - tx: 51361502-c5e7-47c7-8a6e-47ebc99d80e8 4078 defaults: 4079 name: Satisfyer Device 4080 features: ··· 5121 - 100 5122 messages: 5123 - ScalarCmd 5124 mannuo: 5125 - btle: 5126 - names: 5127 - - Sex toys 5128 - - Sex Toys 5129 - - LXCDVP 5130 - - MANO PRODUCT 5131 - services: 5132 - 0000fff0-0000-1000-8000-00805f9b34fb: 5133 - tx: 0000fff1-0000-1000-8000-00805f9b34fb 5134 - rx: 0000fff4-0000-1000-8000-00805f9b34fb 5135 defaults: 5136 name: ManNuo Device 5137 features: ··· 5142 - 3 5143 messages: 5144 - ScalarCmd 5145 kgoal-boost: 5146 - btle: 5147 - names: 5148 - - Boost 5149 - services: 5150 - 0000180f-0000-1000-8000-00805f9b34fb: 5151 - rxblebattery: 00002a19-0000-1000-8000-00805f9b34fb 5152 - 8e7c6065-7656-17ad-1b41-b53d1a548e0d: 5153 - rxpressure: 10c2be2d-d2d5-b7a8-5f42-e2468c9ebbf5 5154 defaults: 5155 name: KGoal Boost 5156 features: ··· 5162 - 100 5163 messages: 5164 - SensorReadCmd 5165 meese: 5166 - btle: 5167 - names: 5168 - - Meese-V389 5169 - - Meese-cd 5170 - services: 5171 - 0000ffe0-0000-1000-8000-00805f9b34fb: 5172 - tx: 0000ffe1-0000-1000-8000-00805f9b34fb 5173 defaults: 5174 name: Meese Device 5175 features: ··· 5202 - 10 5203 messages: 5204 - ScalarCmd 5205 hismith: 5206 - btle: 5207 - names: 5208 - - HISMITH 5209 - - Wildolo 5210 - - "\aHISMITH" 5211 - services: 5212 - 0000ffe5-0000-1000-8000-00805f9b34fb: 5213 - tx: 0000ffe9-0000-1000-8000-00805f9b34fb 5214 - 0000ff90-0000-1000-8000-00805f9b34fb: 5215 - rxblemodel: 0000ff96-0000-1000-8000-00805f9b34fb 5216 defaults: 5217 name: Hismith device 5218 features: ··· 5264 - 100 5265 messages: 5266 - ScalarCmd 5267 hismith-mini: 5268 - btle: 5269 - names: 5270 - - Auxfun-Box 5271 - - Sinloli 5272 - - Sinloli-Sherry 5273 - - Eropair * 5274 - - HISMITH S1 5275 - services: 5276 - 0000ffe5-0000-1000-8000-00805f9b34fb: 5277 - tx: 0000ffe9-0000-1000-8000-00805f9b34fb 5278 - 0000ff90-0000-1000-8000-00805f9b34fb: 5279 - rxblemodel: 0000ff96-0000-1000-8000-00805f9b34fb 5280 defaults: 5281 name: Hismith Mini device 5282 features: ··· 5375 - 100 5376 messages: 5377 - ScalarCmd 5378 hismith-servo: 5379 - btle: 5380 - names: 5381 - - HISMITH S2 5382 - services: 5383 - 0000ffe5-0000-1000-8000-00805f9b34fb: 5384 - tx: 0000ffe9-0000-1000-8000-00805f9b34fb 5385 - 0000ff90-0000-1000-8000-00805f9b34fb: 5386 - rxblemodel: 0000ff96-0000-1000-8000-00805f9b34fb 5387 defaults: 5388 name: Hismith servo device 5389 features: ··· 5399 - identifier: 5400 - '1101' 5401 name: Hismith Servo 5402 wetoy: 5403 - btle: 5404 - names: 5405 - - WeToy 5406 - services: 5407 - 0000fff0-0000-1000-8000-00805f9b34fb: 5408 - tx: 0000fff3-0000-1000-8000-00805f9b34fb 5409 defaults: 5410 name: WeToy MiNa 5411 features: ··· 5416 - 3 5417 messages: 5418 - ScalarCmd 5419 pink_punch: 5420 - btle: 5421 - names: 5422 - - Pink_Punch 5423 - - PinkPunch_Peachu 5424 - services: 5425 - 0000ffe0-0000-1000-8000-00805f9b34fb: 5426 - tx: 0000ffe1-0000-1000-8000-00805f9b34fb 5427 defaults: 5428 name: Pink Punch Sunset Mushroom 5429 configurations: ··· 5438 - 100 5439 messages: 5440 - ScalarCmd 5441 sakuraneko: 5442 - btle: 5443 - names: 5444 - - sakuraneko-01 5445 - - sakuraneko-02 5446 - - sakuraneko-03 5447 - - sakuraneko-04 5448 - services: 5449 - 0000ffe0-0000-1000-8000-00805f9b34fb: 5450 - tx: 0000ffe1-0000-1000-8000-00805f9b34fb 5451 defaults: 5452 name: Sakuraneko Device 5453 features: ··· 5486 - 100 5487 messages: 5488 - ScalarCmd 5489 synchro: 5490 - btle: 5491 - names: 5492 - - Shinkuro 5493 - - synchro2 5494 - - synchro EX 5495 - services: 5496 - 0000ffe0-0000-1000-8000-00805f9b34fb: 5497 - tx: 0000ffe1-0000-1000-8000-00805f9b34fb 5498 defaults: 5499 name: Synchro 5500 features: ··· 5509 - identifier: 5510 - synchro EX 5511 name: Synchro Exchange 5512 tryfun: 5513 - btle: 5514 - names: 5515 - - TRYFUN-ONE 5516 - services: 5517 - 0000ff10-0000-1000-8000-00805f9b34fb: 5518 - tx: 0000fff1-0000-1000-8000-00805f9b34fb 5519 defaults: 5520 name: TryFun Yuan Series 5521 features: ··· 5533 - 9 5534 messages: 5535 - ScalarCmd 5536 metaxsire: 5537 - btle: 5538 - names: 5539 - - Rex 5540 - - Cali 5541 - - Olis 5542 - - LY213A01 5543 - services: 5544 - 0000ffe0-0000-1000-8000-00805f9b34fb: 5545 - tx: 0000ffe1-0000-1000-8000-00805f9b34fb 5546 - rx: 0000ffe2-0000-1000-8000-00805f9b34fb 5547 defaults: 5548 name: metaXsire Device 5549 features: ··· 5619 - 255 5620 messages: 5621 - ScalarCmd 5622 metaxsire-repeat: 5623 - btle: 5624 - names: 5625 - - LY199B01 5626 - - LY234A01 5627 - - LY271A01 5628 - - LY270A01 5629 - services: 5630 - 0000ffe0-0000-1000-8000-00805f9b34fb: 5631 - tx: 0000ffe1-0000-1000-8000-00805f9b34fb 5632 - rx: 0000ffe2-0000-1000-8000-00805f9b34fb 5633 defaults: 5634 name: Cooxer Bullet Vibe 5635 features: ··· 5653 - identifier: 5654 - LY270A01 5655 name: metaXsire Una 5656 metaxsire-v2: 5657 - btle: 5658 - names: 5659 - - LY272A01 5660 - services: 5661 - 0000bae0-0000-1000-8000-00805f9b34fb: 5662 - tx: 0000bae1-0000-1000-8000-00805f9b34fb 5663 defaults: 5664 name: metaXsire Nolan 5665 features: ··· 5677 - 20 5678 messages: 5679 - ScalarCmd 5680 metaxsire-v3: 5681 - btle: 5682 - names: 5683 - - TAY001 5684 - services: 5685 - 0000fff0-0000-1000-8000-00805f9b34fb: 5686 - tx: 0000fe02-0000-1000-8000-00805f9b34fb 5687 defaults: 5688 name: metaXsire Tay 5689 features: ··· 5694 - 20 5695 messages: 5696 - ScalarCmd 5697 cowgirl: 5698 - btle: 5699 - names: 5700 - - THE COWGIRL 5701 - - THE UNICORN 5702 - services: 5703 - 0000fe00-0000-1000-8000-00805f9b34fb: 5704 - tx: 0000fe01-0000-1000-8000-00805f9b34fb 5705 defaults: 5706 name: The Cowgirl Device 5707 features: ··· 5726 - identifier: 5727 - THE UNICORN 5728 name: The Unicorn 5729 galaku-pump: 5730 - btle: 5731 - names: 5732 - - V415 5733 - services: 5734 - 00001000-0000-1000-8000-00805f9b34fb: 5735 - tx: 00001001-0000-1000-8000-00805f9b34fb 5736 defaults: 5737 name: Galaku Device 5738 features: ··· 5754 - identifier: 5755 - V415 5756 name: Galaku Nebula 5757 xibao: 5758 - btle: 5759 - names: 5760 - - CCYB_* 5761 - services: 5762 - 0000fff0-0000-1000-8000-00805f9b34fb: 5763 - tx: 0000fff2-0000-1000-8000-00805f9b34fb 5764 defaults: 5765 name: Xibao Smart Masturbation Cup 5766 features: ··· 5771 - 99 5772 messages: 5773 - ScalarCmd 5774 sensee: 5775 - btle: 5776 - names: 5777 - - CTY222S4 5778 - services: 5779 - 0000fff0-0000-1000-8000-00805f9b34fb: 5780 - tx: 0000fff5-0000-1000-8000-00805f9b34fb 5781 defaults: 5782 name: Sensee Diandou Rabbit 5783 features: ··· 5788 - 100 5789 messages: 5790 - ScalarCmd 5791 sensee-capsule: 5792 - btle: 5793 - names: 5794 - - CCPA10S2 5795 - services: 5796 - 0000fff0-0000-1000-8000-00805f9b34fb: 5797 - tx: 0000fff5-0000-1000-8000-00805f9b34fb 5798 defaults: 5799 name: Sensee Capsule 5800 features: ··· 5812 - 3 5813 messages: 5814 - ScalarCmd 5815 fox: 5816 - btle: 5817 - names: 5818 - - FOX 5819 - - FOX M70 Pro 5820 - - FoxM70Pro 5821 - services: 5822 - 0000ae00-0000-1000-8000-00805f9b34fb: 5823 - tx: 0000ae01-0000-1000-8000-00805f9b34fb 5824 defaults: 5825 name: Fox Device 5826 features: ··· 5831 - 3 5832 messages: 5833 - ScalarCmd 5834 kizuna: 5835 - serial: 5836 - - port: default 5837 - baud-rate: 19200 5838 - data-bits: 8 5839 - parity: 'N' 5840 - stop-bits: 1 5841 defaults: 5842 name: Kizuna Smart 5843 features: ··· 5848 - 9 5849 messages: 5850 - ScalarCmd 5851 xiuxiuda: 5852 - btle: 5853 - names: 5854 - - XXD-Lush* 5855 - services: 5856 - 53300001-0023-4bd4-bbd5-a6920e4c5653: 5857 - tx: 53300003-0023-4bd4-bbd5-a6920e4c5653 5858 defaults: 5859 name: Xiuxiuda Device 5860 features: ··· 5865 - 19 5866 messages: 5867 - ScalarCmd 5868 longlosttouch: 5869 - btle: 5870 - names: 5871 - - RS-KNW 5872 - services: 5873 - 0000cb60-0000-1000-8000-00805f9b34fb: 5874 - tx: 0000cb61-0000-1000-8000-00805f9b34fb 5875 - rx: 0000cb62-0000-1000-8000-00805f9b34fb 5876 defaults: 5877 name: Long Lost Touch Possible Kiss 5878 features: ··· 5890 - 100 5891 messages: 5892 - ScalarCmd 5893 adrienlastic: 5894 - btle: 5895 - names: 5896 - - Placeholder to avoid conflict with bad attempt to clone a Lovense Lush 5897 - advertised-services: 5898 - - 00001320-0000-1000-8000-00805f9b34fb 5899 - services: 5900 - 6e400001-b5a3-f393-e0a9-e50e24dcca9e: 5901 - tx: 6e400002-b5a3-f393-e0a9-e50e24dcca9e 5902 defaults: 5903 name: Adrien Lastic Device 5904 features: ··· 5916 - identifier: 5917 - LVS-S002 5918 name: Adrien Lastic Revelation 5919 nintendo-joycon: 5920 - hid: 5921 - - vendor-id: 1406 5922 - product-id: 8199 5923 - - vendor-id: 1406 5924 - product-id: 8198 5925 - - vendor-id: 1406 5926 - product-id: 8201 5927 defaults: 5928 name: Nintendo Joycon 5929 features: ··· 5934 - 1000 5935 messages: 5936 - ScalarCmd 5937 foreo: 5938 - btle: 5939 - names: 5940 - - FOFO 5941 - - LUNA fofo 5942 - - LUNA FOFO 5943 - - LUNA PLAY SMART 5944 - - LUNA PLAYSMART2 5945 - - LUNA PLAY SMART2 5946 - - LUNA play smart2 5947 - - LUNA play smart 2 5948 - - LUNA 3 5949 - - LUNA3 5950 - - LUNA3PLUS 5951 - - LUNA3 PLUS 5952 - - LUNA 3 PLUS 5953 - - LUNA 3 plus 5954 - - LUNA 3 MEN 5955 - - LUNA3MEN 5956 - - LUNA MINI3 5957 - - LUNA MINI 3 5958 - - LUNA mini 3 5959 - - LUNA4PLUS 5960 - - LUNA4 5961 - - LUNA 4 5962 - - LUNA4PLUS 5963 - - LUNA4 PLUS 5964 - - LUNA 4 plus 5965 - - LUNA4MEN 5966 - - LUNA 4 MEN 5967 - - LUNA 4 FOR MEN 5968 - - LUNA MINI4 5969 - - LUNA MINI 4 5970 - - LUNA mini 4 5971 - - LUNA 4 mini 5972 - - UFO 5973 - - UFO mini 5974 - - UFO MINI 5975 - - UFO MIN 5976 - - UFO2 5977 - - UFO 2 5978 - - UFOMINI2 5979 - - UFO mini 2 5980 - - UFO3 5981 - - UFO3mini 5982 - - UFO3go 5983 - - UFO3led 5984 - - BEAR 5985 - - BEAR_MINI 5986 - - BEAR MINI 5987 - - BEAR mini 5988 - - BEAR2 5989 - - BEAR 2 5990 - - BEAR2go 5991 - - BEAR2body 5992 - - BEAR2eyes 5993 - - KIWI 5994 - - KIWI derma 5995 - services: 5996 - 0000fff0-0000-1000-8000-00805f9b34fb: 5997 - tx: 0000fff1-0000-1000-8000-00805f9b34fb 5998 defaults: 5999 name: Foreo Device 6000 features: ··· 6112 - identifier: 6113 - KIWI derma 6114 name: Foreo KIWI derma 6115 monsterpub: 6116 - btle: 6117 - names: 6118 - - MonsterPub 6119 - services: 6120 - 00006000-0000-1000-8000-00805f9b34fb: 6121 - tx: 00006001-0000-1000-8000-00805f9b34fb 6122 - txmode: 00006002-0000-1000-8000-00805f9b34fb 6123 - txvibrate: 00006003-0000-1000-8000-00805f9b34fb 6124 - 00006010-0000-1000-8000-00805f9b34fb: 6125 - rxblemodel: 00006014-0000-1000-8000-00805f9b34fb 6126 - 00008000-0000-1000-8000-00805f9b34fb: 6127 - rx: 00008001-0000-1000-8000-00805f9b34fb 6128 defaults: 6129 name: Sistalk MonsterPub Device 6130 features: ··· 6214 - identifier: 6215 - MP1N_QC_TL_P2 6216 name: Sistalk MonsterPub BeatHeart 6217 joyhub: 6218 - btle: 6219 - names: 6220 - - J-Petalwish2 6221 - - J-VortexTongue 6222 - - J-Velocity 6223 - - JOYHUB-ROSELLA2 6224 - - J-VibSiren 6225 - - J-ElixirEgg 6226 - - J-RetroGuard 6227 - - J-TrueForm3 6228 - services: 6229 - 0000ffa0-0000-1000-8000-00805f9b34fb: 6230 - tx: 0000ffa1-0000-1000-8000-00805f9b34fb 6231 defaults: 6232 name: JoyHub Device 6233 features: ··· 6325 - 255 6326 messages: 6327 - ScalarCmd 6328 joyhub-v2: 6329 - btle: 6330 - names: 6331 - - J-Pearlconch 6332 - - J-PetiteRose 6333 - - J-MoonHorn 6334 - - J-VibTrefoil 6335 - - J-Panther 6336 - - J-Mecha 6337 - - J-Lagoon 6338 - - J-Firedragon 6339 - services: 6340 - 0000ffa0-0000-1000-8000-00805f9b34fb: 6341 - tx: 0000ffa1-0000-1000-8000-00805f9b34fb 6342 defaults: 6343 name: JoyHub Device 6344 features: ··· 6499 - 255 6500 messages: 6501 - ScalarCmd 6502 itoys: 6503 - btle: 6504 - names: 6505 - - 26-021-B 6506 - services: 6507 - 0000ffa0-0000-1000-8000-00805f9b34fb: 6508 - tx: 0000ffa1-0000-1000-8000-00805f9b34fb 6509 defaults: 6510 name: iToys Seagull 6511 features: ··· 6516 - 3 6517 messages: 6518 - ScalarCmd 6519 leten: 6520 - btle: 6521 - names: 6522 - - T528-LT 6523 - - F537-LT 6524 - - F520B-LT 6525 - - F520A-LT 6526 - services: 6527 - 0000fff0-0000-1000-8000-00805f9b34fb: 6528 - tx: 0000fff1-0000-1000-8000-00805f9b34fb 6529 - 0000ffe0-0000-1000-8000-00805f9b34fb: 6530 - rx: 0000ffe1-0000-1000-8000-00805f9b34fb 6531 defaults: 6532 name: Leten Device 6533 features: ··· 6538 - 25 6539 messages: 6540 - ScalarCmd 6541 vibcrafter: 6542 - btle: 6543 - names: 6544 - - be gentle 6545 - services: 6546 - 53300051-0060-4bd4-bbe5-a6920e4c5663: 6547 - tx: 53300052-0060-4bd4-bbe5-a6920e4c5663 6548 - rx: 53300053-0060-4bd4-bbe5-a6920e4c5663 6549 defaults: 6550 name: VibCrafter Device 6551 features: ··· 6563 - 99 6564 messages: 6565 - ScalarCmd
··· 3 minor: 0 4 protocols: 5 lovense: 6 defaults: 7 name: Lovense Device 8 features: ··· 387 - 100 388 messages: 389 - SensorReadCmd 390 + communication: 391 + - btle: 392 + names: 393 + - LVS-* 394 + - LOVE-* 395 + manufacturer-data: 396 + - company: 620 397 + data: 398 + - 255 399 + - 33 400 + services: 401 + 0000fff0-0000-1000-8000-00805f9b34fb: 402 + tx: 0000fff2-0000-1000-8000-00805f9b34fb 403 + rx: 0000fff1-0000-1000-8000-00805f9b34fb 404 + 6e400001-b5a3-f393-e0a9-e50e24dcca9e: 405 + tx: 6e400002-b5a3-f393-e0a9-e50e24dcca9e 406 + rx: 6e400003-b5a3-f393-e0a9-e50e24dcca9e 407 + 50300001-0024-4bd4-bbd5-a6920e4c5653: 408 + tx: 50300002-0024-4bd4-bbd5-a6920e4c5653 409 + rx: 50300003-0024-4bd4-bbd5-a6920e4c5653 410 + 57300001-0023-4bd4-bbd5-a6920e4c5653: 411 + tx: 57300002-0023-4bd4-bbd5-a6920e4c5653 412 + rx: 57300003-0023-4bd4-bbd5-a6920e4c5653 413 + 5a300001-0024-4bd4-bbd5-a6920e4c5653: 414 + tx: 5a300002-0024-4bd4-bbd5-a6920e4c5653 415 + rx: 5a300003-0024-4bd4-bbd5-a6920e4c5653 416 + 50300001-0023-4bd4-bbd5-a6920e4c5653: 417 + tx: 50300002-0023-4bd4-bbd5-a6920e4c5653 418 + rx: 50300003-0023-4bd4-bbd5-a6920e4c5653 419 + 53300001-0023-4bd4-bbd5-a6920e4c5653: 420 + tx: 53300002-0023-4bd4-bbd5-a6920e4c5653 421 + rx: 53300003-0023-4bd4-bbd5-a6920e4c5653 422 + 5a300001-0023-4bd4-bbd5-a6920e4c5653: 423 + tx: 5a300002-0023-4bd4-bbd5-a6920e4c5653 424 + rx: 5a300003-0023-4bd4-bbd5-a6920e4c5653 425 + 4f300001-0023-4bd4-bbd5-a6920e4c5653: 426 + tx: 4f300002-0023-4bd4-bbd5-a6920e4c5653 427 + rx: 4f300003-0023-4bd4-bbd5-a6920e4c5653 428 + 42300001-0023-4bd4-bbd5-a6920e4c5653: 429 + tx: 42300002-0023-4bd4-bbd5-a6920e4c5653 430 + rx: 42300003-0023-4bd4-bbd5-a6920e4c5653 431 + 43300001-0023-4bd4-bbd5-a6920e4c5653: 432 + tx: 43300002-0023-4bd4-bbd5-a6920e4c5653 433 + rx: 43300003-0023-4bd4-bbd5-a6920e4c5653 434 + 4c300001-0023-4bd4-bbd5-a6920e4c5653: 435 + tx: 4c300002-0023-4bd4-bbd5-a6920e4c5653 436 + rx: 4c300003-0023-4bd4-bbd5-a6920e4c5653 437 + 4c410001-0023-4bd4-bbd5-a6920e4c5653: 438 + tx: 4c410002-0023-4bd4-bbd5-a6920e4c5653 439 + rx: 4c410003-0023-4bd4-bbd5-a6920e4c5653 440 + 56300001-0023-4bd4-bbd5-a6920e4c5653: 441 + tx: 56300002-0023-4bd4-bbd5-a6920e4c5653 442 + rx: 56300003-0023-4bd4-bbd5-a6920e4c5653 443 + 58300001-0023-4bd4-bbd5-a6920e4c5653: 444 + tx: 58300002-0023-4bd4-bbd5-a6920e4c5653 445 + rx: 58300003-0023-4bd4-bbd5-a6920e4c5653 446 + 52300001-0023-4bd4-bbd5-a6920e4c5653: 447 + tx: 52300002-0023-4bd4-bbd5-a6920e4c5653 448 + rx: 52300003-0023-4bd4-bbd5-a6920e4c5653 449 + 46300001-0023-4bd4-bbd5-a6920e4c5653: 450 + tx: 46300002-0023-4bd4-bbd5-a6920e4c5653 451 + rx: 46300003-0023-4bd4-bbd5-a6920e4c5653 452 + 50300011-0023-4bd4-bbd5-a6920e4c5653: 453 + tx: 50300012-0023-4bd4-bbd5-a6920e4c5653 454 + rx: 50300013-0023-4bd4-bbd5-a6920e4c5653 455 + 4a300001-0023-4bd4-bbd5-a6920e4c5653: 456 + tx: 4a300002-0023-4bd4-bbd5-a6920e4c5653 457 + rx: 4a300003-0023-4bd4-bbd5-a6920e4c5653 458 + 45440001-0023-4bd4-bbd5-a6920e4c5653: 459 + tx: 45440002-0023-4bd4-bbd5-a6920e4c5653 460 + rx: 45440003-0023-4bd4-bbd5-a6920e4c5653 461 + 45420001-0023-4bd4-bbd5-a6920e4c5653: 462 + tx: 45420002-0023-4bd4-bbd5-a6920e4c5653 463 + rx: 45420003-0023-4bd4-bbd5-a6920e4c5653 464 + 54300001-0023-4bd4-bbd5-a6920e4c5653: 465 + tx: 54300002-0023-4bd4-bbd5-a6920e4c5653 466 + rx: 54300003-0023-4bd4-bbd5-a6920e4c5653 467 + 45490001-0023-4bd4-bbd5-a6920e4c5653: 468 + tx: 45490002-0023-4bd4-bbd5-a6920e4c5653 469 + rx: 45490003-0023-4bd4-bbd5-a6920e4c5653 470 + 4e300001-0023-4bd4-bbd5-a6920e4c5653: 471 + tx: 4e300002-0023-4bd4-bbd5-a6920e4c5653 472 + rx: 4e300003-0023-4bd4-bbd5-a6920e4c5653 473 + 45410001-0023-4bd4-bbd5-a6920e4c5653: 474 + tx: 45410002-0023-4bd4-bbd5-a6920e4c5653 475 + rx: 45410003-0023-4bd4-bbd5-a6920e4c5653 476 + 51300001-0023-4bd4-bbd5-a6920e4c5653: 477 + tx: 51300002-0023-4bd4-bbd5-a6920e4c5653 478 + rx: 51300003-0023-4bd4-bbd5-a6920e4c5653 479 + 45460001-0023-4bd4-bbd5-a6920e4c5653: 480 + tx: 45460002-0023-4bd4-bbd5-a6920e4c5653 481 + rx: 45460003-0023-4bd4-bbd5-a6920e4c5653 482 + 454c0001-0023-4bd4-bbd5-a6920e4c5653: 483 + tx: 454c0002-0023-4bd4-bbd5-a6920e4c5653 484 + rx: 454c0003-0023-4bd4-bbd5-a6920e4c5653 485 + 55300001-0023-4bd4-bbd5-a6920e4c5653: 486 + tx: 55300002-0023-4bd4-bbd5-a6920e4c5653 487 + rx: 55300003-0023-4bd4-bbd5-a6920e4c5653 488 + 53440001-0023-4bd4-bbd5-a6920e4c5653: 489 + tx: 53440002-0023-4bd4-bbd5-a6920e4c5653 490 + rx: 53440003-0023-4bd4-bbd5-a6920e4c5653 491 + 48300001-0023-4bd4-bbd5-a6920e4c5653: 492 + tx: 48300002-0023-4bd4-bbd5-a6920e4c5653 493 + rx: 48300003-0023-4bd4-bbd5-a6920e4c5653 494 lovense-connect-service: 495 defaults: 496 name: Lovense Connect Service Device 497 features: ··· 861 - 100 862 messages: 863 - SensorReadCmd 864 + communication: 865 + - lovense-connect-service: 866 + exists: true 867 xinput: 868 defaults: 869 name: XBox (XInput) Compatible Gamepad 870 features: ··· 882 - 65535 883 messages: 884 - ScalarCmd 885 + communication: 886 + - xinput: 887 + exists: true 888 kiiroo-v2: 889 defaults: 890 name: Kiiroo v2 Device 891 features: ··· 903 - identifier: 904 - Onyx2 905 name: Kiiroo Onyx 2 906 + communication: 907 + - btle: 908 + names: 909 + - Launch 910 + - Onyx2 911 + services: 912 + 88f80580-0000-01e6-aace-0002a5d5c51b: 913 + tx: 88f80581-0000-01e6-aace-0002a5d5c51b 914 + rx: 88f80582-0000-01e6-aace-0002a5d5c51b 915 + firmware: 88f80583-0000-01e6-aace-0002a5d5c51b 916 + f60402a6-0293-4bdb-9f20-6758133f7090: 917 + tx: 02962ac9-e86f-4094-989d-231d69995fc2 918 + rx: d44d0393-0731-43b3-a373-8fc70b1f3323 919 + firmware: c7b7a04b-2cc4-40ff-8b10-5d531d1161db 920 libo-elle: 921 defaults: 922 name: Libo Elle Device 923 features: ··· 935 - identifier: 936 - Shuidi 937 name: Libo Elle 2 938 + communication: 939 + - btle: 940 + names: 941 + - PiPiJing 942 + - Shuidi 943 + services: 944 + 00006000-0000-1000-8000-00805f9b34fb: 945 + tx: 00006001-0000-1000-8000-00805f9b34fb 946 + txmode: 00006002-0000-1000-8000-00805f9b34fb 947 libo-shark: 948 defaults: 949 name: Libo Shark 950 features: ··· 962 - 3 963 messages: 964 - ScalarCmd 965 + communication: 966 + - btle: 967 + names: 968 + - ShaYu 969 + services: 970 + 00006000-0000-1000-8000-00805f9b34fb: 971 + tx: 00006001-0000-1000-8000-00805f9b34fb 972 + txmode: 00006002-0000-1000-8000-00805f9b34fb 973 libo-karen: 974 defaults: 975 name: Libo Karen 976 features: [] 977 + communication: 978 + - btle: 979 + names: 980 + - SuoYinQiu 981 + services: 982 + 00006000-0000-1000-8000-00805f9b34fb: 983 + tx: 00006001-0000-1000-8000-00805f9b34fb 984 + txmode: 00006002-0000-1000-8000-00805f9b34fb 985 + 00006050-0000-1000-8000-00805f9b34fb: 986 + rxpressure: 00006051-0000-1000-8000-00805f9b34fb 987 libo-vibes: 988 defaults: 989 name: Libo Vibes Device 990 features: ··· 1082 - 3 1083 messages: 1084 - ScalarCmd 1085 + communication: 1086 + - btle: 1087 + names: 1088 + - XiaoLu 1089 + - LuXiaoHan 1090 + - BaiHu 1091 + - Gugudai 1092 + - Yuyi 1093 + - LuWuShuang 1094 + - LiBo 1095 + - QingTing 1096 + - Huohu 1097 + - Yuyi 1098 + - Haima 1099 + services: 1100 + 00006000-0000-1000-8000-00805f9b34fb: 1101 + tx: 00006001-0000-1000-8000-00805f9b34fb 1102 + txmode: 00006002-0000-1000-8000-00805f9b34fb 1103 magic-motion-1: 1104 defaults: 1105 name: Magic Motion V1 Device 1106 features: ··· 1181 - identifier: 1182 - CBT002 1183 name: FunTown Caleo 1184 + communication: 1185 + - btle: 1186 + names: 1187 + - Smart Mini Vibe* 1188 + - Flamingo 1189 + - Flamingo T 1190 + - Smart Bean 1191 + - Smart Bean3 1192 + - Magic Cell 1193 + - Magic Wand 1194 + - Fugu 1195 + - Fugu2 1196 + - Gballs2 1197 + - GBalls3 1198 + - FM-LILAC-101 1199 + - Xone 1200 + - CBT002 1201 + services: 1202 + 78667579-7b48-43db-b8c5-7928a6b0a335: 1203 + tx: 78667579-a914-49a4-8333-aa3c0cd8fedc 1204 + 0000180f-0000-1000-8000-00805f9b34fb: 1205 + rxblebattery: 00002a19-0000-1000-8000-00805f9b34fb 1206 magic-motion-2: 1207 defaults: 1208 name: Magic Motion V2 Device 1209 features: ··· 1313 - 100 1314 messages: 1315 - SensorReadCmd 1316 + communication: 1317 + - btle: 1318 + names: 1319 + - Eidolon 1320 + - Lipstick 1321 + - Sword 1322 + - Curve 1323 + - Solstice X 1324 + - funwand 1325 + - CBT001 1326 + services: 1327 + 78667579-7b48-43db-b8c5-7928a6b0a335: 1328 + tx: 78667579-a914-49a4-8333-aa3c0cd8fedc 1329 + 0000180f-0000-1000-8000-00805f9b34fb: 1330 + rxblebattery: 00002a19-0000-1000-8000-00805f9b34fb 1331 magic-motion-3: 1332 defaults: 1333 name: LoveLife Krush 1334 features: ··· 1347 - 100 1348 messages: 1349 - SensorReadCmd 1350 + communication: 1351 + - btle: 1352 + names: 1353 + - Krush 1354 + services: 1355 + 78667579-7b48-43db-b8c5-7928a6b0a335: 1356 + tx: 78667579-a914-49a4-8333-aa3c0cd8fedc 1357 + 0000180f-0000-1000-8000-00805f9b34fb: 1358 + rxblebattery: 00002a19-0000-1000-8000-00805f9b34fb 1359 magic-motion-4: 1360 defaults: 1361 name: Magic Motion V4 Device 1362 features: ··· 1446 - 100 1447 messages: 1448 - SensorReadCmd 1449 + communication: 1450 + - btle: 1451 + names: 1452 + - funone 1453 + - Magic Sundi 1454 + - Kegel Coach 1455 + - Magic Lotos 1456 + - nyx 1457 + - umi 1458 + - funkegel 1459 + - bobi2 1460 + services: 1461 + 78667579-7b48-43db-b8c5-7928a6b0a335: 1462 + tx: 78667579-a914-49a4-8333-aa3c0cd8fedc 1463 + 0000180f-0000-1000-8000-00805f9b34fb: 1464 + rxblebattery: 00002a19-0000-1000-8000-00805f9b34fb 1465 mysteryvibe: 1466 defaults: 1467 name: Mysteryvibe Device 1468 features: ··· 1533 - 56 1534 messages: 1535 - ScalarCmd 1536 + communication: 1537 + - btle: 1538 + names: 1539 + - MV Crescendo 1540 + - 'MV Tenuto ' 1541 + - 'MV Poco ' 1542 + services: 1543 + f0006900-110c-478b-b74b-6f403b364a9c: 1544 + txmode: f0006901-110c-478b-b74b-6f403b364a9c 1545 + txvibrate: f0006903-110c-478b-b74b-6f403b364a9c 1546 mysteryvibe-v2: 1547 defaults: 1548 name: Mysteryvibe V2 Device 1549 features: ··· 1693 - 56 1694 messages: 1695 - ScalarCmd 1696 + communication: 1697 + - btle: 1698 + names: 1699 + - 6907 MV1 1700 + - 6908 MV1 1701 + - 6909 MV1 1702 + - 6914 MV1 1703 + - 6915 MV1 1704 + services: 1705 + f0006900-110c-478b-b74b-6f403b364a9c: 1706 + txmode: f0006901-110c-478b-b74b-6f403b364a9c 1707 + txvibrate: f0006903-110c-478b-b74b-6f403b364a9c 1708 picobong: 1709 defaults: 1710 name: Picobong Device 1711 features: ··· 1735 - Egg driver 1736 - Surfer_plug 1737 name: Picobong Surfer 1738 + communication: 1739 + - btle: 1740 + names: 1741 + - Blow hole 1742 + - Picobong Male Toy 1743 + - Diver 1744 + - Picobong Egg 1745 + - Life guard 1746 + - Picobong Ring 1747 + - Surfer 1748 + - Picobong Butt Plug 1749 + - Egg driver 1750 + - Surfer_plug 1751 + services: 1752 + 0000fff0-0000-1000-8000-00805f9b34fb: 1753 + tx: 0000fff1-0000-1000-8000-00805f9b34fb 1754 vibratissimo: 1755 defaults: 1756 name: Vibratissimo Device 1757 features: ··· 1832 - 100 1833 messages: 1834 - SensorReadCmd 1835 + communication: 1836 + - btle: 1837 + names: 1838 + - Vibratissimo 1839 + services: 1840 + 00001523-1212-efde-1523-785feabcd123: 1841 + txmode: 00001524-1212-efde-1523-785feabcd123 1842 + txvibrate: 00001526-1212-efde-1523-785feabcd123 1843 + rx: 00001527-1212-efde-1523-785feabcd123 1844 + 0000180a-0000-1000-8000-00805f9b34fb: 1845 + rxblemodel: 00002a24-0000-1000-8000-00805f9b34fb 1846 + 0000180f-0000-1000-8000-00805f9b34fb: 1847 + rxblebattery: 00002a19-0000-1000-8000-00805f9b34fb 1848 wevibe: 1849 defaults: 1850 name: WeVibe Device 1851 features: ··· 1955 - 15 1956 messages: 1957 - ScalarCmd 1958 + communication: 1959 + - btle: 1960 + names: 1961 + - Cougar 1962 + - 4 Plus 1963 + - 4_Plus 1964 + - 4plus 1965 + - Bloom 1966 + - classic 1967 + - Classic 1968 + - Ditto 1969 + - Gala 1970 + - Jive 1971 + - Nova 1972 + - Pivot 1973 + - Rave 1974 + - Sync 1975 + - Verge 1976 + - Wish 1977 + services: 1978 + f000bb03-0451-4000-b000-000000000000: 1979 + tx: f000c000-0451-4000-b000-000000000000 1980 + rx: f000b000-0451-4000-b000-000000000000 1981 wevibe-8bit: 1982 defaults: 1983 name: WeVibe 8-bit Device 1984 features: ··· 2065 - 27 2066 messages: 2067 - ScalarCmd 2068 + communication: 2069 + - btle: 2070 + names: 2071 + - Melt 2072 + - Moxie 2073 + - Vector 2074 + - Wand 2075 + - Bond 2076 + - Nelson 2077 + - Nova2 2078 + - Nova_2 2079 + - Nova 2 2080 + services: 2081 + f000bb03-0451-4000-b000-000000000000: 2082 + tx: f000c000-0451-4000-b000-000000000000 2083 + rx: f000b000-0451-4000-b000-000000000000 2084 wevibe-legacy: 2085 defaults: 2086 name: WeVibe Realm Reina 2087 features: [] 2088 + communication: 2089 + - btle: 2090 + names: 2091 + - Reina 2092 + - imassager 2093 + - Interactive Massager 2094 + - '03' 2095 + services: 2096 + f000bb03-0451-4000-b000-000000000000: 2097 + tx: f000c000-0451-4000-b000-000000000000 2098 + rx: f000b000-0451-4000-b000-000000000000 2099 wevibe-chorus: 2100 defaults: 2101 name: WeVibe Chorus 2102 features: ··· 2144 - 30 2145 messages: 2146 - ScalarCmd 2147 + communication: 2148 + - btle: 2149 + names: 2150 + - Chorus 2151 + - skeena 2152 + - Sync 2 2153 + - Sync Lite 2154 + services: 2155 + f000bb03-0451-4000-b000-000000000000: 2156 + tx: f000c000-0451-4000-b000-000000000000 2157 + rx: f000b000-0451-4000-b000-000000000000 2158 youcups: 2159 defaults: 2160 name: Youcups Warrior II 2161 features: ··· 2166 - 8 2167 messages: 2168 - ScalarCmd 2169 + communication: 2170 + - btle: 2171 + names: 2172 + - Youcups 2173 + services: 2174 + 0000fee9-0000-1000-8000-00805f9b34fb: 2175 + tx: d44bc439-abfd-45a2-b575-925416129600 2176 cueme: 2177 defaults: 2178 name: Cueme Device 2179 features: ··· 2272 - 15 2273 messages: 2274 - ScalarCmd 2275 + communication: 2276 + - btle: 2277 + names: 2278 + - FUNCODE_* 2279 + services: 2280 + 0000fff0-0000-1000-8000-00805f9b34fb: 2281 + tx: 0000fff1-0000-1000-8000-00805f9b34fb 2282 kiiroo-v2-vibrator: 2283 defaults: 2284 name: Kiiroo V2 Vibrator Device 2285 features: ··· 2406 - 100 2407 messages: 2408 - ScalarCmd 2409 + communication: 2410 + - btle: 2411 + names: 2412 + - Pearl2 2413 + - Pearl2+ 2414 + - Fuse 2415 + - Virtual Blowbot 2416 + - Titan 2417 + - Virtual Rabbit 2418 + services: 2419 + 88f82580-0000-01e6-aace-0002a5d5c51b: 2420 + tx: 88f82581-0000-01e6-aace-0002a5d5c51b 2421 + rxtouch: 88f82582-0000-01e6-aace-0002a5d5c51b 2422 + rxaccel: 88f82584-0000-01e6-aace-0002a5d5c51b 2423 kiiroo-v21: 2424 defaults: 2425 name: Kiiroo V2.1 Device 2426 features: [] ··· 2562 - 100 2563 messages: 2564 - ScalarCmd 2565 + communication: 2566 + - btle: 2567 + names: 2568 + - Titan1.1 2569 + - Cliona 2570 + - Pearl2.1 2571 + - OhMiBod 4.0 2572 + - OhMiBod LUMEN 2573 + - OhMiBod NEX3 2574 + - OhMiBod ESCA 2575 + - OhMiBod Foxy 2576 + - OhMiBod Chill Panty Vibe 2577 + - OhMiBod Sphinx 2578 + - Pulse Interactive 2579 + - Fuse1.1 2580 + services: 2581 + 00001900-0000-1000-8000-00805f9b34fb: 2582 + whitelist: 00001901-0000-1000-8000-00805f9b34fb 2583 + tx: 00001902-0000-1000-8000-00805f9b34fb 2584 + rx: 00001903-0000-1000-8000-00805f9b34fb 2585 + a0d70001-4c16-4ba7-977a-d394920e13a3: 2586 + tx: a0d70002-4c16-4ba7-977a-d394920e13a3 2587 + rx: a0d70003-4c16-4ba7-977a-d394920e13a3 2588 kiiroo-v21-initialized: 2589 defaults: 2590 name: Kiiroo V2.1 Initialized Device 2591 features: [] ··· 2637 - 99 2638 messages: 2639 - LinearCmd 2640 + communication: 2641 + - btle: 2642 + names: 2643 + - Rey 2644 + - We-Vibe Rocketman 2645 + - Realm1.1 2646 + - Onyx2.1 2647 + - Onyx+ 2648 + - KEON 2649 + - Keon R2 2650 + services: 2651 + 00001900-0000-1000-8000-00805f9b34fb: 2652 + whitelist: 00001901-0000-1000-8000-00805f9b34fb 2653 + tx: 00001902-0000-1000-8000-00805f9b34fb 2654 + rx: 00001903-0000-1000-8000-00805f9b34fb 2655 vorze-cyclone-x: 2656 defaults: 2657 name: Vorze Cyclone X10 Device 2658 features: ··· 2663 - 10 2664 messages: 2665 - RotateCmd 2666 + communication: 2667 + - hid: 2668 + pairs: 2669 + - vendor-id: 1155 2670 + product-id: 22352 2671 rez-trancevibrator: 2672 defaults: 2673 name: Rez TranceVibrator 2674 features: ··· 2679 - 255 2680 messages: 2681 - ScalarCmd 2682 + communication: 2683 + - usb: 2684 + pairs: 2685 + - vendor-id: 2889 2686 + product-id: 1615 2687 kiiroo-v1: 2688 defaults: 2689 name: Kiiroo V1 Device 2690 features: [] ··· 2711 - 4 2712 messages: 2713 - LinearCmd 2714 + communication: 2715 + - btle: 2716 + names: 2717 + - ONYX 2718 + - PEARL 2719 + services: 2720 + 49535343-fe7d-4ae5-8fa9-9fafd205e455: 2721 + rx: 49535343-1e4d-4bd9-ba61-23c647249616 2722 + tx: 49535343-8841-43f4-a8d4-ecbe34729bb3 2723 + command: 49535343-aca3-481c-91ec-d85e28a60318 2724 vorze-sa: 2725 defaults: 2726 name: Vorze Device 2727 features: [] ··· 2799 - 99 2800 messages: 2801 - LinearCmd 2802 + communication: 2803 + - btle: 2804 + names: 2805 + - Bach smart 2806 + - CycSA 2807 + - UFOSA 2808 + - UFO-TW 2809 + - VorzePiston 2810 + - ROCKET 2811 + services: 2812 + 40ee1111-63ec-4b7f-8ce7-712efd55b90e: 2813 + tx: 40ee2222-63ec-4b7f-8ce7-712efd55b90e 2814 youou: 2815 defaults: 2816 name: Youou Wand Vibrator 2817 features: ··· 2822 - 255 2823 messages: 2824 - ScalarCmd 2825 + communication: 2826 + - btle: 2827 + names: 2828 + - VX001_* 2829 + services: 2830 + 0000fff0-0000-1000-8000-00805f9b34fb: 2831 + tx: 0000fff6-0000-1000-8000-00805f9b34fb 2832 realtouch: 2833 defaults: 2834 name: RealTouch 2835 features: ··· 2840 - 99 2841 messages: 2842 - LinearCmd 2843 + communication: 2844 + - hid: 2845 + pairs: 2846 + - vendor-id: 8020 2847 + product-id: 1 2848 prettylove: 2849 defaults: 2850 name: Pretty Love Device 2851 features: ··· 2856 - 3 2857 messages: 2858 - ScalarCmd 2859 + communication: 2860 + - btle: 2861 + names: 2862 + - Aogu BLE * 2863 + services: 2864 + 0000ffe5-0000-1000-8000-00805f9b34fb: 2865 + tx: 0000ffe9-0000-1000-8000-00805f9b34fb 2866 + rx: 0000ffe2-0000-1000-8000-00805f9b34fb 2867 svakom: 2868 defaults: 2869 name: Svakom Device 2870 features: ··· 2885 - identifier: 2886 - Emma NEO 2887 name: Svakom Emma Neo 2888 + communication: 2889 + - btle: 2890 + names: 2891 + - Aogu SUV 2892 + - Aogu SCB 2893 + - Emma NEO 2894 + - Phoenix NEO 2895 + services: 2896 + 0000ffe0-0000-1000-8000-00805f9b34fb: 2897 + tx: 0000ffe1-0000-1000-8000-00805f9b34fb 2898 + rx: 0000ffe2-0000-1000-8000-00805f9b34fb 2899 svakom-v2: 2900 defaults: 2901 name: Svakom Device v2 2902 features: ··· 2936 - identifier: 2937 - QH-SJ007A 2938 name: Svakom Winni 2 2939 + communication: 2940 + - btle: 2941 + names: 2942 + - '116' 2943 + - '117' 2944 + - '118' 2945 + - Viviana 2946 + - Ella NEO 2947 + - S38A 2948 + - Vick NEO 2949 + - Vick Neo 2950 + - STG05A 2951 + - QH-SJ007A 2952 + services: 2953 + 0000ffe0-0000-1000-8000-00805f9b34fb: 2954 + tx: 0000ffe1-0000-1000-8000-00805f9b34fb 2955 + rx: 0000ffe2-0000-1000-8000-00805f9b34fb 2956 svakom-v3: 2957 defaults: 2958 name: Svakom Device v3 2959 features: ··· 3009 - 1 3010 messages: 3011 - ScalarCmd 3012 + communication: 3013 + - btle: 3014 + names: 3015 + - Phoenix Neo 2 3016 + - FK008A 3017 + - Hannes NEO 3018 + - QH-SX007E 3019 + services: 3020 + 0000ffe0-0000-1000-8000-00805f9b34fb: 3021 + tx: 0000ffe1-0000-1000-8000-00805f9b34fb 3022 + rx: 0000ffe2-0000-1000-8000-00805f9b34fb 3023 svakom-v4: 3024 defaults: 3025 name: Svakom Device v4 3026 features: ··· 3045 - identifier: 3046 - ERICA 3047 name: Svakom Erica 3048 + communication: 3049 + - btle: 3050 + names: 3051 + - B2CM6 3052 + - ERICA 3053 + services: 3054 + 0000ffe0-0000-1000-8000-00805f9b34fb: 3055 + tx: 0000ffe1-0000-1000-8000-00805f9b34fb 3056 + rx: 0000ffe2-0000-1000-8000-00805f9b34fb 3057 svakom-sam: 3058 defaults: 3059 name: Svakom Sam Neo 3060 features: ··· 3072 - 1 3073 messages: 3074 - ScalarCmd 3075 + communication: 3076 + - btle: 3077 + names: 3078 + - Sam Neo 3079 + services: 3080 + 0000ae00-0000-1000-8000-00805f9b34fb: 3081 + tx: 0000ae01-0000-1000-8000-00805f9b34fb 3082 + rx: 0000ae02-0000-1000-8000-00805f9b34fb 3083 + txmode: 0000ae10-0000-1000-8000-00805f9b34fb 3084 + 0000ffac-0000-1000-8000-00805f9b34fb: 3085 + firmware: 0000ffb4-0000-1000-8000-00805f9b34fb 3086 svakom-alex: 3087 defaults: 3088 name: Svakom Alex Neo 3089 features: ··· 3094 - 3 3095 messages: 3096 - ScalarCmd 3097 + communication: 3098 + - btle: 3099 + names: 3100 + - Alex NEO 3101 + - S63E Alex NEO 3102 + services: 3103 + 0000ffe0-0000-1000-8000-00805f9b34fb: 3104 + tx: 0000ffe1-0000-1000-8000-00805f9b34fb 3105 svakom-alex-v2: 3106 defaults: 3107 name: Svakom Alex Neo 2 3108 features: ··· 3113 - 3 3114 messages: 3115 - ScalarCmd 3116 + communication: 3117 + - btle: 3118 + names: 3119 + - Alex NEO 2 3120 + services: 3121 + 0000ffe0-0000-1000-8000-00805f9b34fb: 3122 + tx: 0000ffe1-0000-1000-8000-00805f9b34fb 3123 svakom-dt250a: 3124 defaults: 3125 name: Coleur Dor DT250A 3126 features: ··· 3145 - 2 3146 messages: 3147 - ScalarCmd 3148 + communication: 3149 + - btle: 3150 + names: 3151 + - DT250A 3152 + services: 3153 + 0000ffe0-0000-1000-8000-00805f9b34fb: 3154 + tx: 0000ffe1-0000-1000-8000-00805f9b34fb 3155 + rx: 0000ffe2-0000-1000-8000-00805f9b34fb 3156 svakom-iker: 3157 defaults: 3158 name: Svakom Iker 3159 features: ··· 3171 - 5 3172 messages: 3173 - ScalarCmd 3174 + communication: 3175 + - btle: 3176 + names: 3177 + - Iker* 3178 + manufacturer-data: 3179 + - company: 39 3180 + data: 3181 + - 83 3182 + - 86 3183 + - 65 3184 + - 1 3185 + - 11 3186 + - 18 3187 + - 1 3188 + - 51 3189 + - 68 3190 + - 85 3191 + - 202 3192 + - 8 3193 + services: 3194 + 0000ffe0-0000-1000-8000-00805f9b34fb: 3195 + tx: 0000ffe1-0000-1000-8000-00805f9b34fb 3196 svakom-pulse: 3197 defaults: 3198 name: Svakom Pulse Device 3199 features: ··· 3223 - identifier: 3224 - QH-SX045A-B 3225 name: Coleur Dor VX045A 3226 + communication: 3227 + - btle: 3228 + names: 3229 + - SWK-SX013A 3230 + - Pulse Union 3231 + - Pulse Galaxie 3232 + - SX033APP 3233 + - BX288A 3234 + - QH-SX045A-B 3235 + services: 3236 + 0000ffe0-0000-1000-8000-00805f9b34fb: 3237 + tx: 0000ffe1-0000-1000-8000-00805f9b34fb 3238 + rx: 0000ffe2-0000-1000-8000-00805f9b34fb 3239 svakom-suitcase: 3240 defaults: 3241 name: Svakom Magic Suitcase 3242 features: ··· 3258 - identifier: 3259 - VX236A-BLE-V1.0 3260 name: Coleur Dor VX236A 3261 + communication: 3262 + - btle: 3263 + names: 3264 + - VX357A-BLE-V1.0 3265 + - VX236A-BLE-V1.0 3266 + services: 3267 + 0000ffe0-0000-1000-8000-00805f9b34fb: 3268 + tx: 0000ffe1-0000-1000-8000-00805f9b34fb 3269 + rx: 0000ffe2-0000-1000-8000-00805f9b34fb 3270 svakom-tarax: 3271 defaults: 3272 name: ToyCod Tara X 3273 features: ··· 3287 - 3 3288 messages: 3289 - ScalarCmd 3290 + communication: 3291 + - btle: 3292 + names: 3293 + - SX218A 3294 + services: 3295 + 0000ffe0-0000-1000-8000-00805f9b34fb: 3296 + tx: 0000ffe1-0000-1000-8000-00805f9b34fb 3297 + rx: 0000ffe2-0000-1000-8000-00805f9b34fb 3298 svakom-avaneo: 3299 defaults: 3300 name: Svakom Ava Neo 3301 features: ··· 3313 - 1 3314 messages: 3315 - ScalarCmd 3316 + communication: 3317 + - btle: 3318 + names: 3319 + - SX218A 3320 + - Ava Neo 3321 + services: 3322 + 0000ffe0-0000-1000-8000-00805f9b34fb: 3323 + tx: 0000ffe1-0000-1000-8000-00805f9b34fb 3324 + rx: 0000ffe2-0000-1000-8000-00805f9b34fb 3325 svakom-barnard: 3326 defaults: 3327 name: Fantasy Cup Barnard 3328 features: ··· 3340 - 3 3341 messages: 3342 - ScalarCmd 3343 + communication: 3344 + - btle: 3345 + names: 3346 + - DG239A 3347 + services: 3348 + 0000ffe0-0000-1000-8000-00805f9b34fb: 3349 + tx: 0000ffe1-0000-1000-8000-00805f9b34fb 3350 realov: 3351 defaults: 3352 name: Realov Device 3353 features: ··· 3358 - 50 3359 messages: 3360 - ScalarCmd 3361 + communication: 3362 + - btle: 3363 + names: 3364 + - REALOV_VIBE 3365 + services: 3366 + 0000ffe0-0000-1000-8000-00805f9b34fb: 3367 + tx: 0000ffe1-0000-1000-8000-00805f9b34fb 3368 motorbunny: 3369 defaults: 3370 name: Motorbunny Device 3371 features: ··· 3390 - identifier: 3391 - MB LINK 201 3392 name: Motorbunny Buck 3393 + communication: 3394 + - btle: 3395 + names: 3396 + - MB Controller 3397 + - MB LINK 201 3398 + services: 3399 + 0000fff0-0000-1000-8000-00805f9b34fb: 3400 + tx: 0000fff6-0000-1000-8000-00805f9b34fb 3401 zalo: 3402 defaults: 3403 name: Zalo Device 3404 features: ··· 3449 - identifier: 3450 - ZALO-Jeanne 3451 name: Zalo Jeanne 3452 + communication: 3453 + - btle: 3454 + names: 3455 + - ZALO-Queen 3456 + - ZALO-King 3457 + - ZALO-Jeanne 3458 + services: 3459 + 0000fff0-0000-1000-8000-00805f9b34fb: 3460 + tx: 0000fff1-0000-1000-8000-00805f9b34fb 3461 sayberx: 3462 defaults: 3463 name: SayberX Device 3464 features: [] ··· 3477 - identifier: 3478 - X-Ring 3479 name: Sayber X-Ring 3480 + communication: 3481 + - btle: 3482 + names: 3483 + - SayberX 3484 + - X-Ring * 3485 + services: 3486 + 0000fff0-0000-1000-8000-00805f9b34fb: 3487 + tx: 0000fff6-0000-1000-8000-00805f9b34fb 3488 + rx: 0000fff8-0000-1000-8000-00805f9b34fb 3489 muse: 3490 defaults: 3491 name: Muse Device 3492 features: ··· 3504 - identifier: 3505 - WB-TDD 3506 name: Galaku Panty Vib 3507 + communication: 3508 + - btle: 3509 + names: 3510 + - WB-ZDB-WST 3511 + - WB-TDD 3512 + services: 3513 + 0000aaa0-0000-1000-8000-00805f9b34fb: 3514 + tx: 0000aaa1-0000-1000-8000-00805f9b34fb 3515 lelo-f1s: 3516 defaults: 3517 name: Lelo F1s 3518 features: ··· 3530 - 100 3531 messages: 3532 - ScalarCmd 3533 + communication: 3534 + - btle: 3535 + names: 3536 + - F1s 3537 + services: 3538 + 0000fff0-0000-1000-8000-00805f9b34fb: 3539 + tx: 0000fff1-0000-1000-8000-00805f9b34fb 3540 + rx: 00000aa4-0000-1000-8000-00805f9b34fb 3541 lelo-f1sv2: 3542 defaults: 3543 name: Lelo F1s V2 3544 features: ··· 3556 - 100 3557 messages: 3558 - ScalarCmd 3559 + communication: 3560 + - btle: 3561 + names: 3562 + - F1SV2A 3563 + - F1SV2X 3564 + services: 3565 + 0000fff0-0000-1000-8000-00805f9b34fb: 3566 + tx: 0000fff1-0000-1000-8000-00805f9b34fb 3567 + whitelist: 00000a10-0000-1000-8000-00805f9b34fb 3568 + rx: 00000a04-0000-1000-8000-00805f9b34fb 3569 lelo-harmony: 3570 defaults: 3571 name: Lelo Tiani Harmony 3572 features: ··· 3618 - identifier: 3619 - Hugo2 3620 name: Lelo Hugo 2 3621 + communication: 3622 + - btle: 3623 + names: 3624 + - IdaWave 3625 + - Ida Wave 3626 + - TianiHarmony 3627 + - Tiani Harmony 3628 + - TOR3 3629 + - Hugo2 3630 + services: 3631 + 0000fff0-0000-1000-8000-00805f9b34fb: 3632 + command: 0000fff1-0000-1000-8000-00805f9b34fb 3633 + tx: 0000fff2-0000-1000-8000-00805f9b34fb 3634 + whitelist: 00000a11-0000-1000-8000-00805f9b34fb 3635 aneros: 3636 defaults: 3637 name: Aneros Vivi 3638 features: ··· 3652 - 127 3653 messages: 3654 - ScalarCmd 3655 + communication: 3656 + - btle: 3657 + names: 3658 + - Massage Demo 3659 + services: 3660 + 0000ff00-0000-1000-8000-00805f9b34fb: 3661 + tx: 0000ff01-0000-1000-8000-00805f9b34fb 3662 lovehoney-desire: 3663 defaults: 3664 name: Lovehoney Device 3665 features: ··· 3703 - 127 3704 messages: 3705 - ScalarCmd 3706 + communication: 3707 + - btle: 3708 + names: 3709 + - PROSTATE VIBE 3710 + - KNICKER VIBE 3711 + - LOVE EGG 3712 + services: 3713 + 0000ff00-0000-1000-8000-00805f9b34fb: 3714 + tx: 0000ff01-0000-1000-8000-00805f9b34fb 3715 twerkingbutt: 3716 defaults: 3717 name: Twerking Butt 3718 features: [] 3719 + communication: 3720 + - btle: 3721 + names: 3722 + - BODIKANG 3723 + - Twerking Butt 3724 + - TwerkingButt 3725 + services: 3726 + 00000a60-0000-1000-8000-00805f9b34fb: 3727 + tx: 00000a66-0000-1000-8000-00805f9b34fb 3728 + rx: 00000a67-0000-1000-8000-00805f9b34fb 3729 maxpro: 3730 defaults: 3731 name: MaxPro 2 3732 features: ··· 3737 - 100 3738 messages: 3739 - ScalarCmd 3740 + communication: 3741 + - btle: 3742 + names: 3743 + - M2 3744 + services: 3745 + 6e400001-b5a3-f393-e0a9-e50e24dcca9e: 3746 + tx: 6e400002-b5a3-f393-e0a9-e50e24dcca9e 3747 nobra: 3748 defaults: 3749 name: Nobra's Silicone Dreams Toy 3750 features: ··· 3755 - 15 3756 messages: 3757 - ScalarCmd 3758 + communication: 3759 + - btle: 3760 + names: 3761 + - NobraControl* 3762 + services: 3763 + 0000abf0-0000-1000-8000-00805f9b34fb: 3764 + tx: 0000abf1-0000-1000-8000-00805f9b34fb 3765 + - serial: 3766 + ports: 3767 + - port: default 3768 + baud-rate: 19200 3769 + data-bits: 8 3770 + parity: 'N' 3771 + stop-bits: 1 3772 thehandy: 3773 defaults: 3774 name: The Handy 3775 features: ··· 3780 - 100 3781 messages: 3782 - LinearCmd 3783 + communication: 3784 + - btle: 3785 + names: 3786 + - The Handy 3787 + services: 3788 + 1775244d-6b43-439b-877c-060f2d9bed07: 3789 + firmware: 1775ff51-6b43-439b-877c-060f2d9bed07 3790 + tx: 1775ff55-6b43-439b-877c-060f2d9bed07 3791 cachito: 3792 defaults: 3793 name: Cachito Device 3794 features: ··· 3813 - identifier: 3814 - CCTXueGao 3815 name: Cachito Ice Cream 3816 + communication: 3817 + - btle: 3818 + names: 3819 + - CCTSK 3820 + - CCTXueGao 3821 + services: 3822 + 0000fff0-0000-1000-8000-00805f9b34fb: 3823 + tx: 0000fff2-0000-1000-8000-00805f9b34fb 3824 jejoue: 3825 defaults: 3826 name: Je Joue Device 3827 features: ··· 3839 - 5 3840 messages: 3841 - ScalarCmd 3842 + communication: 3843 + - btle: 3844 + names: 3845 + - Je Joue 3846 + services: 3847 + 0000fff0-0000-1000-8000-00805f9b34fb: 3848 + tx: 0000fff1-0000-1000-8000-00805f9b34fb 3849 lovenuts: 3850 defaults: 3851 name: Love Nut 3852 features: ··· 3857 - 15 3858 messages: 3859 - ScalarCmd 3860 + communication: 3861 + - btle: 3862 + names: 3863 + - Love_Nuts 3864 + services: 3865 + 0000fff0-0000-1000-8000-00805f9b34fb: 3866 + tx: 0000fff1-0000-1000-8000-00805f9b34fb 3867 patoo: 3868 defaults: 3869 name: Patoo Device 3870 features: ··· 3903 - 100 3904 messages: 3905 - ScalarCmd 3906 + communication: 3907 + - btle: 3908 + names: 3909 + - PTVEA* 3910 + - PBT* 3911 + - PCS* 3912 + - PHT* 3913 + services: 3914 + f000aa64-0451-4000-b000-000000000000: 3915 + txmode: f000aa65-0451-4000-b000-000000000000 3916 + tx: f000aa68-0451-4000-b000-000000000000 3917 tcode-v03: 3918 defaults: 3919 name: TCode v0.3 (Single Linear Axis) 3920 features: ··· 3925 - 100 3926 messages: 3927 - LinearCmd 3928 + communication: 3929 + - serial: 3930 + ports: 3931 + - port: default 3932 + baud-rate: 115200 3933 + data-bits: 8 3934 + parity: 'N' 3935 + stop-bits: 1 3936 fredorch: 3937 defaults: 3938 name: Fredorch Device 3939 features: ··· 3944 - 150 3945 messages: 3946 - LinearCmd 3947 + communication: 3948 + - btle: 3949 + names: 3950 + - YXlinksSPP 3951 + services: 3952 + 0000ffb0-0000-1000-8000-00805f9b34fb: 3953 + tx: 0000ffb1-0000-1000-8000-00805f9b34fb 3954 + rx: 0000ffb2-0000-1000-8000-00805f9b34fb 3955 fredorch-rotary: 3956 defaults: 3957 name: Fredorch Rotary Device 3958 features: ··· 3964 - 20 3965 messages: 3966 - ScalarCmd 3967 + communication: 3968 + - btle: 3969 + names: 3970 + - M1_* 3971 + services: 3972 + 0000ae10-0000-1000-8000-00805f9b34fb: 3973 + tx: 0000ae01-0000-1000-8000-00805f9b34fb 3974 + rx: 0000ae02-0000-1000-8000-00805f9b34fb 3975 mizzzee: 3976 defaults: 3977 name: Mizz Zee Device 3978 features: ··· 3983 - 68 3984 messages: 3985 - ScalarCmd 3986 + communication: 3987 + - btle: 3988 + names: 3989 + - NFY008 3990 + services: 3991 + 0000eea0-0000-1000-8000-00805f9b34fb: 3992 + tx: 0000eea1-0000-1000-8000-00805f9b34fb 3993 mizzzee-v2: 3994 defaults: 3995 name: Mizz Zee Device 3996 features: ··· 4001 - 68 4002 messages: 4003 - ScalarCmd 4004 + communication: 4005 + - btle: 4006 + names: 4007 + - XHT 4008 + services: 4009 + 0000eea0-0000-1000-8000-00805f9b34fb: 4010 + tx: 0000ee01-0000-1000-8000-00805f9b34fb 4011 mizzzee-v3: 4012 defaults: 4013 name: Mizz Zee Device 4014 features: ··· 4019 - 1000 4020 messages: 4021 - ScalarCmd 4022 + communication: 4023 + - btle: 4024 + names: 4025 + - XHTKJ 4026 + services: 4027 + 0000ff10-0000-1000-8000-00805f9b34fb: 4028 + tx: 0000ff12-0000-1000-8000-00805f9b34fb 4029 htk_bm: 4030 defaults: 4031 name: HTK Breast Massager 4032 features: ··· 4044 - 1 4045 messages: 4046 - ScalarCmd 4047 + communication: 4048 + - btle: 4049 + names: 4050 + - HTK-BLE-BM001 4051 + services: 4052 + 0000180f-0000-1000-8000-00805f9b34fb: 4053 + rxblebattery: 00002a19-0000-1000-8000-00805f9b34fb 4054 + 00001802-0000-1000-8000-00805f9b34fb: 4055 + tx: 00002a06-0000-1000-8000-00805f9b34fb 4056 ankni: 4057 defaults: 4058 name: Roselex Device 4059 features: ··· 4064 - 3 4065 messages: 4066 - ScalarCmd 4067 + communication: 4068 + - btle: 4069 + names: 4070 + - DSJM 4071 + services: 4072 + 0000fe00-0000-1000-8000-00805f9b34fb: 4073 + tx: 0000fe01-0000-1000-8000-00805f9b34fb 4074 + 0000fffe-0000-1000-8000-00805f9b34fb: 4075 + tx: 0000fe02-0000-1000-8000-00805f9b34fb 4076 + 0000180a-0000-1000-8000-00805f9b34fb: 4077 + generic0: 00002a50-0000-1000-8000-00805f9b34fb 4078 hgod: 4079 defaults: 4080 name: Hgod Device 4081 features: ··· 4086 - 10 4087 messages: 4088 - ScalarCmd 4089 + communication: 4090 + - btle: 4091 + names: 4092 + - AMN NEO 4093 + services: 4094 + 0000ffe3-0000-1000-8000-00805f9b34fb: 4095 + tx: 0000ffe1-0000-1000-8000-00805f9b34fb 4096 + rx: 0000ffe2-0000-1000-8000-00805f9b34fb 4097 lovedistance: 4098 defaults: 4099 name: Love Distance Device 4100 features: ··· 4121 - identifier: 4122 - RANGE 4123 name: Love Distance Range 4124 + communication: 4125 + - btle: 4126 + names: 4127 + - REACH G 4128 + - REACH 4129 + - MAG 4130 + - SPAN 4131 + - RANGE 4132 + services: 4133 + 0000ff00-0000-1000-8000-00805f9b34fb: 4134 + tx: 0000ff01-0000-1000-8000-00805f9b34fb 4135 + rx: 0000ff02-0000-1000-8000-00805f9b34fb 4136 satisfyer: 4137 defaults: 4138 name: Satisfyer Device 4139 features: ··· 5180 - 100 5181 messages: 5182 - ScalarCmd 5183 + communication: 5184 + - btle: 5185 + names: 5186 + - SF * 5187 + manufacturer-data: 5188 + - company: 93 5189 + data: 5190 + - 0 5191 + - 0 5192 + - 39 5193 + - company: 93 5194 + data: 5195 + - 0 5196 + - 0 5197 + - 40 5198 + services: 5199 + 0000180a-0000-1000-8000-00805f9b34fb: 5200 + rxblemodel: 00002a24-0000-1000-8000-00805f9b34fb 5201 + 51361500-c5e7-47c7-8a6e-47ebc99d80e8: 5202 + command: 51361501-c5e7-47c7-8a6e-47ebc99d80e8 5203 + tx: 51361502-c5e7-47c7-8a6e-47ebc99d80e8 5204 mannuo: 5205 defaults: 5206 name: ManNuo Device 5207 features: ··· 5212 - 3 5213 messages: 5214 - ScalarCmd 5215 + communication: 5216 + - btle: 5217 + names: 5218 + - Sex toys 5219 + - Sex Toys 5220 + - LXCDVP 5221 + - MANO PRODUCT 5222 + services: 5223 + 0000fff0-0000-1000-8000-00805f9b34fb: 5224 + tx: 0000fff1-0000-1000-8000-00805f9b34fb 5225 + rx: 0000fff4-0000-1000-8000-00805f9b34fb 5226 kgoal-boost: 5227 defaults: 5228 name: KGoal Boost 5229 features: ··· 5235 - 100 5236 messages: 5237 - SensorReadCmd 5238 + communication: 5239 + - btle: 5240 + names: 5241 + - Boost 5242 + services: 5243 + 0000180f-0000-1000-8000-00805f9b34fb: 5244 + rxblebattery: 00002a19-0000-1000-8000-00805f9b34fb 5245 + 8e7c6065-7656-17ad-1b41-b53d1a548e0d: 5246 + rxpressure: 10c2be2d-d2d5-b7a8-5f42-e2468c9ebbf5 5247 meese: 5248 defaults: 5249 name: Meese Device 5250 features: ··· 5277 - 10 5278 messages: 5279 - ScalarCmd 5280 + communication: 5281 + - btle: 5282 + names: 5283 + - Meese-V389 5284 + - Meese-cd 5285 + services: 5286 + 0000ffe0-0000-1000-8000-00805f9b34fb: 5287 + tx: 0000ffe1-0000-1000-8000-00805f9b34fb 5288 hismith: 5289 defaults: 5290 name: Hismith device 5291 features: ··· 5337 - 100 5338 messages: 5339 - ScalarCmd 5340 + communication: 5341 + - btle: 5342 + names: 5343 + - HISMITH 5344 + - Wildolo 5345 + - "\aHISMITH" 5346 + services: 5347 + 0000ffe5-0000-1000-8000-00805f9b34fb: 5348 + tx: 0000ffe9-0000-1000-8000-00805f9b34fb 5349 + 0000ff90-0000-1000-8000-00805f9b34fb: 5350 + rxblemodel: 0000ff96-0000-1000-8000-00805f9b34fb 5351 hismith-mini: 5352 defaults: 5353 name: Hismith Mini device 5354 features: ··· 5447 - 100 5448 messages: 5449 - ScalarCmd 5450 + communication: 5451 + - btle: 5452 + names: 5453 + - Auxfun-Box 5454 + - Sinloli 5455 + - Sinloli-Sherry 5456 + - Eropair * 5457 + - HISMITH S1 5458 + services: 5459 + 0000ffe5-0000-1000-8000-00805f9b34fb: 5460 + tx: 0000ffe9-0000-1000-8000-00805f9b34fb 5461 + 0000ff90-0000-1000-8000-00805f9b34fb: 5462 + rxblemodel: 0000ff96-0000-1000-8000-00805f9b34fb 5463 hismith-servo: 5464 defaults: 5465 name: Hismith servo device 5466 features: ··· 5476 - identifier: 5477 - '1101' 5478 name: Hismith Servo 5479 + communication: 5480 + - btle: 5481 + names: 5482 + - HISMITH S2 5483 + services: 5484 + 0000ffe5-0000-1000-8000-00805f9b34fb: 5485 + tx: 0000ffe9-0000-1000-8000-00805f9b34fb 5486 + 0000ff90-0000-1000-8000-00805f9b34fb: 5487 + rxblemodel: 0000ff96-0000-1000-8000-00805f9b34fb 5488 wetoy: 5489 defaults: 5490 name: WeToy MiNa 5491 features: ··· 5496 - 3 5497 messages: 5498 - ScalarCmd 5499 + communication: 5500 + - btle: 5501 + names: 5502 + - WeToy 5503 + services: 5504 + 0000fff0-0000-1000-8000-00805f9b34fb: 5505 + tx: 0000fff3-0000-1000-8000-00805f9b34fb 5506 pink_punch: 5507 defaults: 5508 name: Pink Punch Sunset Mushroom 5509 configurations: ··· 5518 - 100 5519 messages: 5520 - ScalarCmd 5521 + communication: 5522 + - btle: 5523 + names: 5524 + - Pink_Punch 5525 + - PinkPunch_Peachu 5526 + services: 5527 + 0000ffe0-0000-1000-8000-00805f9b34fb: 5528 + tx: 0000ffe1-0000-1000-8000-00805f9b34fb 5529 sakuraneko: 5530 defaults: 5531 name: Sakuraneko Device 5532 features: ··· 5565 - 100 5566 messages: 5567 - ScalarCmd 5568 + communication: 5569 + - btle: 5570 + names: 5571 + - sakuraneko-01 5572 + - sakuraneko-02 5573 + - sakuraneko-03 5574 + - sakuraneko-04 5575 + services: 5576 + 0000ffe0-0000-1000-8000-00805f9b34fb: 5577 + tx: 0000ffe1-0000-1000-8000-00805f9b34fb 5578 synchro: 5579 defaults: 5580 name: Synchro 5581 features: ··· 5590 - identifier: 5591 - synchro EX 5592 name: Synchro Exchange 5593 + communication: 5594 + - btle: 5595 + names: 5596 + - Shinkuro 5597 + - synchro2 5598 + - synchro EX 5599 + services: 5600 + 0000ffe0-0000-1000-8000-00805f9b34fb: 5601 + tx: 0000ffe1-0000-1000-8000-00805f9b34fb 5602 tryfun: 5603 defaults: 5604 name: TryFun Yuan Series 5605 features: ··· 5617 - 9 5618 messages: 5619 - ScalarCmd 5620 + communication: 5621 + - btle: 5622 + names: 5623 + - TRYFUN-ONE 5624 + services: 5625 + 0000ff10-0000-1000-8000-00805f9b34fb: 5626 + tx: 0000fff1-0000-1000-8000-00805f9b34fb 5627 metaxsire: 5628 defaults: 5629 name: metaXsire Device 5630 features: ··· 5700 - 255 5701 messages: 5702 - ScalarCmd 5703 + communication: 5704 + - btle: 5705 + names: 5706 + - Rex 5707 + - Cali 5708 + - Olis 5709 + - LY213A01 5710 + services: 5711 + 0000ffe0-0000-1000-8000-00805f9b34fb: 5712 + tx: 0000ffe1-0000-1000-8000-00805f9b34fb 5713 + rx: 0000ffe2-0000-1000-8000-00805f9b34fb 5714 metaxsire-repeat: 5715 defaults: 5716 name: Cooxer Bullet Vibe 5717 features: ··· 5735 - identifier: 5736 - LY270A01 5737 name: metaXsire Una 5738 + communication: 5739 + - btle: 5740 + names: 5741 + - LY199B01 5742 + - LY234A01 5743 + - LY271A01 5744 + - LY270A01 5745 + services: 5746 + 0000ffe0-0000-1000-8000-00805f9b34fb: 5747 + tx: 0000ffe1-0000-1000-8000-00805f9b34fb 5748 + rx: 0000ffe2-0000-1000-8000-00805f9b34fb 5749 metaxsire-v2: 5750 defaults: 5751 name: metaXsire Nolan 5752 features: ··· 5764 - 20 5765 messages: 5766 - ScalarCmd 5767 + communication: 5768 + - btle: 5769 + names: 5770 + - LY272A01 5771 + services: 5772 + 0000bae0-0000-1000-8000-00805f9b34fb: 5773 + tx: 0000bae1-0000-1000-8000-00805f9b34fb 5774 metaxsire-v3: 5775 defaults: 5776 name: metaXsire Tay 5777 features: ··· 5782 - 20 5783 messages: 5784 - ScalarCmd 5785 + communication: 5786 + - btle: 5787 + names: 5788 + - TAY001 5789 + services: 5790 + 0000fff0-0000-1000-8000-00805f9b34fb: 5791 + tx: 0000fe02-0000-1000-8000-00805f9b34fb 5792 cowgirl: 5793 defaults: 5794 name: The Cowgirl Device 5795 features: ··· 5814 - identifier: 5815 - THE UNICORN 5816 name: The Unicorn 5817 + communication: 5818 + - btle: 5819 + names: 5820 + - THE COWGIRL 5821 + - THE UNICORN 5822 + services: 5823 + 0000fe00-0000-1000-8000-00805f9b34fb: 5824 + tx: 0000fe01-0000-1000-8000-00805f9b34fb 5825 galaku-pump: 5826 defaults: 5827 name: Galaku Device 5828 features: ··· 5844 - identifier: 5845 - V415 5846 name: Galaku Nebula 5847 + communication: 5848 + - btle: 5849 + names: 5850 + - V415 5851 + services: 5852 + 00001000-0000-1000-8000-00805f9b34fb: 5853 + tx: 00001001-0000-1000-8000-00805f9b34fb 5854 xibao: 5855 defaults: 5856 name: Xibao Smart Masturbation Cup 5857 features: ··· 5862 - 99 5863 messages: 5864 - ScalarCmd 5865 + communication: 5866 + - btle: 5867 + names: 5868 + - CCYB_* 5869 + services: 5870 + 0000fff0-0000-1000-8000-00805f9b34fb: 5871 + tx: 0000fff2-0000-1000-8000-00805f9b34fb 5872 sensee: 5873 defaults: 5874 name: Sensee Diandou Rabbit 5875 features: ··· 5880 - 100 5881 messages: 5882 - ScalarCmd 5883 + communication: 5884 + - btle: 5885 + names: 5886 + - CTY222S4 5887 + services: 5888 + 0000fff0-0000-1000-8000-00805f9b34fb: 5889 + tx: 0000fff5-0000-1000-8000-00805f9b34fb 5890 sensee-capsule: 5891 defaults: 5892 name: Sensee Capsule 5893 features: ··· 5905 - 3 5906 messages: 5907 - ScalarCmd 5908 + communication: 5909 + - btle: 5910 + names: 5911 + - CCPA10S2 5912 + services: 5913 + 0000fff0-0000-1000-8000-00805f9b34fb: 5914 + tx: 0000fff5-0000-1000-8000-00805f9b34fb 5915 fox: 5916 defaults: 5917 name: Fox Device 5918 features: ··· 5923 - 3 5924 messages: 5925 - ScalarCmd 5926 + communication: 5927 + - btle: 5928 + names: 5929 + - FOX 5930 + - FOX M70 Pro 5931 + - FoxM70Pro 5932 + services: 5933 + 0000ae00-0000-1000-8000-00805f9b34fb: 5934 + tx: 0000ae01-0000-1000-8000-00805f9b34fb 5935 kizuna: 5936 defaults: 5937 name: Kizuna Smart 5938 features: ··· 5943 - 9 5944 messages: 5945 - ScalarCmd 5946 + communication: 5947 + - serial: 5948 + ports: 5949 + - port: default 5950 + baud-rate: 19200 5951 + data-bits: 8 5952 + parity: 'N' 5953 + stop-bits: 1 5954 xiuxiuda: 5955 defaults: 5956 name: Xiuxiuda Device 5957 features: ··· 5962 - 19 5963 messages: 5964 - ScalarCmd 5965 + communication: 5966 + - btle: 5967 + names: 5968 + - XXD-Lush* 5969 + services: 5970 + 53300001-0023-4bd4-bbd5-a6920e4c5653: 5971 + tx: 53300003-0023-4bd4-bbd5-a6920e4c5653 5972 longlosttouch: 5973 defaults: 5974 name: Long Lost Touch Possible Kiss 5975 features: ··· 5987 - 100 5988 messages: 5989 - ScalarCmd 5990 + communication: 5991 + - btle: 5992 + names: 5993 + - RS-KNW 5994 + services: 5995 + 0000cb60-0000-1000-8000-00805f9b34fb: 5996 + tx: 0000cb61-0000-1000-8000-00805f9b34fb 5997 + rx: 0000cb62-0000-1000-8000-00805f9b34fb 5998 adrienlastic: 5999 defaults: 6000 name: Adrien Lastic Device 6001 features: ··· 6013 - identifier: 6014 - LVS-S002 6015 name: Adrien Lastic Revelation 6016 + communication: 6017 + - btle: 6018 + names: 6019 + - >- 6020 + Placeholder to avoid conflict with bad attempt to clone a Lovense 6021 + Lush 6022 + advertised-services: 6023 + - 00001320-0000-1000-8000-00805f9b34fb 6024 + services: 6025 + 6e400001-b5a3-f393-e0a9-e50e24dcca9e: 6026 + tx: 6e400002-b5a3-f393-e0a9-e50e24dcca9e 6027 nintendo-joycon: 6028 defaults: 6029 name: Nintendo Joycon 6030 features: ··· 6035 - 1000 6036 messages: 6037 - ScalarCmd 6038 + communication: 6039 + - hid: 6040 + pairs: 6041 + - vendor-id: 1406 6042 + product-id: 8199 6043 + - vendor-id: 1406 6044 + product-id: 8198 6045 + - vendor-id: 1406 6046 + product-id: 8201 6047 foreo: 6048 defaults: 6049 name: Foreo Device 6050 features: ··· 6162 - identifier: 6163 - KIWI derma 6164 name: Foreo KIWI derma 6165 + communication: 6166 + - btle: 6167 + names: 6168 + - FOFO 6169 + - LUNA fofo 6170 + - LUNA FOFO 6171 + - LUNA PLAY SMART 6172 + - LUNA PLAYSMART2 6173 + - LUNA PLAY SMART2 6174 + - LUNA play smart2 6175 + - LUNA play smart 2 6176 + - LUNA 3 6177 + - LUNA3 6178 + - LUNA3PLUS 6179 + - LUNA3 PLUS 6180 + - LUNA 3 PLUS 6181 + - LUNA 3 plus 6182 + - LUNA 3 MEN 6183 + - LUNA3MEN 6184 + - LUNA MINI3 6185 + - LUNA MINI 3 6186 + - LUNA mini 3 6187 + - LUNA4PLUS 6188 + - LUNA4 6189 + - LUNA 4 6190 + - LUNA4PLUS 6191 + - LUNA4 PLUS 6192 + - LUNA 4 plus 6193 + - LUNA4MEN 6194 + - LUNA 4 MEN 6195 + - LUNA 4 FOR MEN 6196 + - LUNA MINI4 6197 + - LUNA MINI 4 6198 + - LUNA mini 4 6199 + - LUNA 4 mini 6200 + - UFO 6201 + - UFO mini 6202 + - UFO MINI 6203 + - UFO MIN 6204 + - UFO2 6205 + - UFO 2 6206 + - UFOMINI2 6207 + - UFO mini 2 6208 + - UFO3 6209 + - UFO3mini 6210 + - UFO3go 6211 + - UFO3led 6212 + - BEAR 6213 + - BEAR_MINI 6214 + - BEAR MINI 6215 + - BEAR mini 6216 + - BEAR2 6217 + - BEAR 2 6218 + - BEAR2go 6219 + - BEAR2body 6220 + - BEAR2eyes 6221 + - KIWI 6222 + - KIWI derma 6223 + services: 6224 + 0000fff0-0000-1000-8000-00805f9b34fb: 6225 + tx: 0000fff1-0000-1000-8000-00805f9b34fb 6226 monsterpub: 6227 defaults: 6228 name: Sistalk MonsterPub Device 6229 features: ··· 6313 - identifier: 6314 - MP1N_QC_TL_P2 6315 name: Sistalk MonsterPub BeatHeart 6316 + communication: 6317 + - btle: 6318 + names: 6319 + - MonsterPub 6320 + services: 6321 + 00006000-0000-1000-8000-00805f9b34fb: 6322 + tx: 00006001-0000-1000-8000-00805f9b34fb 6323 + txmode: 00006002-0000-1000-8000-00805f9b34fb 6324 + txvibrate: 00006003-0000-1000-8000-00805f9b34fb 6325 + 00006010-0000-1000-8000-00805f9b34fb: 6326 + rxblemodel: 00006014-0000-1000-8000-00805f9b34fb 6327 + 00008000-0000-1000-8000-00805f9b34fb: 6328 + rx: 00008001-0000-1000-8000-00805f9b34fb 6329 joyhub: 6330 defaults: 6331 name: JoyHub Device 6332 features: ··· 6424 - 255 6425 messages: 6426 - ScalarCmd 6427 + communication: 6428 + - btle: 6429 + names: 6430 + - J-Petalwish2 6431 + - J-VortexTongue 6432 + - J-Velocity 6433 + - JOYHUB-ROSELLA2 6434 + - J-VibSiren 6435 + - J-ElixirEgg 6436 + - J-RetroGuard 6437 + - J-TrueForm3 6438 + services: 6439 + 0000ffa0-0000-1000-8000-00805f9b34fb: 6440 + tx: 0000ffa1-0000-1000-8000-00805f9b34fb 6441 joyhub-v2: 6442 defaults: 6443 name: JoyHub Device 6444 features: ··· 6599 - 255 6600 messages: 6601 - ScalarCmd 6602 + communication: 6603 + - btle: 6604 + names: 6605 + - J-Pearlconch 6606 + - J-PetiteRose 6607 + - J-MoonHorn 6608 + - J-VibTrefoil 6609 + - J-Panther 6610 + - J-Mecha 6611 + - J-Lagoon 6612 + - J-Firedragon 6613 + services: 6614 + 0000ffa0-0000-1000-8000-00805f9b34fb: 6615 + tx: 0000ffa1-0000-1000-8000-00805f9b34fb 6616 itoys: 6617 defaults: 6618 name: iToys Seagull 6619 features: ··· 6624 - 3 6625 messages: 6626 - ScalarCmd 6627 + communication: 6628 + - btle: 6629 + names: 6630 + - 26-021-B 6631 + services: 6632 + 0000ffa0-0000-1000-8000-00805f9b34fb: 6633 + tx: 0000ffa1-0000-1000-8000-00805f9b34fb 6634 leten: 6635 defaults: 6636 name: Leten Device 6637 features: ··· 6642 - 25 6643 messages: 6644 - ScalarCmd 6645 + communication: 6646 + - btle: 6647 + names: 6648 + - T528-LT 6649 + - F537-LT 6650 + - F520B-LT 6651 + - F520A-LT 6652 + services: 6653 + 0000fff0-0000-1000-8000-00805f9b34fb: 6654 + tx: 0000fff1-0000-1000-8000-00805f9b34fb 6655 + 0000ffe0-0000-1000-8000-00805f9b34fb: 6656 + rx: 0000ffe1-0000-1000-8000-00805f9b34fb 6657 vibcrafter: 6658 defaults: 6659 name: VibCrafter Device 6660 features: ··· 6672 - 99 6673 messages: 6674 - ScalarCmd 6675 + communication: 6676 + - btle: 6677 + names: 6678 + - be gentle 6679 + services: 6680 + 53300051-0060-4bd4-bbe5-a6920e4c5663: 6681 + tx: 53300052-0060-4bd4-bbe5-a6920e4c5663 6682 + rx: 53300053-0060-4bd4-bbe5-a6920e4c5663
+68 -30
buttplug/src/server/device/configuration/specifier.rs
··· 256 } 257 } 258 259 - /// Specifier for HID (USB, Bluetooth) devices 260 - /// 261 - /// Handles devices managed by the operating system's HID manager. 262 #[derive( 263 Serialize, Deserialize, Debug, PartialEq, Eq, Clone, Copy, Getters, Setters, MutGetters, 264 )] 265 - #[getset(get = "pub", set = "pub", get_mut = "pub(crate)")] 266 - pub struct HIDSpecifier { 267 #[serde(rename = "vendor-id")] 268 vendor_id: u16, 269 #[serde(rename = "product-id")] 270 product_id: u16, 271 } 272 273 - impl HIDSpecifier { 274 pub fn new(vendor_id: u16, product_id: u16) -> Self { 275 Self { 276 - vendor_id, 277 - product_id, 278 } 279 } 280 } 281 282 - /// Specifier for Serial devices 283 - /// 284 - /// Handles serial port device identification (via port names) and configuration. 285 #[derive(Serialize, Deserialize, Debug, Clone, Default, Getters, Setters, MutGetters)] 286 #[getset(get = "pub", set = "pub", get_mut = "pub(crate)")] 287 - pub struct SerialSpecifier { 288 #[serde(rename = "baud-rate")] 289 baud_rate: u32, 290 #[serde(rename = "data-bits")] ··· 295 port: String, 296 } 297 298 impl SerialSpecifier { 299 /// Given a serial port name (the only identifier we have for this type of device), create a 300 /// specifier instance. 301 pub fn new_from_name(port: &str) -> Self { 302 - SerialSpecifier { 303 - port: port.to_owned(), 304 - ..Default::default() 305 } 306 } 307 } 308 309 impl PartialEq for SerialSpecifier { 310 fn eq(&self, other: &Self) -> bool { 311 - self.port == other.port 312 } 313 - } 314 - 315 - /// Specifier for USB devices 316 - #[derive( 317 - Serialize, Deserialize, Debug, PartialEq, Eq, Clone, Copy, Getters, Setters, MutGetters, 318 - )] 319 - #[getset(get = "pub", set = "pub", get_mut = "pub(crate)")] 320 - pub struct USBSpecifier { 321 - #[serde(rename = "vendor-id")] 322 - vendor_id: u16, 323 - #[serde(rename = "product-id")] 324 - product_id: u16, 325 } 326 327 /// Specifier for Websocket Device Manager devices ··· 366 /// devices against the list of known devices for a protocol. 367 #[derive(Serialize, Deserialize, Debug, Clone)] 368 pub enum ProtocolCommunicationSpecifier { 369 BluetoothLE(BluetoothLESpecifier), 370 - HID(HIDSpecifier), 371 - USB(USBSpecifier), 372 Serial(SerialSpecifier), 373 XInput(XInputSpecifier), 374 LovenseConnectService(LovenseConnectServiceSpecifier), 375 Websocket(WebsocketSpecifier), 376 } 377
··· 256 } 257 } 258 259 #[derive( 260 Serialize, Deserialize, Debug, PartialEq, Eq, Clone, Copy, Getters, Setters, MutGetters, 261 )] 262 + pub struct VIDPIDPair { 263 #[serde(rename = "vendor-id")] 264 vendor_id: u16, 265 #[serde(rename = "product-id")] 266 product_id: u16, 267 } 268 269 + /// Specifier for HID (USB, Bluetooth) devices 270 + /// 271 + /// Handles devices managed by the operating system's HID manager. 272 + #[derive( 273 + Serialize, Deserialize, Debug, Eq, Clone, Getters, Setters, MutGetters, 274 + )] 275 + #[getset(get = "pub", set = "pub", get_mut = "pub(crate)")] 276 + pub struct VIDPIDSpecifier { 277 + pairs: Vec<VIDPIDPair> 278 + } 279 + 280 + impl VIDPIDSpecifier { 281 pub fn new(vendor_id: u16, product_id: u16) -> Self { 282 Self { 283 + pairs: vec![VIDPIDPair { 284 + vendor_id, 285 + product_id, 286 + }] 287 + } 288 + } 289 + } 290 + 291 + impl PartialEq for VIDPIDSpecifier { 292 + fn eq(&self, other: &Self) -> bool { 293 + for pair in &self.pairs { 294 + for other_pair in &other.pairs { 295 + if *pair == *other_pair { 296 + return true; 297 + } 298 + } 299 } 300 + false 301 } 302 } 303 304 #[derive(Serialize, Deserialize, Debug, Clone, Default, Getters, Setters, MutGetters)] 305 #[getset(get = "pub", set = "pub", get_mut = "pub(crate)")] 306 + pub struct SerialPortInfo { 307 #[serde(rename = "baud-rate")] 308 baud_rate: u32, 309 #[serde(rename = "data-bits")] ··· 314 port: String, 315 } 316 317 + impl PartialEq for SerialPortInfo { 318 + fn eq(&self, other: &Self) -> bool { 319 + self.port == other.port 320 + } 321 + } 322 + 323 + /// Specifier for Serial devices 324 + /// 325 + /// Handles serial port device identification (via port names) and configuration. 326 + #[derive(Serialize, Deserialize, Debug, Clone, Default, Getters, Setters, MutGetters)] 327 + #[getset(get = "pub", set = "pub", get_mut = "pub(crate)")] 328 + pub struct SerialSpecifier { 329 + ports: Vec<SerialPortInfo> 330 + } 331 + 332 impl SerialSpecifier { 333 /// Given a serial port name (the only identifier we have for this type of device), create a 334 /// specifier instance. 335 pub fn new_from_name(port: &str) -> Self { 336 + Self { 337 + ports: vec![SerialPortInfo { 338 + port: port.to_owned(), 339 + ..Default::default() 340 + }] 341 } 342 } 343 } 344 345 impl PartialEq for SerialSpecifier { 346 fn eq(&self, other: &Self) -> bool { 347 + for port in &self.ports { 348 + for other_port in &other.ports { 349 + if *port == *other_port { 350 + return true; 351 + } 352 + } 353 + } 354 + false 355 } 356 } 357 358 /// Specifier for Websocket Device Manager devices ··· 397 /// devices against the list of known devices for a protocol. 398 #[derive(Serialize, Deserialize, Debug, Clone)] 399 pub enum ProtocolCommunicationSpecifier { 400 + #[serde(rename="btle")] 401 BluetoothLE(BluetoothLESpecifier), 402 + #[serde(rename="hid")] 403 + HID(VIDPIDSpecifier), 404 + #[serde(rename="usb")] 405 + USB(VIDPIDSpecifier), 406 + #[serde(rename="serial")] 407 Serial(SerialSpecifier), 408 + #[serde(rename="xinput")] 409 XInput(XInputSpecifier), 410 + #[serde(rename="lovense-connect-service")] 411 LovenseConnectService(LovenseConnectServiceSpecifier), 412 + #[serde(rename="websocket")] 413 Websocket(WebsocketSpecifier), 414 } 415
+2 -2
buttplug/src/server/device/hardware/communication/hid/hid_device_impl.rs
··· 2 use crate::{ 3 core::errors::ButtplugDeviceError, 4 server::device::{ 5 - configuration::{HIDSpecifier, ProtocolCommunicationSpecifier}, 6 hardware::{ 7 Endpoint, 8 GenericHardwareSpecializer, ··· 63 self.device_info.vendor_id(), 64 self.device_info.product_id() 65 ); 66 - ProtocolCommunicationSpecifier::HID(HIDSpecifier::new( 67 self.device_info.vendor_id(), 68 self.device_info.product_id(), 69 ))
··· 2 use crate::{ 3 core::errors::ButtplugDeviceError, 4 server::device::{ 5 + configuration::{VIDPIDSpecifier, ProtocolCommunicationSpecifier}, 6 hardware::{ 7 Endpoint, 8 GenericHardwareSpecializer, ··· 63 self.device_info.vendor_id(), 64 self.device_info.product_id() 65 ); 66 + ProtocolCommunicationSpecifier::HID(VIDPIDSpecifier::new( 67 self.device_info.vendor_id(), 68 self.device_info.product_id(), 69 ))
+8 -3
buttplug/src/server/device/hardware/communication/serialport/serialport_hardware.rs
··· 186 // If we've gotten this far, we can expect we have a serial port definition. 187 let mut port_def = None; 188 for specifier in specifiers { 189 - if let ProtocolCommunicationSpecifier::Serial(serial) = specifier { 190 - if port_info.port_name == *serial.port() { 191 - port_def = Some(serial.clone()); 192 break; 193 } 194 }
··· 186 // If we've gotten this far, we can expect we have a serial port definition. 187 let mut port_def = None; 188 for specifier in specifiers { 189 + if let ProtocolCommunicationSpecifier::Serial(serial_list) = specifier { 190 + for serial in serial_list.ports() { 191 + if port_info.port_name == *serial.port() { 192 + port_def = Some(serial.clone()); 193 + break; 194 + } 195 + } 196 + if port_def.is_some() { 197 break; 198 } 199 }
+10 -88
buttplug/src/util/device_configuration.rs
··· 11 server::device::configuration::{ 12 BaseDeviceDefinition, 13 BaseDeviceIdentifier, 14 - BluetoothLESpecifier, 15 DeviceConfigurationManager, 16 DeviceConfigurationManagerBuilder, 17 - HIDSpecifier, 18 - LovenseConnectServiceSpecifier, 19 ProtocolCommunicationSpecifier, 20 - SerialSpecifier, 21 - USBSpecifier, 22 - UserDeviceCustomization, 23 UserDeviceDefinition, 24 UserDeviceIdentifier, 25 - WebsocketSpecifier, 26 - XInputSpecifier, 27 }, 28 }; 29 use getset::{CopyGetters, Getters, MutGetters, Setters}; ··· 78 #[derive(Deserialize, Serialize, Debug, Clone, Default, Getters, Setters, MutGetters)] 79 #[getset(get = "pub", set = "pub", get_mut = "pub(crate)")] 80 struct ProtocolDefinition { 81 - // Can't get serde flatten specifiers into a String/DeviceSpecifier map, so 82 - // they're kept separate here, and we return them in specifiers(). Feels 83 - // very clumsy, but we really don't do this a bunch during a session. 84 #[serde(skip_serializing_if = "Option::is_none")] 85 - usb: Option<Vec<USBSpecifier>>, 86 #[serde(skip_serializing_if = "Option::is_none")] 87 - btle: Option<BluetoothLESpecifier>, 88 - #[serde(skip_serializing_if = "Option::is_none")] 89 - serial: Option<Vec<SerialSpecifier>>, 90 - #[serde(skip_serializing_if = "Option::is_none")] 91 - hid: Option<Vec<HIDSpecifier>>, 92 - #[serde(skip_serializing_if = "Option::is_none")] 93 - xinput: Option<XInputSpecifier>, 94 - #[serde(skip_serializing_if = "Option::is_none")] 95 - websocket: Option<WebsocketSpecifier>, 96 - #[serde(skip_serializing_if = "Option::is_none")] 97 - #[serde(rename = "lovense-connect-service")] 98 - lovense_connect_service: Option<LovenseConnectServiceSpecifier>, 99 - #[serde(skip_serializing_if = "Option::is_none")] 100 - defaults: Option<ProtocolAttributes>, 101 #[serde(default)] 102 - configurations: Vec<ProtocolAttributes>, 103 } 104 105 - #[derive(Deserialize, Serialize, Debug, Clone, Default, Getters, Setters, MutGetters)] 106 #[getset(get = "pub", set = "pub", get_mut = "pub(crate)")] 107 struct UserDeviceConfigPair { 108 - identifier: UserConfigDeviceIdentifier, 109 - config: UserDeviceConfig, 110 } 111 112 #[derive(Deserialize, Serialize, Debug, Clone, Default, Getters, Setters, MutGetters)] ··· 128 129 impl From<ProtocolDefinition> for ProtocolDeviceConfiguration { 130 fn from(protocol_def: ProtocolDefinition) -> Self { 131 - // Make a vector out of the protocol definition specifiers 132 - let mut specifiers = vec![]; 133 - if let Some(usb_vec) = &protocol_def.usb { 134 - usb_vec 135 - .iter() 136 - .for_each(|spec| specifiers.push(ProtocolCommunicationSpecifier::USB(*spec))); 137 - } 138 - if let Some(serial_vec) = &protocol_def.serial { 139 - serial_vec 140 - .iter() 141 - .for_each(|spec| specifiers.push(ProtocolCommunicationSpecifier::Serial(spec.clone()))); 142 - } 143 - if let Some(hid_vec) = &protocol_def.hid { 144 - hid_vec 145 - .iter() 146 - .for_each(|spec| specifiers.push(ProtocolCommunicationSpecifier::HID(*spec))); 147 - } 148 - if let Some(btle) = &protocol_def.btle { 149 - specifiers.push(ProtocolCommunicationSpecifier::BluetoothLE(btle.clone())); 150 - } 151 - if let Some(xinput) = &protocol_def.xinput { 152 - specifiers.push(ProtocolCommunicationSpecifier::XInput(*xinput)); 153 - } 154 - if let Some(websocket) = &protocol_def.websocket { 155 - specifiers.push(ProtocolCommunicationSpecifier::Websocket(websocket.clone())); 156 - } 157 - if let Some(lcs) = &protocol_def.lovense_connect_service { 158 - specifiers.push(ProtocolCommunicationSpecifier::LovenseConnectService( 159 - lcs.clone(), 160 - )); 161 - } 162 - 163 let mut configurations = HashMap::new(); 164 165 if let Some(defaults) = protocol_def.defaults() { ··· 194 } 195 } 196 197 - Self::new(specifiers, configurations) 198 } 199 } 200 ··· 211 continue; 212 } 213 214 - let base_protocol_def = external_config 215 .protocol_specifiers 216 .get_mut(user_config_protocol) 217 - .unwrap(); 218 - 219 - // Make a vector out of the protocol definition specifiers 220 - if let Some(usb_vec) = &protocol_def.usb { 221 - usb_vec 222 - .iter() 223 - .for_each(|spec| base_protocol_def.push(ProtocolCommunicationSpecifier::USB(*spec))); 224 - } 225 - if let Some(serial_vec) = &protocol_def.serial { 226 - serial_vec.iter().for_each(|spec| { 227 - base_protocol_def.push(ProtocolCommunicationSpecifier::Serial(spec.clone())) 228 - }); 229 - } 230 - if let Some(hid_vec) = &protocol_def.hid { 231 - hid_vec 232 - .iter() 233 - .for_each(|spec| base_protocol_def.push(ProtocolCommunicationSpecifier::HID(*spec))); 234 - } 235 - if let Some(btle) = &protocol_def.btle { 236 - base_protocol_def.push(ProtocolCommunicationSpecifier::BluetoothLE(btle.clone())); 237 - } 238 - if let Some(websocket) = &protocol_def.websocket { 239 - base_protocol_def.push(ProtocolCommunicationSpecifier::Websocket(websocket.clone())); 240 - } 241 } 242 } 243 if let Some(user_device_configs) = user_config_def.user_device_configs() {
··· 11 server::device::configuration::{ 12 BaseDeviceDefinition, 13 BaseDeviceIdentifier, 14 DeviceConfigurationManager, 15 DeviceConfigurationManagerBuilder, 16 ProtocolCommunicationSpecifier, 17 UserDeviceDefinition, 18 UserDeviceIdentifier, 19 }, 20 }; 21 use getset::{CopyGetters, Getters, MutGetters, Setters}; ··· 70 #[derive(Deserialize, Serialize, Debug, Clone, Default, Getters, Setters, MutGetters)] 71 #[getset(get = "pub", set = "pub", get_mut = "pub(crate)")] 72 struct ProtocolDefinition { 73 #[serde(skip_serializing_if = "Option::is_none")] 74 + pub communication: Option<Vec<ProtocolCommunicationSpecifier>>, 75 #[serde(skip_serializing_if = "Option::is_none")] 76 + pub defaults: Option<ProtocolAttributes>, 77 #[serde(default)] 78 + pub configurations: Vec<ProtocolAttributes>, 79 } 80 81 + #[derive(Deserialize, Serialize, Debug, Clone, Getters, Setters, MutGetters)] 82 #[getset(get = "pub", set = "pub", get_mut = "pub(crate)")] 83 struct UserDeviceConfigPair { 84 + identifier: UserDeviceIdentifier, 85 + config: UserDeviceDefinition, 86 } 87 88 #[derive(Deserialize, Serialize, Debug, Clone, Default, Getters, Setters, MutGetters)] ··· 104 105 impl From<ProtocolDefinition> for ProtocolDeviceConfiguration { 106 fn from(protocol_def: ProtocolDefinition) -> Self { 107 let mut configurations = HashMap::new(); 108 109 if let Some(defaults) = protocol_def.defaults() { ··· 138 } 139 } 140 141 + Self::new(protocol_def.communication.unwrap_or_default(), configurations) 142 } 143 } 144 ··· 155 continue; 156 } 157 158 + external_config 159 .protocol_specifiers 160 .get_mut(user_config_protocol) 161 + .unwrap() 162 + .extend(protocol_def.communication.clone().unwrap_or_default().iter().cloned()) 163 } 164 } 165 if let Some(user_device_configs) = user_config_def.user_device_configs() {