github.com/mvdan/u-root-coreutils@v0.0.0-20230122170626-c2eef2898555/cmds/contrib/flash/dummy.go (about)

     1  // Copyright 2021 the u-root Authors. All rights reserved
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package main
     6  
     7  import (
     8  	"fmt"
     9  
    10  	"github.com/mvdan/u-root-coreutils/pkg/flash"
    11  	"github.com/mvdan/u-root-coreutils/pkg/flash/spimock"
    12  )
    13  
    14  type dummyProgrammer struct {
    15  	*flash.Flash
    16  	spi *spimock.MockSPI
    17  }
    18  
    19  func (p *dummyProgrammer) Close() error {
    20  	return p.spi.Close()
    21  }
    22  
    23  func init() {
    24  	supportedProgrammers["dummy"] = func(params programmerParams) (programmer, error) {
    25  		spi := spimock.New()
    26  		if image, ok := params["image"]; ok {
    27  			var err error
    28  			spi, err = spimock.NewFromFile(image)
    29  			if err != nil {
    30  				return nil, err
    31  			}
    32  			delete(params, "image")
    33  		}
    34  		if len(params) != 0 {
    35  			return nil, fmt.Errorf("unrecognized parameters: %v", params)
    36  		}
    37  		flash, err := flash.New(spi)
    38  		if err != nil {
    39  			return nil, err
    40  		}
    41  		return &dummyProgrammer{
    42  			Flash: flash,
    43  			spi:   spi,
    44  		}, nil
    45  	}
    46  }