diff options
| author | Marcel Holtmann <marcel@holtmann.org> | 2006-11-01 23:22:15 +0000 | 
|---|---|---|
| committer | Marcel Holtmann <marcel@holtmann.org> | 2006-11-01 23:22:15 +0000 | 
| commit | b2de3fcb62ea69ee5b1181078893a4eb1c02c888 (patch) | |
| tree | f6f71cbe3f3d681d8c337c68836a9055157e2700 /daemon/echo.c | |
| parent | f600e97b3bf2e2e2d4cdadcd8c42d0bb17df2d3e (diff) | |
Add channel property
Diffstat (limited to 'daemon/echo.c')
| -rw-r--r-- | daemon/echo.c | 42 | 
1 files changed, 41 insertions, 1 deletions
| diff --git a/daemon/echo.c b/daemon/echo.c index 5a88ce79..56c52164 100644 --- a/daemon/echo.c +++ b/daemon/echo.c @@ -43,6 +43,7 @@ static DBusGConnection *conn;  typedef struct {  	GObject parent;  	GIOChannel *server; +	guint channel;  } ServiceAgent;  typedef struct { @@ -66,6 +67,38 @@ static void service_agent_finalize(GObject *obj)  static void service_agent_init(ServiceAgent *obj)  {  	obj->server = NULL; +	obj->channel = 23; +} + +enum { +	PROP_0, +	PROP_CHANNEL +}; + +static void service_agent_set_property(GObject *object, guint prop_id, +					const GValue *value, GParamSpec *pspec) +{ +	switch (prop_id) { +	case PROP_CHANNEL: +		SERVICE_AGENT(object)->channel = g_value_get_uint(value); +		break; +	default: +		G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); +		break; +	} +} + +static void service_agent_get_property(GObject *object, guint prop_id, +					GValue *value, GParamSpec *pspec) +{ +	switch (prop_id) { +	case PROP_CHANNEL: +		g_value_set_uint(value, SERVICE_AGENT(object)->channel); +		break; +	default: +		G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); +		break; +	}  }  static void service_agent_class_init(ServiceAgentClass *klass) @@ -76,6 +109,13 @@ static void service_agent_class_init(ServiceAgentClass *klass)  	gobject_class = G_OBJECT_CLASS(klass);  	gobject_class->finalize = service_agent_finalize; + +	gobject_class->set_property = service_agent_set_property; +	gobject_class->get_property = service_agent_get_property; + +	g_object_class_install_property(G_OBJECT_CLASS(klass), PROP_CHANNEL, +			g_param_spec_uint("channel", NULL, NULL, +					1, 30, 23, G_PARAM_READWRITE));  }  static ServiceAgent *service_agent_new(const char *path) @@ -153,7 +193,7 @@ static gboolean service_agent_start(ServiceAgent *agent,  	memset(&addr, 0, sizeof(addr));  	addr.rc_family = AF_BLUETOOTH;  	bacpy(&addr.rc_bdaddr, BDADDR_ANY); -	addr.rc_channel = 23; +	addr.rc_channel = agent->channel;  	if (bind(sk, (struct sockaddr *) &addr, sizeof(addr)) < 0) {  		close(sk); | 
