mirror of
https://github.com/davidgiven/fluxengine.git
synced 2025-10-31 11:17:01 -07:00
Distinguish between filesystem track ordering and image track ordering
(although currently only the filesystem ordering is used).
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
#include "lib/data/sector.h"
|
||||
#include "lib/data/image.h"
|
||||
#include "lib/data/layout.h"
|
||||
#include "lib/config/config.h"
|
||||
|
||||
Image::Image() {}
|
||||
|
||||
@@ -25,7 +26,8 @@ void Image::clear()
|
||||
void Image::createBlankImage()
|
||||
{
|
||||
clear();
|
||||
for (const auto& trackAndHead : Layout::getTrackOrdering())
|
||||
for (const auto& trackAndHead : Layout::getTrackOrdering(
|
||||
globalConfig()->layout().filesystem_track_order()))
|
||||
{
|
||||
unsigned track = trackAndHead.first;
|
||||
unsigned side = trackAndHead.second;
|
||||
|
||||
@@ -108,21 +108,21 @@ void Layout::getBounds(
|
||||
}
|
||||
|
||||
std::vector<std::pair<int, int>> Layout::getTrackOrdering(
|
||||
unsigned guessedTracks, unsigned guessedSides)
|
||||
LayoutProto::Order ordering, unsigned guessedTracks, unsigned guessedSides)
|
||||
{
|
||||
auto layout = globalConfig()->layout();
|
||||
int tracks = layout.has_tracks() ? layout.tracks() : guessedTracks;
|
||||
int sides = layout.has_sides() ? layout.sides() : guessedSides;
|
||||
|
||||
std::vector<std::pair<int, int>> ordering;
|
||||
switch (layout.order())
|
||||
std::vector<std::pair<int, int>> trackList;
|
||||
switch (ordering)
|
||||
{
|
||||
case LayoutProto::CHS:
|
||||
{
|
||||
for (int track = 0; track < tracks; track++)
|
||||
{
|
||||
for (int side = 0; side < sides; side++)
|
||||
ordering.push_back(std::make_pair(track, side));
|
||||
trackList.push_back(std::make_pair(track, side));
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -132,16 +132,16 @@ std::vector<std::pair<int, int>> Layout::getTrackOrdering(
|
||||
for (int side = 0; side < sides; side++)
|
||||
{
|
||||
for (int track = 0; track < tracks; track++)
|
||||
ordering.push_back(std::make_pair(track, side));
|
||||
trackList.push_back(std::make_pair(track, side));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
error("LAYOUT: invalid track ordering");
|
||||
error("LAYOUT: invalid track trackList");
|
||||
}
|
||||
|
||||
return ordering;
|
||||
return trackList;
|
||||
}
|
||||
|
||||
std::vector<unsigned> Layout::expandSectorList(
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define LAYOUT_H
|
||||
|
||||
#include "lib/data/flux.h"
|
||||
#include "lib/config/layout.pb.h"
|
||||
|
||||
class SectorListProto;
|
||||
class TrackInfo;
|
||||
@@ -39,7 +40,9 @@ public:
|
||||
/* Returns a series of <track, side> pairs representing the filesystem
|
||||
* ordering of the disk, in logical numbers. */
|
||||
static std::vector<std::pair<int, int>> getTrackOrdering(
|
||||
unsigned guessedTracks = 0, unsigned guessedSides = 0);
|
||||
LayoutProto::Order ordering,
|
||||
unsigned guessedTracks = 0,
|
||||
unsigned guessedSides = 0);
|
||||
|
||||
/* Returns the layout of a given track. */
|
||||
static std::shared_ptr<const TrackInfo> getLayoutOfTrack(
|
||||
|
||||
Reference in New Issue
Block a user