Changes in uspace/app/usbinfo/main.c [632ed68:a12917e] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/usbinfo/main.c
r632ed68 ra12917e 77 77 } 78 78 79 static int set_new_host_controller(int *phone, const char *path) 79 static int get_host_controller_handle(const char *path, 80 devman_handle_t *hc_handle) 80 81 { 81 82 int rc; 82 int tmp_phone;83 83 84 if (path[0] != '/') { 85 int hc_class_index = (int) strtol(path, NULL, 10); 86 char *dev_path; 87 rc = asprintf(&dev_path, "class/usbhc\\%d", hc_class_index); 88 if (rc < 0) { 89 internal_error(rc); 90 return rc; 91 } 92 devmap_handle_t handle; 93 rc = devmap_device_get_handle(dev_path, &handle, 0); 94 if (rc < 0) { 95 fprintf(stderr, 96 NAME ": failed getting handle of `devman://%s'.\n", 97 dev_path); 98 free(dev_path); 99 return rc; 100 } 101 tmp_phone = devmap_device_connect(handle, 0); 102 if (tmp_phone < 0) { 103 fprintf(stderr, 104 NAME ": could not connect to `%s'.\n", 105 dev_path); 106 free(dev_path); 107 return tmp_phone; 108 } 109 free(dev_path); 110 } else { 111 devman_handle_t handle; 112 rc = devman_device_get_handle(path, &handle, 0); 113 if (rc != EOK) { 114 fprintf(stderr, 115 NAME ": failed getting handle of `devmap::/%s'.\n", 116 path); 117 return rc; 118 } 119 tmp_phone = devman_device_connect(handle, 0); 120 if (tmp_phone < 0) { 121 fprintf(stderr, 122 NAME ": could not connect to `%s'.\n", 123 path); 124 return tmp_phone; 125 } 84 devman_handle_t handle; 85 rc = devman_device_get_handle(path, &handle, 0); 86 if (rc != EOK) { 87 fprintf(stderr, 88 NAME ": failed getting handle of `devman::/%s'.\n", 89 path); 90 return rc; 126 91 } 127 128 *phone = tmp_phone; 92 *hc_handle = handle; 129 93 130 94 return EOK; 131 95 } 132 96 133 static int connect_with_address(int hc_phone, const char *str_address)97 static int get_device_address(const char *str_address, usb_address_t *address) 134 98 { 135 usb_address_t addr ess= (usb_address_t) strtol(str_address, NULL, 0);136 if ((addr ess < 0) || (address>= USB11_ADDRESS_MAX)) {99 usb_address_t addr = (usb_address_t) strtol(str_address, NULL, 0); 100 if ((addr < 0) || (addr >= USB11_ADDRESS_MAX)) { 137 101 fprintf(stderr, NAME ": USB address out of range.\n"); 138 102 return ERANGE; 139 103 } 140 104 141 if (hc_phone < 0) { 142 fprintf(stderr, NAME ": no active host controller.\n"); 143 return ENOENT; 144 } 145 146 return dump_device(hc_phone, address); 105 *address = addr; 106 return EOK; 147 107 } 148 108 … … 150 110 int main(int argc, char *argv[]) 151 111 { 152 int hc_phone = -1; 112 devman_handle_t hc_handle = (devman_handle_t) -1; 113 usb_address_t device_address = (usb_address_t) -1; 153 114 154 115 if (argc <= 1) { … … 175 136 case 'a': 176 137 case ACTION_DEVICE_ADDRESS: { 177 int rc = connect_with_address(hc_phone, optarg); 138 int rc = get_device_address(optarg, 139 &device_address); 178 140 if (rc != EOK) { 179 141 return rc; … … 184 146 case 't': 185 147 case ACTION_HOST_CONTROLLER: { 186 int rc = set_new_host_controller(&hc_phone,187 optarg);148 int rc = get_host_controller_handle(optarg, 149 &hc_handle); 188 150 if (rc != EOK) { 189 151 return rc; … … 202 164 } while (i != -1); 203 165 166 if ((hc_handle == (devman_handle_t) -1) 167 || (device_address == (usb_address_t) -1)) { 168 fprintf(stderr, NAME ": no target specified.\n"); 169 return EINVAL; 170 } 171 172 dump_device(hc_handle, device_address); 173 204 174 return 0; 205 175 }
Note:
See TracChangeset
for help on using the changeset viewer.