func()

in newt/pkg/bsp_package.go [138:216]


func (bsp *BspPackage) Reload(settings *cfgv.Settings) error {
	var ypkg *LocalPackage
	var ycfg *ycfg.YCfg
	var err error

	if settings == nil {
		settings = cfgv.NewSettings(nil)
	}
	settings.Set(strings.ToUpper(runtime.GOOS), "1")

	bsp.BspV, err = config.ReadFile(bsp.BspYamlPath())
	if err != nil {
		return err
	}
	bsp.AddCfgFilename(bsp.BspYamlPath())

	ypkg, ycfg = bsp.selectKey("bsp.compiler")
	bsp.CompilerNamePkg = ypkg
	bsp.CompilerName, err = ycfg.GetValString("bsp.compiler", settings)
	util.OneTimeWarningError(err)

	bsp.Arch, err = bsp.BspV.GetValString("bsp.arch", settings)
	util.OneTimeWarningError(err)

	_, ycfg = bsp.selectKey("bsp.image_offset")
	bsp.ImageOffset, err = ycfg.GetValInt("bsp.image_offset", settings)
	util.OneTimeWarningError(err)

	_, ycfg = bsp.selectKey("bsp.image_pad")
	bsp.ImagePad, err = ycfg.GetValInt("bsp.image_pad", settings)
	util.OneTimeWarningError(err)

	bsp.LinkerScripts, err = bsp.resolveLinkerScriptSetting(settings, "bsp.linkerscript")
	if err != nil {
		return err
	}

	bsp.Part2LinkerScripts, err = bsp.resolveLinkerScriptSetting(settings, "bsp.part2linkerscript")
	if err != nil {
		return err
	}

	bsp.DownloadScript, err = bsp.resolvePathSetting(
		settings, "bsp.downloadscript")
	if err != nil {
		return err
	}
	bsp.DebugScript, err = bsp.resolvePathSetting(
		settings, "bsp.debugscript")
	if err != nil {
		return err
	}
	/* Optional Target Checker Script, not an err if not found */
	bsp.OptChkScript, err = bsp.resolvePathSetting(
		settings, "bsp.optionalcheckscript")

	if bsp.CompilerName == "" {
		return util.NewNewtError("BSP does not specify a compiler " +
			"(bsp.compiler)")
	}
	if bsp.Arch == "" {
		return util.NewNewtError("BSP does not specify an architecture " +
			"(bsp.arch)")
	}

	ypkg, ycfg = bsp.selectKey("bsp.flash_map")
	ymlFlashMap, err := ycfg.GetValStringMap("bsp.flash_map", settings)
	util.OneTimeWarningError(err)
	if ymlFlashMap == nil {
		return util.NewNewtError("BSP does not specify a flash map " +
			"(bsp.flash_map)")
	}
	bsp.FlashMap, err = flashmap.Read(ymlFlashMap, ypkg.FullName())
	if err != nil {
		return err
	}

	return nil
}