Use of Session::createField()

I am exploring the use of createField() to capture some user data from my watch app, and have created and populated a test field in the session message with:

 

$.session = Record.createSession({ :name => "raceQs", :sport => Record.SPORT_GENERIC});
            var options = {:mesgType=>Toybox.FitContributor.MESG_TYPE_SESSION};
            var testField = $.session.createField("testField",99,Toybox.FitContributor.DATA_TYPE_UINT32 ,options);
            testField.setData(999);
            $.session.start();

As I couldn't find any guidance in the doco, I have used an arbitrary value of 99 as the fieldId.

I have decoded the session message in the resultant FIT file, and can locate the session name "raceQs" in an undefined field, but can't find the created field in the "session" message.

253	4	6	timestamp	0xd598bc37	uint32	935106773
2	4	6	start_time	0xbf98bc37	uint32	935106751
3	4	5	start_position_lat	0x6c4fe019	sint32	434130796
4	4	5	start_position_long	0xebe997ba	sint32	-1164449301
7	4	6	total_elapsed_time	0x6c520000	uint32	21100
8	4	6	total_timer_time	0x6c520000	uint32	21100
9	4	6	total_distance	0x9e440000	uint32	17566
10	4	6	total_cycles	0xffffffff	uint32	4294967295
29	4	5	nec_lat	0x6c4fe019	sint32	434130796
30	4	5	nec_long	0xebe997ba	sint32	-1164449301
31	4	5	swc_lat	0xc920e019	sint32	434118857
32	4	5	swc_long	0xbbba97ba	sint32	-1164461381
38	4	5	unknown			0xc920e019	sint32	434118857
39	4	5	unknown			0xc4bb97ba	sint32	-1164461116
41	4	6	avg_stroke_count	0xffffffff	uint32	4294967295
48	4	6	total_work	0xffffffff	uint32	4294967295
59	4	6	total_moving_time	0xffffffff	uint32	4294967295
65	4	6	time_in_hr_zone	0xffffffff	uint32	4294967295
66	4	6	time_in_speed_zone	0xffffffff	uint32	4294967295
67	4	6	time_in_cadence_zone	0xffffffff	uint32	4294967295
68	4	6	time_in_power_zone	0xffffffff	uint32	4294967295
69	4	6	avg_lap_time	0xffffffff	uint32	4294967295
78	4	6	unknown			0xffffffff	uint32	4294967295
110	16	7	unknown			0x72616365517300000000000000000000	string	'raceQs'
124	4	6	enhanced_avg_speed	0xffffffff	uint32	4294967295
125	4	6	enhanced_max_speed	0xffffffff	uint32	4294967295
126	4	6	enhanced_avg_altitude	0xffffffff	uint32	4294967295
127	4	6	enhanced_min_altitude	0xffffffff	uint32	4294967295
128	4	6	enhanced_max_altitude	0xffffffff	uint32	4294967295
254	2	4	message_index	0x0000	uint16	0
11	2	4	total_calories	0x0800	uint16	8
13	2	4	total_fat_calories	0xffff	uint16	65535
14	2	4	avg_speed	0x8520	uint16	8325
15	2	4	max_speed	0x4721	uint16	8519
20	2	4	avg_power	0xffff	uint16	65535
21	2	4	max_power	0xffff	uint16	65535
22	2	4	total_ascent	0x0200	uint16	2
23	2	4	total_descent	0x0000	uint16	0
25	2	4	first_lap_index	0x0000	uint16	0
26	2	4	num_laps	0x0100	uint16	1
33	2	4	unknown			0xffff	uint16	65535
34	2	4	normalized_power	0xffff	uint16	65535
35	2	4	training_stress_score	0xffff	uint16	65535
36	2	4	intensity_factor	0xffff	uint16	65535
37	2	4	left_right_balance	0xffff	uint16	65535
42	2	4	avg_stroke_distance	0xffff	uint16	65535
44	2	4	pool_length	0xffff	uint16	65535
45	2	4	threshold_power	0xffff	uint16	65535
47	2	4	num_active_lengths	0xffff	uint16	65535
49	2	4	avg_altitude	0xffff	uint16	65535
50	2	4	max_altitude	0xffff	uint16	65535
52	2	3	avg_grade	0xff7f	sint16	32767
53	2	3	avg_pos_grade	0xff7f	sint16	32767
54	2	3	avg_neg_grade	0xff7f	sint16	32767
55	2	3	max_pos_grade	0xff7f	sint16	32767
56	2	3	max_neg_grade	0xff7f	sint16	32767
60	2	3	avg_pos_vertical_speed	0xff7f	sint16	32767
61	2	3	avg_neg_vertical_speed	0xff7f	sint16	32767
62	2	3	max_pos_vertical_speed	0xff7f	sint16	32767
63	2	3	max_neg_vertical_speed	0xff7f	sint16	32767
70	2	4	best_lap_index	0xffff	uint16	65535
71	2	4	min_altitude	0xffff	uint16	65535
79	2	4	unknown			0xffff	uint16	65535
80	2	4	unknown			0xffff	uint16	65535
82	2	4	player_score	0xffff	uint16	65535
83	2	4	opponent_score	0xffff	uint16	65535
85	2	4	stroke_count	0xffff	uint16	65535
86	2	4	zone_count	0xffff	uint16	65535
87	2	4	max_ball_speed	0xffff	uint16	65535
88	2	4	avg_ball_speed	0xffff	uint16	65535
89	2	4	avg_vertical_oscillation	0xffff	uint16	65535
90	2	4	avg_stance_time_percent	0xffff	uint16	65535
91	2	4	avg_stance_time	0xffff	uint16	65535
106	2	4	unknown			0xffff	uint16	65535
107	2	4	unknown			0xffff	uint16	65535
108	2	4	unknown			0xffff	uint16	65535
0	1	0	event	0x09	enum
1	1	0	event_type	0x01	enum
5	1	0	sport	0x00	enum
6	1	0	sub_sport	0x00	enum
16	1	2	avg_heart_rate	0xff	uint8	255
17	1	2	max_heart_rate	0xff	uint8	255
18	1	2	avg_cadence	0xff	uint8	255
19	1	2	max_cadence	0xff	uint8	255
24	1	2	total_training_effect	0xff	uint8	255
27	1	2	event_group	0xff	uint8	255
28	1	0	trigger	0x00	enum
43	1	0	swim_stroke	0xff	enum
46	1	0	pool_length_unit	0xff	enum
51	1	2	gps_accuracy	0xff	uint8	255
57	1	1	avg_temperature	0x7f	sint8	127
58	1	1	max_temperature	0x7f	sint8	127
64	1	2	min_heart_rate	0xff	uint8	255
81	1	0	unknown			0x00	enum
84	1	7	opponent_name	0x00	string	''
92	1	2	avg_fractional_cadence	0xff	uint8	255
93	1	2	max_fractional_cadence	0xff	uint8	255
94	1	2	total_fractional_cycles	0xff	uint8	255
109	1	2	unknown			0xff	uint8	255
111	1	2	sport_index	0xff	uint8	255
184	1	0	unknown			0x00	enum

Am I using createField and setData correctly? If so, Where would I find the data?



  • [UPDATE]

    Implementing the code example in the doco which creates a "bananas_earned" field in the "MESG_TYPE_RECORD message does indeed create a developer field in the FIT file's record message.
    BUT when I nominate MESG_TYPE_LAP as the msgType, the resulting fit file is corrupted: the FitCSVTool.jar reports "undefined-dev-type" in the data definition message for the lap message.
    Anybody else working on this?