Background ========== - Priority scale: High, Medium and Low - Complexity scale: C1, C2, C4 and C8. The complexity scale is exponential, with complexity 1 being the lowest complexity. Complexity is a function of both task 'complexity' and task 'scope'. The general rule of thumb is that a complexity 1 task should take 1-2 weeks for a person very familiar with oFono codebase. Higher complexity tasks require more time and have higher uncertainty. Higher complexity tasks should be refined into several lower complexity tasks once the task is better understood. SMS === - Add support for Enhanced SMS (EMS) from 3GPP 23.040. These SMS messages support a richer set of formatting elements, including bold/italic and font size selection. Embedding images and sounds into the SMS is also supported. This task should add support for receiving such SMS messages. Proposed solution is to convert such messages to HTML and embed image / sound data as embedded MIME in the generated HTML stream. The EMS messages will have to be detected (by the presence of particular tags in the SMS) and signaled seperately from simple SMS messages. Priority: Low Complexity: C8 - Source / Destination port addressing scheme from 3GPP 23.040. A special header is used to indicate the source / destination port of the application this SMS message belongs to. Such messages which are encoded in 8-bit should be decoded by oFono automatically. The handler associated with this source / destination port is called with the decoded stream. Proposed solution involves a registration / callback framework in the SMS atom for plugins to register handlers. Default (wildcard) handler is also desired. Priority: High Complexity: C2 Owner: Aki Niemi - Smart Messaging Service. This is a separate standard from Nokia and uses the 3GPP 23.040 source / destination addressing scheme. The main aim of this task is to support vCards and vCalendar objects over SMS. Proposed solution is to add a plugin with an extension API to send / receive such messages. Priority: Medium Complexity: C2 Depends: Source / Destination port scheme - WAP PUSH notification support for MMS. oFono should be able to receive WAP PUSH messages over SMS, parse them and report them to the upper level MMS stack. Priority: Low Complexity: C8 - See / Cancel pending SMS messages over DBus. When oFono sends SMS messages the method call is only returned when the message has been submitted to the network. Instead we should return an object path and allow cancellation of pending messages. Priority: High Complexity: C2 - Persist outgoing SMS messages. Currently oFono persists incoming messages that are fragmented. However oFono does not persist queued outgoing messages. oFono should persist such messages and restore / requeue them on the next oFono startup. Priority: High Complexity: C1 - Better unique ID for incoming / outgoing messages. Currently oFono uses a simple incremental counter stored in the settings store (NextMessageId). This tends to break quite easily in strange situations (e.g. forced battery removal, unexpected crashes). This makes the uniqueness of this ID not always guaranteed. Proposed solution is to base the ID on SHA1 or MD5 hash. Hash the contents of the message + reception / sent time and the sender / originator address. Priority: High Complexity: C1 - SMS Status Report support support according to 3GPP 23.040. oFono should support SMS start reports. For fragmented SMS messages oFono should take care of collating the status reports for each fragment and notifying once all fragments are received. SMS call history should be updated with support of SMS 'delivered' or 'undeliverable' status. Priority: Medium Complexity: C4 Owner: Pasi Miettinen SIM / SIM File system ===================== - Fixed Dialing support. oFono should support Fixed Dialing Numbers. This requires being able to edit the FD phonebook or assume that the FD phonebook has been appropriately bootstrapped. Priority: Low Complexity: C2 - Barred Numbers. oFono should support Barred Numbers capability. This requires ability to read & write EFadn entries on the SIM. Priority: Low Complexity: C4 - Read / Write EFcfis. Call forwarding settings can be bootstrapped on the SIM for faster notification of the user that call forwarding is active. These settings are stored in EFcfis. oFono should read these settings and update the call history atom appropriately. Priority: Low Complexity: C2 - SIM Call History plugin. New UICCs support four new SIM elementary files for storing call history information on the SIM: EFici, EFict, EFoci, EFoct. A plugin should be developed for oFono that will write to these files. Priority: Low Complexity: C2 - Support proprietory extensions for SIM PIN retry counter. Most vendors provide an extension commands to obtain such a retry counter for PINs and PUKs. Need to enable this as a property in oFono. Priority: Low Complexity: C2 Modem Emulator ============== - Support HFP AG emulator. We should provide a new HFP_AG_EMULATOR atom type that will implement the Bluetooth HFP AG profile. Voicecall atom, netreg atoms can register command handlers for this atom appropriately. Complexity: C4 Priority: Medium - Support extensions to HFP AG emulator. Some carkits support additional AT command extensions to the Bluetooth HFP AG standard. Refer to CE4A white paper: "AT-commands for Automotive Premium Phone Integration". Plugins can register additional command handlers appropriately to handle such commands. Complexity: C4 Priority: Medium Depends: HFP AG emulator - Support HSP AG. Similar to HFP AG emulator but implements the much reduced Bluetooth HSP AG profile. Priority: Low Complexity: C1 - Support DUN emulator. Implement the Bluetooth DUN profile with only mandatory AT command support. Complexity: C4 Priority: Medium Depends: PPP Server mode - Support Bluetooth SPP profile. Complexity: C4 Priority: Medium Flight Mode =========== - Flight Mode support. Add an 'Online' property to the Modem interface that will control the online state of the modem. When Online state is True all atoms are available. When Online state is False, all network related items are removed (e.g. CallSettings) or enter into reduced functionality set where only the SIM is available (e.g. DataConnectionManager, SimManager, etc) Complexity: C4 Priority: High Owner: Pekka Pessi GPRS ==== - PPP Server support. Extend GAtPPP to support PPP Server role, similarly to how existing GSM modems support PPP GPRS contexts. Priority: High Complexity: C2 Owner: Zhenhua Zhang - On-demand SOCKS5 proxy support for MMS contexts. When an MMS context type is created, oFono should create a SOCKS5 proxy. When a client connects to the proxy, oFono can activate the GPRS context on-demand. Priority: High Complexity: C2 - Add support for GPRS suspended event. Expose this to the UI by adding a new 'Suspended' property on the DataConnectionManager D-Bus interface. Priority: High Complexity: C1 Location Services ================= - Neighbor Cell Info. Add dedicated atom, D-Bus API and atom driver(s) for Neighbor Cell information. Complexity: C4 Priority: Medium Supplementary Services ====================== - Closed User Group (CUG) support. Priority: Low Complexity: C8 - Call Completion to Busy Subscriber (CCBS) support Priority: Low Complexity: C8 - Calling Name Presentation (CNAP) support Priority: Low Complexity: C2 - User to User Signaling (UUS) support Priority: Low Complexity: C8 - Multiple Subscriber Profile (MSP) support Priority: Low Complexity: C2 - Called Line Identification. This affects both call_settings and voicecall atoms. 3GPP service is accessed by the +CDIP command. Priority: Low Complexity: C4 - CPHS Support. This includes ALS and CPHS specific elementary files. Priority: Low Complexity: C8 Voicecall ========= - Supplementary service notifications on remote party actions: - call has been put on hold (+CSSU: 2) - call has been retrieved (+CSSU: 3), and - joining call to a multiparty conference (+CSSU: 4) Priority: Medium Complexity: C1 Owner: Pekka Pessi - Dial strings. Include CLIR prefixes and 2nd stage dial strings in the DialString call property. Add dialstring accessor method to C API. Priority: Medium - Provide feedback of sent DTMF tones. Emit SendingTones signal if modem can provide approximate starting and stopping times for DTMF tones. Signal argument contains a string of DTMF tones to be sent, or empty string when all tones has been sent. Priority: Medium Complexity: C2 Owner: Pekka Pessi Miscellaneous ============= - Country Specific emergency numbers. Figure out how to support countries with specific mandated emergency numbers which are not part of the standard emergency number list. Complexity: C2 Priority: Low - Bluetooth SAP Client support. The Telit UC864-G devices support Bluetooth SAP client mode. This requires the use of a modem side-channel to read the APDU & CPDU data and send it to the remote phone device over Bluetooth RFCOMM channel. Complexity: C4 Priority: Low - Frequency Band Selection. Add frequency band selection capability to the RadioSettings atom. Complexity: C2 Priority: Low - PolicyKit support. Add support for PolicyKit checking of all oFono D-Bus interfaces. Complexity: C4 Priority: Low - Internet Access Provider database. Have oFono automatically configure GPRS contexts based on an internal database. Database format to be decided. If there are multiple matches in the database, then some user intervention might be required. Priority: Medium Complexity: C8 - Support for modem 'silent' reset notifications. oFono will remove all atoms and re-initialize. Priority: Medium Complexity: C2 - Add support for Modem 'power down & lock' and 'unlock & power up'. When the 'power down & lock' is given, the calling application is noted and all other applications are blocked from powering up the modem. Only the calling application can lift the lock. Alternatively, if the calling application exits prematurely the lock is lifted as well. Priority: Medium Complexity: C2 - Add a property for Automatic Idle (sometimes referred to as Fast Dormancy) in the RadioSettings atom. This property will enable or disable the use of automatic connection release by the modem for power consumption reasons. This is a major power-saving feature for phones, but can be ignored for USB sticks or PCI devices. If the modem does not support such a feature the property should never be exposed to the user. Priority: High Complexity: C1 - Add support for country / carrier specific emergency call list. This needs to be queried by the voicecall atom every time a new SIM is inserted. Priority: High Complexity: C1 - Extend the voicecall interface with a property indicating whether this call is an emergency call (essentially the CLI matches one of the numbers on the emergency calling codes list.) Priority: High Complexity: C1 - TTY (hearing impaired) support. Add a new oFono atom type that will enable the user to enable or disable the TTY support on the modem. Support for automatic detection of TTY (signaled by the driver) is also desired. Priority: High Complexity: C1