code: func (c *Client) SetBootDevice(dev BootDevice) error {
  	useProgress := true
  	// set set-in-progress flag
  	err := c.setBootParam(BootParamSetInProgress, 0x01)
  	if err != nil {
  		useProgress = false
  	}
  
  	err = c.setBootParam(BootParamInfoAck, 0x01, 0x01)
  	if err != nil {
  		if useProgress {
  			// set-in-progress = set-complete
  			_ = c.setBootParam(BootParamSetInProgress, 0x00)
  		}
  		return err
  	}
  
  	err = c.setBootParam(BootParamBootFlags, 0x80, uint8(dev), 0x00, 0x00, 0x00)
  	if err == nil {
  		if useProgress {
  			// set-in-progress = commit-write
  			_ = c.setBootParam(BootParamSetInProgress, 0x02)
  		}
  	}
  
  	if useProgress {
  		// set-in-progress = set-complete
  		_ = c.setBootParam(BootParamSetInProgress, 0x00)
  	}
  
  	return err
  }
docs: // SetBootDevice is a wrapper around SetSystemBootOptionsRequest to configure the BootDevice
  // per section 28.12 - table 28