From 65e09e831cf13343ac713fbf15281174d1f13a94 Mon Sep 17 00:00:00 2001 From: Sebastien Douheret Date: Fri, 23 Feb 2018 18:45:15 +0100 Subject: Added target and terminal support. Signed-off-by: Sebastien Douheret --- lib/xsapiv1/targets.go | 124 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 lib/xsapiv1/targets.go (limited to 'lib/xsapiv1') diff --git a/lib/xsapiv1/targets.go b/lib/xsapiv1/targets.go new file mode 100644 index 0000000..3f2b3c4 --- /dev/null +++ b/lib/xsapiv1/targets.go @@ -0,0 +1,124 @@ +/* + * Copyright (C) 2018 "IoT.bzh" + * Author Sebastien Douheret + * + * 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 xsapiv1 + +/** + * Target + **/ + +// TargetType definition +type TargetType string + +const ( + // TypeTgtStandard Standard target type + TypeTgtStandard = "standard" +) + +// Target Status definition +const ( + StatusTgtErrorConfig = "ErrorConfig" + StatusTgtDisable = "Disable" + StatusTgtEnable = "Enable" +) + +// TargetConfig config of a target / board +type TargetConfig struct { + ID string `json:"id"` + Name string `json:"name"` + Type TargetType `json:"type"` + IP string `json:"ip"` + Status string `json:"status"` + Terms []TerminalConfig `json:"terms"` +} + +/** + * Terminal + **/ + +// TerminalType definition +type TerminalType string + +const ( + // TypeTermSSH ssh terminal type + TypeTermSSH = "ssh" + + // StatusTermErrorConfig Configuration error + StatusTermErrorConfig = "ErrorConfig" + // StatusTermEnable Enable state + StatusTermEnable = "Enable" + // StatusTermOpen Open state + StatusTermOpen = "Open" + // StatusTermClose Close state + StatusTermClose = "Close" + + // TerminalInEvent Event send in WS when characters are sent (stdin) + TerminalInEvent = "term:input" + // TerminalOutEvent Event send in WS when characters are received (stdout or stderr) + TerminalOutEvent = "term:output" + // TerminalExitEvent Event send in WS on terminal/console exit + TerminalExitEvent = "term:exit" +) + +type ( + + // TerminalConfig config of a board terminal + TerminalConfig struct { + ID string `json:"id"` + Name string `json:"name"` + Type TerminalType `json:"type"` + User string `json:"user"` + Options []string `json:"options"` + Status string `json:"status"` + Cols uint16 `json:"cols"` + Rows uint16 `json:"rows"` + } + + // TerminalInMsg Message used to received input characters (stdin) + TerminalInMsg struct { + TermID string `json:"termID"` + Timestamp string `json:"timestamp"` + Stdin string `json:"stdin"` + } + + // TerminalOutMsg Message used to send output characters (stdout+stderr) + TerminalOutMsg struct { + TermID string `json:"termID"` + Timestamp string `json:"timestamp"` + Stdout string `json:"stdout"` + Stderr string `json:"stderr"` + } + + // TerminalExitMsg Message sent on terminal/console exit + TerminalExitMsg struct { + TermID string `json:"termID"` + Timestamp string `json:"timestamp"` + Code int `json:"code"` + Error error `json:"error"` + } + + // TerminalResizeArgs JSON parameters of /terminal/:tid/resize command + TerminalResizeArgs struct { + Cols uint16 `json:"cols"` + Rows uint16 `json:"rows"` + } + + // TerminalSignalArgs JSON parameters of /terminal/:tid/signal command + TerminalSignalArgs struct { + Signal string `json:"signal" binding:"required"` // signal number + } +) -- cgit 1.2.3-korg