Coverage Report

Created: 2026-08-17 06:12

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/open5gs/lib/sbi/openapi/model/qos_characteristics.c
Line
Count
Source
1
2
#include <stdlib.h>
3
#include <string.h>
4
#include <stdio.h>
5
#include "qos_characteristics.h"
6
7
OpenAPI_qos_characteristics_t *OpenAPI_qos_characteristics_create(
8
    int _5qi,
9
    OpenAPI_qos_resource_type_e resource_type,
10
    int priority_level,
11
    int packet_delay_budget,
12
    char *packet_error_rate,
13
    bool is_averaging_window,
14
    int averaging_window,
15
    bool is_max_data_burst_vol,
16
    int max_data_burst_vol,
17
    bool is_ext_max_data_burst_vol,
18
    int ext_max_data_burst_vol
19
)
20
0
{
21
0
    OpenAPI_qos_characteristics_t *qos_characteristics_local_var = ogs_malloc(sizeof(OpenAPI_qos_characteristics_t));
22
0
    ogs_assert(qos_characteristics_local_var);
23
24
0
    qos_characteristics_local_var->_5qi = _5qi;
25
0
    qos_characteristics_local_var->resource_type = resource_type;
26
0
    qos_characteristics_local_var->priority_level = priority_level;
27
0
    qos_characteristics_local_var->packet_delay_budget = packet_delay_budget;
28
0
    qos_characteristics_local_var->packet_error_rate = packet_error_rate;
29
0
    qos_characteristics_local_var->is_averaging_window = is_averaging_window;
30
0
    qos_characteristics_local_var->averaging_window = averaging_window;
31
0
    qos_characteristics_local_var->is_max_data_burst_vol = is_max_data_burst_vol;
32
0
    qos_characteristics_local_var->max_data_burst_vol = max_data_burst_vol;
33
0
    qos_characteristics_local_var->is_ext_max_data_burst_vol = is_ext_max_data_burst_vol;
34
0
    qos_characteristics_local_var->ext_max_data_burst_vol = ext_max_data_burst_vol;
35
36
0
    return qos_characteristics_local_var;
37
0
}
38
39
void OpenAPI_qos_characteristics_free(OpenAPI_qos_characteristics_t *qos_characteristics)
40
0
{
41
0
    OpenAPI_lnode_t *node = NULL;
42
43
0
    if (NULL == qos_characteristics) {
44
0
        return;
45
0
    }
46
0
    if (qos_characteristics->packet_error_rate) {
47
0
        ogs_free(qos_characteristics->packet_error_rate);
48
0
        qos_characteristics->packet_error_rate = NULL;
49
0
    }
50
0
    ogs_free(qos_characteristics);
51
0
}
52
53
cJSON *OpenAPI_qos_characteristics_convertToJSON(OpenAPI_qos_characteristics_t *qos_characteristics)
54
0
{
55
0
    cJSON *item = NULL;
56
0
    OpenAPI_lnode_t *node = NULL;
57
58
0
    if (qos_characteristics == NULL) {
59
0
        ogs_error("OpenAPI_qos_characteristics_convertToJSON() failed [QosCharacteristics]");
60
0
        return NULL;
61
0
    }
62
63
0
    item = cJSON_CreateObject();
64
0
    if (cJSON_AddNumberToObject(item, "5qi", qos_characteristics->_5qi) == NULL) {
65
0
        ogs_error("OpenAPI_qos_characteristics_convertToJSON() failed [_5qi]");
66
0
        goto end;
67
0
    }
68
69
0
    if (qos_characteristics->resource_type == OpenAPI_qos_resource_type_NULL) {
70
0
        ogs_error("OpenAPI_qos_characteristics_convertToJSON() failed [resource_type]");
71
0
        return NULL;
72
0
    }
73
0
    if (cJSON_AddStringToObject(item, "resourceType", OpenAPI_qos_resource_type_ToString(qos_characteristics->resource_type)) == NULL) {
74
0
        ogs_error("OpenAPI_qos_characteristics_convertToJSON() failed [resource_type]");
75
0
        goto end;
76
0
    }
77
78
0
    if (cJSON_AddNumberToObject(item, "priorityLevel", qos_characteristics->priority_level) == NULL) {
79
0
        ogs_error("OpenAPI_qos_characteristics_convertToJSON() failed [priority_level]");
80
0
        goto end;
81
0
    }
82
83
0
    if (cJSON_AddNumberToObject(item, "packetDelayBudget", qos_characteristics->packet_delay_budget) == NULL) {
84
0
        ogs_error("OpenAPI_qos_characteristics_convertToJSON() failed [packet_delay_budget]");
85
0
        goto end;
86
0
    }
87
88
0
    if (!qos_characteristics->packet_error_rate) {
89
0
        ogs_error("OpenAPI_qos_characteristics_convertToJSON() failed [packet_error_rate]");
90
0
        return NULL;
91
0
    }
92
0
    if (cJSON_AddStringToObject(item, "packetErrorRate", qos_characteristics->packet_error_rate) == NULL) {
93
0
        ogs_error("OpenAPI_qos_characteristics_convertToJSON() failed [packet_error_rate]");
94
0
        goto end;
95
0
    }
96
97
0
    if (qos_characteristics->is_averaging_window) {
98
0
    if (cJSON_AddNumberToObject(item, "averagingWindow", qos_characteristics->averaging_window) == NULL) {
99
0
        ogs_error("OpenAPI_qos_characteristics_convertToJSON() failed [averaging_window]");
100
0
        goto end;
101
0
    }
102
0
    }
103
104
0
    if (qos_characteristics->is_max_data_burst_vol) {
105
0
    if (cJSON_AddNumberToObject(item, "maxDataBurstVol", qos_characteristics->max_data_burst_vol) == NULL) {
106
0
        ogs_error("OpenAPI_qos_characteristics_convertToJSON() failed [max_data_burst_vol]");
107
0
        goto end;
108
0
    }
109
0
    }
110
111
0
    if (qos_characteristics->is_ext_max_data_burst_vol) {
112
0
    if (cJSON_AddNumberToObject(item, "extMaxDataBurstVol", qos_characteristics->ext_max_data_burst_vol) == NULL) {
113
0
        ogs_error("OpenAPI_qos_characteristics_convertToJSON() failed [ext_max_data_burst_vol]");
114
0
        goto end;
115
0
    }
116
0
    }
117
118
0
end:
119
0
    return item;
120
0
}
121
122
OpenAPI_qos_characteristics_t *OpenAPI_qos_characteristics_parseFromJSON(cJSON *qos_characteristicsJSON)
123
0
{
124
0
    OpenAPI_qos_characteristics_t *qos_characteristics_local_var = NULL;
125
0
    OpenAPI_lnode_t *node = NULL;
126
0
    cJSON *_5qi = NULL;
127
0
    cJSON *resource_type = NULL;
128
0
    OpenAPI_qos_resource_type_e resource_typeVariable = 0;
129
0
    cJSON *priority_level = NULL;
130
0
    cJSON *packet_delay_budget = NULL;
131
0
    cJSON *packet_error_rate = NULL;
132
0
    cJSON *averaging_window = NULL;
133
0
    cJSON *max_data_burst_vol = NULL;
134
0
    cJSON *ext_max_data_burst_vol = NULL;
135
0
    _5qi = cJSON_GetObjectItemCaseSensitive(qos_characteristicsJSON, "5qi");
136
0
    if (!_5qi) {
137
0
        ogs_error("OpenAPI_qos_characteristics_parseFromJSON() failed [_5qi]");
138
0
        goto end;
139
0
    }
140
0
    if (!cJSON_IsNumber(_5qi)) {
141
0
        ogs_error("OpenAPI_qos_characteristics_parseFromJSON() failed [_5qi]");
142
0
        goto end;
143
0
    }
144
145
0
    resource_type = cJSON_GetObjectItemCaseSensitive(qos_characteristicsJSON, "resourceType");
146
0
    if (!resource_type) {
147
0
        ogs_error("OpenAPI_qos_characteristics_parseFromJSON() failed [resource_type]");
148
0
        goto end;
149
0
    }
150
0
    if (!cJSON_IsString(resource_type)) {
151
0
        ogs_error("OpenAPI_qos_characteristics_parseFromJSON() failed [resource_type]");
152
0
        goto end;
153
0
    }
154
0
    resource_typeVariable = OpenAPI_qos_resource_type_FromString(resource_type->valuestring);
155
156
0
    priority_level = cJSON_GetObjectItemCaseSensitive(qos_characteristicsJSON, "priorityLevel");
157
0
    if (!priority_level) {
158
0
        ogs_error("OpenAPI_qos_characteristics_parseFromJSON() failed [priority_level]");
159
0
        goto end;
160
0
    }
161
0
    if (!cJSON_IsNumber(priority_level)) {
162
0
        ogs_error("OpenAPI_qos_characteristics_parseFromJSON() failed [priority_level]");
163
0
        goto end;
164
0
    }
165
166
0
    packet_delay_budget = cJSON_GetObjectItemCaseSensitive(qos_characteristicsJSON, "packetDelayBudget");
167
0
    if (!packet_delay_budget) {
168
0
        ogs_error("OpenAPI_qos_characteristics_parseFromJSON() failed [packet_delay_budget]");
169
0
        goto end;
170
0
    }
171
0
    if (!cJSON_IsNumber(packet_delay_budget)) {
172
0
        ogs_error("OpenAPI_qos_characteristics_parseFromJSON() failed [packet_delay_budget]");
173
0
        goto end;
174
0
    }
175
176
0
    packet_error_rate = cJSON_GetObjectItemCaseSensitive(qos_characteristicsJSON, "packetErrorRate");
177
0
    if (!packet_error_rate) {
178
0
        ogs_error("OpenAPI_qos_characteristics_parseFromJSON() failed [packet_error_rate]");
179
0
        goto end;
180
0
    }
181
0
    if (!cJSON_IsString(packet_error_rate)) {
182
0
        ogs_error("OpenAPI_qos_characteristics_parseFromJSON() failed [packet_error_rate]");
183
0
        goto end;
184
0
    }
185
186
0
    averaging_window = cJSON_GetObjectItemCaseSensitive(qos_characteristicsJSON, "averagingWindow");
187
0
    if (averaging_window) {
188
0
    if (!cJSON_IsNumber(averaging_window)) {
189
0
        ogs_error("OpenAPI_qos_characteristics_parseFromJSON() failed [averaging_window]");
190
0
        goto end;
191
0
    }
192
0
    }
193
194
0
    max_data_burst_vol = cJSON_GetObjectItemCaseSensitive(qos_characteristicsJSON, "maxDataBurstVol");
195
0
    if (max_data_burst_vol) {
196
0
    if (!cJSON_IsNumber(max_data_burst_vol)) {
197
0
        ogs_error("OpenAPI_qos_characteristics_parseFromJSON() failed [max_data_burst_vol]");
198
0
        goto end;
199
0
    }
200
0
    }
201
202
0
    ext_max_data_burst_vol = cJSON_GetObjectItemCaseSensitive(qos_characteristicsJSON, "extMaxDataBurstVol");
203
0
    if (ext_max_data_burst_vol) {
204
0
    if (!cJSON_IsNumber(ext_max_data_burst_vol)) {
205
0
        ogs_error("OpenAPI_qos_characteristics_parseFromJSON() failed [ext_max_data_burst_vol]");
206
0
        goto end;
207
0
    }
208
0
    }
209
210
0
    qos_characteristics_local_var = OpenAPI_qos_characteristics_create (
211
        
212
0
        _5qi->valuedouble,
213
0
        resource_typeVariable,
214
        
215
0
        priority_level->valuedouble,
216
        
217
0
        packet_delay_budget->valuedouble,
218
0
        ogs_strdup(packet_error_rate->valuestring),
219
0
        averaging_window ? true : false,
220
0
        averaging_window ? averaging_window->valuedouble : 0,
221
0
        max_data_burst_vol ? true : false,
222
0
        max_data_burst_vol ? max_data_burst_vol->valuedouble : 0,
223
0
        ext_max_data_burst_vol ? true : false,
224
0
        ext_max_data_burst_vol ? ext_max_data_burst_vol->valuedouble : 0
225
0
    );
226
227
0
    return qos_characteristics_local_var;
228
0
end:
229
0
    return NULL;
230
0
}
231
232
OpenAPI_qos_characteristics_t *OpenAPI_qos_characteristics_copy(OpenAPI_qos_characteristics_t *dst, OpenAPI_qos_characteristics_t *src)
233
0
{
234
0
    cJSON *item = NULL;
235
0
    char *content = NULL;
236
237
0
    ogs_assert(src);
238
0
    item = OpenAPI_qos_characteristics_convertToJSON(src);
239
0
    if (!item) {
240
0
        ogs_error("OpenAPI_qos_characteristics_convertToJSON() failed");
241
0
        return NULL;
242
0
    }
243
244
0
    content = cJSON_Print(item);
245
0
    cJSON_Delete(item);
246
247
0
    if (!content) {
248
0
        ogs_error("cJSON_Print() failed");
249
0
        return NULL;
250
0
    }
251
252
0
    item = cJSON_Parse(content);
253
0
    ogs_free(content);
254
0
    if (!item) {
255
0
        ogs_error("cJSON_Parse() failed");
256
0
        return NULL;
257
0
    }
258
259
0
    OpenAPI_qos_characteristics_free(dst);
260
0
    dst = OpenAPI_qos_characteristics_parseFromJSON(item);
261
0
    cJSON_Delete(item);
262
263
0
    return dst;
264
0
}
265