using com.clusterrr.Famicom.Containers;
using System;
using System.Collections.Generic;
namespace com.clusterrr.Famicom.DumperConnection
{
public interface IFamicomDumperConnectionExt : IFamicomDumperConnection
{
///
/// Init dumper (flush queud data, check connection)
///
///
public bool Init();
///
/// Famicom Dumper serial protocol version (depends on firmware version)
///
byte ProtocolVersion { get; }
///
/// Famicom Dumper firmware version (depends on protocol version)
///
Version FirmwareVersion { get; }
///
/// Famicom Dumper firmware version (depends on protocol version)
///
Version HardwareVersion { get; }
///
/// Famicom Dumper maximum read packet size (depends on firmware and hardware)
///
ushort MaxReadPacketSize { get; }
///
/// Famicom Dumper maximum read packet size (depends on firmware and hardware)
///
ushort MaxWritePacketSize { get; }
///
/// Timeout for all read/write operations (in milliseconds)
///
uint Timeout { get; set; }
///
/// Read CRC16 checksum of data at CPU (PRG) bus
///
/// Address to read from
/// Number of bytes to read
/// Checksum
ushort ReadCpuCrc(ushort address, int length);
///
/// Read CRC16 checksum of data at PPU (CHR) bus
///
/// Address to read from
/// Number of bytes to read
/// Checksum
ushort ReadPpuCrc(ushort address, int length);
///
/// Erase COOLBOY/GOOLGIRL current flash sector
///
void EraseFlashSector();
///
/// Write COOLBOY/GOOLGIRL flash memory
///
/// Address to write to
/// Data to write, address will be incremented after each byte
void WriteFlash(ushort address, byte[] data);
///
/// Erase UNROM512
///
void EraseUnrom512();
///
/// Write UNROM512 flash memory
///
/// Address to write to
/// Data to write, address will be incremented after each byte
void WriteUnrom512(uint address, byte[] data);
///
/// Set maximum number of bytes in multi-byte flash program
///
///
void SetMaximumNumberOfBytesInMultiProgram(uint pageSize);
///
/// Enable/disable COOLBOY GPIO mode
///
/// Enable COOLBOY GPIO mode
void SetCoolboyGpioMode(bool coolboyGpioMode);
}
}