1pub mod model1;
2pub mod model10;
3pub mod model101;
4pub mod model102;
5pub mod model103;
6pub mod model11;
7pub mod model111;
8pub mod model112;
9pub mod model113;
10pub mod model12;
11pub mod model120;
12pub mod model121;
13pub mod model122;
14pub mod model123;
15pub mod model124;
16pub mod model125;
17pub mod model126;
18pub mod model127;
19pub mod model128;
20pub mod model129;
21pub mod model13;
22pub mod model130;
23pub mod model131;
24pub mod model132;
25pub mod model133;
26pub mod model134;
27pub mod model135;
28pub mod model136;
29pub mod model137;
30pub mod model138;
31pub mod model139;
32pub mod model14;
33pub mod model140;
34pub mod model141;
35pub mod model142;
36pub mod model143;
37pub mod model144;
38pub mod model145;
39pub mod model15;
40pub mod model16;
41pub mod model160;
42pub mod model17;
43pub mod model18;
44pub mod model19;
45pub mod model2;
46pub mod model201;
47pub mod model202;
48pub mod model203;
49pub mod model204;
50pub mod model211;
51pub mod model212;
52pub mod model213;
53pub mod model214;
54pub mod model220;
55pub mod model3;
56pub mod model302;
57pub mod model303;
58pub mod model304;
59pub mod model305;
60pub mod model306;
61pub mod model307;
62pub mod model308;
63pub mod model4;
64pub mod model401;
65pub mod model402;
66pub mod model403;
67pub mod model404;
68pub mod model5;
69pub mod model501;
70pub mod model502;
71pub mod model6;
72pub mod model601;
73pub mod model63001;
74pub mod model63002;
75pub mod model64001;
76pub mod model64020;
77pub mod model64101;
78pub mod model64111;
79pub mod model64112;
80pub mod model7;
81pub mod model701;
82pub mod model702;
83pub mod model703;
84pub mod model704;
85pub mod model705;
86pub mod model706;
87pub mod model707;
88pub mod model708;
89pub mod model709;
90pub mod model710;
91pub mod model711;
92pub mod model712;
93pub mod model713;
94pub mod model714;
95pub mod model715;
96pub mod model8;
97pub mod model801;
98pub mod model802;
99pub mod model803;
100pub mod model804;
101pub mod model805;
102pub mod model806;
103pub mod model807;
104pub mod model808;
105pub mod model809;
106pub mod model9;
107#[derive(Debug, Default)]
109#[cfg_attr(feature = "serde", derive(::serde::Serialize, ::serde::Deserialize))]
110pub struct Models {
111 pub m1: crate::ModelAddr<model1::Model1>,
113 pub m2: crate::ModelAddr<model2::Model2>,
115 pub m3: crate::ModelAddr<model3::Model3>,
117 pub m4: crate::ModelAddr<model4::Model4>,
119 pub m5: crate::ModelAddr<model5::Model5>,
121 pub m6: crate::ModelAddr<model6::Model6>,
123 pub m7: crate::ModelAddr<model7::Model7>,
125 pub m8: crate::ModelAddr<model8::Model8>,
127 pub m9: crate::ModelAddr<model9::Model9>,
129 pub m10: crate::ModelAddr<model10::Model10>,
131 pub m11: crate::ModelAddr<model11::Model11>,
133 pub m12: crate::ModelAddr<model12::Model12>,
135 pub m13: crate::ModelAddr<model13::Model13>,
137 pub m14: crate::ModelAddr<model14::Model14>,
139 pub m15: crate::ModelAddr<model15::Model15>,
141 pub m16: crate::ModelAddr<model16::Model16>,
143 pub m17: crate::ModelAddr<model17::Model17>,
145 pub m18: crate::ModelAddr<model18::Model18>,
147 pub m19: crate::ModelAddr<model19::Model19>,
149 pub m101: crate::ModelAddr<model101::Model101>,
151 pub m102: crate::ModelAddr<model102::Model102>,
153 pub m103: crate::ModelAddr<model103::Model103>,
155 pub m111: crate::ModelAddr<model111::Model111>,
157 pub m112: crate::ModelAddr<model112::Model112>,
159 pub m113: crate::ModelAddr<model113::Model113>,
161 pub m120: crate::ModelAddr<model120::Model120>,
163 pub m121: crate::ModelAddr<model121::Model121>,
165 pub m122: crate::ModelAddr<model122::Model122>,
167 pub m123: crate::ModelAddr<model123::Model123>,
169 pub m124: crate::ModelAddr<model124::Model124>,
171 pub m125: crate::ModelAddr<model125::Model125>,
173 pub m126: crate::ModelAddr<model126::Model126>,
175 pub m127: crate::ModelAddr<model127::Model127>,
177 pub m128: crate::ModelAddr<model128::Model128>,
179 pub m129: crate::ModelAddr<model129::Model129>,
181 pub m130: crate::ModelAddr<model130::Model130>,
183 pub m131: crate::ModelAddr<model131::Model131>,
185 pub m132: crate::ModelAddr<model132::Model132>,
187 pub m133: crate::ModelAddr<model133::Model133>,
189 pub m134: crate::ModelAddr<model134::Model134>,
191 pub m135: crate::ModelAddr<model135::Model135>,
193 pub m136: crate::ModelAddr<model136::Model136>,
195 pub m137: crate::ModelAddr<model137::Model137>,
197 pub m138: crate::ModelAddr<model138::Model138>,
199 pub m139: crate::ModelAddr<model139::Model139>,
201 pub m140: crate::ModelAddr<model140::Model140>,
203 pub m141: crate::ModelAddr<model141::Model141>,
205 pub m142: crate::ModelAddr<model142::Model142>,
207 pub m143: crate::ModelAddr<model143::Model143>,
209 pub m144: crate::ModelAddr<model144::Model144>,
211 pub m145: crate::ModelAddr<model145::Model145>,
213 pub m160: crate::ModelAddr<model160::Model160>,
215 pub m201: crate::ModelAddr<model201::Model201>,
217 pub m202: crate::ModelAddr<model202::Model202>,
219 pub m203: crate::ModelAddr<model203::Model203>,
221 pub m204: crate::ModelAddr<model204::Model204>,
223 pub m211: crate::ModelAddr<model211::Model211>,
225 pub m212: crate::ModelAddr<model212::Model212>,
227 pub m213: crate::ModelAddr<model213::Model213>,
229 pub m214: crate::ModelAddr<model214::Model214>,
231 pub m220: crate::ModelAddr<model220::Model220>,
233 pub m302: crate::ModelAddr<model302::Model302>,
235 pub m303: crate::ModelAddr<model303::Model303>,
237 pub m304: crate::ModelAddr<model304::Model304>,
239 pub m305: crate::ModelAddr<model305::Model305>,
241 pub m306: crate::ModelAddr<model306::Model306>,
243 pub m307: crate::ModelAddr<model307::Model307>,
245 pub m308: crate::ModelAddr<model308::Model308>,
247 pub m401: crate::ModelAddr<model401::Model401>,
249 pub m402: crate::ModelAddr<model402::Model402>,
251 pub m403: crate::ModelAddr<model403::Model403>,
253 pub m404: crate::ModelAddr<model404::Model404>,
255 pub m501: crate::ModelAddr<model501::Model501>,
257 pub m502: crate::ModelAddr<model502::Model502>,
259 pub m601: crate::ModelAddr<model601::Model601>,
261 pub m701: crate::ModelAddr<model701::Model701>,
263 pub m702: crate::ModelAddr<model702::Model702>,
265 pub m703: crate::ModelAddr<model703::Model703>,
267 pub m704: crate::ModelAddr<model704::Model704>,
269 pub m705: crate::ModelAddr<model705::Model705>,
271 pub m706: crate::ModelAddr<model706::Model706>,
273 pub m707: crate::ModelAddr<model707::Model707>,
275 pub m708: crate::ModelAddr<model708::Model708>,
277 pub m709: crate::ModelAddr<model709::Model709>,
279 pub m710: crate::ModelAddr<model710::Model710>,
281 pub m711: crate::ModelAddr<model711::Model711>,
283 pub m712: crate::ModelAddr<model712::Model712>,
285 pub m713: crate::ModelAddr<model713::Model713>,
287 pub m714: crate::ModelAddr<model714::Model714>,
289 pub m715: crate::ModelAddr<model715::Model715>,
291 pub m801: crate::ModelAddr<model801::Model801>,
293 pub m802: crate::ModelAddr<model802::Model802>,
295 pub m803: crate::ModelAddr<model803::Model803>,
297 pub m804: crate::ModelAddr<model804::Model804>,
299 pub m805: crate::ModelAddr<model805::Model805>,
301 pub m806: crate::ModelAddr<model806::Model806>,
303 pub m807: crate::ModelAddr<model807::Model807>,
305 pub m808: crate::ModelAddr<model808::Model808>,
307 pub m809: crate::ModelAddr<model809::Model809>,
309 pub m63001: crate::ModelAddr<model63001::Model63001>,
311 pub m63002: crate::ModelAddr<model63002::Model63002>,
313 pub m64001: crate::ModelAddr<model64001::Model64001>,
315 pub m64020: crate::ModelAddr<model64020::Model64020>,
317 pub m64101: crate::ModelAddr<model64101::Model64101>,
319 pub m64111: crate::ModelAddr<model64111::Model64111>,
321 pub m64112: crate::ModelAddr<model64112::Model64112>,
323}
324impl Models {
325 pub fn supported_model_ids(&self) -> Vec<u16> {
327 let mut v = Vec::with_capacity(106usize);
328 if self.m1.addr != 0 {
329 v.push(1);
330 }
331 if self.m2.addr != 0 {
332 v.push(2);
333 }
334 if self.m3.addr != 0 {
335 v.push(3);
336 }
337 if self.m4.addr != 0 {
338 v.push(4);
339 }
340 if self.m5.addr != 0 {
341 v.push(5);
342 }
343 if self.m6.addr != 0 {
344 v.push(6);
345 }
346 if self.m7.addr != 0 {
347 v.push(7);
348 }
349 if self.m8.addr != 0 {
350 v.push(8);
351 }
352 if self.m9.addr != 0 {
353 v.push(9);
354 }
355 if self.m10.addr != 0 {
356 v.push(10);
357 }
358 if self.m11.addr != 0 {
359 v.push(11);
360 }
361 if self.m12.addr != 0 {
362 v.push(12);
363 }
364 if self.m13.addr != 0 {
365 v.push(13);
366 }
367 if self.m14.addr != 0 {
368 v.push(14);
369 }
370 if self.m15.addr != 0 {
371 v.push(15);
372 }
373 if self.m16.addr != 0 {
374 v.push(16);
375 }
376 if self.m17.addr != 0 {
377 v.push(17);
378 }
379 if self.m18.addr != 0 {
380 v.push(18);
381 }
382 if self.m19.addr != 0 {
383 v.push(19);
384 }
385 if self.m101.addr != 0 {
386 v.push(101);
387 }
388 if self.m102.addr != 0 {
389 v.push(102);
390 }
391 if self.m103.addr != 0 {
392 v.push(103);
393 }
394 if self.m111.addr != 0 {
395 v.push(111);
396 }
397 if self.m112.addr != 0 {
398 v.push(112);
399 }
400 if self.m113.addr != 0 {
401 v.push(113);
402 }
403 if self.m120.addr != 0 {
404 v.push(120);
405 }
406 if self.m121.addr != 0 {
407 v.push(121);
408 }
409 if self.m122.addr != 0 {
410 v.push(122);
411 }
412 if self.m123.addr != 0 {
413 v.push(123);
414 }
415 if self.m124.addr != 0 {
416 v.push(124);
417 }
418 if self.m125.addr != 0 {
419 v.push(125);
420 }
421 if self.m126.addr != 0 {
422 v.push(126);
423 }
424 if self.m127.addr != 0 {
425 v.push(127);
426 }
427 if self.m128.addr != 0 {
428 v.push(128);
429 }
430 if self.m129.addr != 0 {
431 v.push(129);
432 }
433 if self.m130.addr != 0 {
434 v.push(130);
435 }
436 if self.m131.addr != 0 {
437 v.push(131);
438 }
439 if self.m132.addr != 0 {
440 v.push(132);
441 }
442 if self.m133.addr != 0 {
443 v.push(133);
444 }
445 if self.m134.addr != 0 {
446 v.push(134);
447 }
448 if self.m135.addr != 0 {
449 v.push(135);
450 }
451 if self.m136.addr != 0 {
452 v.push(136);
453 }
454 if self.m137.addr != 0 {
455 v.push(137);
456 }
457 if self.m138.addr != 0 {
458 v.push(138);
459 }
460 if self.m139.addr != 0 {
461 v.push(139);
462 }
463 if self.m140.addr != 0 {
464 v.push(140);
465 }
466 if self.m141.addr != 0 {
467 v.push(141);
468 }
469 if self.m142.addr != 0 {
470 v.push(142);
471 }
472 if self.m143.addr != 0 {
473 v.push(143);
474 }
475 if self.m144.addr != 0 {
476 v.push(144);
477 }
478 if self.m145.addr != 0 {
479 v.push(145);
480 }
481 if self.m160.addr != 0 {
482 v.push(160);
483 }
484 if self.m201.addr != 0 {
485 v.push(201);
486 }
487 if self.m202.addr != 0 {
488 v.push(202);
489 }
490 if self.m203.addr != 0 {
491 v.push(203);
492 }
493 if self.m204.addr != 0 {
494 v.push(204);
495 }
496 if self.m211.addr != 0 {
497 v.push(211);
498 }
499 if self.m212.addr != 0 {
500 v.push(212);
501 }
502 if self.m213.addr != 0 {
503 v.push(213);
504 }
505 if self.m214.addr != 0 {
506 v.push(214);
507 }
508 if self.m220.addr != 0 {
509 v.push(220);
510 }
511 if self.m302.addr != 0 {
512 v.push(302);
513 }
514 if self.m303.addr != 0 {
515 v.push(303);
516 }
517 if self.m304.addr != 0 {
518 v.push(304);
519 }
520 if self.m305.addr != 0 {
521 v.push(305);
522 }
523 if self.m306.addr != 0 {
524 v.push(306);
525 }
526 if self.m307.addr != 0 {
527 v.push(307);
528 }
529 if self.m308.addr != 0 {
530 v.push(308);
531 }
532 if self.m401.addr != 0 {
533 v.push(401);
534 }
535 if self.m402.addr != 0 {
536 v.push(402);
537 }
538 if self.m403.addr != 0 {
539 v.push(403);
540 }
541 if self.m404.addr != 0 {
542 v.push(404);
543 }
544 if self.m501.addr != 0 {
545 v.push(501);
546 }
547 if self.m502.addr != 0 {
548 v.push(502);
549 }
550 if self.m601.addr != 0 {
551 v.push(601);
552 }
553 if self.m701.addr != 0 {
554 v.push(701);
555 }
556 if self.m702.addr != 0 {
557 v.push(702);
558 }
559 if self.m703.addr != 0 {
560 v.push(703);
561 }
562 if self.m704.addr != 0 {
563 v.push(704);
564 }
565 if self.m705.addr != 0 {
566 v.push(705);
567 }
568 if self.m706.addr != 0 {
569 v.push(706);
570 }
571 if self.m707.addr != 0 {
572 v.push(707);
573 }
574 if self.m708.addr != 0 {
575 v.push(708);
576 }
577 if self.m709.addr != 0 {
578 v.push(709);
579 }
580 if self.m710.addr != 0 {
581 v.push(710);
582 }
583 if self.m711.addr != 0 {
584 v.push(711);
585 }
586 if self.m712.addr != 0 {
587 v.push(712);
588 }
589 if self.m713.addr != 0 {
590 v.push(713);
591 }
592 if self.m714.addr != 0 {
593 v.push(714);
594 }
595 if self.m715.addr != 0 {
596 v.push(715);
597 }
598 if self.m801.addr != 0 {
599 v.push(801);
600 }
601 if self.m802.addr != 0 {
602 v.push(802);
603 }
604 if self.m803.addr != 0 {
605 v.push(803);
606 }
607 if self.m804.addr != 0 {
608 v.push(804);
609 }
610 if self.m805.addr != 0 {
611 v.push(805);
612 }
613 if self.m806.addr != 0 {
614 v.push(806);
615 }
616 if self.m807.addr != 0 {
617 v.push(807);
618 }
619 if self.m808.addr != 0 {
620 v.push(808);
621 }
622 if self.m809.addr != 0 {
623 v.push(809);
624 }
625 if self.m63001.addr != 0 {
626 v.push(63001);
627 }
628 if self.m63002.addr != 0 {
629 v.push(63002);
630 }
631 if self.m64001.addr != 0 {
632 v.push(64001);
633 }
634 if self.m64020.addr != 0 {
635 v.push(64020);
636 }
637 if self.m64101.addr != 0 {
638 v.push(64101);
639 }
640 if self.m64111.addr != 0 {
641 v.push(64111);
642 }
643 if self.m64112.addr != 0 {
644 v.push(64112);
645 }
646 v
647 }
648 pub fn set_addr(&mut self, model_id: u16, addr: u16, len: u16) -> bool {
652 match model_id {
653 1 => self.m1.set_addr(addr, len),
654 2 => self.m2.set_addr(addr, len),
655 3 => self.m3.set_addr(addr, len),
656 4 => self.m4.set_addr(addr, len),
657 5 => self.m5.set_addr(addr, len),
658 6 => self.m6.set_addr(addr, len),
659 7 => self.m7.set_addr(addr, len),
660 8 => self.m8.set_addr(addr, len),
661 9 => self.m9.set_addr(addr, len),
662 10 => self.m10.set_addr(addr, len),
663 11 => self.m11.set_addr(addr, len),
664 12 => self.m12.set_addr(addr, len),
665 13 => self.m13.set_addr(addr, len),
666 14 => self.m14.set_addr(addr, len),
667 15 => self.m15.set_addr(addr, len),
668 16 => self.m16.set_addr(addr, len),
669 17 => self.m17.set_addr(addr, len),
670 18 => self.m18.set_addr(addr, len),
671 19 => self.m19.set_addr(addr, len),
672 101 => self.m101.set_addr(addr, len),
673 102 => self.m102.set_addr(addr, len),
674 103 => self.m103.set_addr(addr, len),
675 111 => self.m111.set_addr(addr, len),
676 112 => self.m112.set_addr(addr, len),
677 113 => self.m113.set_addr(addr, len),
678 120 => self.m120.set_addr(addr, len),
679 121 => self.m121.set_addr(addr, len),
680 122 => self.m122.set_addr(addr, len),
681 123 => self.m123.set_addr(addr, len),
682 124 => self.m124.set_addr(addr, len),
683 125 => self.m125.set_addr(addr, len),
684 126 => self.m126.set_addr(addr, len),
685 127 => self.m127.set_addr(addr, len),
686 128 => self.m128.set_addr(addr, len),
687 129 => self.m129.set_addr(addr, len),
688 130 => self.m130.set_addr(addr, len),
689 131 => self.m131.set_addr(addr, len),
690 132 => self.m132.set_addr(addr, len),
691 133 => self.m133.set_addr(addr, len),
692 134 => self.m134.set_addr(addr, len),
693 135 => self.m135.set_addr(addr, len),
694 136 => self.m136.set_addr(addr, len),
695 137 => self.m137.set_addr(addr, len),
696 138 => self.m138.set_addr(addr, len),
697 139 => self.m139.set_addr(addr, len),
698 140 => self.m140.set_addr(addr, len),
699 141 => self.m141.set_addr(addr, len),
700 142 => self.m142.set_addr(addr, len),
701 143 => self.m143.set_addr(addr, len),
702 144 => self.m144.set_addr(addr, len),
703 145 => self.m145.set_addr(addr, len),
704 160 => self.m160.set_addr(addr, len),
705 201 => self.m201.set_addr(addr, len),
706 202 => self.m202.set_addr(addr, len),
707 203 => self.m203.set_addr(addr, len),
708 204 => self.m204.set_addr(addr, len),
709 211 => self.m211.set_addr(addr, len),
710 212 => self.m212.set_addr(addr, len),
711 213 => self.m213.set_addr(addr, len),
712 214 => self.m214.set_addr(addr, len),
713 220 => self.m220.set_addr(addr, len),
714 302 => self.m302.set_addr(addr, len),
715 303 => self.m303.set_addr(addr, len),
716 304 => self.m304.set_addr(addr, len),
717 305 => self.m305.set_addr(addr, len),
718 306 => self.m306.set_addr(addr, len),
719 307 => self.m307.set_addr(addr, len),
720 308 => self.m308.set_addr(addr, len),
721 401 => self.m401.set_addr(addr, len),
722 402 => self.m402.set_addr(addr, len),
723 403 => self.m403.set_addr(addr, len),
724 404 => self.m404.set_addr(addr, len),
725 501 => self.m501.set_addr(addr, len),
726 502 => self.m502.set_addr(addr, len),
727 601 => self.m601.set_addr(addr, len),
728 701 => self.m701.set_addr(addr, len),
729 702 => self.m702.set_addr(addr, len),
730 703 => self.m703.set_addr(addr, len),
731 704 => self.m704.set_addr(addr, len),
732 705 => self.m705.set_addr(addr, len),
733 706 => self.m706.set_addr(addr, len),
734 707 => self.m707.set_addr(addr, len),
735 708 => self.m708.set_addr(addr, len),
736 709 => self.m709.set_addr(addr, len),
737 710 => self.m710.set_addr(addr, len),
738 711 => self.m711.set_addr(addr, len),
739 712 => self.m712.set_addr(addr, len),
740 713 => self.m713.set_addr(addr, len),
741 714 => self.m714.set_addr(addr, len),
742 715 => self.m715.set_addr(addr, len),
743 801 => self.m801.set_addr(addr, len),
744 802 => self.m802.set_addr(addr, len),
745 803 => self.m803.set_addr(addr, len),
746 804 => self.m804.set_addr(addr, len),
747 805 => self.m805.set_addr(addr, len),
748 806 => self.m806.set_addr(addr, len),
749 807 => self.m807.set_addr(addr, len),
750 808 => self.m808.set_addr(addr, len),
751 809 => self.m809.set_addr(addr, len),
752 63001 => self.m63001.set_addr(addr, len),
753 63002 => self.m63002.set_addr(addr, len),
754 64001 => self.m64001.set_addr(addr, len),
755 64020 => self.m64020.set_addr(addr, len),
756 64101 => self.m64101.set_addr(addr, len),
757 64111 => self.m64111.set_addr(addr, len),
758 64112 => self.m64112.set_addr(addr, len),
759 _ => {
760 return false;
761 }
762 }
763 true
764 }
765}