aboutsummaryrefslogtreecommitdiff
path: root/dialoguer
diff options
context:
space:
mode:
Diffstat (limited to 'dialoguer')
-rw-r--r--dialoguer/__init__.py14
-rw-r--r--dialoguer/binary_conversion.py61
-rw-r--r--dialoguer/context_script.r74
3 files changed, 49 insertions, 100 deletions
diff --git a/dialoguer/__init__.py b/dialoguer/__init__.py
index 476cde0..8c87089 100644
--- a/dialoguer/__init__.py
+++ b/dialoguer/__init__.py
@@ -65,8 +65,12 @@ class Dialogue:
data_type_name = type(data)
data_type_name = data_type_name.__name__
data_type_name = bin_conv(data_type_name)
+ print('data_type_name', data_type_name)
self.conn.send(data_type_name)
+ recv_chk = self.recv(set_data_type=bool)
+ print('recv_chk', recv_chk)
bin_data = bin_conv(data)
+ # bin_data = bytes(data, 'utf-8')
self.conn.send(bin_data)
# I still want to consolidate the recv_data_type and set_data_type args
@@ -83,7 +87,6 @@ class Dialogue:
data = self.conn.recv(HEADER)
while data == b'\x00':
data = self.conn.recv(HEADER)
-
data = bin_conv(data, data_type)
return data
@@ -96,21 +99,30 @@ class Dialogue:
return val
def evaluate_expression(self, method_name, *args, **kwargs):
+
+ print('cmd_int', 2)
self.send(2)
+ print('cmd_int', 2)
recv_chk = self.recv(set_data_type=bool)
+ print('recv_chk', recv_chk)
#send number of arguments
self.send(len(args))
recv_chk = self.recv(set_data_type=bool)
+ print('recv_chk', recv_chk)
#send number of keyword arguments
self.send(len(kwargs))
recv_chk = self.recv(set_data_type=bool)
+ print('recv_chk', recv_chk)
#send method name
self.send(method_name)
recv_chk = self.recv(set_data_type=bool)
+ print('recv_chk', recv_chk)
#send arguments
+ #print('args', args)
for arg in args:
self.send(arg, True)
recv_chk = self.recv(set_data_type=bool)
+ #print('recv_chk', recv_chk)
#send keyword arguments
for kw in kwargs:
self.send(kw)
diff --git a/dialoguer/binary_conversion.py b/dialoguer/binary_conversion.py
index 9bdef6c..73400d6 100644
--- a/dialoguer/binary_conversion.py
+++ b/dialoguer/binary_conversion.py
@@ -2,55 +2,28 @@ def bin_conv(data, data_type = None):
conv_data = None
#convert to binary
if type(data) == str and data_type == None:
- conv_data = reversed(data)
- conv_data = ''.join(conv_data)
- n = ''
- for s in conv_data:
- m = ord(s)
- m = hex(m)
- n += m.lstrip('0x')
- conv_data = n
- conv_data = int(conv_data, 16)
- conv_data = bin(conv_data)
- conv_data = conv_data.replace('b', '')
- conv_data = ''.join(reversed(conv_data))
- conv_data = conv_data.zfill(8)
- n = b''
- for b in conv_data:
- m = int(b)
- m = chr(m)
- m = bytes(m, 'utf-8')
- n += m
- conv_data = n
+ conv_data = bytes(data, 'utf-8')
elif type(data) == int and data_type == None:
- conv_data = bin(data)
- conv_data = conv_data.lstrip('0b')
- conv_data = conv_data.zfill(8)
- conv_data = ''.join(reversed(conv_data))
- n = b''
- for b in conv_data:
- m = int(b)
- m = chr(m)
- m = bytes(m, 'utf-8')
- n += m
- conv_data = n
+ conv_data = data.to_bytes(32, 'little')
+ #print(conv_data)
+ # conv_data = bin(data)
+ # conv_data = conv_data.lstrip('0b')
+ # conv_data = conv_data.zfill(8)
+ # conv_data = ''.join(reversed(conv_data))
+ # n = b''
+ # for b in conv_data:
+ # m = int(b)
+ # m = chr(m)
+ # m = bytes(m, 'utf-8')
+ # n += m
+ # conv_data = n
#convert from binary
elif type(data) == bytes and data_type == str:
- n = ''
- for b in data: n = f'{b}{n}'
- conv_data = n
- conv_data = int(conv_data, 2)
- conv_data = hex(conv_data)
- conv_data = conv_data.lstrip('0x')
- conv_data = bytearray.fromhex(conv_data)
- conv_data = conv_data.decode()
- conv_data = ''.join(reversed(conv_data))
+ conv_data = data.decode()
+ conv_data = conv_data.rstrip('\x00')
elif type(data) == bytes and data_type == int:
- n = ''
- for b in data: n = f'{b}{n}'
- conv_data = n
- conv_data = int(conv_data, 2)
+ conv_data = int.from_bytes(data, 'little')
elif type(data) == bytes and data_type == bool:
conv_data = bool(data[0])
diff --git a/dialoguer/context_script.r b/dialoguer/context_script.r
index 712727c..50471ef 100644
--- a/dialoguer/context_script.r
+++ b/dialoguer/context_script.r
@@ -25,74 +25,31 @@ display_msg <- function(...) {
)
}
-add_missing_bits <- function(bits, base = 8) {
- missing_bits <- length(bits) %% base
- if (missing_bits > 0) {
- missing_bits <- rep(as.raw(00), times = base - missing_bits)
- bits <- c(bits, missing_bits)
- }
- return(bits)
-}
-
-bin_conv <- function(data, data_type_name = NA) {
- conv_data <- NA
- # convert to binary
- if (is.character(data) && is.na(data_type_name)) {
- conv_data <- charToRaw(data)
- conv_data <- rawToBits(conv_data)
- } else if (is.integer(data) && is.na(data_type_name)) {
- conv_data <- as.raw(data)
- conv_data <- rawToBits(conv_data)
- } else if (is.logical(data) && is.na(data_type_name)) {
- conv_data <- as.raw(data)
- conv_data <- rawToBits(conv_data)
- } else if (is.double(data) && is.na(data_type_name)) {
- conv_data <- as.raw(data)
- conv_data <- rawToBits(conv_data)
- # convert from binary
- } else if (is.raw(data) && data_type_name == "character") {
- conv_data <- add_missing_bits(data)
- conv_data <- packBits(conv_data, "raw")
- conv_data <- rawToChar(conv_data)
- } else if (is.raw(data) && data_type_name == "integer") {
- conv_data <- add_missing_bits(data)
- conv_data <- packBits(conv_data, "raw")
- conv_data <- as.integer(conv_data)
- } else if (is.raw(data) && data_type_name == "logical") {
- conv_data <- add_missing_bits(data)
- conv_data <- packBits(conv_data, "raw")
- conv_data <- as.logical(conv_data)
- } else if (is.raw(data) && data_type_name == "double") {
- conv_data <- add_missing_bits(data)
- conv_data <- packBits(conv_data, "raw")
- conv_data <- as.double(conv_data)
- }
- return(conv_data)
-}
-
# may not need to pass connection if it will only be 1 per dialogue
send <- function(conn, data, send_data_type = FALSE) {
if (send_data_type) {
data_type_name <- typeof(data)
- data_type_name <- bin_conv(data_type_name)
writeBin(data_type_name, conn)
}
- bin_data <- bin_conv(data)
- writeBin(bin_data, conn)
+ writeBin(data, conn)
}
# may not need to pass connection if it will only be 1 per dialogue
# I still want to consolidate the recv_data_type and set_data_type args
recv <- function(conn, recv_data_type = FALSE, set_data_type = "character") {
if (recv_data_type) {
- suppressWarnings(data_type_name <- readBin(conn, "raw", HEADER))
- while (length(data_type_name) == 0) {
- suppressWarnings(data_type_name <- readBin(conn, "raw", HEADER))
+ suppressWarnings(data_type_bin <- readBin(conn, "raw", HEADER))
+ while (length(data_type_bin) == 0) {
+ suppressWarnings(data_type_bin <- readBin(conn, "raw", HEADER))
}
- data_type_name <- bin_conv(data_type_name, "character")
- data_type_name <- data_type_vect[data_type_name]
+ display_msg('data_type_bin', data_type_bin)
+ data_type_name <- readBin(data_type_bin, "character")
+ display_msg('data_type_name', data_type_name, '-')
+ data_type <- data_type_vect[data_type_name]
+ display_msg('data_type', data_type)
+ send(con, TRUE)
} else {
- data_type_name <- set_data_type
+ data_type <- set_data_type
}
suppressWarnings(data <- readBin(conn, "raw", HEADER))
@@ -100,7 +57,7 @@ recv <- function(conn, recv_data_type = FALSE, set_data_type = "character") {
suppressWarnings(data <- readBin(conn, "raw", HEADER))
}
- data <- bin_conv(data, data_type_name)
+ data <- readBin(data, data_type)
return(data)
}
@@ -133,18 +90,24 @@ import_variable <- function() {
evaluate_expression <- function() {
arg_count <- recv(con, FALSE, "integer")
+ display_msg('arg_count', arg_count)
send(con, TRUE)
kwarg_count <- recv(con, FALSE, "integer")
send(con, TRUE)
method_name <- recv(con, FALSE, "character")
+ display_msg('method_name', method_name)
send(con, TRUE)
args <- list()
+ #display_msg('args', args)
if (arg_count > 0) {
for (i in 1:arg_count) {
+ #display_msg('args', args)
args <- c(args, recv(con, TRUE))
+ args[1]
send(con, TRUE)
}
}
+ #display_msg('args', args)
kwargs <- list()
if (kwarg_count > 0) {
keys <- c()
@@ -172,6 +135,7 @@ send(con, TRUE)
cmd_int <- -1
while (cmd_int != 0) {
cmd_int <- recv(con, FALSE, "integer")
+ display_msg('cmd_int', cmd_int)
if (cmd_int == 1){
send(con, TRUE)
import_variable()