TODO: mark 'GPS power control atom' 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 - Asynchronously acknowledge SMS DELIVER messages sent by the SMS driver
44   to core using ofono_sms_deliver_notify().  This may require the struct
45   ofono_sms_driver to be extended with one more function pointer like:
46     void (*deliver_ack)(unsigned char *pdu, int len, cb_t cb, void *data)
47   because currently messages are automatically acknowledged by either the
48   modem (this is the case of some AT modems) or the driver right after
49   ofono_sms_deliver_notify() and a failure to deliver at an upper level is
50   ignored.  The PDU can be an RP-ACK or RP-ERROR message with optional
51   TP-User-Content element, for example if returned from USIM Data Download.
52
53   Priority: Low
54   Complexity: C2
55
56 SIM / SIM File system
57 =====================
58
59 - SIM Call History plugin.  New UICCs support four new SIM elementary files
60   for storing call history information on the SIM: EFici, EFict, EFoci, EFoct.
61   A plugin should be developed for oFono that will write to these files.
62
63   Priority: Low
64   Complexity: C2
65
66 - Add support for SIM 'ready' notifications from the driver to the core.  Most
67   modem manufacturers initialize the SIM (e.g. cache SIM file system, STK
68   initialization, etc) internally before allowing the telephony stack to
69   access these portions.  When the PIN is locked, this can lead to oFono being
70   too fast for the modem and asking it for things before the firmware is ready.
71
72   The proposal is to introduce a new sim function:
73     void ofono_sim_ready_notify(struct ofono_sim *sim);
74
75   When oFono determines the SIM PIN is READY, it checks whether
76   ofono_sim_ready_notify has been called.  If it hasn't, then it stalls the
77   initialization procedure (and calling post_sim) until
78   ofono_sim_ready_notify is called.
79
80   Priority: High
81   Complexity: C2
82   Owner: Pekka Pessi <pekka.pessi@nokia.com>
83
84 - Add support for CPHS Customer Service Profile (CSP).  This task adds support
85   for reading the EFcsp file and in particular, interpreting the PLMN mode bit
86   within the 'Value Added Services' service group.
87
88   Based on the PLMN mode value, manual network selection needs to either be
89   enabled or disabled in the netreg atom.  Also to accommodate this, there
90   probably needs to be a new 'forced' mode to indicate that manual network
91   selection is disabled.
92
93   Priority: Medium
94   Complexity: C1
95   Owner: Aki Niemi <aki.niemi@nokia.com>
96
97 - Support SIM authentication: SIM and AKA suites.
98
99   Priority: Medium
100   Complexity: C4
101   Owner: Pekka Pessi <pekka.pessi@nokia.com>
102
103 - Support SIM authentication: GBA_U suite.
104
105   Priority: Low
106   Complexity: C4
107
108 - ISIM support
109
110   ISIM is the SIM application for IP Multimedia Subsystem, specified in
111   3GPP TS 31.103. The UICCs can support multiple ISIMs for different IMS
112   identities.
113
114   Priority: Low
115   Complexity: C4
116
117
118 Modem Emulator
119 ==============
120
121 - Support HFP AG emulator.  We should provide a new HFP_AG_EMULATOR atom type
122   that will implement the Bluetooth HFP AG profile.  Voicecall atom, netreg
123   atoms can register command handlers for this atom appropriately.
124
125   Complexity: C4
126   Priority: Medium
127   Owner: Frédéric Danis <frederic.danis@linux.intel.com>
128
129 - Support extensions to HFP AG emulator.  Some carkits support additional
130   AT command extensions to the Bluetooth HFP AG standard.  Refer to CE4A
131   white paper: "AT-commands for Automotive Premium Phone Integration".
132   Plugins can register additional command handlers appropriately to handle
133   such commands.
134
135   Complexity: C4
136   Priority: Medium
137   Depends: HFP AG emulator
138   Owner: Frédéric Dalleau <frederic.dalleau@linux.intel.com>
139
140 - Support HSP AG.  Similar to HFP AG emulator but implements the much reduced
141   Bluetooth HSP AG profile.
142
143   Priority: Low
144   Complexity: C1
145
146 - Support DUN emulator. Implement the Bluetooth DUN profile with only mandatory
147   AT command support. Implement USB DUN as well.
148
149   Complexity: C4
150   Priority: Medium
151   Owner: Gustavo F Padovan <padovan@profusion.mobi>
152
153   Depends: PPP Server mode
154
155 - Support Bluetooth SPP profile.
156
157   Complexity: C4
158   Priority: Medium
159
160
161 Flight Mode
162 ===========
163
164 - Flight Mode support.  Add an 'Online' property to the Modem interface that
165   will control the online state of the modem.  When Online state is True all
166   atoms are available.  When Online state is False, all network related items
167   are removed (e.g. CallSettings) or enter into reduced functionality set
168   where only the SIM is available (e.g. DataConnectionManager, SimManager, etc)
169
170   Complexity: C4
171   Priority: High
172   Owner: Pekka Pessi <pekka.pessi@nokia.com>
173
174
175 GPRS
176 ====
177
178 - Add support for IPv6 GPRS contexts.
179
180   Priority: Medium
181   Complexity: C2
182   Owner: Mika Liljeberg <mika.liljeberg@nokia.com>
183
184
185 PPP
186 ===
187
188 - PPP Server support.  Extend GAtPPP to support PPP Server role, similarly to
189   how existing GSM modems support PPP GPRS contexts.
190
191   Priority: High
192   Complexity: C2
193
194 - IPv6 CP support.  To support IPv6 based GPRS contexts via PPP, GAtPPP
195   needs to be updated to support IPv6CP from RFC 2472.
196
197   Priority: Low
198   Complexity: C4
199
200 - ACFC support.  Extend GAtPPP to support packets with Address & Control Field
201   Compression enabled.  Refer to RFC 1662 for details.
202
203   Priority: Medium
204   Complexity: C1
205
206 - PFC support.  Extend GAtPPP to support packets with Protocol field
207   compression enabled.  Refer to RFC 1661 for details.
208
209
210 Location Services
211 =================
212
213 - Neighbor Cell Info.  Add dedicated atom, D-Bus API and atom driver(s) for
214   Neighbor Cell information.
215
216   This feature is not discussed in 27.007, thus manufacturer specific commands
217   are required.
218
219   Complexity: C4
220   Priority: Medium
221   Owner: Antti Paila <antti.paila@nokia.com>
222
223
224 Supplementary Services
225 ======================
226
227 - Closed User Group (CUG) support.
228
229   Priority: Low
230   Complexity: C8
231
232 - Call Completion to Busy Subscriber (CCBS) support
233
234   This feature is not discussed in 27.007, thus manufacturer specific commands
235   are required.
236
237   Priority: Low
238   Complexity: C8
239
240 - User to User Signaling (UUS) support
241
242   Priority: Low
243   Complexity: C8
244
245 - Multiple Subscriber Profile (MSP) support
246
247   Priority: Low
248   Complexity: C2
249
250 - CPHS Support.  This includes ALS and CPHS specific elementary files.
251
252   Priority: Low
253   Complexity: C8
254
255 - Call forwarding state handling change
256
257   At the moment call forwarding states are not always correct. Any active
258   conditional call forwarding should become quiescent while unconditional call
259   forwarding is activate. If call forwarding unconditional is subsequently
260   deactivated, all the quiescent forwardings should become operative again.
261   I.e. No conditional call forwardin string should be returned while
262   unconditional call forwarding is active even if they exist.
263
264   If there is an successful attempt to activate/deactivate conditional call
265   forwarding while unconditional call forwarding is active the conditional cache
266   flag should cleared.
267
268   Priority: Low
269   Complexity: C1
270
271
272 Voicecall
273 =========
274
275 - Supplementary service notifications on remote party actions:
276   - call has been put on hold (+CSSU: 2)
277   - call has been retrieved (+CSSU: 3), and
278   - joining call to a multiparty conference (+CSSU: 4)
279
280   Priority: Medium
281   Complexity: C1
282   Owner: Pekka Pessi <pekka.pessi@nokia.com>
283
284 - Dial strings. Include CLIR prefixes and 2nd stage dial strings in the
285   DialString call property. Add dialstring accessor method to C API.
286
287   Priority: Medium
288   Complexity: C4
289   Owner: Lucas De Marchi <lucas.demarchi@profusion.mobi>
290
291 - Provide feedback of sent DTMF tones. Emit SendingTones signal if modem can
292   provide approximate starting and stopping times for DTMF tones. Signal
293   argument contains a string of DTMF tones to be sent, or empty string when
294   all tones has been sent.
295
296   Priority: Medium
297   Complexity: C2
298   Owner: Pekka Pessi <pekka.pessi@nokia.com>
299
300 - Blacklisting. According to 3GPP TS 22.001 annex E, the TE must provide
301   automatic calling repeat call attempt restrictions.
302
303   There should be a method to manually reset blacklisting.
304
305   Priority: Medium
306   Complexity: C1
307
308
309 Sim Toolkit
310 ===========
311
312 - Support Refresh proactive command.  The specification defines 7 types
313   of Refresh types:
314         - NAA Initialization
315         - NAA File Change Notification
316         - NAA Initialization and File Change Notification
317         - NAA Initialization and Full File Change Notification
318         - UICC Reset
319         - NAA Application Reset (2G only)
320         - NAA Session Reset (3G only)
321
322   The 'NAA Initialization' type will be ignored by oFono, it is assumed
323   this is handled by the modem.
324
325   For 'UICC Reset', 'NAA Application Reset' and 'NAA Session Reset' oFono
326   will first check whether there are any calls or ussd operations active.
327   If there are, the appropriate response will be sent (e.g. busy on call
328   or screen busy terminal response.)  Otherwise a positive response will be
329   sent to the driver.  In the case of a 'UICC Reset' the driver / modem
330   can interpret this that it is safe to reset the UICC.
331
332   Alternatively, the driver / modem can notify the core of the SIM removal
333   / SIM insertion events without using the Refresh proactive command.  It
334   is up to the driver / modem to perform a warm reset.  In particular, 3GPP
335   31.111 mandates that any change to EFimsi is done by using 'UICC Reset',
336   'NAA Application Reset' or 'NAA Session Reset'.  Please see 3GPP 31.111
337   Section 6.4.7.1.
338
339   Other types will be handled by oFono flushing the EF cache of the files
340   affected (or the entire SIM cache in case of Full File Change Notifications)
341   and re-reading the affected files.  Any properties derived from these
342   Elementary Files will be updated and signaled using PropertyChanged.
343
344   Priority: High
345   Complexity: C8
346
347 - Support of the BIP (Bearer Independent Protocol) proactive commands.
348   The specification defines several bearer types. For now, only the packet data
349   service bearer is considered.
350
351         - OPEN CHANNEL: requests the terminal to open a data channel with
352         parameters indicated in the command. A user confirmation may be
353         requested by the SimToolkitAgent.
354         - CLOSE CHANNEL:requests the terminal to close the specified data
355         channel.
356         - RECEIVE DATA:requests the terminal to return to the UICC data
357         received on the specified channel.
358         - SEND DATA:requests the terminal to send on the specified channel data
359         provided by the UICC.
360         - GET CHANNEL STATUS: requests the terminal to return the current
361         status of all available data channels.
362
363   Priority: Medium
364   Complexity: C4
365   Owner: Philippe Nunes <philippe.nunes@linux.intel.com>
366
367 - Support Setup Event List proactive command.
368   To fully support the class 'e', the following events
369         -Data Available event
370         -Channel status event
371   shall be monitored by oFono if part of the current event list.
372   This list is supplied by the last SETUP EVENT LIST command.
373
374   Priority: Medium
375   Complexity: C2
376   Owner: Philippe Nunes <philippe.nunes@linux.intel.com>
377
378 Emergency Calls
379 ===============
380
381 - Modem Emergency mode.  Support network registration and online/offline
382   mode during the emergency calls and related network activity (e.g.,
383   network-initiated location request via supplementary service channel).
384
385   Proposed solution is to introduce a new Emergency boolean property to the
386   Modem D-Bus interface and new functions to modem interface:
387
388   - ofono_modem_emergency_mode_inc()
389   - ofono_modem_emergency_mode_dec()
390   - ofono_modem_emergency_mode_get()
391   - ofono_modem_add_emergency_mode_watch()
392   - ofono_modem_remove_emergency_mode_watch()
393
394   When emergency mode is requested, modem is set to online (if needed) and
395   the watchers are notified. There can be multiple parties requesting
396   emergency mode.  When all of them have completed the emergency-related
397   operation and called ofono_modem_emergency_mode_dec(), modem is set to
398   offline (if needed) and the watchers are again notified.
399
400   Priority: High
401   Complexity: C2
402
403 - Country / Operator specific emergency numbers.  Figure out how to support
404   countries / operators with specific mandated emergency numbers which are
405   not part of the standard emergency number list. This needs to be queried
406   by the voicecall atom every time a new SIM is inserted.  The list is
407   assumed to be managed by the modem.  If no such functionality is available,
408   then the 3GPP mandated behavior is used.
409
410   Priority: High
411   Complexity: C2
412
413 - Network updating the emergency number list. Support the list of emergency
414   numbers dynamically updated by the network.
415
416   Priority: High
417   Complexity: C2
418   Owner: Petteri Tikander <petteri.tikander@ixonos.com>
419
420
421 Miscellaneous
422 =============
423
424 - Bluetooth SAP Client support.  The Telit UC864-G devices support Bluetooth
425   SAP client mode.  This requires the use of a modem side-channel to read the
426   APDU & CPDU data and send it to the remote phone device over Bluetooth RFCOMM
427   channel.
428
429   Complexity: C4
430   Priority: Low
431
432 - PolicyKit support.  Add support for PolicyKit checking of all oFono D-Bus
433   interfaces.
434
435   Complexity: C4
436   Priority: Low
437
438 - Internet Access Provider database.  Have oFono automatically configure
439   GPRS contexts based on an internal database.  Database format to be decided.
440   If there are multiple matches in the database, then some user intervention
441   might be required.
442
443   Priority: Medium
444   Complexity: C8
445   Owner: Jukka Saunamäki <jukka.saunamaki@nokia.com>
446
447 - Add Location Service API for providing basic E911 support.
448   This will be based on the 27.007 defined AT commands using
449   XML for transport of positioning request and responses.
450
451   Priority: Medium
452   Complexity: C2
453   Owner: Jarko Poutiainen <jarko.poutiainen@tieto.com>
454
455 - Add support for main.conf.  This task will add support for general
456   as well as per-atom configuration options that are read and parsed
457   at startup from a configuration file under /etc/ofono.
458
459   Priority: Medium
460   Complexity: C1
461   Owner: Aki Niemi <aki.niemi@nokia.com>
462
463 CDMA Voicecall
464 ==============
465
466 - Add support for Mobile Originated and Mobile Terminated Voice Call over
467   a CDMA network. This includes management of call state and providing
468   appropriate values for the LineIdentification in each case.
469
470   Priority: High
471   Complexity: C2
472   Owner: Dara Spieker-Doyle <dara.spieker-doyle@nokia.com>
473
474 - Add support for Three-Way Calling over a CDMA network. Three-Way Calling
475   provides the subscriber with the capability to add a third party to an
476   established two-party call, so that all three parties may communicate in a
477   three-way call.
478
479   In CDMA mode, the originating subscriber of a current conversation can
480   request for a third party to be added to a conversation by sending a Flash
481   With Information Message (FWIM) with dialed digits to the network. Upon
482   setting up a two-way conversation with the added party, the originating
483   subscriber can request to establish a three-way conversation by sending
484   another Flash With Information Message. Upon receiving the second Flash With
485   Information Message, the MSC reconnects the original party to the
486   conversation thus completing the setup of a three-way conversation.
487
488   CDMA Three-Way Calling is described by Figure B-5 in 3GPP2 C.S0005-E Version
489   2.0.
490
491   Priority: High
492   Complexity: C2
493
494 - Add support for Call Waiting over a CDMA network. Call Waiting (CW) provides
495   notification of an incoming call to an originating subscriber, while the
496   subscriber's call is in the 2-way state. Subsequently, the originating
497   subscriber can either answer or ignore the incoming call. If the originating
498   subscriber answers the second call, it may alternate between the two calls.
499
500   In CDMA mode, the originating subscriber of a current conversation will
501   receive either a Flash With Information Message or an Alert With Information
502   Message from the network if there is an additional mobile terminated voice
503   call incoming. The originating subscriber can change conversation parties by
504   sending a Flash With Information Message to the network and the MSC will
505   toggle the speech path between the two conversations.
506
507   CDMA Call Waiting is described by Figure B-6 in 3GPP2 C.S0005-E Version
508   2.0.
509
510   Priority: High
511   Complexity: C2
512
513 - Support sending DTMF tones over CDMA network.
514
515   Priority: High
516   Complexity: C2
517
518 - Support optional network-based Plus Code Dialing for international calls over
519   a CDMA network. An input key, e.g. the "+" key, or a functional equivalent
520   can be used to replace the international access prefix when dialing. When
521   received, transmitted or stored, an international indicator can be included
522   with the address digits although it is the responsibility of the network to
523   ignore the international indicator when attached to a national number. This
524   is described in Section 2.7.1.3.2.4 of 3GPP2 C.S0005-E v2.0 and Section 1.2
525   of 3GPP2 N.S0027 v1.0.
526
527   Priority: High
528   Complexity: C2
529
530 CDMA SMS
531 ==============
532
533 - Support CDMA SMS stack in PDU mode. This includes basic support of
534   SMS Point-to-Point Message, SMS Broadcast Message and SMS Acknowledge
535   Message as per 3GPP2 C.S0015-B version 2.0.
536
537   Priority: High
538   Complexity: C4
539
540 - Support sending Wireless Messaging Teleservice (WMT) Submit Message and
541   receiving WMT Deliver Message as defined 3GPP2 C.S0015-B version 2.0.
542
543   Priority: High
544   Complexity: C4
545
546 - Support Delivery Acknowledgment. oFono allows requesting of CDMA SMS
547   Delivery Acknowledgment via the MessageManager's
548   UseDeliveryAcknowledgement property. If enabled, oFono's CDMA SMS stack
549   will encode the Reply Option subparameter in the Submit message and
550   process incoming SMS Delivery Acknowledgment Message. oFono will notify
551   UI either via DBus or history plugin API.
552
553   Priority: Medium
554   Complexity: C2
555
556 - Support receiving Voice Mail Notification (VMN) Teleservice Deliver
557   message. CDMA network uses VMN Teleservice to deliver the number of
558   messages stored at the Voice Mail System to the CDMA mobile subscriber.
559
560   Priority: High
561   Complexity: C4
562
563 - Support sending Wireless Enhanced Messaging Teleservice (WEMT) Submit
564   Message and receiving WEMT Deliver Messsage as defined 3GPP2 C.S0015-B
565   version 2.0.
566
567   WMT does not support message fragmentation thus can not be used to for
568   long message. WEMT is devised to support long message and Enhanced
569   Messaging Service (EMS). The WEMT SMS message's CHARi field of the
570   subparameter User Data encapsulate GSM-SMS TP-User Data as defined in
571   Section 9.2.3.24 of 3GPP TS 23.040.
572
573   Priority: Medium
574   Complexity: C4
575
576 - Support sending Wireless Application Protocol (WAP) Teleservice Submit
577   Message and receiving WAP Deliver Messsage as defined 3GPP2 C.S0015-B
578   version 2.0.
579
580   Priority: Medium
581   Complexity: C4
582
583 - Support Call-Back Number. The Call-Back Number subparameter indicates
584   the number to be dialed in reply to a received SMS message.
585
586   In transmit direction, oFono allows setting of Call-Back Number. If the
587   Call Back Number property is set, CDMA SMS stack will encode Call-Back
588   Number subparameter in the Submit Message.
589
590   In receiving direction, oFono will process the Call-Back Number
591   subparameter in the incoming Deliver Message and notify UI of the
592   Call-Back Number together with the newly received text message.
593
594   Priority: Medium
595   Complexity: C2
596
597 - Support immediately displayed message. oFono CDMA SMS stack will
598   process the optional Message Display Mode subparameter in the incoming
599   SMS message. If Message Display Mode subparameter indicates the
600   message display mode is Immediate Display, oFono will send
601   ImmediateMessage signal, otherwise oFono will send IncomingMessage
602   signal.
603
604   Priority: Medium
605   Complexity: C2
606
607
608 CDMA CMAS
609 ==============
610
611 - Support Commercial Mobile Alert Service (CMAS) over CDMA systems. CMAS
612   over CDMA system is defined in TIA-1149. The CMAS message is carried in
613   the CHARi field of the User Data subparameter of CDMA SMS Broadcast
614   message.
615
616   Priority: Medium
617   Complexity: C4
618
619 CDMA Network Acquisition
620 ========================
621
622 - Support reporting of the received signal strength indicator (RSSI)
623   measurement and of the pilot energy ratio (Ec/Io) measurement, for the
624   currently acquired CDMA network.
625
626   Priority: Medium
627   Complexity: C1
628   Owner: Dara Spieker-Doyle <dara.spieker-doyle@nokia.com>
629
630 - Support reporting of the received signal strength indicator (RSSI)
631   measurement and of the signal to interference-plus-noise ratio (SINR)
632   measurement, for the currently acquired 1xEV-DO data network.
633
634   Priority: Medium
635   Complexity: C1
636
637 - Support reporting of the Enhanced Roaming Indicators (ERI) to indicate the
638   current roaming condition of the CDMA mobile device. Each indicator maps to
639   a unique display number within the Standard and Non-Standard service ranges,
640   as described in Section 8 of 3GPP2 C.R1001-C v1.0.
641   These numbers are stored on the device in the (Enhanced) Preferred Roaming
642   List (PRL) and it is the responsibility of the modem to broadcast the
643   relevant indicator for a currently acquired system. Further details of the
644   system acquisition process are described in 3GPP2 C.S0016-B v1.0.
645
646   Priority: Medium
647   Complexity: C2
648
649 - Support reporting of identifiers of the currently acquired CDMA network,
650   including the System Identifier (SID) and the Network Identifier (NID),
651   It is the responsibility of the modem to broadcast the relevant identifiers
652   for a currently acquired system, and these identifiers are provided by the
653   network. This is described in 3GPP2 C.S0005-E v2.0.
654
655   Priority: Medium
656   Complexity: C2
657
658 - Support International Roaming, including support for reporting the Mobile
659   Country Code (MCC) and the Mobile Network Code (MNC) for the currently
660   acquired network. International Roaming is provided via enhancements to the
661   PRL by encoding the MCC and the (two digit only) MNC in existing SID/NID
662   fields, as described in the CDMA Development Group standards Document "IPRL
663   Enhancements for International Roaming - CDG Doc #86". It is the
664   responsibility of the modem to broadcast the values for the currently
665   acquired system.
666
667   Priority: Medium
668   Complexity: C2
669
670 CDMA Connection Manager
671 =======================
672
673 - Support Packet Data Service over CDMA (1xRTT and 1xEV-DO) systems. This
674   includes Mobile Originated connection and disconnection features.
675
676   Priority: Medium
677   Complexity: C4
678
679 - Support Network Initiated disconnection of Packet Data Service over CDMA
680   (1xRTT and 1xEV-DO) systems.
681
682   Priority: Medium
683   Complexity: C2