BlueSCSI Toolbox API v1 Ideas #149
Replies: 3 comments 1 reply
-
If this will already include breaking changes, it might be worth reassigning 0xD8 and 0xD9 to other opcodes to avoid Plextor and Apple CD 300 Plus vendor commands. |
Beta Was this translation helpful? Give feedback.
-
I've had a chance to dig pretty deep into the toolbox while developing my own app. This comment ended up being quite long (sorry). I hope it doesn't come across as overly critical, the toolbox feature is great and makes it easier to work with SCSI emulators. Here's some thoughts for future versions. Mode Page Version Negotiation Rather than making a straight-up breaking change to the API, I’d suggest letting clients choose a compatibility level via the existing mode page. The basic process could look like this:
This seems like it has multiple advantages:
The obvious downside is this increases complexity in the firmware and test suite, but IMHO it is probably easier to manage there: distributing new client software or making people update their firmware seems like a harder problem overall. Improve Interoperability I’d also suggest changing the recommendations on the wiki about how to read the mode page during validation. I get the idea of making sure it’s safe to send commands in the vendor space, but I would love to see the suggested check be made more generic so other devices could work with software clients without needing to incorporate the BlueSCSI trademark. The validation recommendation could be just a subset of the existing string: look for “SCSI” at offset 4-7 for example (or through offset 8, inclusive of the mode page suggestion above). To be clear, I'm not asking that the first-party BlueSCSI Toolbox apps be made to work with other devices - that's your code, you're obviously free to do whatever you want with it. This is more a request to make the toolbox API itself less vendor-specific. I like openness and open standards, and this seems like a good opportunity to encourage third-party developers to make apps that work across as wide a variety of devices as possible. Command Format For the plan to change to 10-byte commands, it would be ideal if they followed the SCSI spec’s general definition (SPC 4.3.2). You’ve already got the LUN prefix in your list, but reserving control byte 10 and any other unused bits would be good, along with adding allocation length in many commands. This approach could help condense the number of unique opcodes and help with clients on memory-limited systems. As an example, getting both the file count and the list of files could look like this:
During DATA IN it could return two bytes of data, indicating the number of entries following, then 40 bytes of data per entry like the current naming format. Users could call it with allocation length set to 2 to fetch the number of entries, then call it again with the allocation length set to the appropriate size (or a smaller size if they are memory limited), retrieving the data. Setting bit 0 of byte 6 would return image data instead of shared directory data. This kind of approach uses fewer commands, is more SCSI-ish (to me, anyway) and could help make minor upgrades in the future less painful. |
Beta Was this translation helpful? Give feedback.
-
File transfer/management APIFrom a high-level perspective, the file transfer commands in the current API are very inconsistent. Format I would like to see for a new API:
|
Beta Was this translation helpful? Give feedback.
-
The BlueSCSI Toolbox v0 was developed quite a few years ago now - it started in BlueSCSI V1 and it's use has expanded greatly and there are many things we could improve to make it better for developers and users. This discussion is for Toolbox Developers and Users to chime in with ideas on features to add. I'll start with a few I've already done work on. I'll keep this post up to date with accepted features for BlueSCSI Toolbox v1.
Accepted
Considering
Beta Was this translation helpful? Give feedback.
All reactions