/*
 * BlockType.java
 *
 * Copyright (c) 2007  Vreixo Formoso
 *
 * This library is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 * See COPYING file for details.
 */

package org.pykix.libburnia.libburn;

/**
 * Data format to send to the drive.
 * 
 * @author Vreixo Formoso
 * @since 0.1
 */
public enum BlockType {

	/** sync, headers, edc/ecc provided by lib/user. */
	RAW0(1),
	
	/** sync, headers, edc/ecc and p/q subs provided by lib/user. */
	RAW16(2),
	
	/** sync, headers, edc/ecc and packed p-w subs provided by lib/user. */
	RAW96P(4),
	
	/** sync, headers, edc/ecc and raw p-w subs provided by lib/user. */
	RAW96R(8),
	
	/** only 2048 bytes of user data provided by lib/user. */
	MODE1(256),
	
	/** 2336 bytes of user data provided by lib/user. */
	MODE2R(512),
	
	/** 
	 * 2048 bytes of user data provided by lib/user
	 * subheader provided in write parameters
	 * are we ever going to support this shit?  I vote no.
	 * (supposed to be supported on all drives...)
	 */
	MODE2_PATHETIC(1024),
	
	/** 
	 * 2048 bytes of data + 8 byte subheader provided by lib/user
	 * hey, this is also dumb
	 */
	MODE2_LAME(2048),
	
	/** 
	 * 2324 bytes of data provided by lib/user 
	 * subheader provided in write parameters. 
	 * no sir, I don't like it.
	 */
	MODE2_OBSCURE(4096),
	
	/** 
	 * 2332 bytes of data supplied by lib/user
	 * 8 bytes sub header provided in write parameters
	 * this is the second least suck mode2, and is mandatory for
	 * all drives to support.
	 */
	MODE2_OK(8192),
	
	/** SAO block sizes are based on cue sheet, so use this. */
	SAO(16384);
	
	int code;
	private BlockType(int code) {
		this.code = code;
	}
	
}
