mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-12 17:20:30 +08:00
separate busy and uploading flag
This commit is contained in:
parent
8d83a8b898
commit
bf34f7b3fa
@ -254,10 +254,11 @@ class MassStorageDevice: # pylint: disable=too-many-instance-attributes
|
|||||||
return {
|
return {
|
||||||
"enabled": self._enabled,
|
"enabled": self._enabled,
|
||||||
"online": online,
|
"online": online,
|
||||||
"connected_to": (("kvm" if self.__on_kvm else "server") if online else None),
|
|
||||||
"busy": self.__region.is_busy(),
|
"busy": self.__region.is_busy(),
|
||||||
|
"uploading": bool(self.__device_file),
|
||||||
"written": self.__written,
|
"written": self.__written,
|
||||||
"info": (dataclasses.asdict(self._device_info) if online else None),
|
"info": (dataclasses.asdict(self._device_info) if online else None),
|
||||||
|
"connected_to": (("kvm" if self.__on_kvm else "server") if online else None),
|
||||||
}
|
}
|
||||||
|
|
||||||
async def poll_state(self) -> AsyncGenerator[Dict, None]:
|
async def poll_state(self) -> AsyncGenerator[Dict, None]:
|
||||||
@ -289,12 +290,9 @@ class MassStorageDevice: # pylint: disable=too-many-instance-attributes
|
|||||||
gpio.write(self.__target_pin, True)
|
gpio.write(self.__target_pin, True)
|
||||||
raise
|
raise
|
||||||
self.__on_kvm = True
|
self.__on_kvm = True
|
||||||
|
|
||||||
state = self.get_state()
|
|
||||||
await self.__state_queue.put(state)
|
|
||||||
|
|
||||||
get_logger().info("Mass-storage device switched to KVM: %s", self._device_info)
|
get_logger().info("Mass-storage device switched to KVM: %s", self._device_info)
|
||||||
return state
|
|
||||||
|
return (await self.__queue_current_state())
|
||||||
|
|
||||||
@_msd_working
|
@_msd_working
|
||||||
@aiotools.atomic
|
@aiotools.atomic
|
||||||
@ -305,20 +303,20 @@ class MassStorageDevice: # pylint: disable=too-many-instance-attributes
|
|||||||
|
|
||||||
gpio.write(self.__target_pin, True)
|
gpio.write(self.__target_pin, True)
|
||||||
self.__on_kvm = False
|
self.__on_kvm = False
|
||||||
|
|
||||||
state = self.get_state()
|
|
||||||
await self.__state_queue.put(state)
|
|
||||||
|
|
||||||
get_logger().info("Mass-storage device switched to Server")
|
get_logger().info("Mass-storage device switched to Server")
|
||||||
return state
|
|
||||||
|
return (await self.__queue_current_state())
|
||||||
|
|
||||||
@aiotools.tasked
|
@aiotools.tasked
|
||||||
@aiotools.atomic
|
@aiotools.atomic
|
||||||
async def reset(self) -> None:
|
async def reset(self) -> None:
|
||||||
|
notify = False
|
||||||
|
try:
|
||||||
with self.__region:
|
with self.__region:
|
||||||
if not self._enabled:
|
if not self._enabled:
|
||||||
raise MsdDisabledError()
|
raise MsdDisabledError()
|
||||||
|
|
||||||
|
notify = True
|
||||||
get_logger(0).info("Mass-storage device reset")
|
get_logger(0).info("Mass-storage device reset")
|
||||||
|
|
||||||
gpio.write(self.__reset_pin, True)
|
gpio.write(self.__reset_pin, True)
|
||||||
@ -328,10 +326,10 @@ class MassStorageDevice: # pylint: disable=too-many-instance-attributes
|
|||||||
await asyncio.sleep(self.__reset_delay)
|
await asyncio.sleep(self.__reset_delay)
|
||||||
gpio.write(self.__reset_pin, False)
|
gpio.write(self.__reset_pin, False)
|
||||||
|
|
||||||
try:
|
|
||||||
await self.__load_device_info()
|
await self.__load_device_info()
|
||||||
finally:
|
finally:
|
||||||
await self.__state_queue.put(self.get_state())
|
if notify:
|
||||||
|
await self.__queue_current_state()
|
||||||
|
|
||||||
@_msd_working
|
@_msd_working
|
||||||
@aiotools.atomic
|
@aiotools.atomic
|
||||||
@ -348,7 +346,7 @@ class MassStorageDevice: # pylint: disable=too-many-instance-attributes
|
|||||||
self.__region.exit()
|
self.__region.exit()
|
||||||
raise
|
raise
|
||||||
finally:
|
finally:
|
||||||
await self.__state_queue.put(self.get_state())
|
await self.__queue_current_state()
|
||||||
|
|
||||||
@aiotools.atomic
|
@aiotools.atomic
|
||||||
async def write_image_info(self, name: str, complete: bool) -> None:
|
async def write_image_info(self, name: str, complete: bool) -> None:
|
||||||
@ -379,8 +377,13 @@ class MassStorageDevice: # pylint: disable=too-many-instance-attributes
|
|||||||
await self.__close_device_file()
|
await self.__close_device_file()
|
||||||
await self.__load_device_info()
|
await self.__load_device_info()
|
||||||
finally:
|
finally:
|
||||||
await self.__state_queue.put(self.get_state())
|
|
||||||
self.__region.exit()
|
self.__region.exit()
|
||||||
|
await self.__queue_current_state()
|
||||||
|
|
||||||
|
async def __queue_current_state(self) -> Dict:
|
||||||
|
state = self.get_state()
|
||||||
|
await self.__state_queue.put(state)
|
||||||
|
return state
|
||||||
|
|
||||||
async def __write_to_device_file(self, data: bytes) -> None:
|
async def __write_to_device_file(self, data: bytes) -> None:
|
||||||
assert self.__device_file
|
assert self.__device_file
|
||||||
|
|||||||
@ -128,7 +128,7 @@ function Msd() {
|
|||||||
$("msd-another-another-user-uploads").style.display = "none";
|
$("msd-another-another-user-uploads").style.display = "none";
|
||||||
$("msd-led").className = "led-green";
|
$("msd-led").className = "led-green";
|
||||||
$("msd-status").innerHTML = $("msd-led").title = "Connected to Server";
|
$("msd-status").innerHTML = $("msd-led").title = "Connected to Server";
|
||||||
} else if (__state.busy) {
|
} else if (__state.uploading) {
|
||||||
if (!__upload_http) {
|
if (!__upload_http) {
|
||||||
$("msd-another-another-user-uploads").style.display = "block";
|
$("msd-another-another-user-uploads").style.display = "block";
|
||||||
}
|
}
|
||||||
@ -147,17 +147,17 @@ function Msd() {
|
|||||||
$("msd-offline").style.display = (__state.online ? "none" : "block");
|
$("msd-offline").style.display = (__state.online ? "none" : "block");
|
||||||
$("msd-current-image-broken").style.display = (
|
$("msd-current-image-broken").style.display = (
|
||||||
__state.online && __state.info.image &&
|
__state.online && __state.info.image &&
|
||||||
!__state.info.image.complete && !__state.busy ? "block" : "none"
|
!__state.info.image.complete && !__state.uploading ? "block" : "none"
|
||||||
);
|
);
|
||||||
|
|
||||||
$("msd-current-image-name").innerHTML = (__state.online && __state.info.image ? __state.info.image.name : "None");
|
$("msd-current-image-name").innerHTML = (__state.online && __state.info.image ? __state.info.image.name : "None");
|
||||||
$("msd-current-image-size").innerHTML = (__state.online && __state.info.image ? __formatSize(__state.info.image.size) : "None");
|
$("msd-current-image-size").innerHTML = (__state.online && __state.info.image ? __formatSize(__state.info.image.size) : "None");
|
||||||
$("msd-storage-size").innerHTML = (__state.online ? __formatSize(__state.info.size) : "Unavailable");
|
$("msd-storage-size").innerHTML = (__state.online ? __formatSize(__state.info.size) : "Unavailable");
|
||||||
|
|
||||||
wm.switchDisabled($("msd-switch-to-kvm-button"), (!__state.online || __state.connected_to === "kvm" || __state.busy));
|
wm.switchDisabled($("msd-switch-to-kvm-button"), (!__state.online || __state.connected_to === "kvm" || __state.uploading));
|
||||||
wm.switchDisabled($("msd-switch-to-server-button"), (!__state.online || __state.connected_to === "server" || __state.busy));
|
wm.switchDisabled($("msd-switch-to-server-button"), (!__state.online || __state.connected_to === "server" || __state.uploading));
|
||||||
wm.switchDisabled($("msd-select-new-image-button"), (!__state.online || __state.connected_to !== "kvm" || __state.busy || __upload_http));
|
wm.switchDisabled($("msd-select-new-image-button"), (!__state.online || __state.connected_to !== "kvm" || __state.uploading || __upload_http));
|
||||||
wm.switchDisabled($("msd-upload-new-image-button"), (!__state.online || __state.connected_to !== "kvm" || __state.busy || !__image_file));
|
wm.switchDisabled($("msd-upload-new-image-button"), (!__state.online || __state.connected_to !== "kvm" || __state.uploading || !__image_file));
|
||||||
wm.switchDisabled($("msd-abort-uploading-button"), (!__state.online || !__upload_http));
|
wm.switchDisabled($("msd-abort-uploading-button"), (!__state.online || !__upload_http));
|
||||||
wm.switchDisabled($("msd-reset-button"), (!__state.enabled || __state.busy));
|
wm.switchDisabled($("msd-reset-button"), (!__state.enabled || __state.busy));
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user