Skip to content

Commit 308b53e

Browse files
authored
chore(storage): Only save hatsMode for featured radios (EdgeTX#4525)
1 parent b9e3ee1 commit 308b53e

14 files changed

+34
-94
lines changed

radio/src/datastructs_private.h

+9-1
Original file line numberDiff line numberDiff line change
@@ -680,8 +680,12 @@ PACK(struct ModelData {
680680
uint8_t disableTelemetryWarning:1;
681681
uint8_t showInstanceIds:1;
682682
uint8_t checklistInteractive:1;
683+
#if defined(USE_HATS_AS_KEYS)
683684
NOBACKUP(uint8_t hatsMode:2 ENUM(HatsMode));
684685
uint8_t spare3:2 SKIP; // padding to 8-bit aligment
686+
#else
687+
uint8_t spare3:4 SKIP; // padding to 8-bit aligment
688+
#endif
685689
int8_t customThrottleWarningPosition;
686690
BeepANACenter beepANACenter;
687691
MixData mixData[MAX_MIXERS] NO_IDX;
@@ -843,8 +847,12 @@ PACK(struct RadioData {
843847
// Real attributes
844848
NOBACKUP(uint8_t manuallyEdited:1);
845849
int8_t timezoneMinutes:3; // -3 to +3 ==> (-45 to 45 minutes in 15 minute increments)
846-
NOBACKUP(uint8_t hatsMode:2 ENUM(HatsMode));
847850
NOBACKUP(uint8_t ppmunit:2); // PPMUnit enum
851+
#if defined(USE_HATS_AS_KEYS)
852+
NOBACKUP(uint8_t hatsMode:2 ENUM(HatsMode));
853+
#else
854+
NOBACKUP(uint8_t hatsModeSpare:2 SKIP);
855+
#endif
848856
CUST_ATTR(semver,nullptr,w_semver);
849857
CUST_ATTR(board,nullptr,w_board);
850858
CalibData calib[MAX_CALIB_ANALOG_INPUTS] NO_IDX;

radio/src/model_init.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,9 @@ void applyDefaultTemplate()
134134
}
135135
#endif
136136

137+
#if defined(USE_HATS_AS_KEYS)
137138
g_model.hatsMode = HATSMODE_GLOBAL;
139+
#endif
138140
}
139141

140142
void setModelDefaults(uint8_t id)

radio/src/opentx.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,9 @@ void generalDefault()
372372
// disable Custom Script
373373
g_eeGeneral.modelCustomScriptsDisabled = true;
374374

375-
g_eeGeneral.hatsMode = HATSMODE_SWITCHABLE;
375+
#if defined(USE_HATS_AS_KEYS)
376+
g_eeGeneral.hatsMode = HATSMODE_SWITCHABLE;
377+
#endif
376378

377379
g_eeGeneral.chkSum = 0xFFFF;
378380
}

radio/src/storage/yaml/yaml_datastructs_128x64.cpp

+2-10
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,6 @@
44
// Enums first
55
//
66

7-
const struct YamlIdStr enum_HatsMode[] = {
8-
{ HATSMODE_TRIMS_ONLY, "TRIMS_ONLY" },
9-
{ HATSMODE_KEYS_ONLY, "KEYS_ONLY" },
10-
{ HATSMODE_SWITCHABLE, "SWITCHABLE" },
11-
{ HATSMODE_GLOBAL, "GLOBAL" },
12-
{ 0, NULL }
13-
};
147
const struct YamlIdStr enum_BacklightMode[] = {
158
{ e_backlight_mode_off, "backlight_mode_off" },
169
{ e_backlight_mode_keys, "backlight_mode_keys" },
@@ -279,8 +272,8 @@ static const struct YamlNode struct_CustomFunctionData[] = {
279272
static const struct YamlNode struct_RadioData[] = {
280273
YAML_UNSIGNED( "manuallyEdited", 1 ),
281274
YAML_SIGNED( "timezoneMinutes", 3 ),
282-
YAML_ENUM("hatsMode", 2, enum_HatsMode),
283275
YAML_UNSIGNED( "ppmunit", 2 ),
276+
YAML_PADDING( 2 ),
284277
YAML_CUSTOM("semver",nullptr,w_semver),
285278
YAML_CUSTOM("board",nullptr,w_board),
286279
YAML_ARRAY("calib", 48, 12, struct_CalibData, NULL),
@@ -804,8 +797,7 @@ static const struct YamlNode struct_ModelData[] = {
804797
YAML_UNSIGNED( "disableTelemetryWarning", 1 ),
805798
YAML_UNSIGNED( "showInstanceIds", 1 ),
806799
YAML_UNSIGNED( "checklistInteractive", 1 ),
807-
YAML_ENUM("hatsMode", 2, enum_HatsMode),
808-
YAML_PADDING( 2 ),
800+
YAML_PADDING( 4 ),
809801
YAML_SIGNED( "customThrottleWarningPosition", 8 ),
810802
YAML_UNSIGNED( "beepANACenter", 16 ),
811803
YAML_ARRAY("mixData", 160, 64, struct_MixData, NULL),

radio/src/storage/yaml/yaml_datastructs_nv14.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -290,8 +290,8 @@ static const struct YamlNode struct_CustomFunctionData[] = {
290290
static const struct YamlNode struct_RadioData[] = {
291291
YAML_UNSIGNED( "manuallyEdited", 1 ),
292292
YAML_SIGNED( "timezoneMinutes", 3 ),
293-
YAML_ENUM("hatsMode", 2, enum_HatsMode),
294293
YAML_UNSIGNED( "ppmunit", 2 ),
294+
YAML_ENUM("hatsMode", 2, enum_HatsMode),
295295
YAML_CUSTOM("semver",nullptr,w_semver),
296296
YAML_CUSTOM("board",nullptr,w_board),
297297
YAML_ARRAY("calib", 48, 20, struct_CalibData, NULL),

radio/src/storage/yaml/yaml_datastructs_pl18.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -294,8 +294,8 @@ static const struct YamlNode struct_CustomFunctionData[] = {
294294
static const struct YamlNode struct_RadioData[] = {
295295
YAML_UNSIGNED( "manuallyEdited", 1 ),
296296
YAML_SIGNED( "timezoneMinutes", 3 ),
297-
YAML_ENUM("hatsMode", 2, enum_HatsMode),
298297
YAML_UNSIGNED( "ppmunit", 2 ),
298+
YAML_ENUM("hatsMode", 2, enum_HatsMode),
299299
YAML_CUSTOM("semver",nullptr,w_semver),
300300
YAML_CUSTOM("board",nullptr,w_board),
301301
YAML_ARRAY("calib", 48, 20, struct_CalibData, NULL),

radio/src/storage/yaml/yaml_datastructs_t20.cpp

+2-10
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,6 @@
44
// Enums first
55
//
66

7-
const struct YamlIdStr enum_HatsMode[] = {
8-
{ HATSMODE_TRIMS_ONLY, "TRIMS_ONLY" },
9-
{ HATSMODE_KEYS_ONLY, "KEYS_ONLY" },
10-
{ HATSMODE_SWITCHABLE, "SWITCHABLE" },
11-
{ HATSMODE_GLOBAL, "GLOBAL" },
12-
{ 0, NULL }
13-
};
147
const struct YamlIdStr enum_BacklightMode[] = {
158
{ e_backlight_mode_off, "backlight_mode_off" },
169
{ e_backlight_mode_keys, "backlight_mode_keys" },
@@ -283,8 +276,8 @@ static const struct YamlNode struct_CustomFunctionData[] = {
283276
static const struct YamlNode struct_RadioData[] = {
284277
YAML_UNSIGNED( "manuallyEdited", 1 ),
285278
YAML_SIGNED( "timezoneMinutes", 3 ),
286-
YAML_ENUM("hatsMode", 2, enum_HatsMode),
287279
YAML_UNSIGNED( "ppmunit", 2 ),
280+
YAML_PADDING( 2 ),
288281
YAML_CUSTOM("semver",nullptr,w_semver),
289282
YAML_CUSTOM("board",nullptr,w_board),
290283
YAML_ARRAY("calib", 48, 12, struct_CalibData, NULL),
@@ -806,8 +799,7 @@ static const struct YamlNode struct_ModelData[] = {
806799
YAML_UNSIGNED( "disableTelemetryWarning", 1 ),
807800
YAML_UNSIGNED( "showInstanceIds", 1 ),
808801
YAML_UNSIGNED( "checklistInteractive", 1 ),
809-
YAML_ENUM("hatsMode", 2, enum_HatsMode),
810-
YAML_PADDING( 2 ),
802+
YAML_PADDING( 4 ),
811803
YAML_SIGNED( "customThrottleWarningPosition", 8 ),
812804
YAML_UNSIGNED( "beepANACenter", 16 ),
813805
YAML_ARRAY("mixData", 160, 64, struct_MixData, NULL),

radio/src/storage/yaml/yaml_datastructs_tpro.cpp

+2-10
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,6 @@
44
// Enums first
55
//
66

7-
const struct YamlIdStr enum_HatsMode[] = {
8-
{ HATSMODE_TRIMS_ONLY, "TRIMS_ONLY" },
9-
{ HATSMODE_KEYS_ONLY, "KEYS_ONLY" },
10-
{ HATSMODE_SWITCHABLE, "SWITCHABLE" },
11-
{ HATSMODE_GLOBAL, "GLOBAL" },
12-
{ 0, NULL }
13-
};
147
const struct YamlIdStr enum_BacklightMode[] = {
158
{ e_backlight_mode_off, "backlight_mode_off" },
169
{ e_backlight_mode_keys, "backlight_mode_keys" },
@@ -279,8 +272,8 @@ static const struct YamlNode struct_CustomFunctionData[] = {
279272
static const struct YamlNode struct_RadioData[] = {
280273
YAML_UNSIGNED( "manuallyEdited", 1 ),
281274
YAML_SIGNED( "timezoneMinutes", 3 ),
282-
YAML_ENUM("hatsMode", 2, enum_HatsMode),
283275
YAML_UNSIGNED( "ppmunit", 2 ),
276+
YAML_PADDING( 2 ),
284277
YAML_CUSTOM("semver",nullptr,w_semver),
285278
YAML_CUSTOM("board",nullptr,w_board),
286279
YAML_ARRAY("calib", 48, 12, struct_CalibData, NULL),
@@ -802,8 +795,7 @@ static const struct YamlNode struct_ModelData[] = {
802795
YAML_UNSIGNED( "disableTelemetryWarning", 1 ),
803796
YAML_UNSIGNED( "showInstanceIds", 1 ),
804797
YAML_UNSIGNED( "checklistInteractive", 1 ),
805-
YAML_ENUM("hatsMode", 2, enum_HatsMode),
806-
YAML_PADDING( 2 ),
798+
YAML_PADDING( 4 ),
807799
YAML_SIGNED( "customThrottleWarningPosition", 8 ),
808800
YAML_UNSIGNED( "beepANACenter", 16 ),
809801
YAML_ARRAY("mixData", 160, 64, struct_MixData, NULL),

radio/src/storage/yaml/yaml_datastructs_x10.cpp

+2-10
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,6 @@
44
// Enums first
55
//
66

7-
const struct YamlIdStr enum_HatsMode[] = {
8-
{ HATSMODE_TRIMS_ONLY, "TRIMS_ONLY" },
9-
{ HATSMODE_KEYS_ONLY, "KEYS_ONLY" },
10-
{ HATSMODE_SWITCHABLE, "SWITCHABLE" },
11-
{ HATSMODE_GLOBAL, "GLOBAL" },
12-
{ 0, NULL }
13-
};
147
const struct YamlIdStr enum_BacklightMode[] = {
158
{ e_backlight_mode_off, "backlight_mode_off" },
169
{ e_backlight_mode_keys, "backlight_mode_keys" },
@@ -298,8 +291,8 @@ static const struct YamlNode struct_CustomFunctionData[] = {
298291
static const struct YamlNode struct_RadioData[] = {
299292
YAML_UNSIGNED( "manuallyEdited", 1 ),
300293
YAML_SIGNED( "timezoneMinutes", 3 ),
301-
YAML_ENUM("hatsMode", 2, enum_HatsMode),
302294
YAML_UNSIGNED( "ppmunit", 2 ),
295+
YAML_PADDING( 2 ),
303296
YAML_CUSTOM("semver",nullptr,w_semver),
304297
YAML_CUSTOM("board",nullptr,w_board),
305298
YAML_ARRAY("calib", 48, 20, struct_CalibData, NULL),
@@ -835,8 +828,7 @@ static const struct YamlNode struct_ModelData[] = {
835828
YAML_UNSIGNED( "disableTelemetryWarning", 1 ),
836829
YAML_UNSIGNED( "showInstanceIds", 1 ),
837830
YAML_UNSIGNED( "checklistInteractive", 1 ),
838-
YAML_ENUM("hatsMode", 2, enum_HatsMode),
839-
YAML_PADDING( 2 ),
831+
YAML_PADDING( 4 ),
840832
YAML_SIGNED( "customThrottleWarningPosition", 8 ),
841833
YAML_UNSIGNED( "beepANACenter", 16 ),
842834
YAML_ARRAY("mixData", 160, 64, struct_MixData, NULL),

radio/src/storage/yaml/yaml_datastructs_x12s.cpp

+2-10
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,6 @@
44
// Enums first
55
//
66

7-
const struct YamlIdStr enum_HatsMode[] = {
8-
{ HATSMODE_TRIMS_ONLY, "TRIMS_ONLY" },
9-
{ HATSMODE_KEYS_ONLY, "KEYS_ONLY" },
10-
{ HATSMODE_SWITCHABLE, "SWITCHABLE" },
11-
{ HATSMODE_GLOBAL, "GLOBAL" },
12-
{ 0, NULL }
13-
};
147
const struct YamlIdStr enum_BacklightMode[] = {
158
{ e_backlight_mode_off, "backlight_mode_off" },
169
{ e_backlight_mode_keys, "backlight_mode_keys" },
@@ -298,8 +291,8 @@ static const struct YamlNode struct_CustomFunctionData[] = {
298291
static const struct YamlNode struct_RadioData[] = {
299292
YAML_UNSIGNED( "manuallyEdited", 1 ),
300293
YAML_SIGNED( "timezoneMinutes", 3 ),
301-
YAML_ENUM("hatsMode", 2, enum_HatsMode),
302294
YAML_UNSIGNED( "ppmunit", 2 ),
295+
YAML_PADDING( 2 ),
303296
YAML_CUSTOM("semver",nullptr,w_semver),
304297
YAML_CUSTOM("board",nullptr,w_board),
305298
YAML_ARRAY("calib", 48, 20, struct_CalibData, NULL),
@@ -835,8 +828,7 @@ static const struct YamlNode struct_ModelData[] = {
835828
YAML_UNSIGNED( "disableTelemetryWarning", 1 ),
836829
YAML_UNSIGNED( "showInstanceIds", 1 ),
837830
YAML_UNSIGNED( "checklistInteractive", 1 ),
838-
YAML_ENUM("hatsMode", 2, enum_HatsMode),
839-
YAML_PADDING( 2 ),
831+
YAML_PADDING( 4 ),
840832
YAML_SIGNED( "customThrottleWarningPosition", 8 ),
841833
YAML_UNSIGNED( "beepANACenter", 16 ),
842834
YAML_ARRAY("mixData", 160, 64, struct_MixData, NULL),

radio/src/storage/yaml/yaml_datastructs_x9d.cpp

+2-10
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,6 @@
44
// Enums first
55
//
66

7-
const struct YamlIdStr enum_HatsMode[] = {
8-
{ HATSMODE_TRIMS_ONLY, "TRIMS_ONLY" },
9-
{ HATSMODE_KEYS_ONLY, "KEYS_ONLY" },
10-
{ HATSMODE_SWITCHABLE, "SWITCHABLE" },
11-
{ HATSMODE_GLOBAL, "GLOBAL" },
12-
{ 0, NULL }
13-
};
147
const struct YamlIdStr enum_BacklightMode[] = {
158
{ e_backlight_mode_off, "backlight_mode_off" },
169
{ e_backlight_mode_keys, "backlight_mode_keys" },
@@ -279,8 +272,8 @@ static const struct YamlNode struct_CustomFunctionData[] = {
279272
static const struct YamlNode struct_RadioData[] = {
280273
YAML_UNSIGNED( "manuallyEdited", 1 ),
281274
YAML_SIGNED( "timezoneMinutes", 3 ),
282-
YAML_ENUM("hatsMode", 2, enum_HatsMode),
283275
YAML_UNSIGNED( "ppmunit", 2 ),
276+
YAML_PADDING( 2 ),
284277
YAML_CUSTOM("semver",nullptr,w_semver),
285278
YAML_CUSTOM("board",nullptr,w_board),
286279
YAML_ARRAY("calib", 48, 12, struct_CalibData, NULL),
@@ -804,8 +797,7 @@ static const struct YamlNode struct_ModelData[] = {
804797
YAML_UNSIGNED( "disableTelemetryWarning", 1 ),
805798
YAML_UNSIGNED( "showInstanceIds", 1 ),
806799
YAML_UNSIGNED( "checklistInteractive", 1 ),
807-
YAML_ENUM("hatsMode", 2, enum_HatsMode),
808-
YAML_PADDING( 2 ),
800+
YAML_PADDING( 4 ),
809801
YAML_SIGNED( "customThrottleWarningPosition", 8 ),
810802
YAML_UNSIGNED( "beepANACenter", 16 ),
811803
YAML_ARRAY("mixData", 160, 64, struct_MixData, NULL),

radio/src/storage/yaml/yaml_datastructs_x9e.cpp

+2-10
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,6 @@
44
// Enums first
55
//
66

7-
const struct YamlIdStr enum_HatsMode[] = {
8-
{ HATSMODE_TRIMS_ONLY, "TRIMS_ONLY" },
9-
{ HATSMODE_KEYS_ONLY, "KEYS_ONLY" },
10-
{ HATSMODE_SWITCHABLE, "SWITCHABLE" },
11-
{ HATSMODE_GLOBAL, "GLOBAL" },
12-
{ 0, NULL }
13-
};
147
const struct YamlIdStr enum_BacklightMode[] = {
158
{ e_backlight_mode_off, "backlight_mode_off" },
169
{ e_backlight_mode_keys, "backlight_mode_keys" },
@@ -279,8 +272,8 @@ static const struct YamlNode struct_CustomFunctionData[] = {
279272
static const struct YamlNode struct_RadioData[] = {
280273
YAML_UNSIGNED( "manuallyEdited", 1 ),
281274
YAML_SIGNED( "timezoneMinutes", 3 ),
282-
YAML_ENUM("hatsMode", 2, enum_HatsMode),
283275
YAML_UNSIGNED( "ppmunit", 2 ),
276+
YAML_PADDING( 2 ),
284277
YAML_CUSTOM("semver",nullptr,w_semver),
285278
YAML_CUSTOM("board",nullptr,w_board),
286279
YAML_ARRAY("calib", 48, 12, struct_CalibData, NULL),
@@ -805,8 +798,7 @@ static const struct YamlNode struct_ModelData[] = {
805798
YAML_UNSIGNED( "disableTelemetryWarning", 1 ),
806799
YAML_UNSIGNED( "showInstanceIds", 1 ),
807800
YAML_UNSIGNED( "checklistInteractive", 1 ),
808-
YAML_ENUM("hatsMode", 2, enum_HatsMode),
809-
YAML_PADDING( 2 ),
801+
YAML_PADDING( 4 ),
810802
YAML_SIGNED( "customThrottleWarningPosition", 8 ),
811803
YAML_UNSIGNED( "beepANACenter", 16 ),
812804
YAML_ARRAY("mixData", 160, 64, struct_MixData, NULL),

radio/src/storage/yaml/yaml_datastructs_x9lite.cpp

+2-10
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,6 @@
44
// Enums first
55
//
66

7-
const struct YamlIdStr enum_HatsMode[] = {
8-
{ HATSMODE_TRIMS_ONLY, "TRIMS_ONLY" },
9-
{ HATSMODE_KEYS_ONLY, "KEYS_ONLY" },
10-
{ HATSMODE_SWITCHABLE, "SWITCHABLE" },
11-
{ HATSMODE_GLOBAL, "GLOBAL" },
12-
{ 0, NULL }
13-
};
147
const struct YamlIdStr enum_BacklightMode[] = {
158
{ e_backlight_mode_off, "backlight_mode_off" },
169
{ e_backlight_mode_keys, "backlight_mode_keys" },
@@ -279,8 +272,8 @@ static const struct YamlNode struct_CustomFunctionData[] = {
279272
static const struct YamlNode struct_RadioData[] = {
280273
YAML_UNSIGNED( "manuallyEdited", 1 ),
281274
YAML_SIGNED( "timezoneMinutes", 3 ),
282-
YAML_ENUM("hatsMode", 2, enum_HatsMode),
283275
YAML_UNSIGNED( "ppmunit", 2 ),
276+
YAML_PADDING( 2 ),
284277
YAML_CUSTOM("semver",nullptr,w_semver),
285278
YAML_CUSTOM("board",nullptr,w_board),
286279
YAML_ARRAY("calib", 48, 12, struct_CalibData, NULL),
@@ -802,8 +795,7 @@ static const struct YamlNode struct_ModelData[] = {
802795
YAML_UNSIGNED( "disableTelemetryWarning", 1 ),
803796
YAML_UNSIGNED( "showInstanceIds", 1 ),
804797
YAML_UNSIGNED( "checklistInteractive", 1 ),
805-
YAML_ENUM("hatsMode", 2, enum_HatsMode),
806-
YAML_PADDING( 2 ),
798+
YAML_PADDING( 4 ),
807799
YAML_SIGNED( "customThrottleWarningPosition", 8 ),
808800
YAML_UNSIGNED( "beepANACenter", 16 ),
809801
YAML_ARRAY("mixData", 160, 64, struct_MixData, NULL),

radio/src/storage/yaml/yaml_datastructs_xlites.cpp

+2-10
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,6 @@
44
// Enums first
55
//
66

7-
const struct YamlIdStr enum_HatsMode[] = {
8-
{ HATSMODE_TRIMS_ONLY, "TRIMS_ONLY" },
9-
{ HATSMODE_KEYS_ONLY, "KEYS_ONLY" },
10-
{ HATSMODE_SWITCHABLE, "SWITCHABLE" },
11-
{ HATSMODE_GLOBAL, "GLOBAL" },
12-
{ 0, NULL }
13-
};
147
const struct YamlIdStr enum_BacklightMode[] = {
158
{ e_backlight_mode_off, "backlight_mode_off" },
169
{ e_backlight_mode_keys, "backlight_mode_keys" },
@@ -281,8 +274,8 @@ static const struct YamlNode struct_CustomFunctionData[] = {
281274
static const struct YamlNode struct_RadioData[] = {
282275
YAML_UNSIGNED( "manuallyEdited", 1 ),
283276
YAML_SIGNED( "timezoneMinutes", 3 ),
284-
YAML_ENUM("hatsMode", 2, enum_HatsMode),
285277
YAML_UNSIGNED( "ppmunit", 2 ),
278+
YAML_PADDING( 2 ),
286279
YAML_CUSTOM("semver",nullptr,w_semver),
287280
YAML_CUSTOM("board",nullptr,w_board),
288281
YAML_ARRAY("calib", 48, 12, struct_CalibData, NULL),
@@ -807,8 +800,7 @@ static const struct YamlNode struct_ModelData[] = {
807800
YAML_UNSIGNED( "disableTelemetryWarning", 1 ),
808801
YAML_UNSIGNED( "showInstanceIds", 1 ),
809802
YAML_UNSIGNED( "checklistInteractive", 1 ),
810-
YAML_ENUM("hatsMode", 2, enum_HatsMode),
811-
YAML_PADDING( 2 ),
803+
YAML_PADDING( 4 ),
812804
YAML_SIGNED( "customThrottleWarningPosition", 8 ),
813805
YAML_UNSIGNED( "beepANACenter", 16 ),
814806
YAML_ARRAY("mixData", 160, 64, struct_MixData, NULL),

0 commit comments

Comments
 (0)