TODO: Mark CNAP 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 - Add CDMA support to the SMS stack. The idea is to support only the PDU
53   mode. To start with only Submit and Deliver message handling for WMT
54   teleservice will be added to bring the basic CDMA SMS send and receive
55   functionality.
56
57   Priority: Low
58   Complexity: C8
59   Owner: Rajesh Kadhiravan Nagaiah <Rajesh.Nagaiah@elektrobit.com>
60
61 - Add CDMA Delivery(Status) Report handling to the SMS stack.
62
63   Priority: Low
64   Complexity: C4
65   Owner: Rajesh Kadhiravan Nagaiah <Rajesh.Nagaiah@elektrobit.com>
66
67 - Add CDMA Voice Mail Notification handling to the SMS stack. In CDMA the
68   Message Waiting indication is notified through a specific teleservice ID
69   VMN. No update to corresponding elementary files required since they are
70   not present in the R-UIM. This will result in the message waiting
71   indication being initially processed within the SMS atom and then being
72   passed for delivery to the message waiting atom. Furthemore note that in
73   CDMA only voice mail type is supported.
74
75   Priority: Low
76   Complexity: C4
77   Owner: Rajesh Kadhiravan Nagaiah <Rajesh.Nagaiah@elektrobit.com>
78
79 - Asynchronously acknowledge SMS DELIVER messages sent by the SMS driver
80   to core using ofono_sms_deliver_notify().  This may require the struct
81   ofono_sms_driver to be extended with one more function pointer like:
82     void (*deliver_ack)(unsigned char *pdu, int len, cb_t cb, void *data)
83   because currently messages are automatically acknowledged by either the
84   modem (this is the case of some AT modems) or the driver right after
85   ofono_sms_deliver_notify() and a failure to deliver at an upper level is
86   ignored.  The PDU can be an RP-ACK or RP-ERROR message with optional
87   TP-User-Content element, for example if returned from USIM Data Download.
88
89   Priority: Low
90   Complexity: C2
91
92 SIM / SIM File system
93 =====================
94
95 - Read / Write EFcfis.  Call forwarding settings can be bootstrapped on the
96   SIM for faster notification of the user that call forwarding is active.
97   These settings are stored in EFcfis.  oFono should read these settings and
98   update the call forwarding atom appropriately.
99
100   Priority: Low
101   Complexity: C2
102   Owner: Jeevaka Badrappan <jeevaka.badrappan@elektrobit.com>
103
104 - SIM Call History plugin.  New UICCs support four new SIM elementary files
105   for storing call history information on the SIM: EFici, EFict, EFoci, EFoct.
106   A plugin should be developed for oFono that will write to these files.
107
108   Priority: Low
109   Complexity: C2
110
111 - Support proprietary extensions for SIM PIN retry counter.  Most vendors
112   provide an extension commands to obtain such a retry counter for PINs and
113   PUKs.  Need to enable this as a property in oFono.
114
115   Priority: Low
116   Complexity: C2
117   Owner: Lucas De Marchi <lucas.demarchi@profusion.mobi>
118
119 - Add support for SIM 'ready' notifications from the driver to the core.  Most
120   modem manufacturers initialize the SIM (e.g. cache SIM file system, STK
121   initialization, etc) internally before allowing the telephony stack to
122   access these portions.  When the PIN is locked, this can lead to oFono being
123   too fast for the modem and asking it for things before the firmware is ready.
124
125   The proposal is to introduce a new sim function:
126     void ofono_sim_ready_notify(struct ofono_sim *sim);
127
128   When oFono determines the SIM PIN is READY, it checks whether
129   ofono_sim_ready_notify has been called.  If it hasn't, then it stalls the
130   initialization procedure (and calling post_sim) until
131   ofono_sim_ready_notify is called.
132
133   Priority: High
134   Complexity: C2
135   Owner: Pekka Pessi <pekka.pessi@nokia.com>
136
137 - Check SIM pin status if sim_change_pin fails. If it is anything other than
138   READY, we must tear the state back to pre_sim state and set the modem offline.
139
140   Priority: Medium
141   Complexity: C1
142   Owner: Marit Henriksen <marit.henriksen@stericsson.com>
143
144 Modem Emulator
145 ==============
146
147 - Support HFP AG emulator.  We should provide a new HFP_AG_EMULATOR atom type
148   that will implement the Bluetooth HFP AG profile.  Voicecall atom, netreg
149   atoms can register command handlers for this atom appropriately.
150
151   Complexity: C4
152   Priority: Medium
153
154 - Support extensions to HFP AG emulator.  Some carkits support additional
155   AT command extensions to the Bluetooth HFP AG standard.  Refer to CE4A
156   white paper: "AT-commands for Automotive Premium Phone Integration".
157   Plugins can register additional command handlers appropriately to handle
158   such commands.
159
160   Complexity: C4
161   Priority: Medium
162   Depends: HFP AG emulator
163
164 - Support HSP AG.  Similar to HFP AG emulator but implements the much reduced
165   Bluetooth HSP AG profile.
166
167   Priority: Low
168   Complexity: C1
169
170 - Support DUN emulator. Implement the Bluetooth DUN profile with only mandatory
171   AT command support.
172
173   Complexity: C4
174   Priority: Medium
175
176   Depends: PPP Server mode
177
178 - Support Bluetooth SPP profile.
179
180   Complexity: C4
181   Priority: Medium
182
183
184 Flight Mode
185 ===========
186
187 - Flight Mode support.  Add an 'Online' property to the Modem interface that
188   will control the online state of the modem.  When Online state is True all
189   atoms are available.  When Online state is False, all network related items
190   are removed (e.g. CallSettings) or enter into reduced functionality set
191   where only the SIM is available (e.g. DataConnectionManager, SimManager, etc)
192
193   Complexity: C4
194   Priority: High
195   Owner: Pekka Pessi <pekka.pessi@nokia.com>
196
197
198 GPRS
199 ====
200
201 - PPP Server support.  Extend GAtPPP to support PPP Server role, similarly to
202   how existing GSM modems support PPP GPRS contexts.
203
204   Priority: High
205   Complexity: C2
206
207 - IPv6 CP support.  To support IPv6 based GPRS contexts via PPP, GAtPPP
208   needs to be updated to support IPv6CP from RFC 2472.
209
210   Priority: Low
211   Complexity: C4
212
213 - Add support for IPv6 GPRS contexts.
214
215   Priority: Medium
216   Complexity: C1
217
218
219 Location Services
220 =================
221
222 - Neighbor Cell Info.  Add dedicated atom, D-Bus API and atom driver(s) for
223   Neighbor Cell information.
224
225   This feature is not discussed in 27.007, thus manufacturer specific commands
226   are required.
227
228   Complexity: C4
229   Priority: Medium
230   Owner: Aki Niemi <aki.niemi@nokia.com>
231
232
233 Supplementary Services
234 ======================
235
236 - Closed User Group (CUG) support.
237
238   Priority: Low
239   Complexity: C8
240
241 - Call Completion to Busy Subscriber (CCBS) support
242
243   This feature is not discussed in 27.007, thus manufacturer specific commands
244   are required.
245
246   Priority: Low
247   Complexity: C8
248
249 - User to User Signaling (UUS) support
250
251   Priority: Low
252   Complexity: C8
253
254 - Multiple Subscriber Profile (MSP) support
255
256   Priority: Low
257   Complexity: C2
258
259 - Called Line Identification.  This affects both call_settings and voicecall
260   atoms.  3GPP service is accessed by the +CDIP command.
261
262   Priority: Low
263   Complexity: C4
264
265 - CPHS Support.  This includes ALS and CPHS specific elementary files.
266
267   Priority: Low
268   Complexity: C8
269
270
271 Voicecall
272 =========
273
274 - Supplementary service notifications on remote party actions:
275   - call has been put on hold (+CSSU: 2)
276   - call has been retrieved (+CSSU: 3), and
277   - joining call to a multiparty conference (+CSSU: 4)
278
279   Priority: Medium
280   Complexity: C1
281   Owner: Pekka Pessi <pekka.pessi@nokia.com>
282
283 - Long phone numbers. According to 3GPP TS 24.008, the callee address
284   can be up to 80 digits long.
285
286   Priority: Medium
287   Complexity: C2
288
289 - Dial strings. Include CLIR prefixes and 2nd stage dial strings in the
290   DialString call property. Add dialstring accessor method to C API.
291
292   Priority: Medium
293   Complexity: C4
294
295 - Provide feedback of sent DTMF tones. Emit SendingTones signal if modem can
296   provide approximate starting and stopping times for DTMF tones. Signal
297   argument contains a string of DTMF tones to be sent, or empty string when
298   all tones has been sent.
299
300   Priority: Medium
301   Complexity: C2
302   Owner: Pekka Pessi <pekka.pessi@nokia.com>
303
304 - Blacklisting. According to 3GPP TS 22.001 annex E, the TE must provide
305   automatic calling repeat call attempt restrictions.
306
307   There should be a method to manually reset blacklisting.
308
309   Priority: Medium
310   Complexity: C1
311
312
313 Sim Toolkit
314 ===========
315
316 - Support Refresh proactive command.  The specification defines 7 types
317   of Refresh types:
318         - NAA Initialization
319         - NAA File Change Notification
320         - NAA Initialization and File Change Notification
321         - NAA Initialization and Full File Change Notification
322         - UICC Reset
323         - NAA Application Reset (2G only)
324         - NAA Session Reset (3G only)
325
326   The 'NAA Initialization' type will be ignored by oFono, it is assumed
327   this is handled by the modem.
328
329   For 'UICC Reset', 'NAA Application Reset' and 'NAA Session Reset' oFono
330   will first check whether there are any calls or ussd operations active.
331   If there are, the appropriate response will be sent (e.g. busy on call
332   or screen busy terminal response.)  Otherwise a positive response will be
333   sent to the driver.  In the case of a 'UICC Reset' the driver / modem
334   can interpret this that it is safe to reset the UICC.
335
336   Alternatively, the driver / modem can notify the core of the SIM removal
337   / SIM insertion events without using the Refresh proactive command.  It
338   is up to the driver / modem to perform a warm reset.  In particular, 3GPP
339   31.111 mandates that any change to EFimsi is done by using 'UICC Reset',
340   'NAA Application Reset' or 'NAA Session Reset'.  Please see 3GPP 31.111
341   Section 6.4.7.1.
342
343   Other types will be handled by oFono flushing the EF cache of the files
344   affected (or the entire SIM cache in case of Full File Change Notifications)
345   and re-reading the affected files.  Any properties derived from these
346   Elementary Files will be updated and signaled using PropertyChanged.
347
348   Priority: High
349   Complexity: C8
350
351 - Support Send Short Message proactive command.
352
353   Priority: High
354   Complexity: C2
355   Owner: Andrzej Zaborowski <andrew.zaborowski@intel.com>
356
357 - Support Set Up Call proactive command.  If the UICC has indicated that
358   the user should be informed, then the SimToolkitAgent will be called
359   in order to request user's confirmation of the call setup.  If the user
360   has confirmed, or if user's confirmation was not requested, oFono will
361   setup the call and optionally inform the user.
362
363   Priority: High
364   Complexity: C8
365
366
367 Emergency Calls
368 ===============
369
370 - Modem Emergency mode.  Support network registration and online/offline
371   mode during the emergency calls and related network activity (e.g.,
372   network-initiated location request via supplementary service channel).
373
374   Proposed solution is to introduce a new Emergency boolean property to the
375   Modem D-Bus interface and new functions to modem interface:
376
377   - ofono_modem_emergency_mode_inc()
378   - ofono_modem_emergency_mode_dec()
379   - ofono_modem_emergency_mode_get()
380   - ofono_modem_add_emergency_mode_watch()
381   - ofono_modem_remove_emergency_mode_watch()
382
383   When emergency mode is requested, modem is set to online (if needed) and
384   the watchers are notified. There can be multiple parties requesting
385   emergency mode.  When all of them have completed the emergency-related
386   operation and called ofono_modem_emergency_mode_dec(), modem is set to
387   offline (if needed) and the watchers are again notified.
388
389   Priority: High
390   Complexity: C2
391
392 - Country / Operator specific emergency numbers.  Figure out how to support
393   countries / operators with specific mandated emergency numbers which are
394   not part of the standard emergency number list. This needs to be queried
395   by the voicecall atom every time a new SIM is inserted.  The list is
396   assumed to be managed by the modem.  If no such functionality is available,
397   then the 3GPP mandated behavior is used.
398
399   Priority: High
400   Complexity: C2
401
402 - Network updating the emergency number list. Support the list of emergency
403   numbers dynamically updated by the network.
404
405   Priority: High
406   Complexity: C2
407   Owner: Petteri Tikander <petteri.tikander@ixonos.com>
408
409
410 Miscellaneous
411 =============
412
413 - Bluetooth SAP Client support.  The Telit UC864-G devices support Bluetooth
414   SAP client mode.  This requires the use of a modem side-channel to read the
415   APDU & CPDU data and send it to the remote phone device over Bluetooth RFCOMM
416   channel.
417
418   Complexity: C4
419   Priority: Low
420
421 - Frequency Band Selection.  Add frequency band selection capability to the
422   RadioSettings atom.
423   Owner: Lucas De Marchi <lucas.demarchi@profusion.mobi>
424
425   This feature is not discussed in 27.007, thus manufacturer specific commands
426   are required.
427
428   Complexity: C2
429   Priority: Low
430
431 - PolicyKit support.  Add support for PolicyKit checking of all oFono D-Bus
432   interfaces.
433
434   Complexity: C4
435   Priority: Low
436
437 - Internet Access Provider database.  Have oFono automatically configure
438   GPRS contexts based on an internal database.  Database format to be decided.
439   If there are multiple matches in the database, then some user intervention
440   might be required.
441
442   Priority: Medium
443   Complexity: C8
444   Owner: Jukka Saunamäki <jukka.saunamaki@nokia.com>
445
446 - Support for modem 'silent' reset notifications.  oFono will remove all atoms
447   and re-initialize.
448
449   Priority: Medium
450   Complexity: C2
451   Owner: Gustavo F Padovan <padovan@profusion.mobi>
452
453 - Add support for Modem 'power down & lock' and 'unlock & power up'.  When the
454   'power down & lock' is given, the calling application is noted and all
455   other applications are blocked from powering up the modem.  Only the calling
456   application can lift the lock.  Alternatively, if the calling application
457   exits prematurely the lock is lifted as well.
458
459   The proposed property name is "Lockdown" as part of the Modem interface.
460
461   Priority: Medium
462   Complexity: C2
463   Owner: Gustavo F Padovan <padovan@profusion.mobi>
464
465 - Add support for GPS power control atom.  Many modem manufacturers provide
466   a GPS unit with their modem hardware.  This unit can be turned on or off
467   and frequently takes over one of the tty ports that the modem provides.
468
469   This feature is not discussed in 27.007, thus manufacturer specific commands
470   are required.
471
472   Priority: Low
473   Complexity: C4
474   Owner: Rafael Ignacio Zurita <rafael.zurita@profusion.mobi>
475
476 - Add Location Service API for providing basic E911 suport.
477   This will be based on the 27.007 defined AT commands using
478   XML for transport of positioning request and responses.
479
480   Priority: Medium
481   Complexity: C2
482   Owner: Sjur Brændeland <sjur.brandeland@stericsson.com>