stty/real.go
2025-05-05 00:00:56 +03:00

46 lines
990 B
Go

package stty
import(
"os/exec"
"fmt"
)
type real struct {
}
func (r *real) SetBaudRate(portPath string, baudrate int) error {
setBaudRateCMD := exec.Command("stty", "-F", portPath, fmt.Sprint(baudrate))
_, err := setBaudRateCMD.Output()
return errStack(ERR_SET_BAUDRATE_FAILED(), err)
}
func (r *real) CheckBaudRate(portPath string) (baudrate int, err error) {
checkBaudRateCMD := exec.Command("stty", "-F", portPath, "speed")
sttyOutput, err := checkBaudRateCMD.Output()
if err != nil {
return 0, err
}
_, err = fmt.Sscan(string(sttyOutput), &baudrate)
if err != nil {
return 0, err
}
return baudrate, nil
}
func (r *real) TestBaudRate(portPath string, baudrate int) error {
err := r.SetBaudRate(portPath, baudrate)
if err != nil {
return err
}
newBaudRate, err := r.CheckBaudRate(portPath)
if err != nil {
return errStack(ERR_CHECK_BAUDRATE_FAILED(), err)
}
if newBaudRate == baudrate {
return nil
}
return ERR_BAUDRATE_NOT_SUPPORTED()
}