This commit is contained in:
anlicheng 2025-05-07 21:27:42 +08:00
parent bc79dfccd3
commit 740e35833b

View File

@ -296,34 +296,31 @@ handle_event({call, From}, {attach_channel, _}, _, State = #state{uuid = UUID, c
{keep_state, State, [{reply, From, {error, <<"channel existed">>}}]};
%%
handle_event({call, From}, {reload_device, DeviceUUID}, _, State) ->
case iot_device_sup:ensured_device_started(DeviceUUID) of
{ok, DevicePid} ->
iot_device:reload(DevicePid),
{keep_state, State, [{reply, From, ok}]};
{error, Reason} ->
{keep_state, State, [{reply, From, {error, Reason}}]}
handle_event({call, From}, {reload_device, DeviceUUID}, _, State = #state{device_map = DeviceMap}) ->
case maps:find(DeviceUUID, DeviceMap) of
error ->
{keep_state, State, [{reply, From, {error, <<"device not found">>}}]};
{ok, Device} ->
case iot_device:reload(Device) of
error ->
{keep_state, State#state{device_map = maps:remove(Device, DeviceMap)}, [{reply, From, {error, <<"reload device error">>}}]};
{ok, NDevice} ->
{keep_state, State#state{device_map = maps:put(DeviceUUID, NDevice, DeviceMap)}, [{reply, From, ok}]}
end
end;
%%
handle_event({call, From}, {delete_device, DeviceUUID}, _, State) ->
case iot_device:get_pid(DeviceUUID) of
undefined ->
ok;
DevicePid when is_pid(DevicePid) ->
iot_device_sup:delete_device(DeviceUUID)
end,
{keep_state, State, [{reply, From, ok}]};
handle_event({call, From}, {delete_device, DeviceUUID}, _, State = #state{device_map = DeviceMap}) ->
{keep_state, State#state{device_map = maps:remove(DeviceUUID, DeviceMap)}, [{reply, From, ok}]};
%%
handle_event({call, From}, {activate_device, DeviceUUID, Auth}, _, State) ->
case iot_device_sup:ensured_device_started(DeviceUUID) of
{ok, DevicePid} ->
iot_device:auth(DevicePid, Auth),
{keep_state, State, [{reply, From, ok}]};
{error, Reason} ->
{keep_state, State, [{reply, From, {error, Reason}}]}
handle_event({call, From}, {activate_device, DeviceUUID, Auth}, _, State = #state{device_map = DeviceMap}) ->
case maps:find(DeviceUUID, DeviceMap) of
error ->
{keep_state, State, [{reply, From, {error, <<"device not found">>}}]};
{ok, Device} ->
NDevice = iot_device:auth(Device, Auth),
{keep_state, State#state{device_map = maps:put(DeviceUUID, NDevice, DeviceMap)}, [{reply, From, ok}]}
end;
%% json格式然后再处理, host进程里面处理, props