118c2aff7Sartem /***************************************************************************
218c2aff7Sartem  * CVSID: $Id$
318c2aff7Sartem  *
418c2aff7Sartem  * libhal-storage.h : HAL convenience library for storage devices and volumes
518c2aff7Sartem  *
618c2aff7Sartem  * Copyright (C) 2004 Red Hat, Inc.
718c2aff7Sartem  *
818c2aff7Sartem  * Author: David Zeuthen <davidz@redhat.com>
918c2aff7Sartem  *
1018c2aff7Sartem  * Licensed under the Academic Free License version 2.1
1118c2aff7Sartem  *
1218c2aff7Sartem  * This program is free software; you can redistribute it and/or modify
1318c2aff7Sartem  * it under the terms of the GNU General Public License as published by
1418c2aff7Sartem  * the Free Software Foundation; either version 2 of the License, or
1518c2aff7Sartem  * (at your option) any later version.
1618c2aff7Sartem  *
1718c2aff7Sartem  * This program is distributed in the hope that it will be useful,
1818c2aff7Sartem  * but WITHOUT ANY WARRANTY; without even the implied warranty of
1918c2aff7Sartem  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2018c2aff7Sartem  * GNU General Public License for more details.
2118c2aff7Sartem  *
2218c2aff7Sartem  * You should have received a copy of the GNU General Public License
2318c2aff7Sartem  * along with this program; if not, write to the Free Software
2418c2aff7Sartem  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
2518c2aff7Sartem  *
2618c2aff7Sartem  **************************************************************************/
2718c2aff7Sartem 
2818c2aff7Sartem #ifndef LIBHAL_STORAGE_H
2918c2aff7Sartem #define LIBHAL_STORAGE_H
3018c2aff7Sartem 
3118c2aff7Sartem #include <libhal.h>
3218c2aff7Sartem 
3318c2aff7Sartem #if defined(__cplusplus)
3418c2aff7Sartem extern "C" {
3518c2aff7Sartem #if 0
3618c2aff7Sartem } /* shut up emacs indenting */
3718c2aff7Sartem #endif
3818c2aff7Sartem #endif
3918c2aff7Sartem 
4018c2aff7Sartem struct LibHalDrive_s;
4118c2aff7Sartem typedef struct LibHalDrive_s LibHalDrive;
4218c2aff7Sartem struct LibHalVolume_s;
4318c2aff7Sartem typedef struct LibHalVolume_s LibHalVolume;
4418c2aff7Sartem struct LibHalStoragePolicy_s;
4518c2aff7Sartem typedef struct LibHalStoragePolicy_s LibHalStoragePolicy;
4618c2aff7Sartem 
4718c2aff7Sartem 
4818c2aff7Sartem typedef enum {
4918c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK           = 0x10000,
5018c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_IDE       = 0x10001,
5118c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_SCSI      = 0x10002,
5218c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_USB       = 0x10003,
5318c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_IEEE1394  = 0x10004,
5418c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_DISK                     = 0x10100,
5518c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_DISK_IDE                 = 0x10101,
5618c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_DISK_SCSI                = 0x10102,
5718c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_DISK_USB                 = 0x10103,
5818c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_DISK_IEEE1394            = 0x10104,
5918c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_CDROM                    = 0x10200,
6018c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_CDROM_IDE                = 0x10201,
6118c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_CDROM_SCSI               = 0x10202,
6218c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_CDROM_USB                = 0x10203,
6318c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_CDROM_IEEE1394           = 0x10204,
6418c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_FLOPPY                   = 0x10300,
6518c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_IDE               = 0x10301,
6618c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_SCSI              = 0x10302,
6718c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_USB               = 0x10303,
6818c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_IEEE1394          = 0x10304,
6918c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_TAPE                     = 0x10400,
7018c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_COMPACT_FLASH            = 0x10500,
7118c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_MEMORY_STICK             = 0x10600,
7218c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_SMART_MEDIA              = 0x10700,
7318c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_SD_MMC                   = 0x10800,
7418c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_CAMERA                   = 0x10900,
7518c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_PORTABLE_AUDIO_PLAYER    = 0x10a00,
7618c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_ZIP                      = 0x10b00,
7718c2aff7Sartem         LIBHAL_STORAGE_ICON_DRIVE_JAZ                      = 0x10c00,
7818c2aff7Sartem         LIBHAL_STORAGE_ICON_DRIVE_FLASH_KEY                = 0x10d00,
7918c2aff7Sartem 
8018c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK          = 0x20000,
8118c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_IDE      = 0x20001,
8218c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_SCSI     = 0x20002,
8318c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_USB      = 0x20003,
8418c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_IEEE1394 = 0x20004,
8518c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_DISK                    = 0x20100,
8618c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_DISK_IDE                = 0x20101,
8718c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_DISK_SCSI               = 0x20102,
8818c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_DISK_USB                = 0x20103,
8918c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_DISK_IEEE1394           = 0x20104,
9018c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_CDROM                   = 0x20200,
9118c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_CDROM_IDE               = 0x20201,
9218c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_CDROM_SCSI              = 0x20202,
9318c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_CDROM_USB               = 0x20203,
9418c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_CDROM_IEEE1394          = 0x20204,
9518c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_FLOPPY                  = 0x20300,
9618c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_IDE              = 0x20301,
9718c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_SCSI             = 0x20302,
9818c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_USB              = 0x20303,
9918c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_IEEE1394         = 0x20304,
10018c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_TAPE                    = 0x20400,
10118c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_COMPACT_FLASH           = 0x20500,
10218c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_MEMORY_STICK            = 0x20600,
10318c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_SMART_MEDIA             = 0x20700,
10418c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_SD_MMC                  = 0x20800,
10518c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_CAMERA                  = 0x20900,
10618c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_PORTABLE_AUDIO_PLAYER   = 0x20a00,
10718c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_ZIP                     = 0x20b00,
10818c2aff7Sartem         LIBHAL_STORAGE_ICON_VOLUME_JAZ                     = 0x20c00,
10918c2aff7Sartem         LIBHAL_STORAGE_ICON_VOLUME_FLASH_KEY               = 0x20d00,
11018c2aff7Sartem 
11118c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_CDROM                     = 0x30000,
11218c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_CDR                       = 0x30001,
11318c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_CDRW                      = 0x30002,
11418c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_DVDROM                    = 0x30003,
11518c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_DVDRAM                    = 0x30004,
11618c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_DVDR                      = 0x30005,
11718c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_DVDRW                     = 0x30006,
11818c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_DVDPLUSR                  = 0x30007,
11918c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_DVDPLUSRW                 = 0x30008,
12018c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_DVDPLUSRWDL               = 0x30009,
12118c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_BDROM                     = 0x3000a,
12218c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_BDR                       = 0x3000b,
12318c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_BDRE                      = 0x3000c,
12418c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_HDDVDROM                  = 0x3000d,
12518c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_HDDVDR                    = 0x3000e,
12618c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_HDDVDRW                   = 0x3000f
12718c2aff7Sartem } LibHalStoragePolicyIcon;
12818c2aff7Sartem 
12918c2aff7Sartem typedef struct {
13018c2aff7Sartem 	LibHalStoragePolicyIcon icon;
13118c2aff7Sartem 	const char *icon_path;
13218c2aff7Sartem } LibHalStoragePolicyIconPair;
13318c2aff7Sartem 
13418c2aff7Sartem LibHalStoragePolicy *libhal_storage_policy_new		    (void) LIBHAL_DEPRECATED;
13518c2aff7Sartem void                 libhal_storage_policy_free		    (LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
13618c2aff7Sartem 
137*55fea89dSDan Cross void                 libhal_storage_policy_set_icon_path    (LibHalStoragePolicy *policy,
13818c2aff7Sartem 		   					     LibHalStoragePolicyIcon icon,
13918c2aff7Sartem 							     const char *path) LIBHAL_DEPRECATED;
14018c2aff7Sartem 
141*55fea89dSDan Cross void                 libhal_storage_policy_set_icon_mapping (LibHalStoragePolicy *policy,
14218c2aff7Sartem 							     LibHalStoragePolicyIconPair *pairs) LIBHAL_DEPRECATED;
143*55fea89dSDan Cross const char  	    *libhal_storage_policy_lookup_icon	    (LibHalStoragePolicy *policy,
14418c2aff7Sartem 						  	     LibHalStoragePolicyIcon icon) LIBHAL_DEPRECATED;
14518c2aff7Sartem 
14618c2aff7Sartem typedef enum {
14718c2aff7Sartem 	LIBHAL_DRIVE_BUS_UNKNOWN     = 0x00,
14818c2aff7Sartem 	LIBHAL_DRIVE_BUS_IDE         = 0x01,
14918c2aff7Sartem 	LIBHAL_DRIVE_BUS_SCSI        = 0x02,
15018c2aff7Sartem 	LIBHAL_DRIVE_BUS_USB         = 0x03,
15118c2aff7Sartem 	LIBHAL_DRIVE_BUS_IEEE1394    = 0x04,
15218c2aff7Sartem 	LIBHAL_DRIVE_BUS_CCW         = 0x05
15318c2aff7Sartem } LibHalDriveBus;
15418c2aff7Sartem 
15518c2aff7Sartem typedef enum {
15618c2aff7Sartem 	LIBHAL_DRIVE_TYPE_REMOVABLE_DISK        = 0x00,
15718c2aff7Sartem 	LIBHAL_DRIVE_TYPE_DISK                  = 0x01,
15818c2aff7Sartem 	LIBHAL_DRIVE_TYPE_CDROM                 = 0x02,
15918c2aff7Sartem 	LIBHAL_DRIVE_TYPE_FLOPPY                = 0x03,
16018c2aff7Sartem 	LIBHAL_DRIVE_TYPE_TAPE                  = 0x04,
16118c2aff7Sartem 	LIBHAL_DRIVE_TYPE_COMPACT_FLASH         = 0x05,
16218c2aff7Sartem 	LIBHAL_DRIVE_TYPE_MEMORY_STICK          = 0x06,
16318c2aff7Sartem 	LIBHAL_DRIVE_TYPE_SMART_MEDIA           = 0x07,
16418c2aff7Sartem 	LIBHAL_DRIVE_TYPE_SD_MMC                = 0x08,
16518c2aff7Sartem 	LIBHAL_DRIVE_TYPE_CAMERA                = 0x09,
16618c2aff7Sartem 	LIBHAL_DRIVE_TYPE_PORTABLE_AUDIO_PLAYER = 0x0a,
16718c2aff7Sartem 	LIBHAL_DRIVE_TYPE_ZIP                   = 0x0b,
16818c2aff7Sartem 	LIBHAL_DRIVE_TYPE_JAZ                   = 0x0c,
16918c2aff7Sartem 	LIBHAL_DRIVE_TYPE_FLASHKEY              = 0x0d
17018c2aff7Sartem } LibHalDriveType;
17118c2aff7Sartem 
17218c2aff7Sartem typedef enum {
17318c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_CDROM       = 0x00001,
17418c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_CDR         = 0x00002,
17518c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_CDRW        = 0x00004,
17618c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_DVDRAM      = 0x00008,
17718c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_DVDROM      = 0x00010,
17818c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_DVDR        = 0x00020,
17918c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_DVDRW       = 0x00040,
18018c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSR    = 0x00080,
18118c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSRW   = 0x00100,
18218c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSRDL  = 0x00200,
18318c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSRWDL = 0x00400,
18418c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_BDROM       = 0x00800,
18518c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_BDR         = 0x01000,
18618c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_BDRE        = 0x02000,
18718c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_HDDVDROM    = 0x04000,
18818c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_HDDVDR      = 0x08000,
18918c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_HDDVDRW     = 0x10000
19018c2aff7Sartem } LibHalDriveCdromCaps;
19118c2aff7Sartem 
192*55fea89dSDan Cross LibHalDrive         *libhal_drive_from_udi                    (LibHalContext *hal_ctx,
19318c2aff7Sartem 							       const char *udi);
194*55fea89dSDan Cross LibHalDrive         *libhal_drive_from_device_file            (LibHalContext *hal_ctx,
19518c2aff7Sartem 							       const char *device_file);
19618c2aff7Sartem void                 libhal_drive_free                        (LibHalDrive *drive);
19718c2aff7Sartem 
19818c2aff7Sartem dbus_bool_t          libhal_drive_is_hotpluggable          (LibHalDrive      *drive);
19918c2aff7Sartem dbus_bool_t          libhal_drive_uses_removable_media     (LibHalDrive      *drive);
20018c2aff7Sartem dbus_bool_t          libhal_drive_is_media_detected        (LibHalDrive      *drive);
20118c2aff7Sartem dbus_uint64_t        libhal_drive_get_size                 (LibHalDrive      *drive);
20218c2aff7Sartem dbus_uint64_t        libhal_drive_get_media_size           (LibHalDrive      *drive);
20318c2aff7Sartem const char          *libhal_drive_get_partition_scheme     (LibHalDrive      *drive);
20418c2aff7Sartem dbus_bool_t          libhal_drive_no_partitions_hint       (LibHalDrive      *drive);
20518c2aff7Sartem dbus_bool_t          libhal_drive_requires_eject           (LibHalDrive      *drive);
20618c2aff7Sartem LibHalDriveType      libhal_drive_get_type                 (LibHalDrive      *drive);
20718c2aff7Sartem LibHalDriveBus       libhal_drive_get_bus                  (LibHalDrive      *drive);
20818c2aff7Sartem LibHalDriveCdromCaps libhal_drive_get_cdrom_caps           (LibHalDrive      *drive);
20918c2aff7Sartem unsigned int         libhal_drive_get_device_major         (LibHalDrive      *drive);
21018c2aff7Sartem unsigned int         libhal_drive_get_device_minor         (LibHalDrive      *drive);
21118c2aff7Sartem const char          *libhal_drive_get_type_textual         (LibHalDrive      *drive);
21218c2aff7Sartem const char          *libhal_drive_get_device_file          (LibHalDrive      *drive);
21318c2aff7Sartem const char          *libhal_drive_get_udi                  (LibHalDrive      *drive);
21418c2aff7Sartem const char          *libhal_drive_get_serial               (LibHalDrive      *drive);
21518c2aff7Sartem const char          *libhal_drive_get_firmware_version     (LibHalDrive      *drive);
21618c2aff7Sartem const char          *libhal_drive_get_model                (LibHalDrive      *drive);
21718c2aff7Sartem const char          *libhal_drive_get_vendor               (LibHalDrive      *drive);
21818c2aff7Sartem const char          *libhal_drive_get_physical_device_udi  (LibHalDrive      *drive);
21918c2aff7Sartem 
22018c2aff7Sartem const char          *libhal_drive_get_dedicated_icon_drive    (LibHalDrive      *drive);
22118c2aff7Sartem const char          *libhal_drive_get_dedicated_icon_volume   (LibHalDrive      *drive);
22218c2aff7Sartem 
223*55fea89dSDan Cross char                *libhal_drive_policy_compute_display_name (LibHalDrive        *drive,
224*55fea89dSDan Cross 							       LibHalVolume        *volume,
22518c2aff7Sartem 							       LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
226*55fea89dSDan Cross char                *libhal_drive_policy_compute_icon_name    (LibHalDrive         *drive,
227*55fea89dSDan Cross 							       LibHalVolume        *volume,
22818c2aff7Sartem 							       LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
22918c2aff7Sartem 
230*55fea89dSDan Cross dbus_bool_t          libhal_drive_policy_is_mountable            (LibHalDrive         *drive,
23118c2aff7Sartem 								  LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
232*55fea89dSDan Cross const char          *libhal_drive_policy_get_desired_mount_point (LibHalDrive         *drive,
23318c2aff7Sartem 								  LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
234*55fea89dSDan Cross const char          *libhal_drive_policy_get_mount_options       (LibHalDrive         *drive,
23518c2aff7Sartem 							          LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
236*55fea89dSDan Cross const char          *libhal_drive_policy_get_mount_fs            (LibHalDrive      *drive,
23718c2aff7Sartem 								  LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
23818c2aff7Sartem 
239*55fea89dSDan Cross char               **libhal_drive_find_all_volumes (LibHalContext *hal_ctx,
24018c2aff7Sartem 						    LibHalDrive   *drive,
24118c2aff7Sartem 						    int 	  *num_volumes);
24218c2aff7Sartem 
24318c2aff7Sartem 
24418c2aff7Sartem char        *libhal_drive_policy_default_get_mount_root                (LibHalContext *hal_ctx) LIBHAL_DEPRECATED;
24518c2aff7Sartem dbus_bool_t  libhal_drive_policy_default_use_managed_keyword           (LibHalContext *hal_ctx) LIBHAL_DEPRECATED;
24618c2aff7Sartem char        *libhal_drive_policy_default_get_managed_keyword_primary   (LibHalContext *hal_ctx) LIBHAL_DEPRECATED;
24718c2aff7Sartem char        *libhal_drive_policy_default_get_managed_keyword_secondary (LibHalContext *hal_ctx) LIBHAL_DEPRECATED;
24818c2aff7Sartem 
24918c2aff7Sartem 
25018c2aff7Sartem typedef enum {
25118c2aff7Sartem 	LIBHAL_VOLUME_USAGE_MOUNTABLE_FILESYSTEM,
25218c2aff7Sartem 	LIBHAL_VOLUME_USAGE_PARTITION_TABLE,
25318c2aff7Sartem 	LIBHAL_VOLUME_USAGE_RAID_MEMBER,
25418c2aff7Sartem 	LIBHAL_VOLUME_USAGE_CRYPTO,
25518c2aff7Sartem 	LIBHAL_VOLUME_USAGE_UNKNOWN,
25618c2aff7Sartem 	LIBHAL_VOLUME_USAGE_OTHER
25718c2aff7Sartem } LibHalVolumeUsage;
25818c2aff7Sartem 
25918c2aff7Sartem typedef enum {
26018c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_CDROM       = 0x00,
26118c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_CDR         = 0x01,
26218c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_CDRW        = 0x02,
26318c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_DVDROM      = 0x03,
26418c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_DVDRAM      = 0x04,
26518c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_DVDR        = 0x05,
26618c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_DVDRW       = 0x06,
26718c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_DVDPLUSR    = 0x07,
26818c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_DVDPLUSRW   = 0x08,
26918c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_DVDPLUSR_DL = 0x09,
27018c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_BDROM       = 0x0a,
27118c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_BDR         = 0x0b,
27218c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_BDRE        = 0x0c,
27318c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_HDDVDROM    = 0x0d,
27418c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_HDDVDR      = 0x0e,
27518c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_HDDVDRW     = 0x0f
27618c2aff7Sartem } LibHalVolumeDiscType;
27718c2aff7Sartem 
278*55fea89dSDan Cross LibHalVolume     *libhal_volume_from_udi                      (LibHalContext *hal_ctx,
27918c2aff7Sartem 							       const char *udi);
280*55fea89dSDan Cross LibHalVolume     *libhal_volume_from_device_file              (LibHalContext *hal_ctx,
28118c2aff7Sartem 							       const char *device_file);
28218c2aff7Sartem void              libhal_volume_free                          (LibHalVolume     *volume);
28318c2aff7Sartem dbus_uint64_t     libhal_volume_get_size                      (LibHalVolume     *volume);
28418c2aff7Sartem dbus_uint64_t     libhal_volume_get_disc_capacity             (LibHalVolume     *volume);
28518c2aff7Sartem 
28618c2aff7Sartem const char          *libhal_volume_get_udi                       (LibHalVolume     *volume);
28718c2aff7Sartem const char          *libhal_volume_get_device_file               (LibHalVolume     *volume);
28818c2aff7Sartem unsigned int         libhal_volume_get_device_major              (LibHalVolume     *volume);
28918c2aff7Sartem unsigned int         libhal_volume_get_device_minor              (LibHalVolume     *volume);
29018c2aff7Sartem const char          *libhal_volume_get_fstype                    (LibHalVolume     *volume);
29118c2aff7Sartem const char          *libhal_volume_get_fsversion                 (LibHalVolume     *volume);
29218c2aff7Sartem LibHalVolumeUsage    libhal_volume_get_fsusage                   (LibHalVolume     *volume);
29318c2aff7Sartem dbus_bool_t          libhal_volume_is_mounted                    (LibHalVolume     *volume);
29418c2aff7Sartem dbus_bool_t          libhal_volume_is_mounted_read_only          (LibHalVolume     *volume);
29518c2aff7Sartem dbus_bool_t          libhal_volume_is_partition                  (LibHalVolume     *volume);
29618c2aff7Sartem dbus_bool_t          libhal_volume_is_disc                       (LibHalVolume     *volume);
29718c2aff7Sartem 
29818c2aff7Sartem const char          *libhal_volume_get_partition_scheme          (LibHalVolume     *volume);
29918c2aff7Sartem const char          *libhal_volume_get_partition_type            (LibHalVolume     *volume);
30018c2aff7Sartem const char          *libhal_volume_get_partition_label           (LibHalVolume     *volume);
30118c2aff7Sartem const char          *libhal_volume_get_partition_uuid            (LibHalVolume     *volume);
30218c2aff7Sartem const char         **libhal_volume_get_partition_flags           (LibHalVolume     *volume);
30318c2aff7Sartem unsigned int         libhal_volume_get_partition_number          (LibHalVolume     *volume);
30418c2aff7Sartem dbus_uint64_t        libhal_volume_get_partition_start_offset    (LibHalVolume     *volume);
30518c2aff7Sartem dbus_uint64_t        libhal_volume_get_partition_media_size      (LibHalVolume     *volume);
30618c2aff7Sartem 
30718c2aff7Sartem const char          *libhal_volume_get_label                     (LibHalVolume     *volume);
30818c2aff7Sartem const char          *libhal_volume_get_mount_point               (LibHalVolume     *volume);
30918c2aff7Sartem const char          *libhal_volume_get_uuid                      (LibHalVolume     *volume);
31018c2aff7Sartem const char          *libhal_volume_get_storage_device_udi        (LibHalVolume     *volume);
31118c2aff7Sartem 
31218c2aff7Sartem const char          *libhal_volume_crypto_get_backing_volume_udi (LibHalVolume     *volume);
31318c2aff7Sartem char                *libhal_volume_crypto_get_clear_volume_udi   (LibHalContext    *hal_ctx, LibHalVolume *volume);
31418c2aff7Sartem 
31518c2aff7Sartem 
31618c2aff7Sartem dbus_bool_t          libhal_volume_disc_has_audio             (LibHalVolume     *volume);
31718c2aff7Sartem dbus_bool_t          libhal_volume_disc_has_data              (LibHalVolume     *volume);
31818c2aff7Sartem dbus_bool_t          libhal_volume_disc_is_blank              (LibHalVolume     *volume);
31918c2aff7Sartem dbus_bool_t          libhal_volume_disc_is_rewritable         (LibHalVolume     *volume);
32018c2aff7Sartem dbus_bool_t          libhal_volume_disc_is_appendable         (LibHalVolume     *volume);
32118c2aff7Sartem LibHalVolumeDiscType libhal_volume_get_disc_type              (LibHalVolume     *volume);
32218c2aff7Sartem 
32318c2aff7Sartem int               libhal_volume_get_msdos_part_table_type     (LibHalVolume     *volume)  LIBHAL_DEPRECATED;
32418c2aff7Sartem dbus_uint64_t     libhal_volume_get_msdos_part_table_start    (LibHalVolume     *volume)  LIBHAL_DEPRECATED;
32518c2aff7Sartem dbus_uint64_t     libhal_volume_get_msdos_part_table_size     (LibHalVolume     *volume)  LIBHAL_DEPRECATED;
326*55fea89dSDan Cross 
32718c2aff7Sartem 
32818c2aff7Sartem dbus_bool_t       libhal_volume_should_ignore 	              (LibHalVolume     *volume);
32918c2aff7Sartem 
33018c2aff7Sartem char             *libhal_volume_policy_compute_size_as_string (LibHalVolume     *volume) LIBHAL_DEPRECATED;
33118c2aff7Sartem 
332*55fea89dSDan Cross char             *libhal_volume_policy_compute_display_name   (LibHalDrive         *drive,
333*55fea89dSDan Cross 							       LibHalVolume        *volume,
33418c2aff7Sartem 							       LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
335*55fea89dSDan Cross char             *libhal_volume_policy_compute_icon_name      (LibHalDrive         *drive,
336*55fea89dSDan Cross 							       LibHalVolume        *volume,
33718c2aff7Sartem 							       LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
33818c2aff7Sartem 
339*55fea89dSDan Cross dbus_bool_t       libhal_volume_policy_should_be_visible      (LibHalDrive         *drive,
340*55fea89dSDan Cross 							       LibHalVolume        *volume,
341*55fea89dSDan Cross 							       LibHalStoragePolicy *policy,
34218c2aff7Sartem 							       const char          *target_mount_point) LIBHAL_DEPRECATED;
34318c2aff7Sartem 
344*55fea89dSDan Cross dbus_bool_t       libhal_volume_policy_is_mountable		(LibHalDrive         *drive,
345*55fea89dSDan Cross 								 LibHalVolume        *volume,
34618c2aff7Sartem 								 LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
347*55fea89dSDan Cross const char       *libhal_volume_policy_get_desired_mount_point  (LibHalDrive         *drive,
348*55fea89dSDan Cross 								 LibHalVolume        *volume,
34918c2aff7Sartem 								 LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
350*55fea89dSDan Cross const char       *libhal_volume_policy_get_mount_options   	(LibHalDrive         *drive,
351*55fea89dSDan Cross 							    	 LibHalVolume        *volume,
35218c2aff7Sartem 							    	 LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
353*55fea89dSDan Cross const char       *libhal_volume_policy_get_mount_fs        	(LibHalDrive         *drive,
354*55fea89dSDan Cross 							    	 LibHalVolume        *volume,
35518c2aff7Sartem 							    	 LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
35618c2aff7Sartem 
35718c2aff7Sartem 
35818c2aff7Sartem #if defined(__cplusplus)
35918c2aff7Sartem }
36018c2aff7Sartem #endif
36118c2aff7Sartem 
36218c2aff7Sartem #endif /* LIBHAL_STORAGE_H */
363