| HandsFree Profile Audio Gateway diagram |
| ======================================= |
| |
| This diagram explains how oFono manages HFP AG. |
| |
| AT commands and unsolicited results are managed in their related atom (eg. ATA |
| is managed in voicecall atom). |
| The emulator atom is managing AT commands or unsolicited results that are not |
| falling into a specific atom. |
| |
| 1) HFP AG plugin registers a HFP AG server as soon as a voicecall atom exist. |
| 2) When a connection occurs on this server, HFP AG plugin creates and registers |
| an emulator atom. |
| 3) Emulator atom will start a GAtServer and registers non-atom-specific |
| AT commands to it. |
| 4) On emulator atom registration, voice call related atoms (voicecall, network |
| and sim) register AT callbacks they managed through emulator atom. |
| |
| |
| *===========* *-----------------* |
| | | Register | | |
| | BlueZ |<---------------| HFP AG plugin | |
| | | SDP record | | |
| *===========* *-----------------* |
| | |
| | Start emulator on connection |
| | |
| V |
| *-----------------* |
| | | |
| *-------->| Emulator Atom | |
| | | | |
| | *-----------------* |
| | | |
| Register | | Register AT commands |
| AT | V |
| callbacks | *-----------------* |
| | | | |
| | | GAtServer | |
| | | | |
| | *-----------------* |
| | |
| *---------------------*-------------------* |
| | | | |
| *----------------* *--------------* *-------------* |
| | | | | | | |
| | Voicecall atom | | Network atom | | SIM atom | |
| | | | | | | |
| *----------------* *--------------* *-------------* |