From cb48ab8724e76aa502fe4d3fdf869c76613100ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20F=C3=A4lt?= <mattiasf@control.lth.se> Date: Mon, 15 Apr 2019 18:34:07 +0200 Subject: [PATCH] updates startupscript and precompile --- src/BeagleBone/BeagleBone.jl | 21 ++++++++++--- src/BeagleBone/GPIO.jl | 2 +- src/BeagleBone/precompile.jl | 36 +++++++++++++++------- src/BeagleBone/startup/juliaserver.service | 2 +- 4 files changed, 44 insertions(+), 17 deletions(-) diff --git a/src/BeagleBone/BeagleBone.jl b/src/BeagleBone/BeagleBone.jl index db415c9..95e7aca 100644 --- a/src/BeagleBone/BeagleBone.jl +++ b/src/BeagleBone/BeagleBone.jl @@ -152,6 +152,18 @@ function bbparse(l::Tuple, sock) end end +function close_all_devices() + # When connection fails or closes, close devices + for key in keys(DEVICES) + for (devkey, active_device) in active_devices[key] + println("teardown $active_device") + teardown(active_device) + #Remove the device from the dict of active devices + delete!(active_devices[key], devkey) + end + end +end + global __waiting_first_connection__ = false """ run_server(port=2001; debug=false) @@ -181,8 +193,8 @@ function run_server(port=2001; debug=false) @async while isopen(sock) try l = deserialize(sock); - println("deserialized:") - println(l) + # println("deserialized:") + # println(l) try bbparse(l, sock) catch err @@ -192,7 +204,7 @@ function run_server(port=2001; debug=false) catch err if !isopen(sock) && (isa(err, Base.EOFError) || isa(err, Base.UVError)) println("Connection to server closed") - # TODO teardown and remove all devices + close_all_devices() else println("error: $(typeof(err))") println("err: $err") @@ -201,10 +213,11 @@ function run_server(port=2001; debug=false) end end catch err + close_all_devices() if isa(err,Base.UVError) && err.prefix == "accept" println("Server closed successfully") else - rethrow() + rethrow(err) end end end diff --git a/src/BeagleBone/GPIO.jl b/src/BeagleBone/GPIO.jl index f71d78f..662f761 100644 --- a/src/BeagleBone/GPIO.jl +++ b/src/BeagleBone/GPIO.jl @@ -64,7 +64,7 @@ end # Default to reading "value" function read(gpio::GPIO, debug::Bool=false) - read(gpio, GPIO_VALUE, debug=debug) + read(gpio, GPIO_VALUE, debug) end """ l = read(gpio::GPIO, operation::Int32, debug::Bool=false) diff --git a/src/BeagleBone/precompile.jl b/src/BeagleBone/precompile.jl index 77862a6..3dac1e7 100644 --- a/src/BeagleBone/precompile.jl +++ b/src/BeagleBone/precompile.jl @@ -8,26 +8,38 @@ function precompile_bb() #Precompile serialize initdev("debug", Int32(1)) - serialize(clientside, (true, Int32(2), ("debug", Int32(1), true), ("debug", Int32(1), (1,2.0,"asd")))) - serialize(clientside, (true, Int32(2), ("debug", Int32(1), Int32(1)), ("debug", Int32(1), 1.0))) - serialize(clientside, (false, Int32(2), ("debug", Int32(1)), ("debug", Int32(1)))) - - serialize(clientside, (true, Int32(1), ("debug", Int32(1), true))) - serialize(clientside, (false, Int32(1), ("debug", Int32(1)))) - serialize(clientside, (true, Int32(4), ("debug", Int32(1), true), ("debug", Int32(2), false), ("debug", Int32(3), true), ("debug", Int32(4), false))) - + serialize(clientside, (WRITE, Int32(2), ("debug", Int32(1), true), ("debug", Int32(1), (1,2.0,"asd")))) + serialize(clientside, (WRITE, Int32(2), ("debug", Int32(1), Int32(1)), ("debug", Int32(1), 1.0))) + serialize(clientside, (READ, Int32(2), ("debug", Int32(1)), ("debug", Int32(1)))) + + serialize(clientside, (WRITE, Int32(1), ("debug", Int32(1), true))) + serialize(clientside, (READ, Int32(1), ("debug", Int32(1)))) + initdev("debug", Int32(2)) + initdev("debug", Int32(3)) + initdev("debug", Int32(4)) + serialize(clientside, (WRITE, Int32(4), ("debug", Int32(1), true), ("debug", Int32(2), false), ("debug", Int32(3), true), ("debug", Int32(4), false))) + + closedev("debug", Int32(1)) + closedev("debug", Int32(2)) + closedev("debug", Int32(3)) + closedev("debug", Int32(4)) + + println("closing clientside") # Close the client side close(clientside) + println("closing server") #Close server close(server) debug = true - + println("initdev") #Precompile SysLED led = initdev("sysled",Int32(1)) write!(led, "1", debug) read(led, debug) + println("closedev") + closedev("sysled", Int32(1)) ind = 1 println("False: $(ind ∉ [1,2,3,4])") @@ -36,11 +48,13 @@ function precompile_bb() gpio = initdev("gpio",Int32(1)) write!(gpio, (Int32(1), "1"), debug) + closedev("gpio", Int32(1)) #read(gpio, ind, args, debug) + # TODO activate when pwn is working # Precompile PWM - pwm = initdev("pwm", Int32(1)) - write!(pwm, (Int32(1),"1"), debug) + #pwm = initdev("pwm", Int32(1)) + #write!(pwm, (Int32(1),"1"), debug) #Do read/write to file val = true diff --git a/src/BeagleBone/startup/juliaserver.service b/src/BeagleBone/startup/juliaserver.service index 27861b3..aa7d285 100644 --- a/src/BeagleBone/startup/juliaserver.service +++ b/src/BeagleBone/startup/juliaserver.service @@ -2,7 +2,7 @@ Description=JuliaServer service [Service] -ExecStart=/home/debian/julia/bin/julia -i -e 'include("/home/debian/juliapackages/LabConnections/src/BeagleBone/startup/startup.jl")' & +ExecStart=/usr/bin/screen -Dm /home/debian/julia/bin/julia -i -e 'include("/home/debian/juliapackages/LabConnections/src/BeagleBone/startup/startup.jl")' & [Install] WantedBy=multi-user.target -- GitLab