view Discovery/Inc/base.h @ 789:b7cd0c5c8e43

When using automatic setpoint switching, allow the user to set an arbitrary ppO2 as a custom setpoint during the dive.
author heinrichsweikamp
date Wed, 12 Jul 2023 10:13:25 +0200
parents 45b8f3c2acce
children f29369fff71e
line wrap: on
line source

///////////////////////////////////////////////////////////////////////////////
/// -*- coding: UTF-8 -*-
///
/// \file   Discovery/Inc/base.h
/// \brief  main(): init hardware and start sub-systems
/// \author MCD Application Team
/// \date   26-February-2014
///
/// $Id$
///////////////////////////////////////////////////////////////////////////////
/// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh
///
///     This program is free software: you can redistribute it and/or modify
///     it under the terms of the GNU General Public License as published by
///     the Free Software Foundation, either version 3 of the License, or
///     (at your option) any later version.
///
///     This program is distributed in the hope that it will be useful,
///     but WITHOUT ANY WARRANTY; without even the implied warranty of
///     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
///     GNU General Public License for more details.
///
///     You should have received a copy of the GNU General Public License
///     along with this program.  If not, see <http://www.gnu.org/licenses/>.
//////////////////////////////////////////////////////////////////////////////
/// \par COPYRIGHT(c) 2014 STMicroelectronics
///
/// Redistribution and use in source and binary forms, with or without modification,
/// are permitted provided that the following conditions are met:
///   1. Redistributions of source code must retain the above copyright notice,
///      this list of conditions and the following disclaimer.
///   2. Redistributions in binary form must reproduce the above copyright notice,
///      this list of conditions and the following disclaimer in the documentation
///      and/or other materials provided with the distribution.
///   3. Neither the name of STMicroelectronics nor the names of its contributors
///      may be used to endorse or promote products derived from this software
///      without specific prior written permission.
///
/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
/// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
/// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
/// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
/// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
/// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
/// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
/// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//////////////////////////////////////////////////////////////////////////////

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef BASE_H
#define BASE_H

/* Includes ------------------------------------------------------------------*/
#include "stm32f4xx_hal.h"
#include "tStructure.h"

/* Exported types ------------------------------------------------------------*/
/* Exported constants --------------------------------------------------------*/
/* Exported macro ------------------------------------------------------------*/

#define TOP_LAYER 1
#define BACKGRD_LAYER 0

#define SURFMODE 1
#define DIVEMODE 2

typedef enum
{
	ST_Boot = 0,
	ST_Surface,
	ST_Dive,
	ST_Menu,
	ST_END
} SState;

typedef enum
{
	ACTION_IDLE_TICK = 0,
	ACTION_IDLE_SECOND,
	ACTION_MODE_CHANGE,
	ACTION_TIMEOUT,
	ACTION_BUTTON_CUSTOM,
	ACTION_BUTTON_BACK,
	ACTION_BUTTON_NEXT,
	ACTION_BUTTON_ENTER,
	ACTION_BUTTON_ENTER_FINAL,
	ACTION_PITCH_POS,
	ACTION_PITCH_NEG,
	ACTION_END
} SAction;

typedef enum
{
	LOCK_OFF = 0,
	LOCK_FIRST_PRESS,
	LOCK_1,
	LOCK_2,
	LOCK_3,
	LOCK_UNLOCKED
} SButtonLock;

/* Exported macro ------------------------------------------------------------*/
/* Exported functions ------------------------------------------------------- */

uint32_t get_globalState(void);
void set_globalState(uint32_t newID);
void get_globalStateList(SStateList *output);
void set_globalState_Menu_Page(uint8_t page);
void set_globalState_Menu_Line(uint8_t line);
uint8_t get_globalState_Menu_Line(void);
void get_idSpecificStateList(uint32_t id, SStateList *output);
void delayMicros(uint32_t micros);
void get_RTC_DateTime(RTC_DateTypeDef * sdatestructureget, RTC_TimeTypeDef * stimestructureget);
void set_RTC_DateTime(RTC_DateTypeDef * sdatestructure, RTC_TimeTypeDef * stimestructure);
uint8_t get_globalMode(void);
void set_globalMode(uint8_t newMode);
void set_globalState_Log_Page(uint8_t pageIsLine);
void set_returnFromComm(void);
uint8_t font_update_required(void);
void set_Backlight_Boost(uint8_t level);
void StoreButtonAction(uint8_t action);
SButtonLock get_ButtonLock(void);

#endif /* BASE_H */

/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/