BlueSCSI_presets.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #include "BlueSCSI_presets.h"
  2. #include "BlueSCSI_disk.h"
  3. #include "BlueSCSI_log.h"
  4. #include "BlueSCSI_config.h"
  5. #include <strings.h>
  6. // Helper function for case-insensitive string compare
  7. static bool strequals(const char *a, const char *b)
  8. {
  9. return strcasecmp(a, b) == 0;
  10. }
  11. preset_config_t getSystemPreset(const char *presetName)
  12. {
  13. // Default configuration
  14. preset_config_t cfg = {};
  15. cfg.quirks = S2S_CFG_QUIRKS_APPLE;
  16. cfg.deviceTypeModifier = 0;
  17. cfg.sectorsPerTrack = 63;
  18. cfg.headsPerCylinder = 255;
  19. cfg.prefetchBytes = PREFETCH_BUFFER_SIZE;
  20. cfg.selectionDelay = 255;
  21. cfg.maxSyncSpeed = 10;
  22. cfg.enableUnitAttention = false;
  23. cfg.enableSCSI2 = true;
  24. cfg.enableSelLatch = false;
  25. cfg.mapLunsToIDs = false;
  26. cfg.enableParity = true;
  27. cfg.reinsertOnInquiry = false;
  28. // System-specific defaults
  29. if (strequals(presetName, ""))
  30. {
  31. // Preset name is empty, use default configuration
  32. }
  33. else if (strequals(presetName, "Generic"))
  34. {
  35. cfg.presetName = "Generic";
  36. cfg.quirks = S2S_CFG_QUIRKS_NONE;
  37. }
  38. else if (strequals(presetName, "MacPlus"))
  39. {
  40. cfg.presetName = "MacPlus";
  41. cfg.quirks = S2S_CFG_QUIRKS_APPLE;
  42. cfg.enableSelLatch = true;
  43. cfg.enableSCSI2 = false;
  44. cfg.selectionDelay = 0;
  45. }
  46. else if (strequals(presetName, "MegaSTE"))
  47. {
  48. cfg.presetName = "MegaSTE";
  49. cfg.quirks = S2S_CFG_QUIRKS_NONE;
  50. cfg.mapLunsToIDs = true;
  51. cfg.enableParity = false;
  52. }
  53. else if (strequals(presetName, "X68000"))
  54. {
  55. cfg.presetName = "X68000";
  56. cfg.selectionDelay = 0;
  57. cfg.quirks = S2S_CFG_QUIRKS_X68000;
  58. cfg.enableSCSI2 = 0;
  59. cfg.maxSyncSpeed = 5;
  60. }
  61. else
  62. {
  63. log("Unknown preset name ", presetName, ", using default settings");
  64. }
  65. return cfg;
  66. }