Commit 423213c1 authored by Marcus Greiff's avatar Marcus Greiff

Include correct version of GPIO...

parent 34d2a4b5
"""
Lowest form of communication woth the GPIO pins. The available pins are
listed in the "channel" parameter, and appear as directories in /sys/class.
Any of these GPIOs can be run in various ways, with any operation specified
by a sequence of three entries
(channel, operation, entry) = (int32, int32, String)
For instance, if the GPIO "gpio30" is to be configured as a output pin and set
to high, the following two writes aould be done.
write!(GPIO, 14, 2, "out")
write!(GPIO, 14, 1, "1")
"""
struct GPIO
end
writeOperations = [
Dict("dir" => "value", "entries"=>["1", "0"])
Dict("dir" => "direction", "entries"=>["in", "out"])
]
readOperations = [
"value"
"direction"
"edge"
]
channels =[
"gpio112"
"gpio114"
"gpio115"
"gpio116"
"gpio14"
"gpio15"
"gpio2"
"gpio20"
"gpio22"
"gpio23"
"gpio26"
"gpio27"
"gpio3"
"gpio30"
"gpio31"
"gpio4"
"gpio44"
"gpio45"
"gpio46"
"gpio47"
"gpio48"
"gpio49"
"gpio5"
"gpio50"
"gpio51"
"gpio60"
"gpio61"
"gpio65"
"gpio66"
"gpio67"
"gpio68"
"gpio69"
"gpio7"
]
function write!(::GPIO, index::Int32, operation::Int32, entry::String)
(index <= 0 || index > length(channels)) && error("Invalid GPIO index: $index")
(operation <= 0 || operation > length(writeOperations)) && error("Invalid GPIO operation: $operation")
filename = "/sys/class/gpio/$(channels[index])/$(writeOperations[operation]["dir"])"
if entry in writeOperations[operation]["entries"]
file = open(filename, "r+")
write(file, "$(entry)")
close(file)
else
error("Cannot write $(entry) to operation: $operation")
end
return
end
#function Base.read(::SysLED, ind::Int32)
# (ind < 0 || ind > length(channels)) && error("Invalid SysLEND ind: $ind")
# println("not yet supported")
# l = 0
# return l == "1"
#end
include("../../src/BeagleBone/BeagleBone.jl")
using Base.Test
#Fixture
device = getdev("gpio")
gpio_state = true
write!(device, 31, 2, "out")
device = getdev("gpio")
@testset "GPIO Tests" begin
@testset "Error Handling" begin
# Attempt to initialize faulty device
@test_throws ErrorException getdev("wrong_device_name")
# Test that an exception is thrown when a faulty channel is given
@test_throws ErrorException write!(device, 100, 1, "0")
# Test that an exception is thrown when a faulty channel is given
@test_throws ErrorException write!(device, 0, 1, "1")
# Test that an exepition is thrown when requiring bad entry
@test_throws ErrorException write!(device, 0, 123, "0")
# Test that an exepition is thrown when requiring bad entry
@test_throws ErrorException write!(device, 0, 1, "bad_entry")
end
@testset "IO Communication" begin
# Instanciate all possible leds and perform 10 read/write commands
# with the set high/low operation (1)
operation = 1
for i = 1:10
state = "$(i%2)"
for index = 1:length(channels)
write!(device, index, operation, state)
end
sleep(0.1)
end
end
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment