[-]
[+]
|
Changed |
_service:tar_git:libgrilio.changes
|
|
[-]
[+]
|
Changed |
_service:tar_git:libgrilio.spec
^
|
|
[-]
[+]
|
Changed |
_service
^
|
@@ -2,7 +2,7 @@
<service name="tar_git">
<param name="url">https://git.merproject.org/mer-core/libgrilio.git</param>
<param name="branch">master</param>
- <param name="revision">07eb0174e784c5038cfe889ab2b8199571c83cd1</param>
+ <param name="revision">6253c2f651889f120ac74a097a6c83867cbd0ae7</param>
<param name="token"/>
<param name="debian">N</param>
<param name="dumb">N</param>
|
[-]
[+]
|
Changed |
_service:tar_git:libgrilio-1.0.35.tar.bz2/Makefile
^
|
@@ -21,7 +21,7 @@
VERSION_MAJOR = 1
VERSION_MINOR = 0
-VERSION_RELEASE = 34
+VERSION_RELEASE = 35
# Version for pkg-config
PCVERSION = $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_RELEASE)
|
[-]
[+]
|
Changed |
_service:tar_git:libgrilio-1.0.35.tar.bz2/debian/changelog
^
|
@@ -1,3 +1,9 @@
+libgrilio (1.0.35) unstable; urgency=low
+
+ * Added enabled attribute to GRilIoChannel
+
+ -- Slava Monich <slava.monich@jolla.com> Tue, 02 Jul 2019 13:23:02 +0300
+
libgrilio (1.0.34) unstable; urgency=low
* Handle requests stuck in the process of being sent
|
[-]
[+]
|
Changed |
_service:tar_git:libgrilio-1.0.35.tar.bz2/include/grilio_channel.h
^
|
@@ -1,6 +1,6 @@
/*
- * Copyright (C) 2015-2018 Jolla Ltd.
- * Contact: Slava Monich <slava.monich@jolla.com>
+ * Copyright (C) 2015-2019 Jolla Ltd.
+ * Copyright (C) 2015-2019 Slava Monich <slava.monich@jolla.com>
*
* You may use this file under the terms of BSD license as follows:
*
@@ -13,9 +13,9 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Jolla Ltd nor the names of its contributors may
- * be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * 3. Neither the names of the copyright holders nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -47,6 +47,8 @@
const char* name;
gboolean connected;
guint ril_version;
+ /* Since 1.0.35 */
+ gboolean enabled;
};
/* Status values for GRilIoResponseFunc. Zero means success,
@@ -137,16 +139,21 @@
guint
grilio_channel_serialize(
- GRilIoChannel* self);
+ GRilIoChannel* channel);
void
grilio_channel_deserialize(
- GRilIoChannel* self,
+ GRilIoChannel* channel,
guint id);
gboolean
grilio_channel_has_pending_requests(
- GRilIoChannel* self);
+ GRilIoChannel* channel);
+
+void
+grilio_channel_set_enabled(
+ GRilIoChannel* channel,
+ gboolean enabled); /* Since 1.0.35 */
guint
grilio_channel_add_logger(
@@ -157,14 +164,12 @@
/*
* Logger callbacks registered with grilio_channel_add_logger2 only receive
* packet payload, without the header. It's more efficient.
- *
- * Since 1.0.25
*/
guint
grilio_channel_add_logger2(
GRilIoChannel* channel,
GrilIoChannelLogFunc log,
- void* user_data);
+ void* user_data); /* Since 1.0.25 */
guint
grilio_channel_add_default_logger(
@@ -213,6 +218,12 @@
GRilIoChannelEventFunc func,
void* arg);
+gulong
+grilio_channel_add_enabled_changed_handler(
+ GRilIoChannel* channel,
+ GRilIoChannelEventFunc func,
+ void* arg); /* Since 1.0.35 */
+
void
grilio_channel_remove_handler(
GRilIoChannel* channel,
@@ -265,10 +276,10 @@
void
grilio_channel_inject_unsol_event(
- GRilIoChannel* self,
+ GRilIoChannel* channel,
guint code,
const void* data,
- guint len);
+ guint len); /* Since 1.0.21 */
G_END_DECLS
|
[-]
[+]
|
Changed |
_service:tar_git:libgrilio-1.0.35.tar.bz2/src/grilio_channel.c
^
|
@@ -121,6 +121,7 @@
SIGNAL_EOF,
SIGNAL_OWNER,
SIGNAL_PENDING,
+ SIGNAL_ENABLED,
SIGNAL_COUNT
};
@@ -130,12 +131,17 @@
#define SIGNAL_EOF_NAME "grilio-eof"
#define SIGNAL_OWNER_NAME "grilio-owner"
#define SIGNAL_PENDING_NAME "grilio-pending"
+#define SIGNAL_ENABLED_NAME "grilio-enabled"
#define SIGNAL_UNSOL_EVENT_DETAIL_FORMAT "%x"
#define SIGNAL_UNSOL_EVENT_DETAIL_MAX_LENGTH (8)
static guint grilio_channel_signals[SIGNAL_COUNT] = { 0 };
+#define NEW_SIGNAL_NO_ARGS(type,X) \
+ grilio_channel_signals[SIGNAL_##X] = g_signal_new(SIGNAL_##X##_NAME, \
+ type, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0)
+
struct grilio_channel_event {
GrilIoChannelEvent* next;
guint code;
@@ -1460,6 +1466,17 @@
return G_LIKELY(self) && g_hash_table_size(self->priv->pending) > 0;
}
+void
+grilio_channel_set_enabled(
+ GRilIoChannel* self,
+ gboolean enabled) /* Since 1.0.35 */
+{
+ if (self && self->enabled != enabled) {
+ self->enabled = enabled;
+ g_signal_emit(self, grilio_channel_signals[SIGNAL_ENABLED], 0);
+ }
+}
+
gulong
grilio_channel_add_connected_handler(
GRilIoChannel* self,
@@ -1535,6 +1552,16 @@
SIGNAL_PENDING_NAME, G_CALLBACK(func), arg) : 0;
}
+gulong
+grilio_channel_add_enabled_changed_handler(
+ GRilIoChannel* self,
+ GRilIoChannelEventFunc func,
+ void* arg) /* Since 1.0.35 */
+{
+ return (G_LIKELY(self) && G_LIKELY(func)) ? g_signal_connect(self,
+ SIGNAL_ENABLED_NAME, G_CALLBACK(func), arg) : 0;
+}
+
void
grilio_channel_remove_handler(
GRilIoChannel* self,
@@ -2126,6 +2153,7 @@
self->priv = priv;
self->name = "RIL";
+ self->enabled = TRUE;
}
/**
@@ -2195,30 +2223,24 @@
GRilIoChannelClass* klass)
{
GObjectClass* object_class = G_OBJECT_CLASS(klass);
+ GType type = G_OBJECT_CLASS_TYPE(klass);
object_class->dispose = grilio_channel_dispose;
object_class->finalize = grilio_channel_finalize;
g_type_class_add_private(klass, sizeof(GRilIoChannelPriv));
- grilio_channel_signals[SIGNAL_CONNECTED] =
- g_signal_new(SIGNAL_CONNECTED_NAME, G_OBJECT_CLASS_TYPE(klass),
- G_SIGNAL_RUN_FIRST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0);
+ NEW_SIGNAL_NO_ARGS(type, CONNECTED);
grilio_channel_signals[SIGNAL_UNSOL_EVENT] =
- g_signal_new(SIGNAL_UNSOL_EVENT_NAME, G_OBJECT_CLASS_TYPE(klass),
+ g_signal_new(SIGNAL_UNSOL_EVENT_NAME, type,
G_SIGNAL_RUN_FIRST | G_SIGNAL_DETAILED, 0, NULL, NULL, NULL,
G_TYPE_NONE, 3, G_TYPE_UINT, G_TYPE_POINTER, G_TYPE_UINT);
grilio_channel_signals[SIGNAL_ERROR] =
- g_signal_new(SIGNAL_ERROR_NAME, G_OBJECT_CLASS_TYPE(klass),
+ g_signal_new(SIGNAL_ERROR_NAME, type,
G_SIGNAL_RUN_FIRST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 1, G_TYPE_ERROR);
- grilio_channel_signals[SIGNAL_EOF] =
- g_signal_new(SIGNAL_EOF_NAME, G_OBJECT_CLASS_TYPE(klass),
- G_SIGNAL_RUN_FIRST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0);
- grilio_channel_signals[SIGNAL_OWNER] =
- g_signal_new(SIGNAL_OWNER_NAME, G_OBJECT_CLASS_TYPE(klass),
- G_SIGNAL_RUN_FIRST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0);
- grilio_channel_signals[SIGNAL_PENDING] =
- g_signal_new(SIGNAL_PENDING_NAME, G_OBJECT_CLASS_TYPE(klass),
- G_SIGNAL_RUN_FIRST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0);
+ NEW_SIGNAL_NO_ARGS(type, EOF);
+ NEW_SIGNAL_NO_ARGS(type, OWNER);
+ NEW_SIGNAL_NO_ARGS(type, PENDING);
+ NEW_SIGNAL_NO_ARGS(type, ENABLED);
}
/*
|
[-]
[+]
|
Changed |
_service:tar_git:libgrilio-1.0.35.tar.bz2/test/test_io/test_io.c
^
|
@@ -531,6 +531,45 @@
}
/*==========================================================================*
+ * Enabled
+ *==========================================================================*/
+
+static
+void
+test_enabled(
+ void)
+{
+ Test* test = test_new(Test, "Enabled");
+ int event_count = 0;
+ gulong id;
+
+ /* Verify NULL tolerance */
+ grilio_channel_set_enabled(NULL, FALSE);
+ g_assert(!grilio_channel_add_enabled_changed_handler(NULL, NULL, NULL));
+ g_assert(!grilio_channel_add_enabled_changed_handler(test->io, NULL, NULL));
+
+ /* By default channel is enabled */
+ g_assert(test->io->enabled == TRUE);
+
+ /* Register the change handler */
+ id = grilio_channel_add_enabled_changed_handler(test->io,
+ test_basic_inc, &event_count);
+ g_assert(id);
+
+ /* Setting it to the same value won't generate the event */
+ grilio_channel_set_enabled(test->io, TRUE);
+ g_assert(!event_count);
+
+ /* But setting it to FALSE does generate one */
+ grilio_channel_set_enabled(test->io, FALSE);
+ g_assert(!test->io->enabled);
+ g_assert(event_count == 1);
+
+ grilio_channel_remove_handler(test->io, id);
+ test_free(test);
+}
+
+/*==========================================================================*
* Inject
*==========================================================================*/
@@ -3760,6 +3799,7 @@
g_test_add_func(TEST_PREFIX "Connected", test_connected);
g_test_add_func(TEST_PREFIX "IdTimeout", test_id_timeout);
g_test_add_func(TEST_PREFIX "Basic", test_basic);
+ g_test_add_func(TEST_PREFIX "Enabled", test_enabled);
g_test_add_func(TEST_PREFIX "Inject", test_inject);
g_test_add_func(TEST_PREFIX "Queue", test_queue);
g_test_add_func(TEST_PREFIX "AsyncWrite", test_async_write);
|