CHANGELOG.md

# Changelog

## [v0.4.2] - 2024-08-30

### Added

* `sim_rej_info` has been added to the PropertyTable.

### Changed

* PropertyTable properties have been updated to not contain invalid characters
  * MNC
  * MCC
* `provider` PropertyTable property Will now work correctly with updated MNC/MCC properties.

## [v0.4.1] - 2024-08-06

### Changed

* Fix various ways that a cellular module with trouble reading a SIM card could
  cause a crash. This was a low probability event that actually accumulated a
  lot of crash reports.
* Reduce retry rate for SIM card read errors from 1s to 5s. These are unlikely
  to recover and retrying every second logged a lot.

## [v0.4.0] - 2024-07-25

### Changed

* Require Elixir 1.14 and OTP 25. This was done to support more convenient
  binary patterns in the QMI library.

### Added

* Determine the cellular provider a different way that works reliably with
  multi-network SIM cards. This adds a small database to look up the provider
  based on MCC and MNC.

## [v0.3.6] - 2023-05-16

### Changed

* Don't crash when selecting the APN when the ICCID is `nil`. This is an error
  case that's made more confusing by this exception. The default APN will be
  selected even though it's probably futile.

## [v0.3.5] - 2023-04-25

### Changed

* Restrict reported ASU values to 0-31 | 99 to match expected values.  In one
  case, 32 was reported for a strong signal, but prior to the change there
  wasn't a limit.

## [v0.3.4] - 2023-03-23

### Changed

* Add grace period on serving system disconnects since they're often followed
  very quickly by a reconnect when moving between cell towers. This
  fixes an issue where TCP connections would unnecessarily be terminated and
  only to reconnect a second later.

## [v0.3.3] - 2023-01-23

### Changed

* Allow `:vintage_net` `v0.13.0` to be used
* Add some more information when QMI reports no internet

## [v0.3.2] - 2022-05-02

### Changed

* `:vintage_net` `v0.12.0` and up is now required

## [v0.3.1] - 2022-04-27

### Added

* Add support for `:roaming_allowed?` field in a service provider configuration
  to allow or disallow roaming when using the configured service provider.

## [v0.3.0] - 2022-02-10

There was a fix that changed the property reported in the property table from
`"manufacture"` to `"manufacturer"`. To upgrade you will want to change any
code that this is subscribe to this property to have the correct spelling.

### Added

* Add support to configure which radio technologies you want the modem to use

### Fixes

* References to manufacturer
* Infinite retrying to establish connection after the connection has been
  established
* Report selected APN before connection attempt

## [v0.2.14] - 2022-1-13

### Added

* Show the configured APN in the property table

## [v0.2.13] - 2022-1-4

### Added

* Allow APN selection based off ICCID when deploying SIMs from multiple service
  providers

## [v0.2.12] - 2021-12-20

### Added

* Property named `"manufacturer"` for the manufacturer name of the modem
* Property named `"model"` for the product name of the modem

## [v0.2.11] - 2021-11-18

### Fixes

- When there is no signal VintageNetQMI would report 1 bar of signal rather than
  0 bars

## [v0.2.10] - 2021-11-17

### Changes

- Power manager timer was petting the watch dog every 60 miliseconds, now it
  will pet the watch dog every 30 seconds.
- Ignore sync indications from QMI so they are not logged.

### Fixes

- A crash that happened when the interface would stop but there was no IP
  address on the interface.
- Internet connectivity checker being enabled when it should not have been

## [v0.2.9] - 2021-09-21

### Added

* Property named `"statistics"` that contains a map of transmit and receive
  stats. The fields are:
  * `:timestamp` - monotonic time for when the stats were last updated
  * `:tx_bytes` - total bytes transmitted
  * `:rx_bytes` - total bytes received
  * `:tx_packets` - total packets transmitted without error
  * `:rx_packets` - total packets received without error
  * `:tx_errors` - total outgoing packets with framing errors
  * `:rx_errors` - total incoming packets with framing errors
  * `:tx_overflows` - total outing packets dropped due to buffer overflows
  * `:rx_overflows` - total incoming packets dropped due to buffer overflows
  * `:tx_drops` - total outgoing packets dropped
  * `:rx_drops` - total incoming packets dropped
