38
|
1 /**
|
|
2 ******************************************************************************
|
|
3 * @copyright heinrichs weikamp
|
|
4 * @file logbook_miniLive.c
|
|
5 * @author heinrichs weikamp gmbh
|
|
6 * @date 13-March-2015
|
|
7 * @version V0.0.1
|
|
8 * @since 13-March-2015
|
|
9 * @brief little logbook for during the dive
|
|
10 * @bug
|
|
11 * @warning
|
|
12 ******************************************************************************
|
|
13 * @attention
|
|
14 *
|
|
15 * <h2><center>© COPYRIGHT(c) 2015 heinrichs weikamp</center></h2>
|
|
16 *
|
|
17 ******************************************************************************
|
|
18 */
|
|
19
|
|
20 /* Includes ------------------------------------------------------------------*/
|
|
21 #include "logbook_miniLive.h"
|
|
22 #include "data_exchange.h"
|
|
23
|
|
24 /*
|
|
25 ******************************************************************************
|
|
26 * @brief t7_updateMiniLiveLogbook. / Create depth samples for view during dive
|
|
27 * @author heinrichs weikamp gmbh
|
|
28 * @version V0.0.1
|
|
29 * @date 13-March-2015
|
|
30 ******************************************************************************
|
|
31 *
|
|
32 */
|
|
33
|
|
34 #define MLLsize (296)
|
|
35 uint16_t MLLdataDepth[MLLsize];
|
|
36 uint16_t MLLpointer = 0;
|
|
37 uint8_t MLLtickIntervallSeconds = 2;
|
|
38
|
|
39
|
|
40 uint16_t *getMiniLiveLogbookPointerToData(void)
|
|
41 {
|
|
42 return MLLdataDepth;
|
|
43 }
|
|
44
|
|
45
|
|
46 uint16_t getMiniLiveLogbookActualDataLength(void)
|
|
47 {
|
|
48 return MLLpointer;
|
|
49 }
|
|
50
|
|
51
|
|
52
|
|
53 void updateMiniLiveLogbook( _Bool checkOncePerSecond)
|
|
54 {
|
|
55 static uint8_t bDiveMode = 0;
|
|
56 static uint32_t last_second = 0;
|
|
57 static uint8_t secondsCount = 0;
|
|
58
|
|
59 if(checkOncePerSecond)
|
|
60 {
|
|
61 uint32_t now = current_second();
|
|
62 if( last_second == now)
|
|
63 return;
|
|
64 last_second = now;
|
|
65 }
|
|
66 secondsCount++;
|
|
67
|
|
68 if(!bDiveMode)
|
|
69 {
|
|
70 if((stateUsed->mode == MODE_DIVE) && (stateUsed->lifeData.dive_time_seconds >= 5))
|
|
71 {
|
|
72 secondsCount = 0;
|
|
73 MLLtickIntervallSeconds = 2;
|
|
74 bDiveMode = 1;
|
|
75 MLLpointer = 1;
|
|
76 for(int i=0;i<MLLsize;i++)
|
|
77 MLLdataDepth[i] = 0;
|
|
78 }
|
|
79 }
|
|
80 else if(stateUsed->mode == MODE_DIVE)
|
|
81 {
|
|
82 bDiveMode = 3;
|
|
83 //
|
|
84 if(secondsCount >= MLLtickIntervallSeconds)
|
|
85 {
|
|
86 secondsCount = 0;
|
|
87 if((MLLpointer >= MLLsize) && (MLLtickIntervallSeconds < 127))
|
|
88 {
|
|
89 MLLpointer = 0;
|
|
90 MLLtickIntervallSeconds *= 2;
|
|
91 for(int i=0;i<MLLsize/2;i++)
|
|
92 {
|
|
93 MLLdataDepth[i] = MLLdataDepth[MLLpointer++];
|
|
94 MLLdataDepth[i] += MLLdataDepth[MLLpointer++];
|
|
95 MLLdataDepth[i] /= 2;
|
|
96 }
|
|
97 MLLpointer = MLLsize/2;
|
|
98 for(int i=MLLsize/2;i<MLLsize;i++)
|
|
99 MLLdataDepth[i] = 0;
|
|
100 }
|
|
101 if(MLLpointer < MLLsize)
|
|
102 MLLdataDepth[MLLpointer++] = (int)(stateUsed->lifeData.depth_meter * 10);
|
|
103 }
|
|
104 }
|
|
105 else if(bDiveMode == 3)
|
|
106 {
|
|
107 //End of Dive
|
|
108 for(int i=0;i<MLLsize;i++)
|
|
109 MLLdataDepth[i] = 0;
|
|
110 bDiveMode = 0;
|
|
111 }
|
|
112 }
|
|
113
|
|
114
|
|
115
|
|
116 /************************ (C) COPYRIGHT heinrichs weikamp *****END OF FILE****/
|