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