csys: init steps, work in progress: create, connect via env
This commit is contained in:
parent
dad38ad2c6
commit
5b9597ea79
2 changed files with 21 additions and 11 deletions
|
|
@ -21,10 +21,6 @@ defmodule Scopes.CSys.Environ do
|
||||||
[:csys, :created | _rest] ->
|
[:csys, :created | _rest] ->
|
||||||
process_creation(msg, scope)
|
process_creation(msg, scope)
|
||||||
send(env, msg)
|
send(env, msg)
|
||||||
[dom, :for, cat, item] ->
|
|
||||||
#IO.inspect(CSys.state(scope).cells)
|
|
||||||
cell = get_in(state.cells, [{dom, cat}, item])
|
|
||||||
CSys.send_message(cell, [dom, :data], Shape.data(msg))
|
|
||||||
_ -> send(env, msg) # forward message to application
|
_ -> send(env, msg) # forward message to application
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -50,11 +46,22 @@ defmodule Scopes.CSys.Environ do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def send_message(state, [dom, cat, item], head, data) do
|
# accessing cell registry via state.cells
|
||||||
cell = get_in(state.cells, [{dom, cat}, item])
|
|
||||||
|
def get_cell(state, [dom, cat, item]) do
|
||||||
|
get_in(state.cells, [{dom, cat}, item])
|
||||||
|
end
|
||||||
|
|
||||||
|
def send_message(state, addr, head, data) do
|
||||||
|
cell = get_cell(state, addr)
|
||||||
CSys.send_message(cell, head, data)
|
CSys.send_message(cell, head, data)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def connect(state, addr, target, op) do
|
||||||
|
send_message(state, addr, ~w(csys connect)a,
|
||||||
|
%{target: get_cell(state, target), op: op})
|
||||||
|
end
|
||||||
|
|
||||||
# delegating tasks to env
|
# delegating tasks to env
|
||||||
|
|
||||||
def delegate(env, func) do
|
def delegate(env, func) do
|
||||||
|
|
@ -63,6 +70,5 @@ defmodule Scopes.CSys.Environ do
|
||||||
|
|
||||||
def forward_value(env, addr, value) do
|
def forward_value(env, addr, value) do
|
||||||
delegate(env, &send_message(&1, addr, ~w(csys data)a, %{value: value}))
|
delegate(env, &send_message(&1, addr, ~w(csys data)a, %{value: value}))
|
||||||
#CSys.send_message(env, [dom, :for, cat, item], %{value: value})
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -153,11 +153,15 @@ defmodule Scopes.CSys.Program do
|
||||||
end
|
end
|
||||||
|
|
||||||
def init_recursive_1() do [
|
def init_recursive_1() do [
|
||||||
fn %Environ.State{neurons: [zero]} ->
|
fn state ->
|
||||||
#zero = [:csys, :c00, {0, 0}]
|
zero = [:csys, :c00, {0, 0}]
|
||||||
CSys.send_message(zero, ~w(csys connect)a, %{target: zero, op: negate()})
|
#%Environ.State{neurons: [zero]} = state
|
||||||
|
#CSys.send_message(zero, ~w(csys connect)a, %{target: zero, op: negate()})
|
||||||
#Environ.send_message(state, zero, ~w(csys connect)a, %{target: zero, op: negate()})
|
#Environ.send_message(state, zero, ~w(csys connect)a, %{target: zero, op: negate()})
|
||||||
CSys.send_message(zero, ~w(csys create succ)a, %{addr: [:csys, :e01, {1, 1}]})
|
Environ.connect(state, zero, zero, negate())
|
||||||
|
Environ.send_message(state, zero, ~w(csys create succ)a,
|
||||||
|
%{addr: [:csys, :e01, {1, 1}]})
|
||||||
|
#CSys.send_message(zero, ~w(csys create succ)a, %{addr: [:csys, :e01, {1, 1}]})
|
||||||
end
|
end
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue