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****/