diff --git a/Interfaces/IFluxImage.cs b/Interfaces/IFluxImage.cs index 772af85..21a5e12 100644 --- a/Interfaces/IFluxImage.cs +++ b/Interfaces/IFluxImage.cs @@ -1,3 +1,41 @@ +// /*************************************************************************** +// Aaru Data Preservation Suite +// ---------------------------------------------------------------------------- +// +// Filename : IFluxImage.cs +// Author(s) : Rebecca Wallander +// +// Component : Flux image plugins. +// +// --[ Description ] ---------------------------------------------------------- +// +// Defines the interface to be implemented by flux image plugins. +// +// --[ License ] -------------------------------------------------------------- +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// ---------------------------------------------------------------------------- +// Copyright © 2011-2023 Rebecca Wallander +// ****************************************************************************/ + using Aaru.CommonTypes.Enums; namespace Aaru.CommonTypes.Interfaces; @@ -10,33 +48,57 @@ public interface IFluxImage : IBaseImage /// An image may have more than one capture for a specific head/track/sub-track combination. This returns /// the amount of captures in the image for the specified head/track/sub-track combination. /// - /// The number of captures + /// Error number /// Physical head (0-based) /// Physical track (position of the heads over the floppy media, 0-based) /// Physical sub-step of track (e.g. half-track) - uint CapturesLength(uint head, ushort track, byte subTrack); + /// The number of captures + ErrorNumber CapturesLength(uint head, ushort track, byte subTrack, out uint length); - /// Reads the resolution (sample rate) of a flux capture in picoseconds - /// The resolution of a capture in picoseconds - /// Physical head (0-based) - /// Physical track (position of the heads over the floppy media, 0-based) - /// Physical sub-step of track (e.g. half-track) - /// Which capture to read. See also - ulong ReadFluxResolution(uint head, ushort track, byte subTrack, uint captureIndex); - - /// Reads the entire flux capture with index and data streams, as well as its resolution + /// Reads the resolution (sample rate) of a index signal capture in picoseconds. /// Error number /// Physical head (0-based) /// Physical track (position of the heads over the floppy media, 0-based) /// Physical sub-step of track (e.g. half-track) /// Which capture to read. See also - /// The capture's resolution (sample rate) in picoseconds + /// The resolution of the index capture in picoseconds + ErrorNumber ReadFluxIndexResolution(uint head, ushort track, byte subTrack, uint captureIndex, + out ulong resolution); + + /// Reads the resolution (sample rate) of a data signal capture in picoseconds. + /// Error number + /// Physical head (0-based) + /// Physical track (position of the heads over the floppy media, 0-based) + /// Physical sub-step of track (e.g. half-track) + /// Which capture to read. See also + /// The resolution of the data capture in picoseconds + ErrorNumber ReadFluxDataResolution(uint head, ushort track, byte subTrack, uint captureIndex, out ulong resolution); + + /// Reads the resolution (sample rate) of a flux capture in picoseconds. + /// Error number + /// Physical head (0-based) + /// Physical track (position of the heads over the floppy media, 0-based) + /// Physical sub-step of track (e.g. half-track) + /// Which capture to read. See also + /// The resolution of the index capture in picoseconds + /// The resolution of the data capture in picoseconds + ErrorNumber ReadFluxResolution(uint head, ushort track, byte subTrack, uint captureIndex, out ulong indexResolution, + out ulong dataResolution); + + /// Reads the entire flux capture with index and data streams, as well as its resolution. + /// Error number + /// Physical head (0-based) + /// Physical track (position of the heads over the floppy media, 0-based) + /// Physical sub-step of track (e.g. half-track) + /// Which capture to read. See also + /// The resolution (sample rate) of the index capture in picoseconds + /// The resolution (sample rate) of the data capture in picoseconds /// Buffer to store the index stream in /// Buffer to store the data stream in - ErrorNumber ReadFluxCapture(uint head, ushort track, byte subTrack, uint captureIndex, out ulong resolution, - out byte[] indexBuffer, out byte[] dataBuffer); + ErrorNumber ReadFluxCapture(uint head, ushort track, byte subTrack, uint captureIndex, out ulong indexResolution, + out ulong dataResolution, out byte[] indexBuffer, out byte[] dataBuffer); - /// Reads a capture's index stream + /// Reads a capture's index stream. /// Error number /// Physical head (0-based) /// Physical track (position of the heads over the floppy media, 0-based) @@ -45,7 +107,7 @@ public interface IFluxImage : IBaseImage /// Buffer to store the data in ErrorNumber ReadFluxIndexCapture(uint head, ushort track, byte subTrack, uint captureIndex, out byte[] buffer); - /// Reads a capture's data stream + /// Reads a capture's data stream. /// Error number /// Physical head (0-based) /// Physical track (position of the heads over the floppy media, 0-based) diff --git a/Interfaces/IWritableFluxImage.cs b/Interfaces/IWritableFluxImage.cs index e252d36..3b58378 100644 --- a/Interfaces/IWritableFluxImage.cs +++ b/Interfaces/IWritableFluxImage.cs @@ -1,3 +1,41 @@ +// /*************************************************************************** +// Aaru Data Preservation Suite +// ---------------------------------------------------------------------------- +// +// Filename : IWritableFluxImage.cs +// Author(s) : Rebecca Wallander +// +// Component : Writable flux image plugins. +// +// --[ Description ] ---------------------------------------------------------- +// +// Defines the interface to be implemented by writable flux image plugins. +// +// --[ License ] -------------------------------------------------------------- +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// ---------------------------------------------------------------------------- +// Copyright © 2011-2023 Rebecca Wallander +// ****************************************************************************/ + using Aaru.CommonTypes.Enums; namespace Aaru.CommonTypes.Interfaces; @@ -6,9 +44,8 @@ namespace Aaru.CommonTypes.Interfaces; /// Abstract class to implement flux writing plugins. public interface IWritableFluxImage : IFluxImage, IWritableImage { - /// - /// Writes a flux capture. - /// + /// Writes a flux capture. + /// Error number /// The capture's resolution (sample rate) in picoseconds /// Flux representation of the index signal /// Flux representation of the data signal @@ -16,7 +53,28 @@ public interface IWritableFluxImage : IFluxImage, IWritableImage /// Physical track (position of the heads over the floppy media, 0-based) /// Physical sub-step of track (e.g. half-track) /// Which capture slot to write to. See also + ErrorNumber WriteFluxCapture(ulong indexResolution, ulong dataResolution, byte[] indexBuffer, byte[] dataBuffer, + uint head, ushort track, byte subTrack, uint captureIndex); + + /// Writes a capture's index stream. /// Error number - ErrorNumber WriteFluxCapture(ulong resolution, byte[] index, byte[] data, uint head, ushort track, byte subTrack, - uint captureIndex); + /// The capture's resolution (sample rate) in picoseconds + /// Flux representation of the index signal + /// Physical head (0-based) + /// Physical track (position of the heads over the floppy media, 0-based) + /// Physical sub-step of track (e.g. half-track) + /// Which capture to read. See also + ErrorNumber WriteFluxIndexCapture(ulong resolution, byte[] index, uint head, ushort track, byte subTrack, + uint captureIndex); + + /// Writes a capture's data stream. + /// Error number + /// The capture's resolution (sample rate) in picoseconds + /// Flux representation of the data signal + /// Physical head (0-based) + /// Physical track (position of the heads over the floppy media, 0-based) + /// Physical sub-step of track (e.g. half-track) + /// Which capture to read. See also + ErrorNumber WriteFluxDataCapture(ulong resolution, byte[] data, uint head, ushort track, byte subTrack, + uint captureIndex); } \ No newline at end of file