47 lines
1.3 KiB
Elixir
47 lines
1.3 KiB
Elixir
|
defmodule WaferAcceptanceElixirALEI2CDeviceTest do
|
||
|
use ExUnit.Case, async: true
|
||
|
|
||
|
# Only run acceptance tests if the fake drivers are not loaded.
|
||
|
if System.get_env("FAKE_DRIVERS") == "false" do
|
||
|
alias Wafer.Driver.ElixirALEI2C, as: Driver
|
||
|
|
||
|
defmodule LPS25H do
|
||
|
use Wafer.Registers
|
||
|
|
||
|
@moduledoc """
|
||
|
A not very useful driver for the LPS25H pressure senser on the Pi Sense Hat.
|
||
|
"""
|
||
|
|
||
|
defregister(:who_am_i, 0x0F, :ro, 1)
|
||
|
defregister(:ctrl_reg1, 0x20, :rw, 1)
|
||
|
|
||
|
def on?(conn) do
|
||
|
case read_ctrl_reg1(conn) do
|
||
|
{:ok, <<1::integer-size(1), _::integer-size(7)>>} -> true
|
||
|
_ -> false
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def turn_on(conn), do: write_ctrl_reg1(conn, <<1::integer-size(1), 0::integer-size(7)>>)
|
||
|
def turn_off(conn), do: write_ctrl_reg1(conn, <<0>>)
|
||
|
end
|
||
|
|
||
|
describe "generated registers" do
|
||
|
test "reading" do
|
||
|
{:ok, conn} = Driver.acquire(bus_name: "i2c-1", address: 0x5C)
|
||
|
|
||
|
assert {:ok, <<0xBD>>} = LPS25H.read_who_am_i(conn)
|
||
|
end
|
||
|
|
||
|
test "reading and writing" do
|
||
|
{:ok, conn} = Driver.acquire(bus_name: "i2c-1", address: 0x5C)
|
||
|
|
||
|
assert {:ok, conn} = LPS25H.turn_on(conn)
|
||
|
assert LPS25H.on?(conn) == true
|
||
|
assert {:ok, conn} = LPS25H.turn_off(conn)
|
||
|
assert LPS25H.on?(conn) == false
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|