Skip to content

Commit b034a19

Browse files
Jashan32marcnause
authored andcommitted
implement gyroscope gain
1 parent c1473cd commit b034a19

7 files changed

Lines changed: 32 additions & 18 deletions

File tree

lib/l10n/app_en.arb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,8 @@
386386
"lowLimit": "Low Limit",
387387
"luxmeterHighLimitHint": "Please provide the maximum limit of lux value to be recorded (10 Lx to 10000 Lx)",
388388
"sensorGain": "Sensor Gain",
389-
"sensorGainHint": "Please set gain of the sensor",
389+
"sensorGainHint": "Please set gain of the sensor (0 to 100)",
390+
"sensorGainErrorMessage": "Entered gain is not within the limits!",
390391
"locationData": "Include Location Data",
391392
"locationDataHint": "Include the location data in the logged file",
392393
"activeSensor": "Active Sensor",

lib/l10n/app_hi.arb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,8 @@
384384
"lowLimit": "लो लिमिट",
385385
"luxmeterHighLimitHint": "रिकॉर्ड करने के लिए लक्स की मैक्स लिमिट बताएं (10 Lx से 10000 Lx)",
386386
"sensorGain": "सेंसर गेन",
387-
"sensorGainHint": "सेंसर का गेन सेट करें",
387+
"sensorGainHint": "सेंसर का गेन सेट करें (0 से 100)",
388+
"sensorGainErrorMessage": "दर्ज किया गया सेंसर गेन सीमा के भीतर नहीं है!",
388389
"locationData": "लोकेशन डेटा भी शामिल करें",
389390
"locationDataHint": "लॉग की फाइल में लोकेशन डेटा भी डालें",
390391
"activeSensor": "एक्टिव सेंसर",

lib/l10n/app_it.arb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,8 @@
385385
"highLimit": "Limite Massimo",
386386
"luxmeterHighLimitHint": "Inserisci il limite massimo del valore di lux da registrare (da 10 Lx a 10000 Lx)",
387387
"sensorGain": "Guadagno del Sensore",
388-
"sensorGainHint": "Imposta il guadagno del sensore",
388+
"sensorGainHint": "Imposta il guadagno del sensore (da 0 a 100)",
389+
"sensorGainErrorMessage": "Il guadagno del sensore inserito non rientra nei limiti!",
389390
"locationData": "Includi Dati di Posizione",
390391
"locationDataHint": "Includi i dati di posizione nel file registrato",
391392
"activeSensor": "Sensore Attivo",

lib/models/gyroscope_config.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
class GyroscopeConfig {
22
final int updatePeriod;
33
final int highLimit;
4-
final int sensorGain;
4+
final double sensorGain;
55
final int lowLimit;
66
final bool includeLocationData;
77

88
const GyroscopeConfig({
99
this.updatePeriod = 1000,
1010
this.highLimit = 200,
1111
this.lowLimit = 200,
12-
this.sensorGain = 1,
12+
this.sensorGain = 1.0,
1313
this.includeLocationData = true,
1414
});
1515

1616
GyroscopeConfig copyWith({
1717
int? updatePeriod,
1818
int? highLimit,
1919
int? lowLimit,
20-
int? sensorGain,
20+
double? sensorGain,
2121
bool? includeLocationData,
2222
}) {
2323
return GyroscopeConfig(
@@ -44,7 +44,7 @@ class GyroscopeConfig {
4444
updatePeriod: json['updatePeriod'] ?? 1000,
4545
highLimit: json['highLimit'] ?? 200,
4646
lowLimit: json['lowLimit'] ?? 200,
47-
sensorGain: json['sensorGain'] ?? 1,
47+
sensorGain: json['sensorGain'] ?? 1.0,
4848
includeLocationData: json['includeLocationData'] ?? true,
4949
);
5050
}

lib/providers/gyroscope_config_provider.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class GyroscopeConfigProvider extends ChangeNotifier {
5151
_saveConfigToPrefs();
5252
}
5353

54-
void updateSensorGain(int sensorGain) {
54+
void updateSensorGain(double sensorGain) {
5555
_config = _config.copyWith(sensorGain: sensorGain);
5656
notifyListeners();
5757
_saveConfigToPrefs();

lib/providers/gyroscope_state_provider.dart

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -232,21 +232,21 @@ class GyroscopeProvider extends ChangeNotifier {
232232
void _updateData() {
233233
final highLimit = _currentHighLimit;
234234
final lowLimit = _currentLowLimit;
235-
235+
final gain = (_configProvider?.config.sensorGain ?? 1).toDouble();
236236
final bool shouldClip = !_isPlayingBack;
237237

238238
final double x;
239239
final double y;
240240
final double z;
241241

242242
if (shouldClip && highLimit != null && lowLimit != null) {
243-
x = _gyroscopeEvent.x.clamp(-lowLimit, highLimit).toDouble();
244-
y = _gyroscopeEvent.y.clamp(-lowLimit, highLimit).toDouble();
245-
z = _gyroscopeEvent.z.clamp(-lowLimit, highLimit).toDouble();
243+
x = (_gyroscopeEvent.x * gain).clamp(-lowLimit, highLimit).toDouble();
244+
y = (_gyroscopeEvent.y * gain).clamp(-lowLimit, highLimit).toDouble();
245+
z = (_gyroscopeEvent.z * gain).clamp(-lowLimit, highLimit).toDouble();
246246
} else {
247-
x = _gyroscopeEvent.x;
248-
y = _gyroscopeEvent.y;
249-
z = _gyroscopeEvent.z;
247+
x = _gyroscopeEvent.x * gain;
248+
y = _gyroscopeEvent.y * gain;
249+
z = _gyroscopeEvent.z * gain;
250250
}
251251

252252
_gyroscopeEvent = GyroscopeEvent(x, y, z, DateTime.now());

lib/view/gyroscope_config_screen.dart

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -170,9 +170,20 @@ class _GyroscopeConfigScreenState extends State<GyroscopeConfigScreen> {
170170
value: provider.config.sensorGain.toString(),
171171
controller: _sensorGainController,
172172
onChanged: (value) {
173-
final intValue = int.tryParse(value);
174-
if (intValue != null) {
175-
provider.updateSensorGain(intValue);
173+
final doubleValue = double.tryParse(value);
174+
if (doubleValue != null &&
175+
doubleValue >= 0 &&
176+
doubleValue <= 100) {
177+
provider.updateSensorGain(doubleValue);
178+
} else {
179+
ScaffoldMessenger.of(context).showSnackBar(
180+
SnackBar(
181+
content: Text(
182+
appLocalizations.sensorGainErrorMessage,
183+
style: TextStyle(color: snackBarContentColor),
184+
),
185+
backgroundColor: snackBarBackgroundColor),
186+
);
176187
}
177188
},
178189
hint: appLocalizations.sensorGainHint,

0 commit comments

Comments
 (0)