comparison Discovery/Src/logbook_miniLive.c @ 38:5f11787b4f42

include in ostc4 repository
author heinrichsweikamp
date Sat, 28 Apr 2018 11:52:34 +0200
parents
children 5ca177d2df5d
comparison
equal deleted inserted replaced
37:ccc45c0e1ea2 38:5f11787b4f42
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>&copy; 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****/