sunspec/models/
mod.rs

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/// This struct contains the addresses of all discovered models.
108#[derive(Debug, Default)]
109#[cfg_attr(feature = "serde", derive(::serde::Serialize, ::serde::Deserialize))]
110pub struct Models {
111    /// Common
112    pub m1: crate::ModelAddr<model1::Model1>,
113    /// Basic Aggregator
114    pub m2: crate::ModelAddr<model2::Model2>,
115    /// Secure Dataset Read Request
116    pub m3: crate::ModelAddr<model3::Model3>,
117    /// Secure Dataset Read Response
118    pub m4: crate::ModelAddr<model4::Model4>,
119    /// Secure Write Request
120    pub m5: crate::ModelAddr<model5::Model5>,
121    /// Secure Write Sequential Request
122    pub m6: crate::ModelAddr<model6::Model6>,
123    /// Secure Write Response Model (DRAFT 1)
124    pub m7: crate::ModelAddr<model7::Model7>,
125    /// Get Device Security Certificate
126    pub m8: crate::ModelAddr<model8::Model8>,
127    /// Set Operator Security Certificate
128    pub m9: crate::ModelAddr<model9::Model9>,
129    /// Communication Interface Header
130    pub m10: crate::ModelAddr<model10::Model10>,
131    /// Ethernet Link Layer
132    pub m11: crate::ModelAddr<model11::Model11>,
133    /// IPv4
134    pub m12: crate::ModelAddr<model12::Model12>,
135    /// IPv6
136    pub m13: crate::ModelAddr<model13::Model13>,
137    /// Proxy Server
138    pub m14: crate::ModelAddr<model14::Model14>,
139    /// Interface Counters Model
140    pub m15: crate::ModelAddr<model15::Model15>,
141    /// Simple IP Network
142    pub m16: crate::ModelAddr<model16::Model16>,
143    /// Serial Interface
144    pub m17: crate::ModelAddr<model17::Model17>,
145    /// Cellular Link
146    pub m18: crate::ModelAddr<model18::Model18>,
147    /// PPP Link
148    pub m19: crate::ModelAddr<model19::Model19>,
149    /// Inverter (Single Phase)
150    pub m101: crate::ModelAddr<model101::Model101>,
151    /// Inverter (Split-Phase)
152    pub m102: crate::ModelAddr<model102::Model102>,
153    /// Inverter (Three Phase)
154    pub m103: crate::ModelAddr<model103::Model103>,
155    /// Inverter (Single Phase) FLOAT
156    pub m111: crate::ModelAddr<model111::Model111>,
157    /// Inverter (Split Phase) FLOAT
158    pub m112: crate::ModelAddr<model112::Model112>,
159    /// Inverter (Three Phase) FLOAT
160    pub m113: crate::ModelAddr<model113::Model113>,
161    /// Nameplate
162    pub m120: crate::ModelAddr<model120::Model120>,
163    /// Basic Settings
164    pub m121: crate::ModelAddr<model121::Model121>,
165    /// Measurements_Status
166    pub m122: crate::ModelAddr<model122::Model122>,
167    /// Immediate Controls
168    pub m123: crate::ModelAddr<model123::Model123>,
169    /// Storage
170    pub m124: crate::ModelAddr<model124::Model124>,
171    /// Pricing
172    pub m125: crate::ModelAddr<model125::Model125>,
173    /// Static Volt-VAR
174    pub m126: crate::ModelAddr<model126::Model126>,
175    /// Freq-Watt Param
176    pub m127: crate::ModelAddr<model127::Model127>,
177    /// Dynamic Reactive Current
178    pub m128: crate::ModelAddr<model128::Model128>,
179    /// LVRTD
180    pub m129: crate::ModelAddr<model129::Model129>,
181    /// HVRTD
182    pub m130: crate::ModelAddr<model130::Model130>,
183    /// Watt-PF
184    pub m131: crate::ModelAddr<model131::Model131>,
185    /// Volt-Watt
186    pub m132: crate::ModelAddr<model132::Model132>,
187    /// Basic Scheduling
188    pub m133: crate::ModelAddr<model133::Model133>,
189    /// Freq-Watt Crv
190    pub m134: crate::ModelAddr<model134::Model134>,
191    /// LFRT
192    pub m135: crate::ModelAddr<model135::Model135>,
193    /// HFRT
194    pub m136: crate::ModelAddr<model136::Model136>,
195    /// LVRTC
196    pub m137: crate::ModelAddr<model137::Model137>,
197    /// HVRTC
198    pub m138: crate::ModelAddr<model138::Model138>,
199    /// LVRTX
200    pub m139: crate::ModelAddr<model139::Model139>,
201    /// HVRTX
202    pub m140: crate::ModelAddr<model140::Model140>,
203    /// LFRTC
204    pub m141: crate::ModelAddr<model141::Model141>,
205    /// HFRTC
206    pub m142: crate::ModelAddr<model142::Model142>,
207    /// LFRTX
208    pub m143: crate::ModelAddr<model143::Model143>,
209    /// HFRTX
210    pub m144: crate::ModelAddr<model144::Model144>,
211    /// Extended Settings
212    pub m145: crate::ModelAddr<model145::Model145>,
213    /// Multiple MPPT Inverter Extension Model
214    pub m160: crate::ModelAddr<model160::Model160>,
215    /// Meter (Single Phase) single phase (AN or AB) meter
216    pub m201: crate::ModelAddr<model201::Model201>,
217    /// split single phase (ABN) meter
218    pub m202: crate::ModelAddr<model202::Model202>,
219    /// wye-connect three phase (abcn) meter
220    pub m203: crate::ModelAddr<model203::Model203>,
221    /// delta-connect three phase (abc) meter
222    pub m204: crate::ModelAddr<model204::Model204>,
223    /// single phase (AN or AB) meter
224    pub m211: crate::ModelAddr<model211::Model211>,
225    /// split single phase (ABN) meter
226    pub m212: crate::ModelAddr<model212::Model212>,
227    /// wye-connect three phase (abcn) meter
228    pub m213: crate::ModelAddr<model213::Model213>,
229    /// delta-connect three phase (abc) meter
230    pub m214: crate::ModelAddr<model214::Model214>,
231    /// Secure AC Meter Selected Readings
232    pub m220: crate::ModelAddr<model220::Model220>,
233    /// Irradiance Model
234    pub m302: crate::ModelAddr<model302::Model302>,
235    /// Back of Module Temperature Model
236    pub m303: crate::ModelAddr<model303::Model303>,
237    /// Inclinometer Model
238    pub m304: crate::ModelAddr<model304::Model304>,
239    /// GPS
240    pub m305: crate::ModelAddr<model305::Model305>,
241    /// Reference Point Model
242    pub m306: crate::ModelAddr<model306::Model306>,
243    /// Base Met
244    pub m307: crate::ModelAddr<model307::Model307>,
245    /// Mini Met Model
246    pub m308: crate::ModelAddr<model308::Model308>,
247    /// String Combiner (Current)
248    pub m401: crate::ModelAddr<model401::Model401>,
249    /// String Combiner (Advanced)
250    pub m402: crate::ModelAddr<model402::Model402>,
251    /// String Combiner (Current)
252    pub m403: crate::ModelAddr<model403::Model403>,
253    /// String Combiner (Advanced)
254    pub m404: crate::ModelAddr<model404::Model404>,
255    /// Solar Module
256    pub m501: crate::ModelAddr<model501::Model501>,
257    /// Solar Module
258    pub m502: crate::ModelAddr<model502::Model502>,
259    /// Tracker Controller DRAFT 2
260    pub m601: crate::ModelAddr<model601::Model601>,
261    /// DER AC Measurement
262    pub m701: crate::ModelAddr<model701::Model701>,
263    /// DER Capacity
264    pub m702: crate::ModelAddr<model702::Model702>,
265    /// Enter Service
266    pub m703: crate::ModelAddr<model703::Model703>,
267    /// DER AC Controls
268    pub m704: crate::ModelAddr<model704::Model704>,
269    /// DER Volt-Var
270    pub m705: crate::ModelAddr<model705::Model705>,
271    /// DER Volt-Watt
272    pub m706: crate::ModelAddr<model706::Model706>,
273    /// DER Trip LV
274    pub m707: crate::ModelAddr<model707::Model707>,
275    /// DER Trip HV
276    pub m708: crate::ModelAddr<model708::Model708>,
277    /// DER Trip LF
278    pub m709: crate::ModelAddr<model709::Model709>,
279    /// DER Trip HF
280    pub m710: crate::ModelAddr<model710::Model710>,
281    /// DER Frequency Droop
282    pub m711: crate::ModelAddr<model711::Model711>,
283    /// DER Watt-Var
284    pub m712: crate::ModelAddr<model712::Model712>,
285    /// DER Storage Capacity
286    pub m713: crate::ModelAddr<model713::Model713>,
287    /// DER DC Measurement
288    pub m714: crate::ModelAddr<model714::Model714>,
289    /// DERCtl
290    pub m715: crate::ModelAddr<model715::Model715>,
291    /// Energy Storage Base Model (DEPRECATED)
292    pub m801: crate::ModelAddr<model801::Model801>,
293    /// Battery Base Model
294    pub m802: crate::ModelAddr<model802::Model802>,
295    /// Lithium-Ion Battery Bank Model
296    pub m803: crate::ModelAddr<model803::Model803>,
297    /// Lithium-Ion String Model
298    pub m804: crate::ModelAddr<model804::Model804>,
299    /// Lithium-Ion Module Model
300    pub m805: crate::ModelAddr<model805::Model805>,
301    /// Flow Battery Model
302    pub m806: crate::ModelAddr<model806::Model806>,
303    /// Flow Battery String Model
304    pub m807: crate::ModelAddr<model807::Model807>,
305    /// Flow Battery Module Model
306    pub m808: crate::ModelAddr<model808::Model808>,
307    /// Flow Battery Stack Model
308    pub m809: crate::ModelAddr<model809::Model809>,
309    /// SunSpec Test Model 1
310    pub m63001: crate::ModelAddr<model63001::Model63001>,
311    /// SunSpec Test Model 2
312    pub m63002: crate::ModelAddr<model63002::Model63002>,
313    /// Veris Status and Configuration
314    pub m64001: crate::ModelAddr<model64001::Model64001>,
315    /// Mersen GreenString
316    pub m64020: crate::ModelAddr<model64020::Model64020>,
317    /// Eltek Inverter Extension
318    pub m64101: crate::ModelAddr<model64101::Model64101>,
319    /// Basic Charge Controller
320    pub m64111: crate::ModelAddr<model64111::Model64111>,
321    /// OutBack FM Charge Controller
322    pub m64112: crate::ModelAddr<model64112::Model64112>,
323}
324impl Models {
325    /// Returns a list of all supported model ids
326    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    /// Set address and length of the given model.
649    ///
650    /// This method is used by the model discovery.
651    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}