* GEN3: Invalid Contact Info Msg Fixes #191 * introduce ifc with FIFOs * add object factory * use AsyncIfc class with FIFO * declare more methods as classmethods * - refactoring - remove _forward_buffer - make async_write private * remove _forward_buffer * refactoring * avoid mqtt handling for invalid serial numbers * add two more callbacks * FIX update_header_cb handling * split AsyncStream in two classes * split ConnectionG3(P) in server and client class * update class diagramm * refactor server creation * remove duplicated imports * reduce code duplication * move StremPtr instances into Inverter class * resolution of connection classes - remove ConnectionG3Client - remove ConnectionG3Server - remove ConnectionG3PClient - remove ConnectionG3PServer * fix server connections * fix client loop closing * don't overwrite self.remote in constructor * update class diagramm * fixes - fixes null pointer accesses - initalize AsyncStreamClient with proper StreamPtr instance * add close callback * refactor close handling * remove connection classes * move more code into InverterBase class * remove test_inverter_base.py * add abstract inverter interface class * initial commit * fix sonar qube warnings * rename class Inverter into Proxy * fix typo * move class InverterIfc into a separate file * add more testcases * use ProtocolIfc class * add unit tests for AsyncStream class * icrease test coverage * reduce cognitive complexity * increase test coverage * increase tes coverage * simplify heartbeat handler * remove obsolete tx_get method * add more unittests * update changelog * remove __del__ method for proper gc runs * check releasing of ModbusConn instances * call garbage collector to release unreachable objs * decrease ref counter after the with block
52 lines
2.4 KiB
Plaintext
52 lines
2.4 KiB
Plaintext
// {type:class}
|
|
// {direction:topDown}
|
|
// {generate:true}
|
|
|
|
[note: You can stick notes on diagrams too!{bg:cornsilk}]
|
|
[<<AbstractIterMeta>>||__iter__()]
|
|
|
|
[InverterG3|addr;remote:StreamPtr;local:StreamPtr|create_remote();;close()]
|
|
[InverterG3P|addr;remote:StreamPtr;local:StreamPtr|create_remote();;close()]
|
|
|
|
[<<AsyncIfc>>||set_node_id();get_conn_no();;tx_add();tx_flush();tx_get();tx_peek();tx_log();tx_clear();tx_len();;fwd_add();fwd_log();rx_get();rx_peek();rx_log();rx_clear();rx_len();rx_set_cb();;prot_set_timeout_cb()]
|
|
[AsyncIfcImpl|fwd_fifo:ByteFifo;tx_fifo:ByteFifo;rx_fifo:ByteFifo;conn_no:Count;node_id;timeout_cb]
|
|
[AsyncStream|reader;writer;addr;r_addr;l_addr|;<async>loop;disc();close();healthy();;__async_read();__async_write();__async_forward()]
|
|
[AsyncStreamServer|create_remote|<async>server_loop();<async>_async_forward();<async>publish_outstanding_mqtt();close()]
|
|
[AsyncStreamClient||<async>client_loop();<async>_async_forward())]
|
|
[<<AsyncIfc>>]^-.-[AsyncIfcImpl]
|
|
[AsyncIfcImpl]^[AsyncStream]
|
|
[AsyncStream]^[AsyncStreamServer]
|
|
[AsyncStream]^[AsyncStreamClient]
|
|
|
|
|
|
[Talent|ifc:AsyncIfc;conn_no;addr;;await_conn_resp_cnt;id_str;contact_name;contact_mail;db:InfosG3;mb:Modbus;switch|msg_contact_info();msg_ota_update();msg_get_time();msg_collector_data();msg_inverter_data();msg_unknown();;healthy();close()]
|
|
[Talent]<remote-[InverterG3]
|
|
[InverterG3]-remote>[AsyncStreamClient]
|
|
[Talent]<-local++[InverterG3]
|
|
[InverterG3]++local->[AsyncStreamServer]
|
|
|
|
[SolarmanV5|ifc:AsyncIfc;conn_no;addr;;control;serial;snr;db:InfosG3P;mb:Modbus;switch|msg_unknown();;healthy();close()]
|
|
[SolarmanV5]<remote-[InverterG3P]
|
|
[InverterG3P]-remote>[AsyncStreamClient]
|
|
[SolarmanV5]<-local++[InverterG3P]
|
|
[InverterG3P]++local->[AsyncStreamServer]
|
|
|
|
[Infos|stat;new_stat_data;info_dev|static_init();dev_value();inc_counter();dec_counter();ha_proxy_conf;ha_conf;ha_remove;update_db;set_db_def_value;get_db_value;ignore_this_device]
|
|
[Infos]^[InfosG3||ha_confs();parse()]
|
|
[Infos]^[InfosG3P||ha_confs();parse()]
|
|
|
|
[Talent]use->[<<AsyncIfc>>]
|
|
[Talent]->[InfosG3]
|
|
[SolarmanV5]use->[<<AsyncIfc>>]
|
|
[SolarmanV5]->[InfosG3P]
|
|
|
|
[<<ProtocolIfc>>|_registry|close()]
|
|
[<<AbstractIterMeta>>]^-.-[<<ProtocolIfc>>]
|
|
[<<ProtocolIfc>>]^-.-[Message|node_id|inc_counter();dec_counter()]
|
|
[Message]^[Talent]
|
|
[Message]^[SolarmanV5]
|
|
|
|
[Modbus|que;;snd_handler;rsp_handler;timeout;max_retires;last_xxx;err;retry_cnt;req_pend;tim|build_msg();recv_req();recv_resp();close()]
|
|
[Modbus]<1-has[SolarmanV5]
|
|
[Modbus]<1-has[Talent]
|