Through my last three weeks on holiday I got implemented a lot of stuff in msmcomm. We have now the following features:
- call support: dial, answer and end calls (only call forwarding and call conference stuff is missing)
- various network information: networklist, rssi, current nework, network time, mode preference (GSM/UMTS/auto) …
- various system stuff: set system time, modem audio tuning parameters, audio profiles, charging, …
- SIM: Read/write/delete phonebooks, verify pin, enable/disable pin, change pin, sim info (imsi, misdn), phonebook properties
This is already a lot of stuff we can work with. For all messages we already have simple error handling like checking the received message for an error code and reporting the error upstream. Only on some response messages left for which we have to find out the right offset of the error return code. But thats just a matter of time
The next step will be SMS support. I already started with this and can receive an incomming SMS. Luckily the msmcomm protocol is using the same PDU format for reporting SMS t as it is defined in TS 23.040 – makes it easy for us to implement it beside our already existing SMS implementation in fsogsmd. But there is one thing I am curious about: It seems that Palm does not implemented some functionality to read/write sms from/to the SIM card. Maybe I miss something, but it would fit into Palm’s way of doing SMS handling in webOS. They are just receiving the SMS and do not save them on the SIM card. All SMS messages are directly copied to a internal userspace database. So if you put your SIM card into another phone you will miss all your SMS messages (btw. it’s the same approach for SIM contacts. They are never saved on the SIM card by webOS …).
Next step will be sending SMS. I already dumped the messages webOS is sending and receiving for this. I just have to look deeper into them and implement all important messages, responses and events in libmsmcomm.
If you want to try everything to can do the following:
WARNING: Before you do any of the steps below just backup all our data from the device! The Freesmartphone team provides this as is without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of this program is with you. Should this program prove defective, you assume the cost of all necessary servicing, repair or correction. In no event will the Freesmartphone team or any other party be liable to you for damages, including any general, special, incidental or consequential damages arising out of the use or inability to use this program (including but not limited to loss of data or data being rendered inaccurate or losses sustained by you or third parties or a failure of this program to operate with any other programs)
1. Compile the serial_forward utility (http://git.freesmartphone.org/?p=cornucopia.git;a=tree;f=tools/serial_forward) for the Palm Pre (use OpenEmbedded or you favourite toolchain) and copy it on the Palm Pre
2. Take care that you enabled usbnet on your Pre
3. Connect to your Pre with novaterm
4. Stop the TelephonyInterfaceLayer: # stop TelephonyInterfaceLayer
5. Reset the modem: # pmmodempower cycle
6. Run serial_forward with: # ./serial_forward -n /dev/modemuart -p 3001 -t hsuart
7. On your local PC configure the usbnet interface: # ifconfig usb0 192.168.0.1
8. Install msmcommd on your local PC
9. Edit /etc/msmcomm.conf to look like this:
source_type network
source_path 192.168.0.202:3001
log_target stderr
10. Start msmcommd: ./msmcommd
11. You will see msmcommd doing the initial low level setup
12. Compile msmvterm and launch it: # ./msmvterm
13. Type ‘help’ withing msmvterm to see all available commands
14. To do a simple setup of the modem, type the following commands:
# change_operation_mode reset
# test_alive
# verify_pin pin1
# change_operation_mode online
NOTE: Only after you have done ‘change_operation_mode reset’ and ‘test_alive’ the modem can received any other command!