package modbus

// type Register struct {
// 	ID    uint8
// 	Name  string
// 	Value uint16
// }
//
// type Slaver struct {
// 	ID       uint16 // ID for PLC
// 	Function uint16 // Function Code
// 	Address  uint16 // Address the PLC address, e.g. 30001 will be set if Code4 in Function
// 	Quantity uint16 // Quantity of Registered
// 	Register []Register
// }
//
// func (s *Slaver) handlerCode4(b []byte) ([]byte, error) {
// 	req, err := ParseADU(b)
// 	if err != nil {
// 		return nil, err
// 	}
// 	if req.ProtocolID != Protocol {
// 		return nil, fmt.Errorf("protocol not supported: %d", req.ProtocolID)
// 	}
//
// }
//
// func (s *Slaver) handleConn(conn net.Conn) {
// 	defer func() {
// 		_ = conn.Close()
// 	}()
// 	buf := make([]byte, 1024)
// 	for {
// 		n, err := conn.Read(buf)
// 		if err != nil {
// 			log.Println("handleConn:", err)
// 			return
// 		}
//
// 	}
// }
//
// func (s *Slaver) ListenAndServe(ctx context.Context, addr string) error {
// 	ln, err := net.Listen("tcp", addr)
// 	if err != nil {
// 		return err
// 	}
// 	defer func() {
// 		_ = ln.Close()
// 	}()
// 	for {
// 		if err = ctx.Err(); err != nil {
// 			return err
// 		}
// 		conn, err := ln.Accept()
// 		if err != nil {
// 			return err
// 		}
// 		go s.handleConn(conn)
// 	}
// }
