exercise.dart 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import 'ffi.dart' as ffi;
  2. export 'ffi.dart' show Sex;
  3. class Exercise {
  4. ffi.RwLockExercise? ptr;
  5. Future<void> init() async {
  6. ptr = await ffi.api.newExercise();
  7. }
  8. Future<void> set({
  9. required int age,
  10. required ffi.Sex sex,
  11. required double weightKg,
  12. required double heightCm,
  13. required double rhr,
  14. }) {
  15. return ffi.api.runExerciseSet(
  16. exercise: ptr!,
  17. age: age,
  18. sex: sex,
  19. weightKg: weightKg,
  20. heightCm: heightCm,
  21. rhr: rhr);
  22. }
  23. Future<void> hrPush(int hr, DateTime ts)async{
  24. if(ptr != null){
  25. await ffi.api.runExerciseHrPush(
  26. exercise: ptr!,
  27. hr: ffi.HR(hr: hr, timeMs: ts.millisecondsSinceEpoch));
  28. }
  29. }
  30. Future<double> hrPercent(int hr){
  31. return ffi.api.runExerciseHrPercent(
  32. exercise: ptr!,
  33. hr: hr);
  34. }
  35. Future<double> ei(){
  36. return ffi.api.runExerciseEi(exercise: ptr!);
  37. }
  38. Future<double> ck(){
  39. return ffi.api.runExerciseCk(exercise: ptr!);
  40. }
  41. Future<double> kCal(){
  42. return ffi.api.runExerciseKcal(exercise: ptr!);
  43. }
  44. Future<double> exerciseKcal(){
  45. return ffi.api.runExerciseExerciseKcal(exercise: ptr!);
  46. }
  47. Future<int> hrMean(){
  48. return ffi.api.runExerciseHrMean(exercise: ptr!);
  49. }
  50. Future<int> hrMax(){
  51. return ffi.api.runExerciseHrMax(exercise: ptr!);
  52. }
  53. void close() {
  54. ptr?.dispose();
  55. ptr = null;
  56. }
  57. }