1 /***************************************************************************
2 * Copyright (C) 2007 by Arep *
3 * Support is provided through the forums at *
4 * http://wii.console-tribe.com *
6 * This program is free software; you can redistribute it and/or modify *
7 * it under the terms of the GNU General Public License as published by *
8 * the Free Software Foundation; either version 2 of the License, or *
9 * (at your option) any later version. *
11 * This program is distributed in the hope that it will be useful, *
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14 * GNU General Public License for more details. *
16 * You should have received a copy of the GNU General Public License *
17 * along with this program; if not, write to the *
18 * Free Software Foundation, Inc., *
19 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
20 ***************************************************************************/
22 #ifndef DISC_H_INCLUDED
23 #define DISC_H_INCLUDED
26 #include <sys/types.h>
45 DISC_REGION_AUSTRALIA,
56 typedef struct disc_s disc;
60 FRIIDUMPLIB_EXPORT disc *disc_new (char *dvd_device, u_int32_t command);
61 FRIIDUMPLIB_EXPORT bool disc_init (disc *d, u_int32_t forced_type, u_int32_t sectors_no);
62 FRIIDUMPLIB_EXPORT void *disc_destroy (disc *d);
63 FRIIDUMPLIB_EXPORT int disc_read_sector (disc *d, u_int32_t sector_no, u_int8_t **data, u_int8_t **rawdata);
64 FRIIDUMPLIB_EXPORT bool disc_set_read_method (disc *d, int method);
65 FRIIDUMPLIB_EXPORT void disc_set_unscrambling (disc *d, bool unscramble);
66 FRIIDUMPLIB_EXPORT void disc_set_speed (disc *d, u_int32_t speed);
67 FRIIDUMPLIB_EXPORT void disc_set_streaming_speed (disc *d, u_int32_t speed);
68 FRIIDUMPLIB_EXPORT bool disc_stop_unit (disc *d, bool start);
69 FRIIDUMPLIB_EXPORT void init_range (disc *d, u_int32_t sec_disc, u_int32_t sec_mem);
70 FRIIDUMPLIB_EXPORT bool disc_hlds_e7_scan (disc *d, const char *json_path, const char *dump_prefix);
71 FRIIDUMPLIB_EXPORT bool disc_hlds_e7_subcmd_sweep (disc *d, const char *json_path, const char *dump_prefix);
72 FRIIDUMPLIB_EXPORT bool disc_hlds_e7_memrange_sweep (disc *d, const char *json_path, const char *dump_prefix);
75 FRIIDUMPLIB_EXPORT u_int32_t disc_get_sectors_no (disc *d);
76 FRIIDUMPLIB_EXPORT u_int32_t disc_get_layerbreak (disc *d);
77 FRIIDUMPLIB_EXPORT u_int32_t disc_get_command (disc *d);
78 FRIIDUMPLIB_EXPORT u_int32_t disc_get_method (disc *d);
79 FRIIDUMPLIB_EXPORT u_int32_t disc_get_def_method (disc *d);
80 FRIIDUMPLIB_EXPORT u_int32_t disc_get_sec_disc (disc *d);
81 FRIIDUMPLIB_EXPORT u_int32_t disc_get_sec_mem (disc *d);
83 FRIIDUMPLIB_EXPORT char *disc_get_type (disc *d, disc_type *dt, char **dt_s);
84 FRIIDUMPLIB_EXPORT char *disc_get_gameid (disc *d, char **gid_s);
85 FRIIDUMPLIB_EXPORT char *disc_get_region (disc *d, disc_region *dr, char **dr_s);
86 FRIIDUMPLIB_EXPORT char *disc_get_maker (disc *d, char **m, char **m_s);
87 FRIIDUMPLIB_EXPORT char *disc_get_version (disc *d, u_int8_t *v, char **v_s);
88 FRIIDUMPLIB_EXPORT char *disc_get_title (disc *d, char **t_s);
89 FRIIDUMPLIB_EXPORT bool disc_get_update (disc *d);
91 FRIIDUMPLIB_EXPORT char *disc_get_drive_model_string (disc *d);
92 FRIIDUMPLIB_EXPORT char *disc_get_device (disc *d);
93 FRIIDUMPLIB_EXPORT void *disc_get_native_handle (disc *d);
94 FRIIDUMPLIB_EXPORT bool disc_get_drive_support_status (disc *d);
95 FRIIDUMPLIB_EXPORT const char *disc_get_hlds_e7_profile_name (disc *d);
96 FRIIDUMPLIB_EXPORT const char *disc_get_hlds_e7_support_tier (disc *d);
97 FRIIDUMPLIB_EXPORT const char *disc_get_hlds_e7_family (disc *d);
98 FRIIDUMPLIB_EXPORT const char *disc_get_hlds_e7_tokens (disc *d);
99 FRIIDUMPLIB_EXPORT const char *disc_get_hlds_e7_record_id (disc *d);
100 FRIIDUMPLIB_EXPORT const char *disc_get_hlds_e7_notes (disc *d);
101 FRIIDUMPLIB_EXPORT u_int32_t disc_get_hlds_e7_type (disc *d);
102 FRIIDUMPLIB_EXPORT u_int32_t disc_get_hlds_e7_cache_base (disc *d);
103 FRIIDUMPLIB_EXPORT u_int32_t disc_get_hlds_e7_mem_blocks (disc *d);
104 FRIIDUMPLIB_EXPORT u_int32_t disc_get_hlds_e7_static_cdb_base (disc *d);
105 FRIIDUMPLIB_EXPORT u_int32_t disc_get_hlds_e7_static_gate (disc *d);
106 FRIIDUMPLIB_EXPORT int disc_get_hlds_e7_preferred_method (disc *d);
108 /* Xbox/MMC helpers used by Xbox/XGD dump layouts. These dispatch to the
109 * GDR-8050L challenge-table path, the GDR-3120L/Kreon-style FF 08 01
110 * vendor lock-state path, or direct READ(10) for forced experiments. */
111 FRIIDUMPLIB_EXPORT bool disc_is_xbox_unlock_drive (disc *d);
112 FRIIDUMPLIB_EXPORT bool disc_is_xbox_challenge_drive (disc *d);
113 FRIIDUMPLIB_EXPORT bool disc_is_xbox_vendor_unlock_drive (disc *d);
114 FRIIDUMPLIB_EXPORT int disc_xbox_lock (disc *d);
115 FRIIDUMPLIB_EXPORT int disc_xbox_unlock (disc *d);
116 FRIIDUMPLIB_EXPORT int disc_xbox_read_10 (disc *d, u_int32_t sector, u_int32_t sectors, u_int8_t *buf, size_t bufsize);
117 FRIIDUMPLIB_EXPORT int disc_xbox_read_dvd_structure (disc *d, u_int8_t format, u_int8_t layer, u_int8_t *buf, size_t bufsize);
118 FRIIDUMPLIB_EXPORT int disc_xbox_read_capacity_10 (disc *d, u_int32_t *sectors, u_int32_t *sector_size);
119 FRIIDUMPLIB_EXPORT int disc_xbox_recovery_kick (disc *d, bool auth_recovery);
120 FRIIDUMPLIB_EXPORT int disc_xbox_refresh_volume (disc *d);
121 FRIIDUMPLIB_EXPORT int disc_lock_volume (disc *d);
122 FRIIDUMPLIB_EXPORT int disc_refresh_volume (disc *d);
123 FRIIDUMPLIB_EXPORT int disc_xbox_lock_volume (disc *d);
124 FRIIDUMPLIB_EXPORT int disc_xbox_media_cycle (disc *d);
125 FRIIDUMPLIB_EXPORT int disc_xbox_wait_ready (disc *d, unsigned int timeout_ms);
126 FRIIDUMPLIB_EXPORT int disc_media_preflight (disc *d, unsigned int timeout_ms, int *sense_key, int *asc, int *ascq);