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