README.md

<p align="center">
  <img src="assets/logo.svg" alt="Parrot Logo" width="200">
</p>

<p align="center">
  <a href="https://github.com/byoungdale/parrot/actions/workflows/ci.yml">
    <img src="https://github.com/byoungdale/parrot/workflows/CI/badge.svg" alt="Build Status">
  </a>
  <a href="https://hex.pm/packages/parrot_platform">
    <img src="https://img.shields.io/hexpm/v/parrot_platform.svg" alt="Hex Version">
  </a>
  <a href="https://hexdocs.pm/parrot_platform">
    <img src="https://img.shields.io/badge/hex-docs-purple.svg" alt="Hex Docs">
  </a>
</p>

# Parrot Platform

> Putting the "T" back in OTP.

Parrot Platform provides Elixir libraries and OTP behaviours for building real-time communication services using SIP and RTP.

## Key Features

- **SIP Protocol Stack**: Full RFC 3261 compliant SIP implementation
- **Handler Pattern**: Flexible callback system for SIP events
  - `Parrot.UasHandler` for UAS (server) applications
  - `Parrot.UacHandler` for UAC (client) applications
- **RTP Audio**: Built-in support for G.711 (PCMA) audio streaming
- **Audio Devices**: System audio device support via PortAudio plugin
- **gen_statem Architecture**: Robust state machine implementation for transactions and dialogs
- **Media Integration**: Audio processing through Membrane multimedia libraries

## Getting started

Get started with the Parrot Platform by follow the instructions at https://hexdocs.pm/parrot_platform/overview.html#quick-start

### Brandon's Notes

Next steps:
- [ ] Add git push hook check for mix format
- [ ] add OPUS support to uas and uac examples and generators
- [ ] better pattern matching in media modules
- [ ] load test
- [x] create Parrot Platform audio file welcome message for basic sample app generator to use
- [x] update Parrot.SipHandler to Parrot.UasHandler
- [x] figure out if Handler adapter is a good way to handle things
- [x] Control Parrot logging levels from the handler behavior
- [x] update docs to show a pattern matching example of INVITE handling
- [x] build basic app generator (mix parrot.gen.uas creates UAS applications)

## License

This project is licensed under the [GNU General Public License v2.0](./LICENSE).