Skip to content

Commit

Permalink
#27, #30 - Added WorkoutSession as part of the underlying framework for
Browse files Browse the repository at this point in the history
supporting workout goals.  This version runs successfully in Verifier
with the following exceptions:
1. When the workout timer is paused, the class-based state model for the
GPS continues ignoring a timeout event.  Probably this is caused by a
failure to unregister with the GPS when the workout timer is stopped.
2. When the workout timer is reset, the heart-rate samples are cleared,
but not the rest of data in the WorkoutSession such as currentSpeed,
currentPace, accumulatedDistance, and currentHeartRate.
  • Loading branch information
John Wolfe committed Jun 11, 2014
1 parent fe7e01d commit efe6f61
Show file tree
Hide file tree
Showing 10 changed files with 1,031 additions and 722 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
-- BP 7.1 content: Interface syschar: 3 persistence-version: 7.1.6
-- BP 7.1.6 content: Interface syschar: 3 persistence-version: 7.1.6

INSERT INTO C_I
VALUES ("203a4287-09f9-4c6c-97fa-12e9ac462a4e",
Expand All @@ -20,7 +20,7 @@ INSERT INTO C_AS
INSERT INTO C_PP
VALUES ("ebd5477d-b8b9-4b46-964e-0730498dba69",
"189a8d5e-b6a0-4065-ab18-27b86bf644c9",
"ba5eda7a-def5-0000-0000-000000000003",
"ba5eda7a-def5-0000-0000-000000000002",
'heartRate',
'',
0,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
-- BP 7.1 content: ClassStateMachine syschar: 3 persistence-version: 7.1.5
-- BP 7.1.6 content: ClassStateMachine syschar: 3 persistence-version: 7.1.6

INSERT INTO SM_ASM
VALUES ("208abec5-b869-4f5f-acff-7b0940ddda2b",
VALUES ("8ca672ac-4c8d-4785-c037-63b1fec94f59",
"43ffa2f7-7cc5-400e-b5f5-59b26ed3c7b5");
INSERT INTO SM_SM
VALUES ("208abec5-b869-4f5f-acff-7b0940ddda2b",
VALUES ("8ca672ac-4c8d-4785-c037-63b1fec94f59",
'',
0);
INSERT INTO SM_MOORE
VALUES ("208abec5-b869-4f5f-acff-7b0940ddda2b");
VALUES ("8ca672ac-4c8d-4785-c037-63b1fec94f59");
INSERT INTO SM_SGEVT
VALUES ("75522ea9-7f8d-4a13-8a34-261382aa624d",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"00000000-0000-0000-0000-000000000000",
"95d8bd78-3d3b-45b0-ab16-4289c0af092e",
"00000000-0000-0000-0000-000000000000");
"00000000-0000-0000-0000-000000000000",
'HR::registerListener');
INSERT INTO SPR_PS_PROXY
VALUES ("95d8bd78-3d3b-45b0-ab16-4289c0af092e",
'registerListener',
Expand All @@ -24,24 +25,25 @@ INSERT INTO SPR_PS_PROXY
'../../../HeartRateMonitor.xtuml');
INSERT INTO SM_SEVT
VALUES ("75522ea9-7f8d-4a13-8a34-261382aa624d",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"00000000-0000-0000-0000-000000000000");
INSERT INTO SM_EVT
VALUES ("75522ea9-7f8d-4a13-8a34-261382aa624d",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"00000000-0000-0000-0000-000000000000",
1,
'registerListener',
0,
'',
'HeartRateMonitor_A1',
'HR::registerListener',
'');
INSERT INTO SM_SGEVT
VALUES ("d87f2ba8-8584-4de2-9563-52a4f15df114",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"00000000-0000-0000-0000-000000000000",
"f3d5d876-13df-40ca-8b23-f3b89bb9e437",
"00000000-0000-0000-0000-000000000000");
"00000000-0000-0000-0000-000000000000",
'HR::unregisterListener');
INSERT INTO SPR_PS_PROXY
VALUES ("f3d5d876-13df-40ca-8b23-f3b89bb9e437",
'unregisterListener',
Expand All @@ -51,29 +53,29 @@ INSERT INTO SPR_PS_PROXY
'../../../HeartRateMonitor.xtuml');
INSERT INTO SM_SEVT
VALUES ("d87f2ba8-8584-4de2-9563-52a4f15df114",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"00000000-0000-0000-0000-000000000000");
INSERT INTO SM_EVT
VALUES ("d87f2ba8-8584-4de2-9563-52a4f15df114",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"00000000-0000-0000-0000-000000000000",
2,
'unregisterListener',
0,
'',
'HeartRateMonitor_A2',
'HR::unregisterListener',
'');
INSERT INTO SM_LEVT
VALUES ("21d964e9-30cf-468a-990b-3b2ea831f5a3",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"00000000-0000-0000-0000-000000000000");
INSERT INTO SM_SEVT
VALUES ("21d964e9-30cf-468a-990b-3b2ea831f5a3",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"00000000-0000-0000-0000-000000000000");
INSERT INTO SM_EVT
VALUES ("21d964e9-30cf-468a-990b-3b2ea831f5a3",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"00000000-0000-0000-0000-000000000000",
3,
'timeout',
Expand All @@ -83,144 +85,144 @@ INSERT INTO SM_EVT
'');
INSERT INTO SM_STATE
VALUES ("493764c1-db39-4945-85b4-65a7376db8aa",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"00000000-0000-0000-0000-000000000000",
'idle',
1,
0);
INSERT INTO SM_SEME
VALUES ("493764c1-db39-4945-85b4-65a7376db8aa",
"75522ea9-7f8d-4a13-8a34-261382aa624d",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"00000000-0000-0000-0000-000000000000");
INSERT INTO SM_CH
VALUES ("493764c1-db39-4945-85b4-65a7376db8aa",
"d87f2ba8-8584-4de2-9563-52a4f15df114",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"00000000-0000-0000-0000-000000000000",
'');
INSERT INTO SM_SEME
VALUES ("493764c1-db39-4945-85b4-65a7376db8aa",
"d87f2ba8-8584-4de2-9563-52a4f15df114",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"00000000-0000-0000-0000-000000000000");
INSERT INTO SM_EIGN
VALUES ("493764c1-db39-4945-85b4-65a7376db8aa",
"21d964e9-30cf-468a-990b-3b2ea831f5a3",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"00000000-0000-0000-0000-000000000000",
'');
INSERT INTO SM_SEME
VALUES ("493764c1-db39-4945-85b4-65a7376db8aa",
"21d964e9-30cf-468a-990b-3b2ea831f5a3",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"00000000-0000-0000-0000-000000000000");
INSERT INTO SM_STATE
VALUES ("4502dd3d-8627-4d95-8cd8-4635ad16dbd5",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"00000000-0000-0000-0000-000000000000",
'monitoring',
2,
0);
INSERT INTO SM_CH
VALUES ("4502dd3d-8627-4d95-8cd8-4635ad16dbd5",
"75522ea9-7f8d-4a13-8a34-261382aa624d",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"00000000-0000-0000-0000-000000000000",
'');
INSERT INTO SM_SEME
VALUES ("4502dd3d-8627-4d95-8cd8-4635ad16dbd5",
"75522ea9-7f8d-4a13-8a34-261382aa624d",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"00000000-0000-0000-0000-000000000000");
INSERT INTO SM_SEME
VALUES ("4502dd3d-8627-4d95-8cd8-4635ad16dbd5",
"d87f2ba8-8584-4de2-9563-52a4f15df114",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"00000000-0000-0000-0000-000000000000");
INSERT INTO SM_SEME
VALUES ("4502dd3d-8627-4d95-8cd8-4635ad16dbd5",
"21d964e9-30cf-468a-990b-3b2ea831f5a3",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"00000000-0000-0000-0000-000000000000");
INSERT INTO SM_NSTXN
VALUES ("67bfd622-fc2a-4a19-a7ef-98cab02c670b",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"493764c1-db39-4945-85b4-65a7376db8aa",
"75522ea9-7f8d-4a13-8a34-261382aa624d",
"00000000-0000-0000-0000-000000000000");
INSERT INTO SM_TXN
VALUES ("67bfd622-fc2a-4a19-a7ef-98cab02c670b",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"4502dd3d-8627-4d95-8cd8-4635ad16dbd5",
"00000000-0000-0000-0000-000000000000");
INSERT INTO SM_NSTXN
VALUES ("05275ba9-8e8b-4e50-bd51-635798fbf42d",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"4502dd3d-8627-4d95-8cd8-4635ad16dbd5",
"d87f2ba8-8584-4de2-9563-52a4f15df114",
"00000000-0000-0000-0000-000000000000");
INSERT INTO SM_TXN
VALUES ("05275ba9-8e8b-4e50-bd51-635798fbf42d",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"493764c1-db39-4945-85b4-65a7376db8aa",
"00000000-0000-0000-0000-000000000000");
INSERT INTO SM_NSTXN
VALUES ("05cbcf3c-c747-4112-85e9-5f8837e5ddb2",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"4502dd3d-8627-4d95-8cd8-4635ad16dbd5",
"21d964e9-30cf-468a-990b-3b2ea831f5a3",
"00000000-0000-0000-0000-000000000000");
INSERT INTO SM_TXN
VALUES ("05cbcf3c-c747-4112-85e9-5f8837e5ddb2",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"4502dd3d-8627-4d95-8cd8-4635ad16dbd5",
"00000000-0000-0000-0000-000000000000");
INSERT INTO SM_MOAH
VALUES ("f944cbb9-ff77-4701-aadc-c6d03b94c2cc",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"493764c1-db39-4945-85b4-65a7376db8aa");
INSERT INTO SM_AH
VALUES ("f944cbb9-ff77-4701-aadc-c6d03b94c2cc",
"208abec5-b869-4f5f-acff-7b0940ddda2b");
"8ca672ac-4c8d-4785-c037-63b1fec94f59");
INSERT INTO SM_ACT
VALUES ("f944cbb9-ff77-4701-aadc-c6d03b94c2cc",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
1,
'',
'');
INSERT INTO SM_MOAH
VALUES ("ad64c0a4-629b-42bb-abd8-7a8e461449e0",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"4502dd3d-8627-4d95-8cd8-4635ad16dbd5");
INSERT INTO SM_AH
VALUES ("ad64c0a4-629b-42bb-abd8-7a8e461449e0",
"208abec5-b869-4f5f-acff-7b0940ddda2b");
"8ca672ac-4c8d-4785-c037-63b1fec94f59");
INSERT INTO SM_ACT
VALUES ("ad64c0a4-629b-42bb-abd8-7a8e461449e0",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
1,
'select any monitor from instances of HeartRateMonitor;
send HeartRateProvider::heartRateChanged(heartRate: monitor.recentHeartRate);
monitor.recentHeartRate = monitor.recentHeartRate + 1.0;',
monitor.recentHeartRate = monitor.recentHeartRate + 1;',
'');
INSERT INTO SM_TAH
VALUES ("dacab554-fe00-4c11-a59e-06b71c1770e3",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"67bfd622-fc2a-4a19-a7ef-98cab02c670b");
INSERT INTO SM_AH
VALUES ("dacab554-fe00-4c11-a59e-06b71c1770e3",
"208abec5-b869-4f5f-acff-7b0940ddda2b");
"8ca672ac-4c8d-4785-c037-63b1fec94f59");
INSERT INTO SM_ACT
VALUES ("dacab554-fe00-4c11-a59e-06b71c1770e3",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
1,
'
select any monitor from instances of HeartRateMonitor;
if (empty monitor)
create object instance monitor of HeartRateMonitor;
end if;
monitor.recentHeartRate = 50.0;
monitor.recentHeartRate = 50;

LOG::LogInfo(message: "listener registered with interval: 3 sec");

Expand All @@ -230,35 +232,35 @@ monitor.timer = TIM::timer_start_recurring(event_inst: timeout, microseconds: 30
'');
INSERT INTO SM_TAH
VALUES ("d010be6b-0e95-4a7f-b75c-7c90f5b75a13",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"05275ba9-8e8b-4e50-bd51-635798fbf42d");
INSERT INTO SM_AH
VALUES ("d010be6b-0e95-4a7f-b75c-7c90f5b75a13",
"208abec5-b869-4f5f-acff-7b0940ddda2b");
"8ca672ac-4c8d-4785-c037-63b1fec94f59");
INSERT INTO SM_ACT
VALUES ("d010be6b-0e95-4a7f-b75c-7c90f5b75a13",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
1,
'select any monitor from instances of HeartRateMonitor;
res = TIM::timer_cancel(timer_inst_ref: monitor.timer);',
'');
INSERT INTO SM_TAH
VALUES ("3b92c017-5c77-40c3-ba52-ca9a72f7db4a",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
"05cbcf3c-c747-4112-85e9-5f8837e5ddb2");
INSERT INTO SM_AH
VALUES ("3b92c017-5c77-40c3-ba52-ca9a72f7db4a",
"208abec5-b869-4f5f-acff-7b0940ddda2b");
"8ca672ac-4c8d-4785-c037-63b1fec94f59");
INSERT INTO SM_ACT
VALUES ("3b92c017-5c77-40c3-ba52-ca9a72f7db4a",
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
1,
'',
'');
INSERT INTO GD_MD
VALUES ("4fccaad3-edc3-4961-b0c7-8c9361b81145",
10,
"208abec5-b869-4f5f-acff-7b0940ddda2b",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
40,
0,
0,
Expand All @@ -272,13 +274,15 @@ INSERT INTO GD_MD
0,
0,
0,
'');
'',
'GPS Watch::Library::HeartRateMonitor::HeartRateMonitor::HeartRateMonitor::Class State Machine');
INSERT INTO GD_GE
VALUES ("35daa71c-83e4-4e99-b3b9-389db6452069",
"4fccaad3-edc3-4961-b0c7-8c9361b81145",
"493764c1-db39-4945-85b4-65a7376db8aa",
41,
0);
0,
'GPS Watch::Library::HeartRateMonitor::HeartRateMonitor::HeartRateMonitor::Class State Machine::idle');
INSERT INTO GD_SHP
VALUES ("35daa71c-83e4-4e99-b3b9-389db6452069");
INSERT INTO GD_NCS
Expand Down Expand Up @@ -311,7 +315,8 @@ INSERT INTO GD_GE
"4fccaad3-edc3-4961-b0c7-8c9361b81145",
"4502dd3d-8627-4d95-8cd8-4635ad16dbd5",
41,
0);
0,
'GPS Watch::Library::HeartRateMonitor::HeartRateMonitor::HeartRateMonitor::Class State Machine::monitoring');
INSERT INTO GD_SHP
VALUES ("3ca48cfe-469c-4e9b-a866-5878112234d9");
INSERT INTO GD_NCS
Expand Down Expand Up @@ -354,7 +359,8 @@ INSERT INTO GD_GE
"4fccaad3-edc3-4961-b0c7-8c9361b81145",
"67bfd622-fc2a-4a19-a7ef-98cab02c670b",
42,
0);
0,
'GPS Watch::Library::HeartRateMonitor::HeartRateMonitor::HeartRateMonitor::Class State Machine::idle::HR::registerListener');
INSERT INTO GD_CON
VALUES ("449739f8-6411-4ed5-8f4e-148394e77bf1",
"00000000-0000-0000-0000-000000000000");
Expand Down Expand Up @@ -453,7 +459,8 @@ INSERT INTO GD_GE
"4fccaad3-edc3-4961-b0c7-8c9361b81145",
"05275ba9-8e8b-4e50-bd51-635798fbf42d",
42,
0);
0,
'GPS Watch::Library::HeartRateMonitor::HeartRateMonitor::HeartRateMonitor::Class State Machine::monitoring::HR::unregisterListener');
INSERT INTO GD_CON
VALUES ("3ae13a1b-f448-4ae4-9a3c-02a5ad60d626",
"00000000-0000-0000-0000-000000000000");
Expand Down Expand Up @@ -552,7 +559,8 @@ INSERT INTO GD_GE
"4fccaad3-edc3-4961-b0c7-8c9361b81145",
"05cbcf3c-c747-4112-85e9-5f8837e5ddb2",
42,
0);
0,
'GPS Watch::Library::HeartRateMonitor::HeartRateMonitor::HeartRateMonitor::Class State Machine::monitoring::HeartRateMonitor_A3: timeout');
INSERT INTO GD_CON
VALUES ("726a2084-98f9-46fe-8c4f-20128780a5d3",
"00000000-0000-0000-0000-000000000000");
Expand Down Expand Up @@ -686,4 +694,6 @@ INSERT INTO O_OBJ_PROXY
'HeartRateMonitor',
'',
"00000000-0000-0000-0000-000000000000",
"00000000-0000-0000-0000-000000000000",
"8ca672ac-4c8d-4785-c037-63b1fec94f59",
'../HeartRateMonitor.xtuml');
Loading

0 comments on commit efe6f61

Please sign in to comment.