Telephony Stack

= Telephony stack definitions relavent to Cell Broadcast support =

definitions from /usr/lib/libisi.so.1.4.0
struct isi_client_t { void *clientptr; //opaque pointer int unk; //unknown }; struct comm_channel_info_t { void *commptrs; //opaque pointer }; struct callbacks { void *func1; //function pointer, unknown prototype void *unk1; void *unk2; void *func2; //function pointer, unknown prototype void *func3; //function pointer, unknown prototype void *func4; //function pointer, unknown prototype };

void isi_client_cancel_timeout(isi_client_t *self); void isi_client_cleanup(isi_client_t *self); void isi_client_run(isi_client_t *self); int isi_client_init(isi_client_t *self, callbacks *callbackptrs, comm_channel_info_t *cinfo, int channel); void isi_client_set_timeout(isi_client_t *self, int timeout); void isi_client_start(isi_client_t *self); void isi_client_stop(isi_client_t *self); void socket_cinfo_init(comm_channel_info_t *cinfo); int isi_client_sendto_resource(isi_client_t *self, void *buffer, char unknown, char resource); int isi_client_process_isi_version_resp(isi_client_t *self, int version); int isi_client_subscribe_indications(isi_client_t *self, char unknown, void *data, signed int size); int isi_client_cancel_indications(isi_client_t *self, char unknown); int sb_id_get(void *buf); int sb_length_get(void *buf); void *msgbuf_init(void *buffer, unsigned int size, int unknown); void *msgbuf_add_ptr(void *buffer, unsigned int size); void *msgbuf_get_ptr(void *buffer, unsigned int size);

pn_route_subscribe //definition not identified yet pn_route_unsubscribe //definition not identified yet

definitions from /usr/sbin/csd
struct CSDResourceContext { int unknown; DBusConnection *connection; DBusPreallocatedSend *send; DBusMessage *message; };

struct CSDObject { //guessed definition, not sure about the size or layout of this one int unknown; char *path; int unknown2; int unknown3; int unknown4; };

struct CSDPlugin { //size may be wrong char *name; void *configure; //function pointer, unknown prototype void *start; //function pointer, unknown prototype void *stop; //function pointer, unknown prototype int unknown1; int unknown2; int unknown3; int unknown4; };

int csd_dbus_error(DBusError *error, const char *format, const char *name); void csd_dbus_free_resource_context(CSDResourceContext *context); unsigned int csd_dbus_register_object(DBusConnection *connection, CSDObject *object); unsigned int csd_dbus_unregister_object(DBusConnection *connection, CSDObject *object); void csd_dbus_save_resource_context(CSDResourceContext *context1, CSDResourceContext *context2) void csd_dbus_send_message(CSDResourceContext *context); DBusConnection *csd_get_dbus_connection; void csd_service_started(const char **bus); void csd_service_stopped(const char **bus, char *service);

csd_dbus_introspectable_interface //a pointer to an unknown data structure

All csd plugins export a function install which looks like this: CSDPlugin *install;