gprs: Try re-attaching when we switch cells
[platform/upstream/ofono.git] / doc / features.txt
1 oFono - Open Source Telephony
2 *****************************
3
4 Purpose
5 =======
6
7 The purpose of this document is to enumerate all major functionality areas
8 of oFono.  In effect, this document will serve as the primary, up to date
9 source of oFono feature information.  It is intended for developers, managers
10 and users alike to quickly gauge the progress of the project and feature
11 availability.
12
13 Sim Toolkit
14 ===========
15
16 Supported Proactive Commands:
17
18 - Display Text proactive command support.  Upon receiving the proactive
19   command notification oFono decodes it, including performing character
20   conversion from packed/unpacked GSM 7bit and UCS2 to UTF-8 encoded text.
21   The registered agent is then called using the DisplayText method on the
22   SimToolkitAgent interface to handle the user interaction aspects.
23
24   SIM-specified duration are handled.  If immediate response to the SIM
25   is required, oFono sends a terminal response immediately.  DisplayText
26   method is still executed normally, until a timeout occurs or a new
27   proactive command arrives from the SIM.
28
29 - Get Inkey proactive command support.  When this command is received,
30   oFono decodes it and checks what "flavor" it is.  Depending on this, the
31   SimToolkitAgent is called with a different method call:
32         * If the Get Inkey flavor indicates that this is a simple Yes/No
33           confirmation, then the RequestConfirmation method is called.
34         * If the Get Inkey flavor indicates that the SIM only expects digits,
35           then the RequestDigit method is called.
36         * Otherwise the RequestKey method is called
37
38   SIM specified durations are handled, if the user agent does not respond
39   in the time allowed, then the 'No Response' Terminal Response is generated
40   automatically.
41
42 - Get Input proactive command support.  When this command is received,
43   oFono decodes it and checks what "flavor" it is.  Depending on this, the
44   SimToolkitAgent is called with a different method call:
45         * If the Get Input flavor indicates that the SIM only expects digits,
46           then the RequestDigits method is called.
47         * Otherwise the RequestInput method is called
48
49 - More Time proactive command support.  This command is intended to notify
50   that the SIM is still busy processing a command.  For oFono, this proactive
51   command is a no-op.  It is always replied to successfully.
52
53 - Setup Menu proactive command support. When this command is received, oFono
54   parses the new main menu structure and updates its MainMenu and MainMenuTitle
55   properties which reflect the items, icons and the alpha text of the
56   proactive command.  Soft key support and menu help system are ignored by
57   oFono.
58
59 - Select Item proactive command support.  When this command is received, oFono
60   decodes it and dispatches it to the SimToolkitAgent by calling the
61   RequestSelection method.  This method is passed the menu selection title,
62   the selectable items and the default, if any.
63
64 - Timer Management proactive command support.  oFono supports starting,
65   stopping and querying timer state flavors of this command.  Up to eight
66   timers are supported.  This proactive command is handled completely
67   inside oFono and no external user interaction is required.
68
69 - Set Up Idle Mode Text proactive command support.  Whenever oFono receives
70   this proactive command, it updates the IdleText property on the main
71   SimToolkit interface.  Indications that this property has changed are
72   handled by the usual means.
73
74 - Send DTMF proactive command.  Whenever oFono receives the Send DTMF command,
75   it checks that there are calls in progress and DTMF is possible.  If so,
76   DTMF characters are passed to the voicecall atom to be transmitted to the
77   modem.  The appropriate terminal response is sent to the SIM once the DTMF
78   tones have been played or the call has been disconnected.
79
80   NOTE: This command can also be handled by the modem.
81
82 - Play Tone proactive command.  Whenever oFono receives a Play Tone proactive
83   command it checks whether the tone is to be continuous/looped or played once.
84   It then calls the SimToolkitAgent PlayTone or LoopTone method as appropriate.
85   The sound that will be played will be determined based on the sound type
86   that is passed to the agent.  It is up to the system integrator to provide
87   the appropriate sounds.
88
89 - Send USSD proactive command.  Whenever oFono receives a Send USSD proactive
90   command it checks whether there are any USSD / SS operations in progress.
91   If an operation is in progress, the appropriate terminal response is sent
92   without performing the Send USSD operation.  Otherwise the USSD string
93   is sent to the network, and the response is sent back to the SIM in the
94   terminal response.
95
96   NOTE: This command can also be handled by the modem.
97
98 - Language Notification proactive command. Whenever oFono receives a Language
99   Notification proactive command, it prints the language code and sends
100   terminal response to the SIM immediately.
101
102 - Provide Local Information proactive command.  Whenever oFono receives a
103   Provide Local Information proactive command, it checks the type of the
104   information requested.  If the information is about the time/date or the
105   language of the terminal, it responds to the command with the appropriate
106   terminal response. The time/date information is obtained using localtime().
107   The language information is obtained by checking the LANG environment
108   variable.  All other information requests are expected to be handled by
109   the modem.
110
111 - Send Short Message proactive command.  Whenever oFono receives a Send SMS
112   proactive command, it parses the PDU and submits it to the outgoing SMS
113   queue.  A terminal response is sent to the SIM When the raw PDU has been
114   sent, or failed to be sent.
115
116   NOTE: This command can also be handled by the modem.
117
118 - Set Up Call proactive command.  When oFono receives a Set Up Call proactive
119   command, it checks whether the UICC has indicated that the user should be
120   informed.  In this case the SimToolkitAgent is called with the
121   ConfirmCallSetup method.  If the user has authorized the operation, or if
122   the user's confirmation was not indicated oFono will setup the call and
123   optionally inform the user.  The information sent by the SIM will be
124   available on the resulting voice call object.  The relevant properties are
125   Information and Icon.
126
127   NOTE: This command can also be handled by the modem.
128
129 - Refresh proactive command.  The specification defines 7 types
130   of Refresh requests:
131         - NAA Initialization
132         - NAA File Change Notification
133         - NAA Initialization and File Change Notification
134         - NAA Initialization and Full File Change Notification
135         - UICC Reset
136         - NAA Application Reset (2G only)
137         - NAA Session Reset (3G only)
138
139   oFono can fully perform the the first four types of Refresh.  The
140   remaining three must be handled by the modem or its driver with a
141   notification sent to ofono.  Regardless of whether the command is
142   handled by the modem or not, oFono will check whether there are any
143   calls or ussd operations active.  If there are, the appropriate
144   response will be sent (e.g. busy on call or screen busy terminal
145   response.)  Otherwise a positive response will be sent to the driver.
146   In the case of a 'UICC Reset' the driver / modem can interpret this
147   that it is safe to reset the UICC.
148
149   Alternatively, the driver / modem can notify the core of the SIM removal
150   / SIM insertion events without using the Refresh proactive command.  It
151   is up to the driver / modem to perform a warm reset.  In particular, 3GPP
152   31.111 mandates that any change to EFimsi is done by using 'UICC Reset',
153   'NAA Application Reset' or 'NAA Session Reset'.  Please see 3GPP 31.111
154   Section 6.4.7.1.
155
156   Other types are handled by oFono flushing the EF cache of the files
157   affected (or the entire SIM cache in case of Full File Change Notifications)
158   and re-reading the affected files.  Any properties derived from these
159   Elementary Files will be updated and signaled using PropertyChanged.
160
161   NOTE: This command can also be handled by the modem.
162
163 - Sim icon support.  oFono supports icons that are stored on the SIM.  If the
164   SIM notifies oFono that an icon is available for a particular proactive
165   command, oFono passes this information to the UI.  The UI is able to obtain
166   the icons by using GetIcon method on the SimManager interface.  The icons
167   are read from the SIM and converted into XPM format.
168
169 - Text attribute support.  Whenever oFono detects that text attributes have
170   been given to any text or alpha string, it applies them and converts the
171   resulting text to HTML.  The UI is expected to be able to display such
172   HTML formatted text.
173
174 Envelopes:
175
176 - Timer Expiration envelope support.  Whenever a timer expires (as started by
177   the Timer Management proactive command) oFono forwards, this envelope type
178   to the SIM.  No external user interaction is required.
179
180 - Menu Selection envelope support.  The user can initiate a proactive command
181   session by selecting something from the Sim Toolkit main menu.  This is done
182   by using the SimToolkit's SelectItem method.  As a result, oFono will send
183   the Menu Selection envelope to the SIM.
184
185 - CBS-PP Download envelope support.  When oFono receives a cell broadcast
186   and on a channel listed in EFcbmid, it is dispatched to the SIM using the
187   CBS-PP Download envelope.  No user interaction is required or signaled
188   whenever this occurs.
189
190 - SMS-PP Download envelope support.  When oFono receives an sms message
191   addressed to the SIM, it is dispatched to the SIM using the SMS-PP Download
192   envelope.  No user interaction is required or signaled whenever this occurs.
193
194   Please note that many current modems do not support returning RP-ACK and
195   RP-ERROR acknowledgement PDUs back to the network.  This is required by the
196   CAT specification for SMS-PP Download.  E.g. the sim response to the SMS-PP
197   Download Envelope is to be stored in an RP-ACK / RP-ERROR PDU and returned to
198   the network.  It is thus anticipated that modems will transparently handle
199   this feature in the firmware.
200
201 The following commands are expected to be handled by the modem:
202
203 - Send SS proactive command.  oFono does not explicitly support this proactive
204   command since AT modems do not provide the low level information necessary
205   for oFono to generate a valid response.  The modem (or driver) shall handle
206   this command.  Optionally the modem (or driver) can inform oFono that the
207   proactive command has been received and is being handled by the modem, as
208   well as when the terminal response has been sent by the modem.  oFono will
209   display the necessary user information for this time period if this
210   information is included in the proactive command.
211
212  -----------------------------------------------------------------------
213 |       Feature                 |       Support |       Implemented by  |
214 |                               |               |                       |
215  -----------------------------------------------------------------------
216 |Profile Download               |       YES     |       BASEBAND        |
217 |                               |               |                       |
218  -----------------------------------------------------------------------
219 |SMS-PP Data Download           |       YES     |       BASEBAND        |
220 |                               |               |                       |
221  -----------------------------------------------------------------------
222 |Cell Broadcast data Download   |       YES     |       BASEBAND or ME  |
223 |                               |               |                       |
224  -----------------------------------------------------------------------
225 |CALL CONTROL BY SIM            |       YES     |       BASEBAND        |
226 |                               |               |                       |
227  -----------------------------------------------------------------------
228 |DISPLAY TEXT                   |       YES     |       ME              |
229 |                               |               |                       |
230  -----------------------------------------------------------------------
231 |GET INPUT                      |       YES     |       ME              |
232 |                               |               |                       |
233  -----------------------------------------------------------------------
234 |GET INKEY                      |       YES     |       ME              |
235 |                               |               |                       |
236  -----------------------------------------------------------------------
237 |MORE TIME                      |       YES     |       ME              |
238 |                               |               |                       |
239  -----------------------------------------------------------------------
240 |PLAY TONE                      |       YES     |       ME              |
241 |                               |               |                       |
242  -----------------------------------------------------------------------
243 |POLL INTERVAL                  |       YES     |       BASEBAND        |
244 |                               |               |                       |
245  -----------------------------------------------------------------------
246 |POLLING OFF                    |       YES     |       BASEBAND        |
247 |                               |               |                       |
248  -----------------------------------------------------------------------
249 |REFRESH                        |       YES     |       BASEBAND-ME     |
250 |                               |               |                       |
251  -----------------------------------------------------------------------
252 |SELECT ITEM                    |       YES     |       ME              |
253 |                               |               |                       |
254  -----------------------------------------------------------------------
255 |SEND SHORT MESSAGE             |       YES     |       BASEBAND-ME     |
256 |                               |               |                       |
257  -----------------------------------------------------------------------
258 |SEND SS                        |       YES     |       BASEBAND-ME     |
259 |                               |               |                       |
260  -----------------------------------------------------------------------
261 |SEND USSD                      |       YES     |       BASEBAND-ME     |
262 |                               |               |                       |
263  -----------------------------------------------------------------------
264 |SET UP CALL                    |       YES     |       BASEBAND-ME     |
265 |                               |               |                       |
266  -----------------------------------------------------------------------
267 |SET UP MENU                    |       YES     |       ME              |
268 |                               |               |                       |
269  -----------------------------------------------------------------------
270 |PROVIDE LOCAL INFORMATION      |       YES     |       BASEBAND        |
271 |(MCC, MNC, LAC, cellId &       |               |                       |
272 |IMEI)                          |               |                       |
273 |                               |               |                       |
274  -----------------------------------------------------------------------
275 |PROVIDE LOCAL INFORMATION      |       YES     |       BASEBAND        |
276 |(NMR)                          |               |                       |
277 |                               |               |                       |
278  -----------------------------------------------------------------------
279 |SET UP EVENT LIST              |       YES     |       BASEBAND        |
280 |                               |               |                       |
281  -----------------------------------------------------------------------
282 |EVENT: MT CALL                 |       YES     |       BASEBAND        |
283 |                               |               |                       |
284  -----------------------------------------------------------------------
285 |EVENT: CALL CONNECTED          |       YES     |       BASEBAND        |
286 |                               |               |                       |
287  -----------------------------------------------------------------------
288 |EVENT: CALL DISCONNECTED       |       YES     |       BASEBAND        |
289 |                               |               |                       |
290  -----------------------------------------------------------------------
291 |EVENT: LOCATION STATUS         |       YES     |       BASEBAND        |
292 |                               |               |                       |
293  -----------------------------------------------------------------------
294 |EVENT: USER ACTIVITY           |       NO      |                       |
295 |                               |               |                       |
296  -----------------------------------------------------------------------
297 |EVENT: IDLE SCREEN AVAILABLE   |       NO      |                       |
298 |                               |               |                       |
299  -----------------------------------------------------------------------
300 |EVENT: CARD READER STATUS      |       NO      |                       |
301 |                               |               |                       |
302  -----------------------------------------------------------------------
303 |EVENT: LANGUAGE SELECTION      |       NO      |                       |
304 |                               |               |                       |
305  -----------------------------------------------------------------------
306 |EVENT: BROWSER TERMINATION     |       NO      |                       |
307 |                               |               |                       |
308  -----------------------------------------------------------------------
309 |EVENT: DATA AVAILABLE          |       NO      |                       |
310 |                               |               |                       |
311  -----------------------------------------------------------------------
312 |EVENT: CHANNEL STATUS          |       NO      |                       |
313 |                               |               |                       |
314  -----------------------------------------------------------------------
315 |EVENT: ACCESS TECHNOLOGY       |       YES     |       BASEBAND        |
316 |       CHANGE                  |               |                       |
317  -----------------------------------------------------------------------
318 |EVENT: DISPLAY PARAMETERS      |       NO      |                       |
319 |       CHANGED                 |               |                       |
320 |                               |               |                       |
321  -----------------------------------------------------------------------
322 |EVENT: LOCAL CONNECTION        |       NO      |                       |
323 |                               |               |                       |
324  -----------------------------------------------------------------------
325 |EVENT: NETWORK SEARCH MODE     |       YES     |       BASEBAND        |
326 |       CHANGE                  |               |                       |
327 |                               |               |                       |
328  -----------------------------------------------------------------------
329 |POWER ON CARD                  |       NO      |                       |
330 |                               |               |                       |
331  -----------------------------------------------------------------------
332 |POWER OFF CARD                 |       NO      |                       |
333 |                               |               |                       |
334  -----------------------------------------------------------------------
335 |PERFORM CARD APDU              |       NO      |                       |
336 |                               |               |                       |
337  -----------------------------------------------------------------------
338 |GET READER STATUS              |       NO      |                       |
339 |(Card reader status)           |               |                       |
340 |                               |               |                       |
341  -----------------------------------------------------------------------
342 |GET READER STATUS              |       NO      |                       |
343 |(Card reader identifier)       |               |                       |
344 |                               |               |                       |
345  -----------------------------------------------------------------------
346 |TIMER MANAGEMENT               |       YES     |       BASEBAND-ME     |
347 |                               |               |                       |
348  -----------------------------------------------------------------------
349 |PROVIDE LOCAL INFORMATION      |       YES     |       ME              |
350 |(Date, Time, & Time Zone)      |               |                       |
351 |                               |               |                       |
352  -----------------------------------------------------------------------
353 |SET UP IDLE MODE TEXT          |       YES     |       ME              |
354 |                               |               |                       |
355  -----------------------------------------------------------------------
356 |RUN AT COMMAND                 |       YES     |       BASEBAND        |
357 |                               |               |                       |
358  -----------------------------------------------------------------------
359 |SEND DTMF                      |       YES     |       BASEBAND-ME     |
360 |                               |               |                       |
361  -----------------------------------------------------------------------
362 |PROVIDE LOCAL INFORMATION      |       YES     |       ME              |
363 |(Language)                     |               |                       |
364 |                               |               |                       |
365  -----------------------------------------------------------------------
366 |PROVIDE LOCAL INFORMATION      |       YES     |       BASEBAND        |
367 |(Timing Advance)               |               |                       |
368 |                               |               |                       |
369  -----------------------------------------------------------------------
370 |Language Notification          |       YES     |       ME              |
371 |                               |               |                       |
372  -----------------------------------------------------------------------
373 |LAUNCH BROWSER                 |       YES     |       ME              |
374 |                               |       (MIN)   |                       |
375  -----------------------------------------------------------------------
376 |PROVIDE LOCAL INFORMATION      |       YES     |       BASEBAND        |
377 |(ACCESS TECHNOLOGY)            |               |                       |
378 |                               |               |                       |
379  -----------------------------------------------------------------------
380 |OPEN CHANNEL                   |       NO      |                       |
381 |                               |               |                       |
382  -----------------------------------------------------------------------
383 |CLOSE CHANNEL                  |       NO      |                       |
384 |                               |               |                       |
385  -----------------------------------------------------------------------
386 |RECEIVE DATA                   |       NO      |                       |
387 |                               |               |                       |
388  -----------------------------------------------------------------------
389 |SEND DATA                      |       NO      |                       |
390 |                               |               |                       |
391  -----------------------------------------------------------------------
392 |GET CHANNEL STATUS             |       NO      |                       |
393 |                               |               |                       |
394  -----------------------------------------------------------------------
395 |SERVICE SEARCH                 |       NO      |                       |
396 |                               |               |                       |
397  -----------------------------------------------------------------------
398 |GET SERVICE INFORMATION        |       NO      |                       |
399 |                               |               |                       |
400  -----------------------------------------------------------------------
401 |DECLARE SERVICE                |       NO      |                       |
402 |                               |               |                       |
403  -----------------------------------------------------------------------
404 |Text Attributes                |       YES     |       ME              |
405 |                               |               |                       |
406  -----------------------------------------------------------------------
407 |ICONS                          |       YES     |       ME              |
408 |                               |               |                       |
409  -----------------------------------------------------------------------
410 |Bearer Independent Protocol    |       NO      |                       |
411 |                               |               |                       |
412  -----------------------------------------------------------------------
413 |VARIABLE TIMEOUT               |       YES     |       ME              |
414 |                               |               |                       |
415  -----------------------------------------------------------------------
416 |PROVIDE LOCAL INFORMATION      |       YES     |       BASEBAND        |
417 |(IMEISV)                       |               |                       |
418 |                               |               |                       |
419  -----------------------------------------------------------------------
420 |PROVIDE LOCAL INFORMATION      |       YES     |       BASEBAND        |
421 |(SEARCH MODE CHANGE)           |               |                       |
422 |                               |               |                       |
423  -----------------------------------------------------------------------
424 |Extended Launch Browser        |       NO      |                       |
425 |Capability                     |               |                       |
426 |                               |               |                       |
427  -----------------------------------------------------------------------
428 |PROVIDE LOCAL INFORMATION      |       YES     |       BASEBAND        |
429 |(battery state)                |               |                       |
430 |                               |               |                       |
431  -----------------------------------------------------------------------
432 |RETRIEVE MULTIMEDIA MESSAGE    |       NO      |                       |
433 |                               |               |                       |
434  -----------------------------------------------------------------------
435 |SUBMIT MULTIMEDIA MESSAGE      |       NO      |                       |
436 |                               |               |                       |
437  -----------------------------------------------------------------------
438 |DISPLAY MULTIMEDIA MESSAGE     |       NO      |                       |
439 |                               |               |                       |
440  -----------------------------------------------------------------------
441 |SET FRAMES                     |       NO      |                       |
442 |                               |               |                       |
443  -----------------------------------------------------------------------
444 |GET FRAMES STATUS              |       NO      |                       |
445 |                               |               |                       |
446  -----------------------------------------------------------------------
447 |PROVIDE LOCAL INFORMATION      |       YES     |       BASEBAND        |
448 |(NMR(UTRAN))                   |               |                       |
449 |                               |               |                       |
450  -----------------------------------------------------------------------
451 |USSD Data Download and         |       NO      |                       |
452 |application mode               |               |                       |
453 |                               |               |                       |
454  -----------------------------------------------------------------------
455 |EVENT: BROWSING STATUS         |       NO      |                       |
456 |                               |               |                       |
457  -----------------------------------------------------------------------
458 |EVENT: MMS TRANSFER STATUS     |       NO      |                       |
459 |                               |               |                       |
460  -----------------------------------------------------------------------
461
462 Modem
463 =====
464
465 - 'silent' modem reset. Sometimes modems get in a bad state and have to reset
466   itself. Now oFono can be notified when a reset happens and do proper work to
467   put the modem back to work restoring the state before the reset.
468
469 - Lockdown support. Through the Lockdown property on the Modem D-Bus API, one
470   can power down the modem and lock it disallowing any other application to
471   use that modem. Useful for firmware update and similar stuff.
472
473 Short Messaging Service
474 =======================
475
476 - Unique identifier for incoming and outgoing SMS messages.  Whenever a
477   message is received or sent by oFono, a unique ID is generated for that
478   message.  The id is relevant to all segments of an SMS and in the case of
479   incoming messages is only generated when the SMS is fully assembled.  The
480   hash used is SHA1.  This unique identifier is used to identify the SMS
481   message to history plugins as well.
482
483 - SMS Status Report support.  oFono allows requesting of SMS Status Reports
484   via the MessageManager UseDeliveryReports property.  If enabled, oFono
485   will set the SRR bit and process incoming status reports.  oFono takes
486   care of collating the status reports for multi-fragment messages.  Once all
487   status reports are received, the UI is notified either via DBus or history
488   plugin API.
489
490 - Source / Destination port addressing scheme from 3GPP 23.040.  A special
491   header is used to indicate the source / destination port of the application
492   this SMS message belongs to.  oFono provides a handler registration
493   framework where plugins can handle the reception of such messages.  The
494   handler can be registered to receive messages which contain a specific
495   source and destination port, or a wildcard.  When such messages are received,
496   they are matched against the registered handlers and dispatched appropriately.
497
498   oFono takes care of de-fragmentation of such SMS messages, so the handler
499   is informed only once the entire message has been received, and the data
500   payload has been extracted.
501
502 - Smart Messaging Service - vCard support.  oFono provides the ability to send
503   and receive vCard objects through the SmartMessaging interface.  vCards can
504   be sent using the SendBusinessCard method and received using the
505   SmartMessagingAgent framework.
506
507 - Smart Messaging Service - vCalendar support.  oFono provides the ability to
508   send and receive vCalendar objects through the SmartMessaging interface.
509   vCalendars can be sent using the SendAppointment method and received using
510   the SmartMessagingAgent framework.
511
512 - WAP PUSH notification support.  oFono allows the reception of WAP PUSH
513   messages via SMS through the use of the PushNotification interface and the
514   PushNotificationAgent framework.
515
516 - Persisting of outgoing SMS messages.  Whenever oFono is asked to send an SMS
517   message, it adds it to an internal queue and persists it on disk.  The queue
518   is persistent across reboots of oFono and allows to queue SMS messages even
519   while the modem is offline.
520
521 GPRS
522 ====
523
524 - GPRS suspension event support.  The packet data service may be temporarily
525   suspended while a circuit switched service such as voice call or SMS is
526   active.
527
528 - GPRS context protocol support.  oFono supports the followig types of GPRS
529   contexts:
530         - IPv4
531         - IPv6
532         - Dual Stack (IPv4 + IPv6)
533
534 - GPRS provisioning support.  oFono will automatically configure GPRS contexts
535   if no prior configuration (e.g. user or provisioning) has been detected.
536   If the GPRS atom detects that provisioning is required it will query the
537   inserted sim card for the Service Provider Name and call each registered
538   provisioning plugin with the MCC, MNC, SPN of the inserted SIM card.  If the
539   provisioning information is provided, then it is used to populate the
540   initial context configuration.
541
542 - GPRS provisioning via 'Mobile Broadband Provider Info'.  oFono supports
543   provisioning of GPRS contexts via Mobile Broadband Provider Info project's
544   database.
545
546 Location Reporting
547 ==================
548
549 - GPS support. Many modem manufacturers provide a GPS unit with their modem
550   hardware.  Upon client request oFono can turn this unit on or off and pass a
551   file descriptor in which client may receive the desired location reporting
552   data.
553
554 SIM
555 ===
556
557 - Fixed Dialing support.  oFono reads the necessary bits from the SIM to
558   check if FDN support is allocated and enabled in the SIM.  If enabled,
559   oFono halts the SIM initialization procedure and the modem remains in the
560   PRESIM state.  In this state oFono will only allow emergency calls.
561
562 - Barred Dialing support.  oFono reads the necessary bits from the SIM to
563   check if BDN support is allocated and enabled in the SIM.  If enabled,
564   oFono halts the SIM initialization procedure and the modem remains in the
565   PRESIM state.  In this state oFono will only allow emergency calls.
566
567 - Read / Write EFcfis / EFcphs-cff.  oFono reads EFcfis/EFcphs-cff SIM files
568   to check if VoiceUnconditional call forwarding rule is enabled.  If enabled,
569   ForwardingFlagOnSim will be set and VoiceUnconditional may contain the
570   "forwarded to" number if the number is available.
571
572 - Support SIM retry counters. oFono exports all the retry counters available on
573   SIM, e.g., PIN, PIN2, PUK and PUK2. Whenever an action changes them, a signal
574   is sent with the updated values, so user can keep track of how many times
575   he/she can still give a wrong pin before the SIM locking down.
576
577 Radio settings
578 ==============
579
580 - Fast dormancy support. A fast dormancy feature can be enabled in the
581   cellular modem to conserve power when the end user is not actively
582   using the device but some networking applications are online using
583   packet data.
584
585 - Frequency Band Selection support. This feature allows the user to limit the
586   frequency bands in which the cellular modem can operate.
587
588 Text Telephony
589 ==============
590
591 - TTY (hearing impaired) support, also known as Cellular Text Modem (CTM).
592   In case it's supported by the modem, oFono allows the user to enabled
593   or disable it through the TextTelephony interface.
594
595 Emergency Calls
596 ===============
597
598 - Emergency number reporting.  During SIM initialization phase oFono reads
599   EFecc in order to bootstrap the emergency calling codes provided by the SIM.
600   Emergency number list is exposed via the EmergencyNumbers property on the
601   VoicecallManager interface.  If SIM is present, list is the union of default
602   emergency numbers(112, 911), numbers in EFecc and Network / Modem reported
603   emergency numbers.  If SIM is not present or EFecc has not been read yet,
604   list is the union of default emergency numbers(112, 911) and emergency
605   numbers without SIM(119, 118, 999, 110, 08 and 000).
606
607 - Emergency call reporting.  When a voicecall is made to a number present
608   on the EmergencyNumbers list it is automatically flagged as an emergency
609   call.  This is done by setting the Emergency property on the Voicecall
610   interface to TRUE.
611
612 - Emergency Mode.  oFono supports a concept of an 'Emergency Mode'.  This mode
613   is activated when any emergency procedure is ongoing and restricts certain
614   actions (e.g. setting the modem offline).  Emergency procedures are e.g.
615   ongoing emergency calls, or network initiated location requests related to
616   the emergency call.  The state of the emergency mode is exposed via the
617   Emergency property on the org.ofono.Modem interface.  This property is
618   intended to be used by power management daemons and other entities which
619   need to be aware of the ongoing emergency operation.
620
621 Supplementary Services
622 ======================
623
624 - CNAP support.  The Calling Name Presentation supplementary service is
625   supported by oFono.  One can query whether the service is provisioned in the
626   network by using the CallSettings interface.  If the network reports the
627   calling name, it is presented on the Voicecall interface using the Name
628   property.  If no calling name is given, the Name is empty.
629
630 - CDIP support.  The Called Line Presentation is supported by oFono. One can
631   query whether the service is provisioned in the network by using the
632   CallSettings interface.  If the network supports this service, the number
633   dialed by the remote party is presented through the Voicecall interface using
634   the IncomingLine property.
635
636 Voice Calls
637 ===========
638
639 - Long phone number support. oFono supports dialing of phone numbers up to
640   80 digits long.
641
642 - Supplementary service notifications related to mobile originated (MO) and
643   mobile terminated (MT) calls.  oFono supports certain supplementary service
644   notifications, typically reported by CSSU and CSSI, that are related to
645   MT/MO calls:
646         - outgoing call has been forwarded (+CSSI: 2)
647         - outgoing calls are barred (+CSSI: 5)
648         - outgoing call barred due to call barring on remote party (+CSSI: 6)
649         - incoming call is a forwarded call (+CSSU: 0)
650         - call has been put on hold by the remote party (+CSSU: 2)
651         - call has been retrieved by the remote party (+CSSU: 3)
652         - call has been added to a mpty call by the remote party (+CSSU: 4)
653
654 Flight Mode
655 ===========
656
657 - Flight Mode support.  oFono uses the 'Online' property on the Modem interface
658   that controls the state of the radio.  When Online state is False, all
659   interfaces that depend on the radio being on are removed.  Other interfaces
660   enter reduced functionality mode where only certain actions are available
661   that do not depend on the radio.  E.g. setting various settings on the local
662   store or the SIM.
663
664 Network Registration
665 ====================
666
667 - Support for PLMN_MODE bit from CPHS Customer Service Profile (CSP) within
668   the 'Value Added Services' service group.  oFono reads this file when the
669   network registration atom has been initialized.  If EFcsp indicates that
670   manual network registration is not allowed, oFono enters into 'auto-only'
671   registration mode.  Updates to this file via STK Refresh is also supported.
672
673 - Support for 3GPP Service Provider Name (EFspn), CPHS Operator Name
674   String (ONS) and CPHS Short Operator Name String fields.  oFono always
675   tries to read the EFspn field first.  If this is not available, then oFono
676   tries to read the CPHS variant.  If neither are available and the
677   appropriate bits are set in the CPHS Information field, oFono tries to read
678   the CPHS Short ONS field.  oFono then reports the network name via the
679   'Name' property.
680
681 PPP Stack
682 =========
683
684 - Support for Protocol Field Compression (PFC) packets.  The oFono PPP stack
685   supports both receiving and sending of packets with PFC enabled.  The user
686   can also control whether PFC capability is advertised to the peer, and used
687   during transmission.
688
689 - Support for Address & Control Field Compression (ACFC) packets.  The oFono
690   PPP stack supports both receiving and sending of packets with ACFC enabled.
691   The user can also control whether ACFC capability is advertised to the peer,
692   and used during transmission.
693
694 Modem Emulator
695 ==============
696
697 - Support for Bluetooth HandsFree Profile Audio Gateway (HFP AG).  oFono
698   supports the underlying AT command protocol specified by BT HFP version 1.6.
699   Supported features include 3-way calling, ability to reject a call,
700   enhanced call status, enhanced call control, report of extended error results
701   code and indicator activation. Audio management is assumed to be performed in
702   another system component, e.g. PulseAudio.
703
704 - Support for Bluetooth DUN profile.  oFono supports the Dial Up Networking
705   profile and all mandatory commands specified by BT DUN 1.1.  For a list
706   of supported commands please see doc/dialup-command-set.txt.
707
708 CDMA Connection Manager
709 =======================
710
711 - Support Network Initiated disconnection of Packet Data Service over CDMA
712   (1xRTT and 1xEV-DO) systems.
713
714 CDMA Network Acquisition
715 ========================
716
717 - Support reporting of the received signal strength indicator (RSSI)
718   measurement for the currently acquired CDMA network.
719
720 - Support reporting of the received signal strength indicator (RSSI)
721   measurement for the currently acquired 1xEV-DO data network.
722
723 Bluetooth Sim Access Profile
724 ============================
725
726 - oFono supports certain modems that can utilize remote sim cards
727   (e.g. via SAP).  This is done transparently to the user and all of oFono's
728   APIs are supported on such devices (assuming the device itself supports
729   the required features).  Today the Telit UC864-G is supported in this mode.
730
731 Bluetooth Handsfree Profile
732 ===========================
733
734 - Voicecall support.  oFono supports the use of Bluetooth Handsfree capable
735   devices to make voicecalls.  All features are supported, including 3-way
736   calls, multiparty calls, call waiting, etc.
737
738 - Support for Handsfree specific protocol features.  oFono clients can gain
739   access to Bluetooth HFP specific features via the oFono Handsfree interface.
740   These features include voice recognition activation, last number redial,
741   etc.
742
743 Apple Siri
744 ==========
745
746 - Siri feature. oFono can query availability of Siri on an iOS device. oFono
747   uses 'EyesFreeMode' property on the Siri interface to control the state of the
748   Siri Eyes Free Mode. When EyesFreeMode state is enabled, the iOS device’s
749   screen won’t light up during a voice recognition session and an incoming call.