Added target and terminal support.
[src/xds/xds-server.git] / lib / xsapiv1 / targets.go
diff --git a/lib/xsapiv1/targets.go b/lib/xsapiv1/targets.go
new file mode 100644 (file)
index 0000000..3f2b3c4
--- /dev/null
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2018 "IoT.bzh"
+ * Author Sebastien Douheret <sebastien@iot.bzh>
+ *
+ * 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
+       }
+)