libfreemkv 0.1.1

Open source raw disc access library for optical drives
Documentation
# Contributing to libfreemkv

Thank you for your interest in helping make disc archival accessible to everyone.

## Contributing Drive Profiles

The most impactful contribution is adding support for new drives. If you have
an optical drive that isn't listed in [profiles/](profiles/), we'd love your help.

### How to submit drive data

1. Install the tool:
   ```bash
   cargo install libfreemkv
   ```

2. Run `freemkv-info` with your drive:
   ```bash
   freemkv-info /dev/sr0 --raw > my_drive.txt
   ```

3. Open a pull request or issue with the output file attached.

That's it. The raw SCSI response data lets us build a profile for your drive.

### What data is collected

`freemkv-info --raw` sends two standard SCSI commands to your drive:

- **INQUIRY** (opcode 0x12) — returns drive vendor, model, firmware version
- **GET CONFIGURATION** (opcode 0x46) — returns drive feature data

These are read-only, standard SCSI commands. They don't modify your drive
or access any disc data. Every operating system sends these commands
automatically when a drive is connected.

### Priority: Pioneer drives

We especially need data from **Pioneer** Blu-ray drives (BDR-S08, BDR-S09,
BDR-S12, BDR-S13, BDR-209, BDR-212, etc). If you have one, your contribution
would help unlock support for 130+ Pioneer drive firmware versions.

## Contributing Code

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/my-change`)
3. Write tests for your changes
4. Ensure `cargo test` and `cargo clippy` pass
5. Submit a pull request

### Code Style

- Run `cargo fmt` before committing
- No `unsafe` without a comment explaining why
- Public APIs need doc comments
- Error handling via `Result<T, Error>`, no panics in library code

### Architecture

- `src/scsi.rs` — SCSI transport layer (SG_IO on Linux)
- `src/profile.rs` — Profile loading and matching
- `src/platform/` — Per-chipset command implementations
- `src/drive.rs` — High-level DriveSession API
- `profiles/` — JSON drive profile data

## License

By contributing, you agree that your contributions will be licensed under AGPL-3.0.