diff options
author | Jiyoung Yun <jy910.yun@samsung.com> | 2015-05-29 19:42:31 +0900 |
---|---|---|
committer | Jiyoung Yun <jy910.yun@samsung.com> | 2015-05-29 19:58:51 +0900 |
commit | a22dc810a43bf1bdb0eac0e911870ad955a84c8f (patch) | |
tree | b31634c08b40b0f3e6e587f62a54a0f044061ad9 | |
parent | 9729fa21943507b33e8c71d1bd7bd0abe7a0c01f (diff) | |
download | deviced-a22dc810a43bf1bdb0eac0e911870ad955a84c8f.tar.gz deviced-a22dc810a43bf1bdb0eac0e911870ad955a84c8f.tar.bz2 deviced-a22dc810a43bf1bdb0eac0e911870ad955a84c8f.zip |
block: Add device changed signal
/Org/Tizen/System/DeviceD/Block/Devices/[devnode]
Interfaces
org.tizen.system.deviced.Block
methods
Mount ("s" mount point)
Unmount ("i" unmount option) /* 0 : Normal, 1 : Force */
signals
DeviceChanged ("issssssisii"
block type, /* 0 : scsi, 1 : mmc */
devnode,
syspath,
fs_usgae,
fs_type,
fs_version,
fs_uuid_enc,
readonly, /* 0 : rw, 1 : ro */
mount_point,
state, /* 0 : unmount, 1 : mount */
primary) /* 0 : false, 1 : true */
Change-Id: I6ea8d7abd9d806a9b1e64e13fc011df3a710493f
Signed-off-by: Jiyoung Yun <jy910.yun@samsung.com>
-rw-r--r-- | src/block/block.c | 59 |
1 files changed, 58 insertions, 1 deletions
diff --git a/src/block/block.c b/src/block/block.c index 596b3590..3f932b7a 100644 --- a/src/block/block.c +++ b/src/block/block.c @@ -57,6 +57,7 @@ #define BLOCK_OBJECT_ADDED "ObjectAdded" #define BLOCK_OBJECT_REMOVED "ObjectRemoved" +#define BLOCK_DEVICE_CHANGED "DeviceChanged" enum block_dev_operation { BLOCK_DEV_MOUNT, @@ -158,6 +159,50 @@ static void broadcast_block_info(enum block_dev_operation op, } } +static void signal_device_changed(struct block_device *bdev) +{ + struct block_data *data; + char *arr[11]; + char str_block_type[32]; + char str_readonly[32]; + char str_state[32]; + char str_primary[32]; + char *str_null = ""; + const char *object_path; + + if (!bdev || !bdev->data) + return; + + data = bdev->data; + + /* Broadcast outside with Block iface */ + snprintf(str_block_type, sizeof(str_block_type), + "%d", data->block_type); + arr[0] = str_block_type; + arr[1] = (data->devnode ? data->devnode : str_null); + arr[2] = (data->syspath ? data->syspath : str_null); + arr[3] = (data->fs_usage ? data->fs_usage : str_null); + arr[4] = (data->fs_type ? data->fs_type : str_null); + arr[5] = (data->fs_version ? data->fs_version : str_null); + arr[6] = (data->fs_uuid_enc ? data->fs_uuid_enc : str_null); + snprintf(str_readonly, sizeof(str_readonly), + "%d", data->readonly); + arr[7] = str_readonly; + arr[8] = (data->mount_point ? data->mount_point : str_null); + snprintf(str_state, sizeof(str_state), + "%d", data->state); + arr[9] = str_state; + snprintf(str_primary, sizeof(str_primary), + "%d", data->primary); + arr[10] = str_primary; + + object_path = e_dbus_object_path_get(bdev->object); + broadcast_edbus_signal(object_path, + DEVICED_INTERFACE_BLOCK, + BLOCK_DEVICE_CHANGED, + "issssssisib", arr); +} + static bool check_primary_partition(const char *devnode) { char str[PATH_MAX]; @@ -560,6 +605,9 @@ out: /* Broadcast to mmc and usb storage module */ broadcast_block_info(BLOCK_DEV_MOUNT, data, r); + /* Broadcast outside with Block iface */ + signal_device_changed(bdev); + return NULL; } @@ -731,6 +779,9 @@ out: /* Broadcast to mmc and usb storage module */ broadcast_block_info(BLOCK_DEV_UNMOUNT, data, r); + /* Broadcast outside with Block iface */ + signal_device_changed(bdev); + return r; } @@ -1293,10 +1344,16 @@ static int init_block_object_iface(void) device_methods[i].reply_signature, device_methods[i].func); if (r < 0) - _E("fail to register %s to iface", + _E("fail to register %s method to iface", device_methods[i].member); } + r = e_dbus_interface_signal_add(iface, + BLOCK_DEVICE_CHANGED, "issssssisib"); + if (r < 0) + _E("fail to register %s signal to iface", + BLOCK_DEVICE_CHANGED); + return 0; } |