00001
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef DISCOVER_H
00031 #define DISCOVER_H
00032
00033 #include <stdbool.h>
00034
00035 #ifdef __cplusplus
00036 extern "C" {
00037 #endif
00038
00073 typedef enum {
00075 DISCOVER_SUCCESS,
00077 DISCOVER_EIO,
00079 DISCOVER_EXML,
00081 DISCOVER_ESYS,
00083 DISCOVER_EBUSDISABLED,
00085 DISCOVER_EBUSNOTFOUND,
00087 DISCOVER_EDATANOTFOUND,
00089 DISCOVER_EDEVICENOTFOUND,
00091 DISCOVER_EBADVERSION,
00093 DISCOVER_ENOIMPL
00094 } discover_error_code_t;
00095
00096 struct discover_error;
00097
00099 typedef void *(discover_create_message_t)(struct discover_error **, char *);
00100
00106 typedef struct discover_error {
00108 discover_error_code_t code;
00110 char *message;
00112 discover_create_message_t *create_message;
00113 } discover_error_t;
00114
00116 typedef struct discover_bus_map discover_bus_map_t;
00118 typedef struct discover_device discover_device_t;
00120 typedef struct discover_data discover_data_t;
00122 typedef struct discover_xml_busclass discover_xml_busclass_t;
00124 typedef struct discover_xml_vendor discover_xml_vendor_t;
00126 typedef struct discover_xml_url discover_xml_url_t;
00127
00129 typedef discover_device_t *(discover_device_func_t)(discover_error_t *);
00131 typedef discover_xml_busclass_t *(discover_xml_busclass_func_t)(discover_error_t *);
00133 typedef discover_xml_vendor_t *(discover_xml_vendor_func_t)(discover_error_t *);
00135 typedef discover_xml_url_t *(discover_xml_url_func_t)(discover_error_t *);
00137 typedef void (discover_free_func_t)(void);
00138
00139 #include <sysdep.h>
00141 typedef discover_sysdep_data_t *(discover_sysdep_raw_func_t)(void);
00142
00146 typedef enum {
00147 ATA,
00148 PCI,
00149 PCMCIA,
00150 SCSI,
00151 USB
00152 } discover_bus_t;
00153
00157 #define BUS_COUNT 5
00158
00162 typedef enum {
00163 VENDOR_TYPE,
00164 BUSCLASS_TYPE,
00165 DEVICE_TYPE
00166 } discover_filetype_t;
00167
00168
00178 struct discover_bus_map {
00180 char *name;
00182 int scan_default;
00184 int scan_never;
00186 discover_sysdep_raw_func_t *get_raw;
00187 };
00188
00192 discover_device_t *discover_get_devices(discover_bus_t bus, discover_error_t *status);
00193
00195 void discover_free_devices(void);
00196
00197 discover_error_t *discover_error_new(void);
00198 void discover_error_free(discover_error_t *status);
00199 char *discover_strerror(discover_error_t *err);
00200 int discover_major_version(void);
00201 int discover_minor_version(void);
00202 int discover_micro_version(void);
00203
00204
00205
00206
00207
00208 discover_device_t *discover_device_new(void);
00209
00210
00211 discover_device_t *discover_device_find(char *discover_class,
00212 discover_error_t *status);
00213
00214 char *discover_device_get_data(discover_device_t *device,
00215 char *path, char *version,
00216 discover_error_t *status);
00217
00218 void
00219 discover_device_copy(discover_device_t *src, discover_device_t *dst);
00220
00221 char *discover_device_get_busclass(discover_device_t *device);
00222 char *discover_device_get_model_id(discover_device_t *device);
00223 char *discover_device_get_model_name(discover_device_t *device);
00224 char *discover_device_get_vendor_id(discover_device_t *device);
00225 char *discover_device_get_vendor_name(discover_device_t *device);
00226
00227 discover_data_t *
00228 discover_device_get_data_struct(discover_device_t *device);
00229
00230 discover_device_t *
00231 discover_device_get_next(discover_device_t *device);
00232
00233 void discover_device_free(discover_device_t *devices, int free_data);
00234
00235
00236
00237
00238
00239 discover_data_t *discover_data_new(void);
00240
00241 char *discover_data_get_class(discover_data_t *data);
00242 char *discover_data_get_text(discover_data_t *data);
00243 discover_data_t *discover_data_get_parent(discover_data_t *data);
00244 discover_data_t *discover_data_get_child(discover_data_t *data);
00245 discover_data_t *discover_data_get_next(discover_data_t *data);
00246 discover_data_t *discover_data_get_prev(discover_data_t *prev);
00247 discover_data_t *discover_data_get_first(discover_data_t *data);
00248 void discover_data_free(discover_data_t *data_tree);
00249
00250 #ifdef __cplusplus
00251 }
00252 #endif
00253
00254 #endif
00255
00256
00257
00258
00259
00260
00261
00262