* Property `"band"` for the frequency band being used by the radio interface
* Property `"channel"` for the channel being used by the radio interface
* Property `"access_technology"` for the radio interface that is active

## v0.2.8

* Added
  * Location and time properties:
    * `lac` - The Location Area Code (lac) for the current cell
    * `cid` - The Cell ID (cid) for the current cell
    * `network_datetime` - The reported datetime from the network
    * `utc_offset` - The UTC offset in seconds
    * `roaming` - If the network is roaming or not
    * `std_offset` - The standard offset in seconds

## v0.2.7

* Added
  * Support `VintageNet` v0.11.x
  * Serial number properties:
    * `esn` - Electronic Serial Number (ESN)
    * `imei` - International Mobile Equipment Identity (IMEI)
    * `meid` - Mobile Equipment Identifier (MEID)
    * `imeisv_svn` - IMEI software version number
  * The `provider` property to get the service provider name

* Fixes
  * When packet data connection is disconnected set the connection status to
    `:disconnected`
  * Check connectivity status to know if the modem should power cycle

## v0.2.6

* Fixes
  * Fix lease renewal ending in stuck lan connectivity

## v0.2.5

* Updates
  * Support `qmi` v0.6.0

## v0.2.4

* Improvements
  * Support `iccid` property

* Updates
  * Support `qmi` v0.5.1

## v0.2.3

* Fixes
  * `VintageNetQMI.quick_configure/1` updated to use the passed in argument
    for the APN instead of always using hardcoded `"apn"` value

## v0.2.2

* Improvements
  * Add `VintageNetQMI.quick_configure/1` to easily configure `VintageNet` at
    runtime.

* Updates
  * Support `vintage_net` v0.10.2
  * Better handling of connection status

## v0.2.1

* Updates
  * Set connection based on QMI notifications

## v0.2.0

* Updates
  * Change configuration to match VintageNetMobile (backwards incompatible)
  * Don't require IPv4 configuration

## v0.1.3

* Updates
  * Support `qmi` v0.3.1

* Fixes
  * Connection code blocking supervision initialization

## v0.1.2

* Updates
  * Support `qmi` v0.2.0

## v0.1.1

* Updates
  * Support vintage_net v0.10.0

## v0.1.0

Initial Release

[v0.4.1]: https://github.com/nerves-networking/vintage_net_qmi/compare/v0.4.0...v0.4.1
[v0.4.0]: https://github.com/nerves-networking/vintage_net_qmi/compare/v0.3.6...v0.4.0
[v0.3.6]: https://github.com/nerves-networking/vintage_net_qmi/compare/v0.3.5...v0.3.6
[v0.3.5]: https://github.com/nerves-networking/vintage_net_qmi/compare/v0.3.4...v0.3.5
[v0.3.4]: https://github.com/nerves-networking/vintage_net_qmi/compare/v0.3.3...v0.3.4
[v0.3.3]: https://github.com/nerves-networking/vintage_net_qmi/compare/v0.3.2...v0.3.3
[v0.3.2]: https://github.com/nerves-networking/vintage_net_qmi/compare/v0.3.1...v0.3.2
[v0.3.1]: https://github.com/nerves-networking/vintage_net_qmi/compare/v0.3.0...v0.3.1
[v0.3.0]: https://github.com/nerves-networking/vintage_net_qmi/compare/v0.2.14...v0.3.0
[v0.2.14]: https://github.com/nerves-networking/vintage_net_qmi/compare/v0.2.13...v0.2.14
[v0.2.13]: https://github.com/nerves-networking/vintage_net_qmi/compare/v0.2.12...v0.2.13
[v0.2.12]: https://github.com/nerves-networking/vintage_net_qmi/compare/v0.2.11...v0.2.12
[v0.2.11]: https://github.com/nerves-networking/vintage_net_qmi/compare/v0.2.10...v0.2.11
[v0.2.10]: https://github.com/nerves-networking/vintage_net_qmi/compare/v0.2.9...v0.2.10
[v0.2.9]: https://github.com/nerves-networking/vintage_net_qmi/compare/v0.2.8...v0.2.9