Michal Čihař - Blog Archives for Gammu

Motorola support in Gammu

As I wrote in past, one of targets in next stable Gammu release is to have much better support for Motorola phones. The biggest problem with them is that Motorola separated AT commands in two separate subsets and each can be issued in different phone mode. I just hacked support for this into Gammu, so basic operations with Motorola phones should work.

If you have Motorola phone, I'll welcome you to test new code. Just download current snapshot or use subversion to get latest code, compile it and run against your phone.

Gammu stable version 1.12.0

I just released new version of Gammu. There are no big changes since last stable release:

  • Added dku5fbus-nodtr and fbus-nodtr variants, which do not care about DTR/RTS signals (thanks to Jakub Zawadzki).
  • Do not delete phonebook entries when there are none (bug #317).
  • This release comes with new API, which should provide stable ABI for upcoming versions. If you're distributor, who had special dependency handling for libGammu, you can now keep it on soname, versions with same soname will be backwards compatible.

For stable users, there are quite a lot of changes, especially for developers, conversion to new API will probably hurt. There is porting documentation included in sources and if it does not help you, feel free to ask!

Stay tuned, release evening will continue ;-).

Yet another wiki died on spam

Some time ago I added links to FoneWiki.org to Gammu phone database to show more information about phones. The main reason for that was information about K750i phone, which I wanted to buy in that time.

Unfortunately as time goes on, this page seems to be almost the only one with interesting content on this wiki. Most of other pages are only templates or links to buy cheap v1agra or some other similar spam.

It's a pity that this server is gone, because I think such wiki is a good idea.

Gammu test version 1.11.92

I just released new version of Gammu. This release further stabilizes new API and fixes various bugs especially with AT and OBEX. Full list of changes:

  • Properly report uploaded file size when using OBEX.
  • Fix HEX charset encoding.
  • Improve vCard address handling.
  • Support for iso charsets in AT phone when iconv is available.
  • Fix restoring of phonebook over OBEX (bug #317).
  • addnew accepts -yes parameter.
  • There is no error on most fields when storing to vCard.
  • Fix detecting length of input (thanks to Peter Stuge).
  • Improve check for MySQL.

Gammu roadmap for near future

As new API is currently in pretty good shape, stabilisation period for 1.12.0 will begin soon. There should not be any major changes (well some might be in 1.11.92 this week, but no further). 1.12.0 should be unleashed within two or three weeks.

So maybe it's now time to start thinking about changes in 1.13.0. As requests for supporting Motorola phones increase, I will try to work on this. Most of information which changes this require is written in bug report, but I'm still unsure how big changes it will require.

Other thing which should be improved is vCard parsing. There are lots of opened bugs for this and I see this as big problem when trying to import some contacts from other programs.

Gammu test version 1.11.91

I just released new version of Gammu. This release further improves new API, which should be now close to being stable. Full list of changes:

  • Reduced inclusion dependencies.
  • Fixed compilation on OS X.
  • Added --features to show compiled in features.
  • Add support for work address.
  • Added source examples in docs/develop/examples.

Troubles forming new API

I just came to another decision point. Curently new Gammu API is quite in good shape (even most of functions are documented), but I think whether it's time to push in also some other big changes, which I would like to see, or just wait for things to settle down before starting other major changes.

For application developers (using C API, Python ones won't notice any of those changes), it would be definitely better to do all changes in one big bang. However I'm really affraid of possible impacts on stability, because extreme big changes. I'm still more and more convinced about stabilizing current code and keep those big changes for later time.

When talking about this, I should also mentions change I want to introduce :-). First is switch to wchar_t instead of own UCS-2-BE encoding. This will help a lot in possible errors on allocating memory for strings and also allow us to use libc functions for string operations. The second change is even bigger - make all storages scalable to avoid problems with hardcoded limits. But for this change it should be possible to add compatibility API functions, so that users don't have to notice anything.

Gammu test version 1.11.90

I just released new version of Gammu, you can download it from download server. The biggest change is new API. It is probably not yet completed, but I want to release it right now to receive feedback from other developers. Full list of changes:

  • Support for some new Nokia fields.
  • Made SMSD mode case insensitive.
  • Fix iCalendar export typo (Alin Năstac).
  • Better compatibility with Sharp phones.
  • Completely changed public API to avoid too often ABI changes.
  • See PORTING file for changes you have to do.
  • Dropped autoconf support, use CMake instead.
  • Please note that new API is still work in progress!

New Gammu API

Thing I longer wanted to happen is now becoming reality - Gammu is getting new public API. Man reasons for the change are:

  • ABI stability. - Till now almost every change in internals of any driver lead to ABI change. If we would correctly increase so name on each ABI change, we would be somewhere near 200, what is not something we could be proud of.

  • Centralisation of variables cleanup. - Currently all phone drivers have to do some common things in each function. New API allows to centralise those operations in one place.

  • Exposing of internals. - Old API exposed too much of Gammu internals, what could be misused by programmers and could lead to unexpected behaviour when some internals are changed.

The work is not yet still complete, but the API is getting final shapes right now, so you still have chance to change something. While doing such big change, I decided also to complete documentation of all public functions. This is also currently work in progress, but arising API documentation is already available.

If you are developer using Gammu library, you will have to change some things in your code. To document these changes, new Porting guide has been created. I suggest you not to start with this right now as the API is really not complete and might change a lot during next days.