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