MCPcopy Create free account
hub / github.com/Sapd/HeadsetControl / processFeatureRequests

Function processFeatureRequests

src/output.c:198–237  ·  view source on GitHub ↗

* @brief Iterates through all requested features and processes their responses * * @param info struct with headset information to fill * @param featureRequests struct with all feature requests * @param size size of featureRequests * @param device the device struct */

Source from the content-addressed store, hash-verified

196 * @param device the device struct
197 */
198void processFeatureRequests(HeadsetInfo* info, FeatureRequest* featureRequests, int size, struct device* device)
199{
200 for (int i = 0; i < size; i++) {
201 FeatureRequest* request = &featureRequests[i];
202 if (request->should_process) {
203 if (request->result.status == FEATURE_DEVICE_FAILED_OPEN) {
204 addError(info, capabilities_str[request->cap], request->result.message);
205 } else if (request->cap == CAP_BATTERY_STATUS) {
206 if (request->result.status == FEATURE_SUCCESS || request->result.status == FEATURE_INFO) {
207 info->has_battery_info = true;
208
209 if (request->result.status2 == BATTERY_CHARGING) {
210 info->battery_status = (enum battery_status)request->result.status2;
211 info->battery_level = request->result.value;
212 } else if (request->result.status2 == BATTERY_UNAVAILABLE) {
213 info->battery_status = (enum battery_status)request->result.status2;
214 info->battery_level = -1;
215 } else {
216 info->battery_status = BATTERY_AVAILABLE;
217 info->battery_level = request->result.value;
218 }
219 } else if (request->result.status == FEATURE_ERROR) {
220 addError(info, capabilities_str[request->cap], request->result.message);
221 info->status = STATUS_PARTIAL;
222 }
223 } else if (request->cap == CAP_CHATMIX_STATUS) {
224 if (request->result.status == FEATURE_SUCCESS || request->result.status == FEATURE_INFO) {
225 info->has_chatmix_info = true;
226 info->chatmix = request->result.value;
227 } else if (request->result.status == FEATURE_ERROR) {
228 addError(info, capabilities_str[request->cap], request->result.message);
229 info->status = STATUS_PARTIAL;
230 }
231 } else if (request->type == CAPABILITYTYPE_ACTION) {
232 Status status = request->result.status == FEATURE_SUCCESS ? STATUS_SUCCESS : STATUS_FAILURE;
233 addAction(info, request->cap, device->device_name, status, request->result.value, request->result.message);
234 }
235 }
236 }
237}
238
239static void output_json(HeadsetControlStatus* status, HeadsetInfo* infos);
240static void output_yaml(HeadsetControlStatus* status, HeadsetInfo* infos);

Callers 1

outputFunction · 0.85

Calls 2

addErrorFunction · 0.85
addActionFunction · 0.85

Tested by

no test coverage detected