summaryrefslogtreecommitdiffstats
path: root/lib/xaapiv1/targets.go
diff options
context:
space:
mode:
authorSebastien Douheret <sebastien.douheret@iot.bzh>2018-02-23 18:50:31 +0100
committerSebastien Douheret <sebastien.douheret@iot.bzh>2018-02-23 19:15:02 +0100
commitbefb10519daefcbee85950a4e574678fe4b7f402 (patch)
treeb4f95889cfacbdf9909c3ccd11dc1f0f8bedb417 /lib/xaapiv1/targets.go
parent38e0baedab9da4516cdc97b526392cbc2c7da67e (diff)
Added target and terminal support.v1.1.0
Signed-off-by: Sebastien Douheret <sebastien.douheret@iot.bzh>
Diffstat (limited to 'lib/xaapiv1/targets.go')
-rw-r--r--lib/xaapiv1/targets.go124
1 files changed, 124 insertions, 0 deletions
diff --git a/lib/xaapiv1/targets.go b/lib/xaapiv1/targets.go
new file mode 100644
index 0000000..9cea6ff
--- /dev/null
+++ b/lib/xaapiv1/targets.go
@@ -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 xaapiv1
+
+/**
+ * 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
+ }
+)