diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2009-05-29 11:32:40 +0200 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2009-05-29 11:32:40 +0200 |
commit | 46b0ec36ec1ad1f130ecc5b99e9330158a9a283f (patch) | |
tree | 78e6ab8d42d3296556ab803473338b657597c896 /src/rfkill.c | |
parent | 784efa53be9485eb951e495306c2e944dcb7ff74 (diff) | |
download | connman-46b0ec36ec1ad1f130ecc5b99e9330158a9a283f.tar.gz connman-46b0ec36ec1ad1f130ecc5b99e9330158a9a283f.tar.bz2 connman-46b0ec36ec1ad1f130ecc5b99e9330158a9a283f.zip |
Add basic parsing of RFKILL events
Diffstat (limited to 'src/rfkill.c')
-rw-r--r-- | src/rfkill.c | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/src/rfkill.c b/src/rfkill.c index efe979c7..84693b43 100644 --- a/src/rfkill.c +++ b/src/rfkill.c @@ -28,13 +28,39 @@ #include <fcntl.h> #include <unistd.h> #include <string.h> +#include <stdint.h> #include "connman.h" +enum rfkill_type { + RFKILL_TYPE_ALL = 0, + RFKILL_TYPE_WLAN, + RFKILL_TYPE_BLUETOOTH, + RFKILL_TYPE_UWB, + RFKILL_TYPE_WIMAX, + RFKILL_TYPE_WWAN, +}; + +enum rfkill_operation { + RFKILL_OP_ADD = 0, + RFKILL_OP_DEL, + RFKILL_OP_CHANGE, + RFKILL_OP_CHANGE_ALL, +}; + +struct rfkill_event { + uint32_t idx; + uint8_t type; + uint8_t op; + uint8_t soft; + uint8_t hard; +}; + static gboolean rfkill_event(GIOChannel *chan, GIOCondition cond, gpointer data) { unsigned char buf[32]; + struct rfkill_event *event = (void *) buf; gsize len; GIOError err; @@ -50,7 +76,12 @@ static gboolean rfkill_event(GIOChannel *chan, return FALSE; } - /* process RFKILL event */ + if (len != sizeof(struct rfkill_event)) + return TRUE; + + connman_info("RFKILL event: idx %u type %u op %u soft %u hard %u", + event->idx, event->type, event->op, + event->soft, event->hard); return TRUE; } |