# Changelog
## Unreleased
## v0.6.0
### Added
- Add basic tests
- Add `TransmitError` and check error in `write_byte`
- Implement embedded_hal serial traits
### Changed
- Use register names instead of arrays
- Derive `Copy` and `Eq` for bare enums
-
### Removed
- Remove toggle methods
### Security
- The `uart` module is private
- Mark some methods as unsafe
- `from_base_address`
- `set_base_address`
- Mark some methods as private
- methods that directly access the whole register
## v0.5.0
- Add several bitflags of status registers
- Add `#[inline]` to most read/write methods
- **BREAKING CHANGE** Traits from `embedded_hal` are removed due to `is_interrupt_pending` will reset THREI
## v0.4.2
- Don't enable transmitter_holding_register_empty_interrupt in `init()`
- It seems that 16550 used in qemu keeps triggering THREI when THR is empty
## v0.4.1
- fix: IIR[0] == 0 when interrupt is pending
## v0.4.0
- **BREAKING CHANGE** `MmioUart8250` is restructured to be more rusty
- use `reg: &'a mut Registers` instead of `base_address: usize` to access register via `self.reg.rw[0]`
- **BREAKING CHANGE** `init()` enable transmitter_holding_register_empty_interrupt now
## v0.3.2
- Add `enable_*` `disable_*` methods to provide more specific usage
- Add `set_base_address` to change `base_address`
## v0.3.1
- Remove incorrect `write_fmt`
## v0.3.0
- **BREAKING CHANGE** `MmioUart8250` is restructured
- From unit struct to classic C struct
- Change associated functions to methods to allow runtime setup
## v0.2.0
- **BREAKING CHANGE** `ChipFIFOInfo` rename to `ChipFifoInfo`
- Add `embedded` and `fmt` features that impl traits
## v0.1.0
- Basic function of `MmioUart8250`