summaryrefslogtreecommitdiffstats
path: root/scripts/remote/messages.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/remote/messages.py')
-rw-r--r--scripts/remote/messages.py154
1 files changed, 154 insertions, 0 deletions
diff --git a/scripts/remote/messages.py b/scripts/remote/messages.py
new file mode 100644
index 0000000000..8e8495b12e
--- /dev/null
+++ b/scripts/remote/messages.py
@@ -0,0 +1,154 @@
+#!/usr/bin/env python2
+# -*- coding: utf-8 -*-
+
+from __future__ import absolute_import, division, print_function
+
+import struct
+
+
+class BBType(object):
+ command = 1
+ command_return = 2
+ consolemsg = 3
+ ping = 4
+ pong = 5
+ getenv = 6
+ getenv_return = 7
+ fs = 8
+ fs_return = 9
+
+
+class BBPacket(object):
+ def __init__(self, p_type=0, p_flags=0, payload="", raw=None):
+ self.p_type = p_type
+ self.p_flags = p_flags
+ if raw is not None:
+ self.unpack(raw)
+ else:
+ self.payload = payload
+
+ def __repr__(self):
+ return "BBPacket(%i, %i)" % (self.p_type, self.p_flags)
+
+ def _unpack_payload(self, data):
+ self.payload = data
+
+ def _pack_payload(self):
+ return self.payload
+
+ def unpack(self, data):
+ self.p_type, self.p_flags = struct.unpack("!HH", data[:4])
+ self._unpack_payload(data[4:])
+
+ def pack(self):
+ return struct.pack("!HH", self.p_type, self.p_flags) + \
+ self._pack_payload()
+
+
+class BBPacketCommand(BBPacket):
+ def __init__(self, raw=None, cmd=None):
+ self.cmd = cmd
+ super(BBPacketCommand, self).__init__(BBType.command, raw=raw)
+
+ def __repr__(self):
+ return "BBPacketCommand(cmd=%r)" % self.cmd
+
+ def _unpack_payload(self, payload):
+ self.cmd = payload
+
+ def _pack_payload(self):
+ return self.cmd
+
+
+class BBPacketCommandReturn(BBPacket):
+ def __init__(self, raw=None, exit_code=None):
+ self.exit_code = exit_code
+ super(BBPacketCommandReturn, self).__init__(BBType.command_return,
+ raw=raw)
+
+ def __repr__(self):
+ return "BBPacketCommandReturn(exit_code=%i)" % self.exit_code
+
+ def _unpack_payload(self, data):
+ self.exit_code, = struct.unpack("!L", data[:4])
+
+ def _pack_payload(self):
+ return struct.pack("!L", self.exit_code)
+
+
+class BBPacketConsoleMsg(BBPacket):
+ def __init__(self, raw=None, text=None):
+ self.text = text
+ super(BBPacketConsoleMsg, self).__init__(BBType.consolemsg, raw=raw)
+
+ def __repr__(self):
+ return "BBPacketConsoleMsg(text=%r)" % self.text
+
+ def _unpack_payload(self, payload):
+ self.text = payload
+
+ def _pack_payload(self):
+ return self.text
+
+
+class BBPacketPing(BBPacket):
+ def __init__(self, raw=None):
+ super(BBPacketPing, self).__init__(BBType.ping, raw=raw)
+
+ def __repr__(self):
+ return "BBPacketPing()"
+
+
+class BBPacketPong(BBPacket):
+ def __init__(self, raw=None):
+ super(BBPacketPong, self).__init__(BBType.pong, raw=raw)
+
+ def __repr__(self):
+ return "BBPacketPong()"
+
+
+class BBPacketGetenv(BBPacket):
+ def __init__(self, raw=None, varname=None):
+ self.varname = varname
+ super(BBPacketGetenv, self).__init__(BBType.getenv, raw=raw)
+
+ def __repr__(self):
+ return "BBPacketGetenv(varname=%r)" % self.varname
+
+ def _unpack_payload(self, payload):
+ self.varname = payload
+
+ def _pack_payload(self):
+ return self.varname
+
+
+class BBPacketGetenvReturn(BBPacket):
+ def __init__(self, raw=None, text=None):
+ self.text = text
+ super(BBPacketGetenvReturn, self).__init__(BBType.getenv_return,
+ raw=raw)
+
+ def __repr__(self):
+ return "BBPacketGetenvReturn(varvalue=%s)" % self.text
+
+ def _unpack_payload(self, payload):
+ self.text = payload
+
+ def _pack_payload(self):
+ return self.text
+
+
+class BBPacketFS(BBPacket):
+ def __init__(self, raw=None, payload=None):
+ super(BBPacketFS, self).__init__(BBType.fs, payload=payload, raw=raw)
+
+ def __repr__(self):
+ return "BBPacketFS(payload=%r)" % self.payload
+
+
+class BBPacketFSReturn(BBPacket):
+ def __init__(self, raw=None, payload=None):
+ super(BBPacketFSReturn, self).__init__(BBType.fs_return, payload=payload, raw=raw)
+
+ def __repr__(self):
+ return "BBPacketFSReturn(payload=%r)" % self.payload