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

Function output

src/output.c:105–142  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

103static void outputByType(OutputType output, HeadsetControlStatus* status, HeadsetInfo* infos, bool print_capabilities);
104
105void output(DeviceList* deviceList, bool print_capabilities, OutputType output)
106{
107 int num_devices = deviceList ? deviceList->num_devices : 0;
108
109 HeadsetControlStatus status = initializeStatus(num_devices);
110 HeadsetInfo* infos = NULL;
111 if (num_devices > 0) {
112 infos = calloc(num_devices, sizeof(HeadsetInfo));
113 }
114
115 // Suppress static analysis warning
116 assert((infos != NULL && status.device_count > 0) || (infos == NULL && status.device_count == 0));
117
118 // Iterate through all devices
119 for (int deviceIndex = 0; deviceIndex < num_devices; deviceIndex++) {
120 initializeHeadsetInfo(&infos[deviceIndex], deviceList[deviceIndex].device);
121 processFeatureRequests(&infos[deviceIndex], deviceList[deviceIndex].featureRequests, deviceList[deviceIndex].size, deviceList[deviceIndex].device);
122 }
123
124 // Send all gathered information to respective output function
125 outputByType(output, &status, infos, print_capabilities);
126
127 for (int i = 0; i < num_devices; i++) {
128 free(infos[i].idVendor);
129 free(infos[i].idProduct);
130
131 for (int j = 0; j < infos[i].error_count; j++) {
132 free(infos[i].errors[j].source);
133 free(infos[i].errors[j].message);
134 }
135
136 for (int j = 0; j < infos[i].action_count; j++) {
137 free(infos[i].actions[j].device);
138 free(infos[i].actions[j].error_message);
139 }
140 }
141 free(infos);
142}
143
144HeadsetControlStatus initializeStatus(int num_devices)
145{

Callers 1

mainFunction · 0.85

Calls 4

initializeStatusFunction · 0.85
initializeHeadsetInfoFunction · 0.85
processFeatureRequestsFunction · 0.85
outputByTypeFunction · 0.85

Tested by

no test coverage detected