| /* |
| * 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) |
| |
| } |