| 159 | } |
| 160 | |
| 161 | void initializeHeadsetInfo(HeadsetInfo* info, struct device* device) |
| 162 | { |
| 163 | info->status = STATUS_SUCCESS; |
| 164 | _asprintf(&info->idVendor, "0x%04x", device->idVendor); |
| 165 | _asprintf(&info->idProduct, "0x%04x", device->idProduct); |
| 166 | info->device_name = device->device_name; |
| 167 | info->vendor_name = device->device_hid_vendorname; |
| 168 | info->product_name = device->device_hid_productname; |
| 169 | |
| 170 | info->equalizer = device->equalizer; |
| 171 | info->equalizer_presets = device->equalizer_presets, |
| 172 | info->has_equalizer_info = info->equalizer != NULL; |
| 173 | info->has_equalizer_presets_info = info->equalizer_presets != NULL; |
| 174 | |
| 175 | info->parametric_equalizer = device->parametric_equalizer, |
| 176 | info->has_parametric_equalizer_info = info->parametric_equalizer != NULL; |
| 177 | |
| 178 | info->capabilities_amount = 0; |
| 179 | |
| 180 | for (int i = 0; i < NUM_CAPABILITIES; i++) { |
| 181 | if (device->capabilities & B(i)) { // Check if the ith capability is supported |
| 182 | info->capabilities_enum[info->capabilities_amount] = i; |
| 183 | info->capabilities[info->capabilities_amount] = capabilities_str_enum[i]; |
| 184 | info->capabilities_str[info->capabilities_amount] = capabilities_str[i]; |
| 185 | info->capabilities_amount++; |
| 186 | } |
| 187 | } |
| 188 | } |
| 189 | |
| 190 | /** |
| 191 | * @brief Iterates through all requested features and processes their responses |