get more accurate timings using the internal clock
Some checks failed
xiao_pet_tracker / semantic-pull-request (push) Failing after 1s
xiao_pet_tracker / build (push) Failing after 1s
xiao_pet_tracker / spell-check (push) Failing after 1s

This commit is contained in:
baldeau 2024-11-14 09:54:43 +01:00
parent 3775d3b9ac
commit 9690161207
2 changed files with 13 additions and 11 deletions

View File

@ -1,6 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:xiao_pet_tracker/app_router/app_router.dart';
import 'package:xiao_pet_tracker/xiao_connector/cubit/xiao_connector_cubit.dart'; import 'package:xiao_pet_tracker/xiao_connector/cubit/xiao_connector_cubit.dart';
class CaptureView extends StatefulWidget { class CaptureView extends StatefulWidget {
@ -81,7 +80,7 @@ class _CaptureViewState extends State<CaptureView> {
const SizedBox( const SizedBox(
height: 12, height: 12,
), ),
ElevatedButton( ElevatedButton.icon(
onPressed: () { onPressed: () {
// context.read<XiaoConnectorCubit>().startCapturing( // context.read<XiaoConnectorCubit>().startCapturing(
// captureType: 'test', // captureType: 'test',
@ -89,7 +88,8 @@ class _CaptureViewState extends State<CaptureView> {
final timeToSend = DateTime.now().millisecondsSinceEpoch; final timeToSend = DateTime.now().millisecondsSinceEpoch;
context.read<XiaoConnectorCubit>().setTime(timeToSend); context.read<XiaoConnectorCubit>().setTime(timeToSend);
}, },
child: const Text('Send new Timestamp'), icon: const Icon(Icons.watch_later_outlined),
label: const Text('Sync Clocks'),
), ),
const SizedBox( const SizedBox(
height: 12, height: 12,

View File

@ -24,7 +24,8 @@ var (
//temperatureSense = [16]byte{0x74, 0x65, 0x6D, 0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x6E, 0x73, 0x65} //temperatureSense = [16]byte{0x74, 0x65, 0x6D, 0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x6E, 0x73, 0x65}
) )
var unixTimeStamp time.Time = time.Now() var currentTimeStamp time.Time = time.Now()
var lastTimeStamp time.Time = time.Now()
const sleepDuration time.Duration = time.Millisecond * 100 const sleepDuration time.Duration = time.Millisecond * 100
@ -85,7 +86,7 @@ func main() {
return return
} }
millisFromEpoch := binary.BigEndian.Uint64(value) millisFromEpoch := binary.BigEndian.Uint64(value)
unixTimeStamp = time.Unix(0, int64(millisFromEpoch)*int64(time.Millisecond)) currentTimeStamp = time.Unix(0, int64(millisFromEpoch)*int64(time.Millisecond))
}, },
}, },
{ {
@ -128,19 +129,20 @@ func main() {
x, y, z, _ := accel.ReadAcceleration() x, y, z, _ := accel.ReadAcceleration()
arrRot := valuesToByteArray(X, Y, Z, int8(1)) arrRot := valuesToByteArray(X, Y, Z, int8(1))
senseCharacteristic.Write(arrRot)
arrAcc := valuesToByteArray(x, y, z, int8(2)) arrAcc := valuesToByteArray(x, y, z, int8(2))
senseCharacteristic.Write(arrAcc)
arrTime := timeStampToByteArray(unixTimeStamp.UnixMilli(), int8(3)) currentTimeStamp = currentTimeStamp.Add(time.Now().Sub(lastTimeStamp))
arrTime := timeStampToByteArray(currentTimeStamp.UnixMilli(), int8(3))
senseCharacteristic.Write(arrRot)
senseCharacteristic.Write(arrAcc)
senseCharacteristic.Write(arrTime) senseCharacteristic.Write(arrTime)
} }
time.Sleep(sleepDuration)
if isCapturing { if isCapturing {
unixTimeStamp = unixTimeStamp.Add(sleepDuration) lastTimeStamp = time.Now()
} }
time.Sleep(sleepDuration)
} }
} }