Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

mnishiguchi/i2c_server

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

I2C Server

Hex.pm API docs CI

I2C Server wraps Circuits.I2C reference in a GenServer, creating a separate process per I2C bus. I2C bus processes are identified with a bus name (e.g., "i2c-1").

Installation

Just add i2c_server to your list of dependencies in mix.exs:

def deps do
  [
    {:i2c_server, "~> 0.2"}
  ]
end

Usage

# Get a PID for the device at the address 0x77 on the "i2c-1" bus
iex> {:ok, device} = I2cServer.start_link(bus_name: "i2c-1", bus_address: 0x77)
#PID<0.233.0>

# Write 0xff to the register 0x8A
iex> I2cServer.write(device, [0x8A, <<0xff>>])
:ok

# Read 3 bytes
iex> I2cServer.read(device, 3)
:ok

# Read 3 bytes from the register 0xE1
iex> I2cServer.write_read(device, 0xE1, 3)
{:ok, <<0, 0, 0>>}

# Do multiple operations sequentially blocking the bus worker process
iex> I2cServer.bulk(device, [
...>   {:write, [0xBA]},
...>   {:sleep, 10},
...>   {:write, [0xAC, <<0x33, 0x00>>]},
...>   {Process, :sleep, [10]},
...>   fn(_) -> "something" end
...> ])
[:ok, :ok, :ok, :ok, "something"]

I2C bus processes will be created under I2cServer.I2cBusSupervisor dynamically.

Configuration

You can change settings in your config file such as config/config.exs file.

Registry module

By default, I2C bus processes are stored in Registry, but you can alternatively use :global.

config :i2c_server,
  bus_registry_module: :global

About

Wrap an I2C device in a separate process

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.