If you have looked at the code then you would have seen that the calibre driver syncs only two metadata fields: read and date read. If you want to sync more than that you will need to:
- modify the calibre driver to accept the field name correspondence
- define the semantics of the sync (up, down, conflict) in both the single value and list cases
- change the client to send the original and new values so data change can be detected
- do the actual data syncing during the startup handshake (change synchronize_with_db in the driver)
- modify the client to allow the user to define the field name correspondence.
- return the correct metadata to the client
As calibre is open source, you can do everything except the last two. For those you would need to write your own wireless device client (CC replacement).