Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion lib/device/rs232/disk.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ extern rs232Fuji theFuji;
rs232Disk::rs232Disk()
{
device_active = false;
mount_time = 0;
}

// Read disk data and send to computer
Expand Down Expand Up @@ -225,6 +226,7 @@ mediatype_t rs232Disk::mount(FILE *f, const char *filename, uint32_t disksize, m
case MEDIATYPE_UNKNOWN:
default:
device_active = true;
mount_time = time(NULL);
_disk = new MediaTypeImg();
return _disk->mount(f, disksize);
}
Expand All @@ -249,6 +251,7 @@ void rs232Disk::unmount()
{
_disk->unmount();
device_active = false;
mount_time = 0;
}
}

Expand Down Expand Up @@ -308,4 +311,4 @@ void rs232Disk::rs232_process(uint32_t commanddata, uint8_t checksum)
rs232_nak();
}

#endif /* BUILD_RS232 */
#endif /* BUILD_RS232 */
2 changes: 2 additions & 0 deletions lib/device/rs232/disk.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ class rs232Disk : public virtualDevice
void dump_percom_block();

public:
time_t mount_time = 0;

rs232Disk();
mediatype_t mount(FILE *f, const char *filename, uint32_t disksize, mediatype_t disk_type = MEDIATYPE_UNKNOWN);
void unmount();
Expand Down
21 changes: 18 additions & 3 deletions lib/device/rs232/fuji.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,24 @@ void rs232Fuji::rs232_status()
{
Debug_println("Fuji cmd: STATUS");

char ret[4] = {0};
if (cmdFrame.aux1 == STATUS_MOUNT_TIME_L && cmdFrame.aux2 == STATUS_MOUNT_TIME_H)
{
// Return drive slot mount status: 0 if unmounted, otherwise time when mounted
time_t mount_status[MAX_DISK_DEVICES];
int idx;


bus_to_computer((uint8_t *)ret, sizeof(ret), false);
for (idx = 0; idx < MAX_DISK_DEVICES; idx++)
mount_status[idx] = _fnDisks[idx].disk_dev.mount_time;

bus_to_computer((uint8_t *) mount_status, sizeof(mount_status), false);
}
else
{
char ret[4] = {0};

bus_to_computer((uint8_t *)ret, sizeof(ret), false);
}
return;
}

Expand Down Expand Up @@ -1650,4 +1665,4 @@ std::string rs232Fuji::get_host_prefix(int host_slot)
return _fnHosts[host_slot].get_prefix();
}

#endif /* BUILD_RS232 */
#endif /* BUILD_RS232 */
5 changes: 4 additions & 1 deletion lib/device/rs232/fuji.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@
#define READ_DEVICE_SLOTS_DISKS1 0x00
#define READ_DEVICE_SLOTS_TAPE 0x10

#define STATUS_MOUNT_TIME_L 0x01
#define STATUS_MOUNT_TIME_H 0x00

typedef struct
{
char ssid[33];
Expand Down Expand Up @@ -148,4 +151,4 @@ class rs232Fuji : public virtualDevice

extern rs232Fuji theFuji;

#endif // FUJI_H
#endif // FUJI_H