TODO: mark 'SIM PIN retry counter' task as done
[platform/upstream/ofono.git] / TODO
1 Background
2 ==========
3
4 - Priority scale: High, Medium and Low
5
6 - Complexity scale: C1, C2, C4 and C8.  The complexity scale is exponential,
7   with complexity 1 being the lowest complexity.  Complexity is a function
8   of both task 'complexity' and task 'scope'.
9
10   The general rule of thumb is that a complexity 1 task should take 1-2 weeks
11   for a person very familiar with oFono codebase.  Higher complexity tasks
12   require more time and have higher uncertainty.
13
14   Higher complexity tasks should be refined into several lower complexity tasks
15   once the task is better understood.
16
17
18 SMS
19 ===
20
21 - Add support for Enhanced SMS (EMS) from 3GPP 23.040.  These SMS messages
22   support a richer set of formatting elements, including bold/italic and
23   font size selection.  Embedding images and sounds into the SMS is also
24   supported.  This task should add support for receiving such SMS messages.
25
26   Proposed solution is to convert such messages to HTML and embed image /
27   sound data as embedded MIME in the generated HTML stream.  The EMS messages
28   will have to be detected (by the presence of particular tags in the SMS)
29   and signaled separately from simple SMS messages.
30
31   Priority: Low
32   Complexity: C8
33
34 - See / Cancel pending SMS messages over DBus.  When oFono sends SMS messages
35   the method call is only returned when the message has been submitted to the
36   network.  Instead we should return an object path and allow cancellation of
37   pending messages.
38
39   Priority: High
40   Complexity: C2
41   Owner: Yang Gu <yang.gu@intel.com>
42
43 - Persist outgoing SMS messages.  Currently oFono persists incoming messages
44   that are fragmented.  However oFono does not persist queued outgoing
45   messages.  oFono should persist such messages and restore / requeue them
46   on the next oFono startup.
47
48   Priority: High
49   Complexity: C1
50   Owner: Kristen Carlson Accardi <kristen@linux.intel.com>
51
52 - Asynchronously acknowledge SMS DELIVER messages sent by the SMS driver
53   to core using ofono_sms_deliver_notify().  This may require the struct
54   ofono_sms_driver to be extended with one more function pointer like:
55     void (*deliver_ack)(unsigned char *pdu, int len, cb_t cb, void *data)
56   because currently messages are automatically acknowledged by either the
57   modem (this is the case of some AT modems) or the driver right after
58   ofono_sms_deliver_notify() and a failure to deliver at an upper level is
59   ignored.  The PDU can be an RP-ACK or RP-ERROR message with optional
60   TP-User-Content element, for example if returned from USIM Data Download.
61
62   Priority: Low
63   Complexity: C2
64
65 SIM / SIM File system
66 =====================
67
68 - SIM Call History plugin.  New UICCs support four new SIM elementary files
69   for storing call history information on the SIM: EFici, EFict, EFoci, EFoct.
70   A plugin should be developed for oFono that will write to these files.
71
72   Priority: Low
73   Complexity: C2
74
75 - Add support for SIM 'ready' notifications from the driver to the core.  Most
76   modem manufacturers initialize the SIM (e.g. cache SIM file system, STK
77   initialization, etc) internally before allowing the telephony stack to
78   access these portions.  When the PIN is locked, this can lead to oFono being
79   too fast for the modem and asking it for things before the firmware is ready.
80
81   The proposal is to introduce a new sim function:
82     void ofono_sim_ready_notify(struct ofono_sim *sim);
83
84   When oFono determines the SIM PIN is READY, it checks whether
85   ofono_sim_ready_notify has been called.  If it hasn't, then it stalls the
86   initialization procedure (and calling post_sim) until
87   ofono_sim_ready_notify is called.
88
89   Priority: High
90   Complexity: C2
91   Owner: Pekka Pessi <pekka.pessi@nokia.com>
92
93 - Check SIM pin status if sim_change_pin fails. If it is anything other than
94   READY, we must tear the state back to pre_sim state and set the modem offline.
95
96   Priority: Medium
97   Complexity: C1
98   Owner: Marit Henriksen <marit.henriksen@stericsson.com>
99
100 Modem Emulator
101 ==============
102
103 - Support HFP AG emulator.  We should provide a new HFP_AG_EMULATOR atom type
104   that will implement the Bluetooth HFP AG profile.  Voicecall atom, netreg
105   atoms can register command handlers for this atom appropriately.
106
107   Complexity: C4
108   Priority: Medium
109
110 - Support extensions to HFP AG emulator.  Some carkits support additional
111   AT command extensions to the Bluetooth HFP AG standard.  Refer to CE4A
112   white paper: "AT-commands for Automotive Premium Phone Integration".
113   Plugins can register additional command handlers appropriately to handle
114   such commands.
115
116   Complexity: C4
117   Priority: Medium
118   Depends: HFP AG emulator
119
120 - Support HSP AG.  Similar to HFP AG emulator but implements the much reduced
121   Bluetooth HSP AG profile.
122
123   Priority: Low
124   Complexity: C1
125
126 - Support DUN emulator. Implement the Bluetooth DUN profile with only mandatory
127   AT command support. Implement USB DUN as well.
128
129   Complexity: C4
130   Priority: Medium
131   Owner: Gustavo F Padovan <padovan@profusion.mobi>
132
133   Depends: PPP Server mode
134
135 - Support Bluetooth SPP profile.
136
137   Complexity: C4
138   Priority: Medium
139
140
141 Flight Mode
142 ===========
143
144 - Flight Mode support.  Add an 'Online' property to the Modem interface that
145   will control the online state of the modem.  When Online state is True all
146   atoms are available.  When Online state is False, all network related items
147   are removed (e.g. CallSettings) or enter into reduced functionality set
148   where only the SIM is available (e.g. DataConnectionManager, SimManager, etc)
149
150   Complexity: C4
151   Priority: High
152   Owner: Pekka Pessi <pekka.pessi@nokia.com>
153
154
155 GPRS
156 ====
157
158 - PPP Server support.  Extend GAtPPP to support PPP Server role, similarly to
159   how existing GSM modems support PPP GPRS contexts.
160
161   Priority: High
162   Complexity: C2
163
164 - IPv6 CP support.  To support IPv6 based GPRS contexts via PPP, GAtPPP
165   needs to be updated to support IPv6CP from RFC 2472.
166
167   Priority: Low
168   Complexity: C4
169
170 - Add support for IPv6 GPRS contexts.
171
172   Priority: Medium
173   Complexity: C1
174
175
176 Location Services
177 =================
178
179 - Neighbor Cell Info.  Add dedicated atom, D-Bus API and atom driver(s) for
180   Neighbor Cell information.
181
182   This feature is not discussed in 27.007, thus manufacturer specific commands
183   are required.
184
185   Complexity: C4
186   Priority: Medium
187   Owner: Aki Niemi <aki.niemi@nokia.com>
188
189
190 Supplementary Services
191 ======================
192
193 - Closed User Group (CUG) support.
194
195   Priority: Low
196   Complexity: C8
197
198 - Call Completion to Busy Subscriber (CCBS) support
199
200   This feature is not discussed in 27.007, thus manufacturer specific commands
201   are required.
202
203   Priority: Low
204   Complexity: C8
205
206 - User to User Signaling (UUS) support
207
208   Priority: Low
209   Complexity: C8
210
211 - Multiple Subscriber Profile (MSP) support
212
213   Priority: Low
214   Complexity: C2
215
216 - Called Line Identification.  This affects both call_settings and voicecall
217   atoms.  3GPP service is accessed by the +CDIP command.
218
219   Priority: Low
220   Complexity: C4
221   Owner: Lucas De Marchi <lucas.demarchi@profusion.mobi>
222
223 - CPHS Support.  This includes ALS and CPHS specific elementary files.
224
225   Priority: Low
226   Complexity: C8
227
228
229 Voicecall
230 =========
231
232 - Supplementary service notifications on remote party actions:
233   - call has been put on hold (+CSSU: 2)
234   - call has been retrieved (+CSSU: 3), and
235   - joining call to a multiparty conference (+CSSU: 4)
236
237   Priority: Medium
238   Complexity: C1
239   Owner: Pekka Pessi <pekka.pessi@nokia.com>
240
241 - Long phone numbers. According to 3GPP TS 24.008, the callee address
242   can be up to 80 digits long.
243
244   Priority: Medium
245   Complexity: C2
246   Owner: Rafael Ignacio Zurita <rafael.zurita@profusion.mobi>
247
248 - Dial strings. Include CLIR prefixes and 2nd stage dial strings in the
249   DialString call property. Add dialstring accessor method to C API.
250
251   Priority: Medium
252   Complexity: C4
253
254 - Provide feedback of sent DTMF tones. Emit SendingTones signal if modem can
255   provide approximate starting and stopping times for DTMF tones. Signal
256   argument contains a string of DTMF tones to be sent, or empty string when
257   all tones has been sent.
258
259   Priority: Medium
260   Complexity: C2
261   Owner: Pekka Pessi <pekka.pessi@nokia.com>
262
263 - Blacklisting. According to 3GPP TS 22.001 annex E, the TE must provide
264   automatic calling repeat call attempt restrictions.
265
266   There should be a method to manually reset blacklisting.
267
268   Priority: Medium
269   Complexity: C1
270
271
272 Sim Toolkit
273 ===========
274
275 - Support Refresh proactive command.  The specification defines 7 types
276   of Refresh types:
277         - NAA Initialization
278         - NAA File Change Notification
279         - NAA Initialization and File Change Notification
280         - NAA Initialization and Full File Change Notification
281         - UICC Reset
282         - NAA Application Reset (2G only)
283         - NAA Session Reset (3G only)
284
285   The 'NAA Initialization' type will be ignored by oFono, it is assumed
286   this is handled by the modem.
287
288   For 'UICC Reset', 'NAA Application Reset' and 'NAA Session Reset' oFono
289   will first check whether there are any calls or ussd operations active.
290   If there are, the appropriate response will be sent (e.g. busy on call
291   or screen busy terminal response.)  Otherwise a positive response will be
292   sent to the driver.  In the case of a 'UICC Reset' the driver / modem
293   can interpret this that it is safe to reset the UICC.
294
295   Alternatively, the driver / modem can notify the core of the SIM removal
296   / SIM insertion events without using the Refresh proactive command.  It
297   is up to the driver / modem to perform a warm reset.  In particular, 3GPP
298   31.111 mandates that any change to EFimsi is done by using 'UICC Reset',
299   'NAA Application Reset' or 'NAA Session Reset'.  Please see 3GPP 31.111
300   Section 6.4.7.1.
301
302   Other types will be handled by oFono flushing the EF cache of the files
303   affected (or the entire SIM cache in case of Full File Change Notifications)
304   and re-reading the affected files.  Any properties derived from these
305   Elementary Files will be updated and signaled using PropertyChanged.
306
307   Priority: High
308   Complexity: C8
309
310
311 Emergency Calls
312 ===============
313
314 - Modem Emergency mode.  Support network registration and online/offline
315   mode during the emergency calls and related network activity (e.g.,
316   network-initiated location request via supplementary service channel).
317
318   Proposed solution is to introduce a new Emergency boolean property to the
319   Modem D-Bus interface and new functions to modem interface:
320
321   - ofono_modem_emergency_mode_inc()
322   - ofono_modem_emergency_mode_dec()
323   - ofono_modem_emergency_mode_get()
324   - ofono_modem_add_emergency_mode_watch()
325   - ofono_modem_remove_emergency_mode_watch()
326
327   When emergency mode is requested, modem is set to online (if needed) and
328   the watchers are notified. There can be multiple parties requesting
329   emergency mode.  When all of them have completed the emergency-related
330   operation and called ofono_modem_emergency_mode_dec(), modem is set to
331   offline (if needed) and the watchers are again notified.
332
333   Priority: High
334   Complexity: C2
335
336 - Country / Operator specific emergency numbers.  Figure out how to support
337   countries / operators with specific mandated emergency numbers which are
338   not part of the standard emergency number list. This needs to be queried
339   by the voicecall atom every time a new SIM is inserted.  The list is
340   assumed to be managed by the modem.  If no such functionality is available,
341   then the 3GPP mandated behavior is used.
342
343   Priority: High
344   Complexity: C2
345
346 - Network updating the emergency number list. Support the list of emergency
347   numbers dynamically updated by the network.
348
349   Priority: High
350   Complexity: C2
351   Owner: Petteri Tikander <petteri.tikander@ixonos.com>
352
353
354 Miscellaneous
355 =============
356
357 - Bluetooth SAP Client support.  The Telit UC864-G devices support Bluetooth
358   SAP client mode.  This requires the use of a modem side-channel to read the
359   APDU & CPDU data and send it to the remote phone device over Bluetooth RFCOMM
360   channel.
361
362   Complexity: C4
363   Priority: Low
364
365 - PolicyKit support.  Add support for PolicyKit checking of all oFono D-Bus
366   interfaces.
367
368   Complexity: C4
369   Priority: Low
370
371 - Internet Access Provider database.  Have oFono automatically configure
372   GPRS contexts based on an internal database.  Database format to be decided.
373   If there are multiple matches in the database, then some user intervention
374   might be required.
375
376   Priority: Medium
377   Complexity: C8
378   Owner: Jukka Saunamäki <jukka.saunamaki@nokia.com>
379
380 - Add support for GPS power control atom.  Many modem manufacturers provide
381   a GPS unit with their modem hardware.  This unit can be turned on or off
382   and frequently takes over one of the tty ports that the modem provides.
383
384   This feature is not discussed in 27.007, thus manufacturer specific commands
385   are required.
386
387   Priority: Low
388   Complexity: C4
389   Owner: Rafael Ignacio Zurita <rafael.zurita@profusion.mobi>
390
391 - Add Location Service API for providing basic E911 suport.
392   This will be based on the 27.007 defined AT commands using
393   XML for transport of positioning request and responses.
394
395   Priority: Medium
396   Complexity: C2
397   Owner: Sjur Brændeland <sjur.brandeland@stericsson.com>
398
399 CDMA Voicecall
400 ==============
401
402 - Add support for Mobile Originated and Mobile Terminated Voice Call over
403   a CDMA network. This includes management of call state and providing
404   appropriate values for the LineIdentification in each case.
405
406   Priority: High
407   Complexity: C2
408   Owner: Dara Spieker-Doyle <dara.spieker-doyle@nokia.com>
409
410 - Add support for Three-Way Calling over a CDMA network. Three-Way Calling
411   provides the subscriber with the capability to add a third party to an
412   established two-party call, so that all three parties may communicate in a
413   three-way call.
414
415   In CDMA mode, the originating subscriber of a current conversation can
416   request for a third party to be added to a conversation by sending a Flash
417   With Information Message (FWIM) with dialed digits to the network. Upon
418   setting up a two-way conversation with the added party, the originating
419   subscriber can request to establish a three-way conversation by sending
420   another Flash With Information Message. Upon receiving the second Flash With
421   Information Message, the MSC reconnects the original party to the
422   conversation thus completing the setup of a three-way conversation.
423
424   CDMA Three-Way Calling is described by Figure B-5 in 3GPP2 C.S0005-E Version
425   2.0.
426
427   Priority: High
428   Complexity: C2
429
430 - Add support for Call Waiting over a CDMA network. Call Waiting (CW) provides
431   notification of an incoming call to an originating subscriber, while the
432   subscriber's call is in the 2-way state. Subsequently, the originating
433   subscriber can either answer or ignore the incoming call. If the originating
434   subscriber answers the second call, it may alternate between the two calls.
435
436   In CDMA mode, the originating subscriber of a current conversation will
437   receive either a Flash With Information Message or an Alert With Information
438   Message from the network if there is an additional mobile terminated voice
439   call incoming. The originating subscriber can change conversation parties by
440   sending a Flash With Information Message to the network and the MSC will
441   toggle the speech path between the two conversations.
442
443   CDMA Call Waiting is described by Figure B-6 in 3GPP2 C.S0005-E Version
444   2.0.
445
446   Priority: High
447   Complexity: C2
448
449 - Support sending DTMF tones over CDMA network.
450
451   Priority: High
452   Complexity: C2
453
454 - Support optional network-based Plus Code Dialing for international calls over
455   a CDMA network. An input key, e.g. the "+" key, or a functional equivalent
456   can be used to replace the international access prefix when dialing. When
457   received, transmitted or stored, an international indicator can be included
458   with the address digits although it is the responsibility of the network to
459   ignore the international indicator when attached to a national number. This
460   is described in Section 2.7.1.3.2.4 of 3GPP2 C.S0005-E v2.0 and Section 1.2
461   of 3GPP2 N.S0027 v1.0.
462
463   Priority: High
464   Complexity: C2
465
466 CDMA SMS
467 ==============
468
469 - Support CDMA SMS stack in PDU mode. This includes basic support of
470   SMS Point-to-Point Message, SMS Broadcast Message and SMS Acknowledge
471   Message as per 3GPP2 C.S0015-B version 2.0.
472
473   Priority: High
474   Complexity: C4
475
476 - Support sending Wireless Messaging Teleservice (WMT) Submit Message and
477   receiving WMT Deliver Messsage as defined 3GPP2 C.S0015-B version 2.0.
478
479   Priority: High
480   Complexity: C4
481
482 - Support Delivery Acknowledgment. oFono allows requesting of CDMA SMS
483   Delivery Acknowledgment via the MessageManager's
484   UseDeliveryAcknowledgement property. If enabled, oFono's CDMA SMS stack
485   will encode the Reply Option subparameter in the Submit message and
486   process incoming SMS Delivery Acknowledgment Message. oFono will notify
487   UI either via DBus or history plugin API.
488
489   Priority: Medium
490   Complexity: C2
491
492 - Support receiving Voice Mail Notification (VMN) Teleservice Deliver
493   message. CDMA network uses VMN Teleservice to deliver the number of
494   messages stored at the Voice Mail System to the CDMA mobile subscriber.
495
496   Priority: High
497   Complexity: C4
498
499 - Support sending Wireless Enhanced Messaging Teleservice (WEMT) Submit
500   Message and receiving WEMT Deliver Messsage as defined 3GPP2 C.S0015-B
501   version 2.0.
502
503   WMT does not support message fragmentation thus can not be used to for
504   long message. WEMT is devised to support long message and Enhanced
505   Messaging Service (EMS). The WEMT SMS message's CHARi field of the
506   subparameter User Data encapsulate GSM-SMS TP-User Data as defined in
507   Section 9.2.3.24 of 3GPP TS 23.040.
508
509   Priority: Medium
510   Complexity: C4
511
512 - Support sending Wireless Application Protocol (WAP) Teleservice Submit
513   Message and receiving WAP Deliver Messsage as defined 3GPP2 C.S0015-B
514   version 2.0.
515
516   Priority: Medium
517   Complexity: C4
518
519 - Support Call-Back Number. The Call-Back Number subparameter indicates
520   the number to be dialed in reply to a received SMS message.
521
522   In transmit direction, oFono allows setting of Call-Back Number. If the
523   Call Back Number property is set, CDMA SMS stack will encode Call-Back
524   Number subparameter in the Submit Message.
525
526   In receiving direction, oFono will process the Call-Back Number
527   subparameter in the incoming Deliver Message and notify UI of the
528   Call-Back Number together with the newly received text message.
529
530   Priority: Medium
531   Complexity: C2
532
533 - Support immediately displayed message. oFono CDMA SMS stack will
534   process the optional Message Display Mode subparameter in the incoming
535   SMS message. If Message Display Mode subparameter indicates the
536   message display mode is Immediate Display, oFono will send
537   ImmediateMessage signal, otherwise oFono will send IncomingMessage
538   signal.
539
540   Priority: Medium
541   Complexity: C2
542
543
544 CDMA CMAS
545 ==============
546
547 - Support Commercial Mobile Alert Service (CMAS) over CDMA systems. CMAS
548   over CDMA system is defined in TIA-1149. The CMAS message is carried in
549   the CHARi field of the User Data subparameter of CDMA SMS Broadcast
550   message.
551
552   Priority: Medium
553   Complexity: C4
554
555 CDMA NETWORK ACQUISITION
556 ========================
557
558 - Support reporting of the received signal strength indicator (RSSI)
559   measurement and of the pilot energy ratio (Ec/Io) measurement, for the
560   currently acquired CDMA network.
561
562   Priority: Medium
563   Complexity: C1
564   Owner: Dara Spieker-Doyle <dara.spieker-doyle@nokia.com>
565
566 - Support reporting of the received signal strength indicator (RSSI)
567   measurement and of the signal to interference-plus-noise ratio (SINR)
568   measurement, for the currently acquired 1xEV-DO data network.
569
570   Priority: Medium
571   Complexity: C1
572
573 - Support reporting of the Enhanced Roaming Indicators (ERI) to indicate the
574   current roaming condition of the CDMA mobile device. Each indicator maps to
575   a unique display number within the Standard and Non-Standard service ranges,
576   as described in Section 8 of 3GPP2 C.R1001-C v1.0.
577   These numbers are stored on the device in the (Enhanced) Preferred Roaming
578   List (PRL) and it is the responsibility of the modem to broadcast the
579   relevant indicator for a currently acquired system. Further details of the
580   system acquisition process are described in 3GPP2 C.S0016-B v1.0.
581
582   Priority: Medium
583   Complexity: C2
584
585 - Support reporting of identifiers of the currently acquired CDMA network,
586   including the System Identifier (SID) and the Network Identifier (NID),
587   It is the responsibility of the modem to broadcast the relevant identifiers
588   for a currently acquired system, and these identifiers are provided by the
589   network. This is described in 3GPP2 C.S0005-E v2.0.
590
591   Priority: Medium
592   Complexity: C2
593
594 - Support International Roaming, including support for reporting the Mobile
595   Country Code (MCC) and the Mobile Network Code (MNC) for the currently
596   acquired network. International Roaming is provided via enhancements to the
597   PRL by encoding the MCC and the (two digit only) MNC in existing SID/NID
598   fields, as described in the CDMA Development Group standards Document "IPRL
599   Enhancements for International Roaming - CDG Doc #86". It is the
600   responsibility of the modem to broadcast the values for the currently
601   acquired system.
602
603   Priority: Medium
604   Complexity: C2