Changes in uspace/app/usbinfo/main.c [a12917e:632ed68] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/usbinfo/main.c
ra12917e r632ed68 77 77 } 78 78 79 static int get_host_controller_handle(const char *path, 80 devman_handle_t *hc_handle) 79 static int set_new_host_controller(int *phone, const char *path) 81 80 { 82 81 int rc; 83 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; 91 } 92 *hc_handle = handle; 82 int tmp_phone; 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 } 126 } 127 128 *phone = tmp_phone; 93 129 94 130 return EOK; 95 131 } 96 132 97 static int get_device_address(const char *str_address, usb_address_t *address)98 { 99 usb_address_t addr = (usb_address_t) strtol(str_address, NULL, 0);100 if ((addr < 0) || (addr>= USB11_ADDRESS_MAX)) {133 static int connect_with_address(int hc_phone, const char *str_address) 134 { 135 usb_address_t address = (usb_address_t) strtol(str_address, NULL, 0); 136 if ((address < 0) || (address >= USB11_ADDRESS_MAX)) { 101 137 fprintf(stderr, NAME ": USB address out of range.\n"); 102 138 return ERANGE; 103 139 } 104 140 105 *address = addr; 106 return EOK; 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); 107 147 } 108 148 … … 110 150 int main(int argc, char *argv[]) 111 151 { 112 devman_handle_t hc_handle = (devman_handle_t) -1; 113 usb_address_t device_address = (usb_address_t) -1; 152 int hc_phone = -1; 114 153 115 154 if (argc <= 1) { … … 136 175 case 'a': 137 176 case ACTION_DEVICE_ADDRESS: { 138 int rc = get_device_address(optarg, 139 &device_address); 177 int rc = connect_with_address(hc_phone, optarg); 140 178 if (rc != EOK) { 141 179 return rc; … … 146 184 case 't': 147 185 case ACTION_HOST_CONTROLLER: { 148 int rc = get_host_controller_handle(optarg,149 &hc_handle);186 int rc = set_new_host_controller(&hc_phone, 187 optarg); 150 188 if (rc != EOK) { 151 189 return rc; … … 164 202 } while (i != -1); 165 203 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 174 204 return 0; 175 205 }
Note:
See TracChangeset
for help on using the changeset viewer.