blob: a392e9532d1132d40a40124637eead27247047d7 [file] [log] [blame]
/*
* Copyright 2018-present Open Networking Foundation
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package devicemenu
import (
"fmt"
"github.com/bclicn/color"
"github.com/opencord/voltha-go/cli/util"
"google.golang.org/grpc"
)
/*
Conn - the grpc connection to use for making calls to voltha core
*/
var (
Conn *grpc.ClientConn
DeviceID *string
InputPrompt *string
Commands *[]string
)
/*
MainLoop - the loop which processes commands at the main level
*/
func MainLoop(conn *grpc.ClientConn, deviceID string) {
DeviceID = &deviceID
inputPrompt := fmt.Sprint("(" + color.LightRed("device "+deviceID) + ") ")
InputPrompt = &inputPrompt
funcTable := make(map[string]func(bool))
// inputPromptSize := len(inputPrompt)
Conn = conn
funcTable["quit"] = util.Exit
funcTable["exit"] = nil
funcTable["edit"] = doEdit
funcTable["history"] = doHistory
funcTable["img_dnld_request"] = doImgDnldRequest
funcTable["perf_config"] = doPerfConfig
funcTable["save"] = doSave
funcTable["eof"] = doEOF
funcTable["images"] = doImages
funcTable["img_dnld_status"] = doImgDnldStatus
funcTable["ports"] = doPorts
funcTable["set"] = doSet
funcTable["img_activate"] = doImgActivate
funcTable["img_revert"] = doImgRevert
funcTable["py"] = doPy
funcTable["shell"] = doShell
funcTable["flows"] = doFlows
funcTable["img_dnld_canel"] = doImgDnldCancel
funcTable["list"] = doList
funcTable["shortcuts"] = doShortCuts
funcTable["help"] = doHelp
funcTable["img_dnld_list"] = doImgDnldList
funcTable["pause"] = doPause
funcTable["run"] = doRun
funcTable["show"] = doShow
commands := make([]string, len(funcTable))
i := 0
for key := range funcTable {
commands[i] = key
i++
}
Commands = &commands
util.ProcessTable(funcTable, inputPrompt)
}