I am now working on modem emulator and one usage is for DUN server role. Since Padovan is
working on client role, it's good to share my rough thinking for server side
implementation. Here are the simple steps I have:
1. Create an oFono emulator atom in oFono. It's the emulator manager that could create
DUN, HFP AG or SPP type emulators. It exposes dbus methods like CreateEmulator,
DestroyEmulator, GetProperty, etc.
2. DUN agent server in BlueZ watch oFono and call CreateEmulator and pass the file
descriptor to oFono. This server could further implement HFP AG and SPP connection.
3. Once an emulator is created, other atom like voicecall, grps, sms register their
interested AT command handlers to it. The goal is that we could handle all mandatory AT
commands defined in DUN profile spec.
4. Once a DUN emulator received ATD*99#, DUN client performs ppp connection so we forward
ppp command to ppp stack. It is done by ppp server side extension. It should be the simple
5. Once the PPP link over DUN is established, DUN client performs ConnMan integration and
setup IP address, DNS server, etc.
6. Once the Bluetooth link is disconnected, we destroy the PPP and DUN emulator. If
emulator atom itself is destroyed, we destroy the PPP and the Bluetooth connection. If the
PPP link is disconnected but Bluetooth link is alive, we destroy the PPP and stay emulator
Comments are welcome. :)