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();