Buttplug sex toy control library
1use std::{collections::HashMap, sync::Arc}; 2 3use crate::device::protocol::ProtocolIdentifierFactory; 4 5// Utility mods 6pub mod fleshlight_launch_helper; 7 8// Since users can pick and choose protocols, we need all of these to be public. 9pub mod activejoy; 10pub mod adrienlastic; 11pub mod amorelie_joy; 12pub mod aneros; 13pub mod ankni; 14pub mod bananasome; 15pub mod cachito; 16pub mod cowgirl; 17pub mod cowgirl_cone; 18pub mod cupido; 19pub mod deepsire; 20pub mod feelingso; 21pub mod fleshy_thrust; 22pub mod foreo; 23pub mod fox; 24pub mod fredorch; 25pub mod fredorch_rotary; 26pub mod galaku; 27pub mod galaku_pump; 28pub mod hgod; 29pub mod hismith; 30pub mod hismith_mini; 31pub mod htk_bm; 32pub mod itoys; 33pub mod jejoue; 34pub mod joyhub; 35pub mod kgoal_boost; 36pub mod kiiroo_powershot; 37pub mod kiiroo_prowand; 38pub mod kiiroo_spot; 39pub mod kiiroo_v2; 40pub mod kiiroo_v21; 41pub mod kiiroo_v21_initialized; 42pub mod kiiroo_v2_vibrator; 43pub mod kiiroo_v3; 44pub mod kizuna; 45pub mod lelo_harmony; 46pub mod lelof1s; 47pub mod lelof1sv2; 48pub mod leten; 49pub mod libo_elle; 50pub mod libo_shark; 51pub mod libo_vibes; 52pub mod lioness; 53pub mod loob; 54pub mod lovedistance; 55pub mod lovehoney_desire; 56pub mod lovense; 57// pub mod lovense_connect_service; 58pub mod lovenuts; 59pub mod luvmazer; 60pub mod magic_motion_v1; 61pub mod magic_motion_v2; 62pub mod magic_motion_v3; 63pub mod magic_motion_v4; 64pub mod mannuo; 65pub mod maxpro; 66pub mod meese; 67pub mod mizzzee; 68pub mod mizzzee_v2; 69pub mod mizzzee_v3; 70pub mod monsterpub; 71pub mod motorbunny; 72pub mod mysteryvibe; 73pub mod mysteryvibe_v2; 74pub mod nextlevelracing; 75pub mod nexus_revo; 76pub mod nintendo_joycon; 77pub mod nobra; 78pub mod omobo; 79pub mod patoo; 80pub mod picobong; 81pub mod pink_punch; 82pub mod prettylove; 83pub mod raw_protocol; 84pub mod realov; 85pub mod sakuraneko; 86pub mod satisfyer; 87pub mod sensee; 88pub mod sensee_capsule; 89pub mod sensee_v2; 90pub mod serveu; 91pub mod sexverse_lg389; 92pub mod sexverse_v1; 93pub mod sexverse_v2; 94pub mod sexverse_v3; 95pub mod sexverse_v4; 96pub mod sexverse_v5; 97pub mod svakom; 98pub mod synchro; 99pub mod tcode_v03; 100pub mod thehandy; 101pub mod tryfun; 102pub mod tryfun_blackhole; 103pub mod tryfun_meta2; 104pub mod vibcrafter; 105pub mod vibratissimo; 106pub mod vorze_sa; 107pub mod wetoy; 108pub mod wevibe; 109pub mod wevibe8bit; 110pub mod wevibe_chorus; 111pub mod xibao; 112pub mod xinput; 113pub mod xiuxiuda; 114pub mod xuanhuan; 115pub mod youcups; 116pub mod youou; 117pub mod zalo; 118 119pub fn get_default_protocol_map() -> HashMap<String, Arc<dyn ProtocolIdentifierFactory>> { 120 let mut map = HashMap::new(); 121 fn add_to_protocol_map<T>( 122 map: &mut HashMap<String, Arc<dyn ProtocolIdentifierFactory>>, 123 factory: T, 124 ) where 125 T: ProtocolIdentifierFactory + 'static, 126 { 127 let factory = Arc::new(factory); 128 map.insert(factory.identifier().to_owned(), factory); 129 } 130 131 add_to_protocol_map( 132 &mut map, 133 activejoy::setup::ActiveJoyIdentifierFactory::default(), 134 ); 135 add_to_protocol_map( 136 &mut map, 137 adrienlastic::setup::AdrienLasticIdentifierFactory::default(), 138 ); 139 add_to_protocol_map( 140 &mut map, 141 amorelie_joy::setup::AmorelieJoyIdentifierFactory::default(), 142 ); 143 add_to_protocol_map(&mut map, aneros::setup::AnerosIdentifierFactory::default()); 144 add_to_protocol_map(&mut map, ankni::setup::AnkniIdentifierFactory::default()); 145 add_to_protocol_map( 146 &mut map, 147 bananasome::setup::BananasomeIdentifierFactory::default(), 148 ); 149 add_to_protocol_map( 150 &mut map, 151 cachito::setup::CachitoIdentifierFactory::default(), 152 ); 153 add_to_protocol_map( 154 &mut map, 155 cowgirl::setup::CowgirlIdentifierFactory::default(), 156 ); 157 add_to_protocol_map( 158 &mut map, 159 cowgirl_cone::setup::CowgirlConeIdentifierFactory::default(), 160 ); 161 add_to_protocol_map(&mut map, cupido::setup::CupidoIdentifierFactory::default()); 162 add_to_protocol_map( 163 &mut map, 164 deepsire::setup::DeepSireIdentifierFactory::default(), 165 ); 166 add_to_protocol_map( 167 &mut map, 168 hismith::setup::HismithIdentifierFactory::default(), 169 ); 170 add_to_protocol_map( 171 &mut map, 172 hismith_mini::setup::HismithMiniIdentifierFactory::default(), 173 ); 174 add_to_protocol_map(&mut map, htk_bm::setup::HtkBmIdentifierFactory::default()); 175 add_to_protocol_map( 176 &mut map, 177 thehandy::setup::TheHandyIdentifierFactory::default(), 178 ); 179 180 add_to_protocol_map( 181 &mut map, 182 feelingso::setup::FeelingSoIdentifierFactory::default(), 183 ); 184 add_to_protocol_map( 185 &mut map, 186 fleshy_thrust::setup::FleshyThrustIdentifierFactory::default(), 187 ); 188 add_to_protocol_map(&mut map, foreo::setup::ForeoIdentifierFactory::default()); 189 add_to_protocol_map(&mut map, fox::setup::FoxIdentifierFactory::default()); 190 add_to_protocol_map( 191 &mut map, 192 fredorch::setup::FredorchIdentifierFactory::default(), 193 ); 194 add_to_protocol_map( 195 &mut map, 196 fredorch_rotary::setup::FredorchRotaryIdentifierFactory::default(), 197 ); 198 199 add_to_protocol_map(&mut map, hgod::setup::HgodIdentifierFactory::default()); 200 201 add_to_protocol_map( 202 &mut map, 203 galaku_pump::setup::GalakuPumpIdentifierFactory::default(), 204 ); 205 206 add_to_protocol_map(&mut map, galaku::setup::GalakuIdentifierFactory::default()); 207 208 add_to_protocol_map(&mut map, itoys::setup::IToysIdentifierFactory::default()); 209 add_to_protocol_map(&mut map, jejoue::setup::JeJoueIdentifierFactory::default()); 210 add_to_protocol_map( 211 &mut map, 212 joyhub::joyhub::setup::JoyHubIdentifierFactory::default(), 213 ); 214 add_to_protocol_map( 215 &mut map, 216 joyhub::joyhub_v2::setup::JoyHubV2IdentifierFactory::default(), 217 ); 218 add_to_protocol_map( 219 &mut map, 220 joyhub::joyhub_v3::setup::JoyHubV3IdentifierFactory::default(), 221 ); 222 223 add_to_protocol_map( 224 &mut map, 225 joyhub::joyhub_v4::setup::JoyHubV4IdentifierFactory::default(), 226 ); 227 add_to_protocol_map( 228 &mut map, 229 joyhub::joyhub_v5::setup::JoyHubV5IdentifierFactory::default(), 230 ); 231 add_to_protocol_map( 232 &mut map, 233 joyhub::joyhub_v6::setup::JoyHubV6IdentifierFactory::default(), 234 ); 235 add_to_protocol_map( 236 &mut map, 237 kiiroo_powershot::setup::KiirooPowerShotIdentifierFactory::default(), 238 ); 239 add_to_protocol_map( 240 &mut map, 241 kiiroo_prowand::setup::KiirooProWandIdentifierFactory::default(), 242 ); 243 add_to_protocol_map( 244 &mut map, 245 kiiroo_spot::setup::KiirooSpotIdentifierFactory::default(), 246 ); 247 add_to_protocol_map( 248 &mut map, 249 kiiroo_v2::setup::KiirooV2IdentifierFactory::default(), 250 ); 251 add_to_protocol_map( 252 &mut map, 253 kiiroo_v3::setup::KiirooV3IdentifierFactory::default(), 254 ); 255 add_to_protocol_map( 256 &mut map, 257 kiiroo_v2_vibrator::setup::KiirooV2VibratorIdentifierFactory::default(), 258 ); 259 add_to_protocol_map( 260 &mut map, 261 kiiroo_v21::setup::KiirooV21IdentifierFactory::default(), 262 ); 263 add_to_protocol_map( 264 &mut map, 265 kiiroo_v21_initialized::setup::KiirooV21InitializedIdentifierFactory::default(), 266 ); 267 add_to_protocol_map(&mut map, kizuna::setup::KizunaIdentifierFactory::default()); 268 add_to_protocol_map( 269 &mut map, 270 lelof1s::setup::LeloF1sIdentifierFactory::default(), 271 ); 272 add_to_protocol_map( 273 &mut map, 274 lelof1sv2::setup::LeloF1sV2IdentifierFactory::default(), 275 ); 276 add_to_protocol_map(&mut map, leten::setup::LetenIdentifierFactory::default()); 277 add_to_protocol_map( 278 &mut map, 279 lelo_harmony::setup::LeloHarmonyIdentifierFactory::default(), 280 ); 281 add_to_protocol_map( 282 &mut map, 283 libo_elle::setup::LiboElleIdentifierFactory::default(), 284 ); 285 add_to_protocol_map( 286 &mut map, 287 libo_shark::setup::LiboSharkIdentifierFactory::default(), 288 ); 289 add_to_protocol_map( 290 &mut map, 291 libo_vibes::setup::LiboVibesIdentifierFactory::default(), 292 ); 293 add_to_protocol_map( 294 &mut map, 295 lioness::setup::LionessIdentifierFactory::default(), 296 ); 297 add_to_protocol_map(&mut map, loob::setup::LoobIdentifierFactory::default()); 298 add_to_protocol_map( 299 &mut map, 300 lovehoney_desire::setup::LovehoneyDesireIdentifierFactory::default(), 301 ); 302 add_to_protocol_map( 303 &mut map, 304 lovedistance::setup::LoveDistanceIdentifierFactory::default(), 305 ); 306 add_to_protocol_map( 307 &mut map, 308 lovense::setup::LovenseIdentifierFactory::default(), 309 ); 310 311 // add_to_protocol_map( 312 // &mut map, 313 // lovense_connect_service::setup::LovenseConnectServiceIdentifierFactory::default(), 314 // ); 315 add_to_protocol_map( 316 &mut map, 317 lovenuts::setup::LoveNutsIdentifierFactory::default(), 318 ); 319 add_to_protocol_map( 320 &mut map, 321 luvmazer::setup::LuvmazerIdentifierFactory::default(), 322 ); 323 add_to_protocol_map( 324 &mut map, 325 magic_motion_v1::setup::MagicMotionV1IdentifierFactory::default(), 326 ); 327 add_to_protocol_map( 328 &mut map, 329 magic_motion_v2::setup::MagicMotionV2IdentifierFactory::default(), 330 ); 331 add_to_protocol_map( 332 &mut map, 333 magic_motion_v3::setup::MagicMotionV3IdentifierFactory::default(), 334 ); 335 add_to_protocol_map( 336 &mut map, 337 magic_motion_v4::setup::MagicMotionV4IdentifierFactory::default(), 338 ); 339 add_to_protocol_map(&mut map, mannuo::setup::ManNuoIdentifierFactory::default()); 340 add_to_protocol_map(&mut map, maxpro::setup::MaxproIdentifierFactory::default()); 341 add_to_protocol_map(&mut map, meese::setup::MeeseIdentifierFactory::default()); 342 add_to_protocol_map( 343 &mut map, 344 mizzzee::setup::MizzZeeIdentifierFactory::default(), 345 ); 346 add_to_protocol_map( 347 &mut map, 348 mizzzee_v2::setup::MizzZeeV2IdentifierFactory::default(), 349 ); 350 add_to_protocol_map( 351 &mut map, 352 mizzzee_v3::setup::MizzZeeV3IdentifierFactory::default(), 353 ); 354 add_to_protocol_map( 355 &mut map, 356 monsterpub::setup::MonsterPubIdentifierFactory::default(), 357 ); 358 add_to_protocol_map( 359 &mut map, 360 motorbunny::setup::MotorbunnyIdentifierFactory::default(), 361 ); 362 add_to_protocol_map( 363 &mut map, 364 mysteryvibe::setup::MysteryVibeIdentifierFactory::default(), 365 ); 366 add_to_protocol_map( 367 &mut map, 368 mysteryvibe_v2::setup::MysteryVibeV2IdentifierFactory::default(), 369 ); 370 add_to_protocol_map( 371 &mut map, 372 nexus_revo::setup::NexusRevoIdentifierFactory::default(), 373 ); 374 add_to_protocol_map( 375 &mut map, 376 nextlevelracing::setup::NextLevelRacingIdentifierFactory::default(), 377 ); 378 add_to_protocol_map( 379 &mut map, 380 nintendo_joycon::setup::NintendoJoyconIdentifierFactory::default(), 381 ); 382 add_to_protocol_map(&mut map, nobra::setup::NobraIdentifierFactory::default()); 383 add_to_protocol_map(&mut map, omobo::setup::OmoboIdentifierFactory::default()); 384 add_to_protocol_map(&mut map, patoo::setup::PatooIdentifierFactory::default()); 385 add_to_protocol_map( 386 &mut map, 387 picobong::setup::PicobongIdentifierFactory::default(), 388 ); 389 add_to_protocol_map( 390 &mut map, 391 pink_punch::setup::PinkPunchIdentifierFactory::default(), 392 ); 393 add_to_protocol_map( 394 &mut map, 395 prettylove::setup::PrettyLoveIdentifierFactory::default(), 396 ); 397 add_to_protocol_map( 398 &mut map, 399 raw_protocol::setup::RawProtocolIdentifierFactory::default(), 400 ); 401 add_to_protocol_map(&mut map, realov::setup::RealovIdentifierFactory::default()); 402 add_to_protocol_map( 403 &mut map, 404 sakuraneko::setup::SakuranekoIdentifierFactory::default(), 405 ); 406 add_to_protocol_map( 407 &mut map, 408 satisfyer::setup::SatisfyerIdentifierFactory::default(), 409 ); 410 add_to_protocol_map(&mut map, sensee::setup::SenseeIdentifierFactory::default()); 411 add_to_protocol_map( 412 &mut map, 413 sensee_capsule::setup::SenseeCapsuleIdentifierFactory::default(), 414 ); 415 add_to_protocol_map( 416 &mut map, 417 sensee_v2::setup::SenseeV2IdentifierFactory::default(), 418 ); 419 add_to_protocol_map( 420 &mut map, 421 sexverse_lg389::setup::SexverseLG389IdentifierFactory::default(), 422 ); 423 add_to_protocol_map( 424 &mut map, 425 sexverse_v1::setup::SexverseV1IdentifierFactory::default(), 426 ); 427 add_to_protocol_map( 428 &mut map, 429 sexverse_v2::setup::SexverseV2IdentifierFactory::default(), 430 ); 431 add_to_protocol_map( 432 &mut map, 433 sexverse_v3::setup::SexverseV3IdentifierFactory::default(), 434 ); 435 add_to_protocol_map( 436 &mut map, 437 sexverse_v4::setup::SexverseV4IdentifierFactory::default(), 438 ); 439 add_to_protocol_map( 440 &mut map, 441 sexverse_v5::setup::SexverseV5IdentifierFactory::default(), 442 ); 443 add_to_protocol_map(&mut map, serveu::setup::ServeUIdentifierFactory::default()); 444 add_to_protocol_map( 445 &mut map, 446 svakom::svakom_avaneo::setup::SvakomAvaNeoIdentifierFactory::default(), 447 ); 448 add_to_protocol_map( 449 &mut map, 450 svakom::svakom_alex::setup::SvakomAlexIdentifierFactory::default(), 451 ); 452 add_to_protocol_map( 453 &mut map, 454 svakom::svakom_alex_v2::setup::SvakomAlexV2IdentifierFactory::default(), 455 ); 456 add_to_protocol_map( 457 &mut map, 458 svakom::svakom_barnard::setup::SvakomBarnardIdentifierFactory::default(), 459 ); 460 add_to_protocol_map( 461 &mut map, 462 svakom::svakom_barney::setup::SvakomBarneyIdentifierFactory::default(), 463 ); 464 add_to_protocol_map( 465 &mut map, 466 svakom::svakom_dice::setup::SvakomDiceIdentifierFactory::default(), 467 ); 468 add_to_protocol_map( 469 &mut map, 470 svakom::svakom_dt250a::setup::SvakomDT250AIdentifierFactory::default(), 471 ); 472 add_to_protocol_map( 473 &mut map, 474 svakom::svakom_iker::setup::SvakomIkerIdentifierFactory::default(), 475 ); 476 add_to_protocol_map( 477 &mut map, 478 svakom::svakom_jordan::setup::SvakomJordanIdentifierFactory::default(), 479 ); 480 add_to_protocol_map( 481 &mut map, 482 svakom::svakom_pulse::setup::SvakomPulseIdentifierFactory::default(), 483 ); 484 add_to_protocol_map( 485 &mut map, 486 svakom::svakom_sam::setup::SvakomSamIdentifierFactory::default(), 487 ); 488 add_to_protocol_map( 489 &mut map, 490 svakom::svakom_sam2::setup::SvakomSam2IdentifierFactory::default(), 491 ); 492 add_to_protocol_map( 493 &mut map, 494 svakom::svakom_suitcase::setup::SvakomSuitcaseIdentifierFactory::default(), 495 ); 496 add_to_protocol_map( 497 &mut map, 498 svakom::svakom_tarax::setup::SvakomTaraXIdentifierFactory::default(), 499 ); 500 add_to_protocol_map( 501 &mut map, 502 svakom::svakom_v1::setup::SvakomV1IdentifierFactory::default(), 503 ); 504 add_to_protocol_map( 505 &mut map, 506 svakom::svakom_v2::setup::SvakomV2IdentifierFactory::default(), 507 ); 508 add_to_protocol_map( 509 &mut map, 510 svakom::svakom_v3::setup::SvakomV3IdentifierFactory::default(), 511 ); 512 add_to_protocol_map( 513 &mut map, 514 svakom::svakom_v4::setup::SvakomV4IdentifierFactory::default(), 515 ); 516 add_to_protocol_map( 517 &mut map, 518 svakom::svakom_v5::setup::SvakomV5IdentifierFactory::default(), 519 ); 520 add_to_protocol_map( 521 &mut map, 522 svakom::svakom_v6::setup::SvakomV6IdentifierFactory::default(), 523 ); 524 add_to_protocol_map( 525 &mut map, 526 synchro::setup::SynchroIdentifierFactory::default(), 527 ); 528 add_to_protocol_map(&mut map, tryfun::setup::TryFunIdentifierFactory::default()); 529 add_to_protocol_map( 530 &mut map, 531 tryfun_blackhole::setup::TryFunBlackHoleIdentifierFactory::default(), 532 ); 533 add_to_protocol_map( 534 &mut map, 535 tryfun_meta2::setup::TryFunMeta2IdentifierFactory::default(), 536 ); 537 add_to_protocol_map( 538 &mut map, 539 tcode_v03::setup::TCodeV03IdentifierFactory::default(), 540 ); 541 add_to_protocol_map( 542 &mut map, 543 vibcrafter::setup::VibCrafterIdentifierFactory::default(), 544 ); 545 add_to_protocol_map( 546 &mut map, 547 vibratissimo::setup::VibratissimoIdentifierFactory::default(), 548 ); 549 add_to_protocol_map( 550 &mut map, 551 vorze_sa::setup::VorzeSAIdentifierFactory::default(), 552 ); 553 add_to_protocol_map(&mut map, wetoy::setup::WeToyIdentifierFactory::default()); 554 add_to_protocol_map(&mut map, wevibe::setup::WeVibeIdentifierFactory::default()); 555 add_to_protocol_map( 556 &mut map, 557 wevibe8bit::setup::WeVibe8BitIdentifierFactory::default(), 558 ); 559 add_to_protocol_map( 560 &mut map, 561 wevibe_chorus::setup::WeVibeChorusIdentifierFactory::default(), 562 ); 563 add_to_protocol_map(&mut map, xibao::setup::XibaoIdentifierFactory::default()); 564 add_to_protocol_map(&mut map, xinput::setup::XInputIdentifierFactory::default()); 565 add_to_protocol_map( 566 &mut map, 567 xiuxiuda::setup::XiuxiudaIdentifierFactory::default(), 568 ); 569 add_to_protocol_map( 570 &mut map, 571 xuanhuan::setup::XuanhuanIdentifierFactory::default(), 572 ); 573 add_to_protocol_map( 574 &mut map, 575 youcups::setup::YoucupsIdentifierFactory::default(), 576 ); 577 add_to_protocol_map(&mut map, youou::setup::YououIdentifierFactory::default()); 578 add_to_protocol_map(&mut map, zalo::setup::ZaloIdentifierFactory::default()); 579 add_to_protocol_map( 580 &mut map, 581 kgoal_boost::setup::KGoalBoostIdentifierFactory::default(), 582 ); 583 map 584}