Mercurial > public > ostc4
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Discovery/Src/logbook_miniLive.c Sat Apr 28 11:52:34 2018 +0200 @@ -0,0 +1,116 @@ +/** + ****************************************************************************** + * @copyright heinrichs weikamp + * @file logbook_miniLive.c + * @author heinrichs weikamp gmbh + * @date 13-March-2015 + * @version V0.0.1 + * @since 13-March-2015 + * @brief little logbook for during the dive + * @bug + * @warning + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2015 heinrichs weikamp</center></h2> + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "logbook_miniLive.h" +#include "data_exchange.h" + + /* + ****************************************************************************** + * @brief t7_updateMiniLiveLogbook. / Create depth samples for view during dive + * @author heinrichs weikamp gmbh + * @version V0.0.1 + * @date 13-March-2015 + ****************************************************************************** + * + */ + +#define MLLsize (296) +uint16_t MLLdataDepth[MLLsize]; +uint16_t MLLpointer = 0; +uint8_t MLLtickIntervallSeconds = 2; + + +uint16_t *getMiniLiveLogbookPointerToData(void) +{ + return MLLdataDepth; +} + + +uint16_t getMiniLiveLogbookActualDataLength(void) +{ + return MLLpointer; +} + + + +void updateMiniLiveLogbook( _Bool checkOncePerSecond) +{ + static uint8_t bDiveMode = 0; + static uint32_t last_second = 0; + static uint8_t secondsCount = 0; + + if(checkOncePerSecond) + { + uint32_t now = current_second(); + if( last_second == now) + return; + last_second = now; + } + secondsCount++; + + if(!bDiveMode) + { + if((stateUsed->mode == MODE_DIVE) && (stateUsed->lifeData.dive_time_seconds >= 5)) + { + secondsCount = 0; + MLLtickIntervallSeconds = 2; + bDiveMode = 1; + MLLpointer = 1; + for(int i=0;i<MLLsize;i++) + MLLdataDepth[i] = 0; + } + } + else if(stateUsed->mode == MODE_DIVE) + { + bDiveMode = 3; + // + if(secondsCount >= MLLtickIntervallSeconds) + { + secondsCount = 0; + if((MLLpointer >= MLLsize) && (MLLtickIntervallSeconds < 127)) + { + MLLpointer = 0; + MLLtickIntervallSeconds *= 2; + for(int i=0;i<MLLsize/2;i++) + { + MLLdataDepth[i] = MLLdataDepth[MLLpointer++]; + MLLdataDepth[i] += MLLdataDepth[MLLpointer++]; + MLLdataDepth[i] /= 2; + } + MLLpointer = MLLsize/2; + for(int i=MLLsize/2;i<MLLsize;i++) + MLLdataDepth[i] = 0; + } + if(MLLpointer < MLLsize) + MLLdataDepth[MLLpointer++] = (int)(stateUsed->lifeData.depth_meter * 10); + } + } + else if(bDiveMode == 3) + { + //End of Dive + for(int i=0;i<MLLsize;i++) + MLLdataDepth[i] = 0; + bDiveMode = 0; + } +} + + + +/************************ (C) COPYRIGHT heinrichs weikamp *****END OF FILE****/