Porting Gammu usage from pre 1.12.0
===================================

This document describes what you have to change in your code, if you
used Gammu older than 1.12.0. This release came with huge changes to
API, which has to be done for various reasons:

- ABI stability. - Till now almost every change in internals of any
  driver lead to ABI change. If we would correctly increase soname 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
  centralize 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.

Changes you have to do in your code
===================================

Bellow examples expect sm to be state machine structure in your current
code, change it to appropriate variable name if it differs.

1. Use pointer to GSM_StateMachine instead of it. API now do not expose
   this structure, so you will get compiler error. You should allocate
   this pointer by GSM_AllocStateMachine() and free by
   GSM_FreeStateMachine().

2. Change all phone functions from sm.Phone.Functions->SomeFunction to
   GSM_SomeFunction. Only functions which results were stored inside
   state machine structure have changed signature to include results of
   the operation.

3. All callbacks are set by function GSM_Set*Callback instead of
   directly accessing structure.

4. Some function have been renamed to follow GSM_* naming conventions.

As there might be some functions still missing from new API, don't
hesitate to contact author or ask on mailing list if you miss something.

API documentation can be generated using Doxygen (make apidoc in build
tree), you can also view it online at <http://cihar.com/gammu/api/>.

# vim: et ts=4 sw=4 sts=4 tw=72
