Добавлены новые настройки и они выделены в отдельный файл
This commit is contained in:
@@ -4,15 +4,22 @@
|
|||||||
|
|
||||||
static uint8_t dutyValue = 5;
|
static uint8_t dutyValue = 5;
|
||||||
static time_t currentTime;
|
static time_t currentTime;
|
||||||
|
static uint8_t led_enable;
|
||||||
RTC_TimeTypeDef rtc_time;
|
RTC_TimeTypeDef rtc_time;
|
||||||
|
|
||||||
|
#define BKP_DR_DUTY RTC_BKP_DR1
|
||||||
|
#define BKP_DR_LED_STATE RTC_BKP_DR2
|
||||||
|
#define BKP_DR_POWERON_SONG RTC_BKP_DR5
|
||||||
|
#define BKP_DR_ALARM_SONG RTC_BKP_DR6
|
||||||
|
#define BKP_DR_MENU_SOUND RTC_BKP_DR3
|
||||||
|
|
||||||
// Яркость в RTC Backup Register (используем BKP_DR1)
|
// Яркость в RTC Backup Register (используем BKP_DR1)
|
||||||
static void SaveDuty(void) {
|
static void SaveDuty(void) {
|
||||||
HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_DR1, dutyValue);
|
HAL_RTCEx_BKUPWrite(&hrtc, BKP_DR_DUTY, dutyValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LoadDuty(void) {
|
static void LoadDuty(void) {
|
||||||
uint32_t val = HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR1);
|
uint32_t val = HAL_RTCEx_BKUPRead(&hrtc, BKP_DR_DUTY);
|
||||||
dutyValue = (val <= 10 && val > 0) ? (uint8_t)val : 5;
|
dutyValue = (val <= 10 && val > 0) ? (uint8_t)val : 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -24,6 +31,10 @@ void ClockManager_Init(void) {
|
|||||||
if (HAL_RTC_GetTime(&hrtc, &rtc_time, RTC_FORMAT_BIN) != HAL_OK) {
|
if (HAL_RTC_GetTime(&hrtc, &rtc_time, RTC_FORMAT_BIN) != HAL_OK) {
|
||||||
ClockManager_ResetTime();
|
ClockManager_ResetTime();
|
||||||
}
|
}
|
||||||
|
ClockManager_GetMenuSound();
|
||||||
|
ClockManager_GetAlarmSong();
|
||||||
|
ClockManager_GetPowerOnSong();
|
||||||
|
ClockManager_GetPowerOnSong();
|
||||||
}
|
}
|
||||||
|
|
||||||
time_t ClockManager_GetTime(int blink) {
|
time_t ClockManager_GetTime(int blink) {
|
||||||
@@ -33,7 +44,12 @@ time_t ClockManager_GetTime(int blink) {
|
|||||||
if(blink)
|
if(blink)
|
||||||
{
|
{
|
||||||
if(currentTime.sec != rtc_time.Seconds)
|
if(currentTime.sec != rtc_time.Seconds)
|
||||||
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
|
{
|
||||||
|
if(led_enable)
|
||||||
|
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
|
||||||
|
else
|
||||||
|
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
currentTime.sec = rtc_time.Seconds;
|
currentTime.sec = rtc_time.Seconds;
|
||||||
return currentTime;
|
return currentTime;
|
||||||
@@ -64,3 +80,64 @@ void ClockManager_SetDuty(uint8_t value) {
|
|||||||
void ClockManager_ResetTime(void) {
|
void ClockManager_ResetTime(void) {
|
||||||
ClockManager_SetTime(0, 0, 0);
|
ClockManager_SetTime(0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// LED State in Backup Register
|
||||||
|
|
||||||
|
void ClockManager_SetLEDState(uint8_t state) {
|
||||||
|
if (state) {
|
||||||
|
led_enable = 1;
|
||||||
|
} else {
|
||||||
|
led_enable = 0;
|
||||||
|
}
|
||||||
|
HAL_RTCEx_BKUPWrite(&hrtc, BKP_DR_LED_STATE, state ? 1 : 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ClockManager_GetLEDState(void) {
|
||||||
|
uint32_t led_enable = HAL_RTCEx_BKUPRead(&hrtc, BKP_DR_LED_STATE);
|
||||||
|
if (led_enable == 0 || led_enable == 1) {
|
||||||
|
// Сохраненное значение корректно
|
||||||
|
} else {
|
||||||
|
led_enable = 1; // По умолчанию LED включен
|
||||||
|
}
|
||||||
|
return (uint8_t)led_enable;
|
||||||
|
}
|
||||||
|
|
||||||
|
// PowerOn Song in Backup Register
|
||||||
|
void ClockManager_SetPowerOnSong(uint8_t song) {
|
||||||
|
if (song > 10) song = 10;
|
||||||
|
HAL_RTCEx_BKUPWrite(&hrtc, BKP_DR_POWERON_SONG, song);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ClockManager_GetPowerOnSong(void) {
|
||||||
|
uint32_t val = HAL_RTCEx_BKUPRead(&hrtc, BKP_DR_POWERON_SONG);
|
||||||
|
if (val > 10) val = 0;
|
||||||
|
return (uint8_t)val;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Alarm Song in Backup Register
|
||||||
|
|
||||||
|
void ClockManager_SetAlarmSong(uint8_t song) {
|
||||||
|
if (song > 10) song = 10;
|
||||||
|
HAL_RTCEx_BKUPWrite(&hrtc, BKP_DR_ALARM_SONG, song);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ClockManager_GetAlarmSong(void) {
|
||||||
|
uint32_t val = HAL_RTCEx_BKUPRead(&hrtc, BKP_DR_ALARM_SONG);
|
||||||
|
if (val > 10) val = 0;
|
||||||
|
return (uint8_t)val;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Menu Sound State in Backup Register
|
||||||
|
extern uint8_t g_sound_enabled;
|
||||||
|
|
||||||
|
void ClockManager_SetMenuSound(uint8_t enabled) {
|
||||||
|
g_sound_enabled = enabled ? 1 : 0;
|
||||||
|
HAL_RTCEx_BKUPWrite(&hrtc, BKP_DR_MENU_SOUND, g_sound_enabled);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ClockManager_GetMenuSound(void) {
|
||||||
|
uint32_t val = HAL_RTCEx_BKUPRead(&hrtc, BKP_DR_MENU_SOUND);
|
||||||
|
g_sound_enabled = (val == 0 || val == 1) ? (uint8_t)val : 1;
|
||||||
|
return g_sound_enabled;
|
||||||
|
}
|
||||||
|
|||||||
@@ -23,4 +23,19 @@ void ClockManager_SetDuty(uint8_t value);
|
|||||||
// Сброс времени на 00:00:00
|
// Сброс времени на 00:00:00
|
||||||
void ClockManager_ResetTime(void);
|
void ClockManager_ResetTime(void);
|
||||||
|
|
||||||
|
// LED control
|
||||||
|
void ClockManager_SetLEDState(uint8_t state);
|
||||||
|
uint8_t ClockManager_GetLEDState(void);
|
||||||
|
|
||||||
|
// PowerOn Song (DR5)
|
||||||
|
void ClockManager_SetPowerOnSong(uint8_t song);
|
||||||
|
uint8_t ClockManager_GetPowerOnSong(void);
|
||||||
|
|
||||||
|
// Alarm Song (DR6)
|
||||||
|
void ClockManager_SetAlarmSong(uint8_t song);
|
||||||
|
uint8_t ClockManager_GetAlarmSong(void);
|
||||||
|
|
||||||
|
// Menu Sound
|
||||||
|
void ClockManager_SetMenuSound(uint8_t enabled);
|
||||||
|
uint8_t ClockManager_GetMenuSound(void);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#include "menu_items.h"
|
#include "menu_items.h"
|
||||||
|
#include "clock.h"
|
||||||
#include "segment.h"
|
#include "segment.h"
|
||||||
#include "clock_manager.h"
|
#include "clock_manager.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#ifndef GAMES_H
|
#ifndef CLOCK_H
|
||||||
#define GAMES_H
|
#define CLOCK_H
|
||||||
|
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
extern MenuNode g_clockNode;
|
extern MenuNode g_clockNode;
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#include "menu_items.h"
|
#include "menu_items.h"
|
||||||
|
#include "games.h"
|
||||||
#include "segment.h"
|
#include "segment.h"
|
||||||
#include "clock_manager.h"
|
#include "clock_manager.h"
|
||||||
#include "menu_items.h"
|
#include "menu_items.h"
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
#include "clock_manager.h"
|
#include "clock_manager.h"
|
||||||
#include "games.h"
|
#include "games.h"
|
||||||
#include "clock.h"
|
#include "clock.h"
|
||||||
|
#include "settings.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -10,32 +11,14 @@ MenuNode g_rootMenu;
|
|||||||
// объявляем узлы меню
|
// объявляем узлы меню
|
||||||
MenuNode g_gamesNode;
|
MenuNode g_gamesNode;
|
||||||
MenuNode g_settingsNode;
|
MenuNode g_settingsNode;
|
||||||
MenuNode g_timeEditNode;
|
|
||||||
MenuNode g_dutyEditNode;
|
|
||||||
MenuNode g_LEDEditNode;
|
|
||||||
MenuNode g_MenuSoundNode;
|
|
||||||
MenuNode g_PowerOnSongNode;
|
|
||||||
MenuNode g_SongNode;
|
|
||||||
MenuNode g_resetNode;
|
|
||||||
|
|
||||||
|
|
||||||
// ==================== Данные ====================
|
// ==================== Данные ====================
|
||||||
typedef struct {
|
|
||||||
time_t editTime;
|
|
||||||
uint8_t editStep;
|
|
||||||
bool blinkState;
|
|
||||||
uint32_t lastBlink;
|
|
||||||
} TimeEditData;
|
|
||||||
|
|
||||||
static TimeEditData g_timeData;
|
|
||||||
static uint8_t g_originalDuty;
|
|
||||||
static uint8_t g_editDuty;
|
|
||||||
|
|
||||||
// Текущая активность в корне
|
// Текущая активность в корне
|
||||||
MenuNode* g_currentActivity = NULL;
|
MenuNode* g_currentActivity = NULL;
|
||||||
|
|
||||||
// ==================== Функции отображения активностей ====================
|
// ==================== Функции отображения активностей ====================
|
||||||
|
|
||||||
static void Display_MenuItem(void) {
|
static void Display_MenuItem(void) {
|
||||||
MenuNode* current = Menu_GetCurrentNode();
|
MenuNode* current = Menu_GetCurrentNode();
|
||||||
if (current && current->selectedChild < current->childCount) {
|
if (current && current->selectedChild < current->childCount) {
|
||||||
@@ -46,215 +29,9 @@ static void Display_MenuItem(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Display_TimeEdit(void) {
|
|
||||||
char buf[7];
|
|
||||||
sprintf(buf, "%02d%02d%02d",
|
|
||||||
g_timeData.editTime.hour,
|
|
||||||
g_timeData.editTime.min,
|
|
||||||
g_timeData.editTime.sec);
|
|
||||||
if (g_timeData.blinkState && g_timeData.editStep < 6) {
|
|
||||||
buf[g_timeData.editStep] = ' ';
|
|
||||||
}
|
|
||||||
Segment_SetString(buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void Display_DutyEdit(void) {
|
|
||||||
char buf[7] = "DUTY ";
|
|
||||||
if (g_editDuty == 10) {
|
|
||||||
buf[4] = '1';
|
|
||||||
buf[5] = '0';
|
|
||||||
} else {
|
|
||||||
buf[5] = '0' + g_editDuty;
|
|
||||||
}
|
|
||||||
Segment_SetString(buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void Display_Reset(void) {
|
|
||||||
Segment_SetString("RESET ");
|
|
||||||
}
|
|
||||||
|
|
||||||
// ==================== Вход в активности ====================
|
|
||||||
|
|
||||||
static void OnEnter_TimeEdit(void) {
|
|
||||||
g_timeData.editTime = ClockManager_GetTime(0);
|
|
||||||
g_timeData.editStep = 0;
|
|
||||||
g_timeData.blinkState = true;
|
|
||||||
g_timeData.lastBlink = HAL_GetTick();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void OnEnter_DutyEdit(void) {
|
|
||||||
g_originalDuty = ClockManager_GetDuty();
|
|
||||||
g_editDuty = g_originalDuty;
|
|
||||||
Segment_SetBrightness(g_editDuty * 10);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void OnEnter_Reset(void) {}
|
|
||||||
|
|
||||||
// ==================== Обновления ====================
|
|
||||||
static void OnUpdate_TimeEdit(void) {
|
|
||||||
uint32_t tick = HAL_GetTick();
|
|
||||||
if (tick - g_timeData.lastBlink >= 500) {
|
|
||||||
g_timeData.lastBlink = tick;
|
|
||||||
g_timeData.blinkState = !g_timeData.blinkState;
|
|
||||||
Menu_Refresh();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ==================== Обработчики кнопок активностей ====================
|
|
||||||
static void TimeEdit_OnButton(Button_Type btn, bool longPress) {
|
|
||||||
(void)longPress;
|
|
||||||
|
|
||||||
switch (btn) {
|
|
||||||
case BUTTON_UP: {
|
|
||||||
uint8_t tens, units;
|
|
||||||
switch (g_timeData.editStep) {
|
|
||||||
case 0:
|
|
||||||
tens = g_timeData.editTime.hour / 10;
|
|
||||||
units = g_timeData.editTime.hour % 10;
|
|
||||||
tens = (tens + 1) % 3;
|
|
||||||
g_timeData.editTime.hour = tens * 10 + units;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
tens = g_timeData.editTime.hour / 10;
|
|
||||||
units = (g_timeData.editTime.hour % 10 + 1) % 10;
|
|
||||||
if (tens == 2 && units > 3) units = 0;
|
|
||||||
g_timeData.editTime.hour = tens * 10 + units;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
tens = (g_timeData.editTime.min / 10 + 1) % 6;
|
|
||||||
g_timeData.editTime.min = tens * 10 + (g_timeData.editTime.min % 10);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
units = (g_timeData.editTime.min % 10 + 1) % 10;
|
|
||||||
g_timeData.editTime.min = (g_timeData.editTime.min / 10) * 10 + units;
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
tens = (g_timeData.editTime.sec / 10 + 1) % 6;
|
|
||||||
g_timeData.editTime.sec = tens * 10 + (g_timeData.editTime.sec % 10);
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
units = (g_timeData.editTime.sec % 10 + 1) % 10;
|
|
||||||
g_timeData.editTime.sec = (g_timeData.editTime.sec / 10) * 10 + units;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
Menu_Refresh();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case BUTTON_DOWN: {
|
|
||||||
uint8_t tens, units;
|
|
||||||
switch (g_timeData.editStep) {
|
|
||||||
case 0:
|
|
||||||
tens = g_timeData.editTime.hour / 10;
|
|
||||||
units = g_timeData.editTime.hour % 10;
|
|
||||||
tens = (tens == 0) ? 2 : tens - 1;
|
|
||||||
g_timeData.editTime.hour = tens * 10 + units;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
tens = g_timeData.editTime.hour / 10;
|
|
||||||
units = g_timeData.editTime.hour % 10;
|
|
||||||
if (units == 0) units = (tens == 2) ? 3 : 9;
|
|
||||||
else units--;
|
|
||||||
g_timeData.editTime.hour = tens * 10 + units;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
tens = g_timeData.editTime.min / 10;
|
|
||||||
tens = (tens == 0) ? 5 : tens - 1;
|
|
||||||
g_timeData.editTime.min = tens * 10 + (g_timeData.editTime.min % 10);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
units = g_timeData.editTime.min % 10;
|
|
||||||
units = (units == 0) ? 9 : units - 1;
|
|
||||||
g_timeData.editTime.min = (g_timeData.editTime.min / 10) * 10 + units;
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
tens = g_timeData.editTime.sec / 10;
|
|
||||||
tens = (tens == 0) ? 5 : tens - 1;
|
|
||||||
g_timeData.editTime.sec = tens * 10 + (g_timeData.editTime.sec % 10);
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
units = g_timeData.editTime.sec % 10;
|
|
||||||
units = (units == 0) ? 9 : units - 1;
|
|
||||||
g_timeData.editTime.sec = (g_timeData.editTime.sec / 10) * 10 + units;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
Menu_Refresh();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case BUTTON_SELECT:
|
|
||||||
g_timeData.editStep++;
|
|
||||||
if (g_timeData.editStep >= 6) {
|
|
||||||
ClockManager_SetTime(g_timeData.editTime.hour,
|
|
||||||
g_timeData.editTime.min,
|
|
||||||
g_timeData.editTime.sec);
|
|
||||||
Menu_GoBack();
|
|
||||||
}
|
|
||||||
Menu_Refresh();
|
|
||||||
break;
|
|
||||||
case BUTTON_BACK:
|
|
||||||
Menu_GoBack();
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void DutyEdit_OnButton(Button_Type btn, bool longPress) {
|
|
||||||
(void)longPress;
|
|
||||||
switch (btn) {
|
|
||||||
case BUTTON_UP:
|
|
||||||
if (g_editDuty < 10) {
|
|
||||||
g_editDuty++;
|
|
||||||
Segment_SetBrightness(g_editDuty * 10);
|
|
||||||
Menu_Refresh();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case BUTTON_DOWN:
|
|
||||||
if (g_editDuty > 0) {
|
|
||||||
g_editDuty--;
|
|
||||||
Segment_SetBrightness(g_editDuty * 10);
|
|
||||||
Menu_Refresh();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case BUTTON_SELECT:
|
|
||||||
ClockManager_SetDuty(g_editDuty);
|
|
||||||
Menu_GoBack();
|
|
||||||
break;
|
|
||||||
case BUTTON_BACK:
|
|
||||||
ClockManager_SetDuty(g_originalDuty);
|
|
||||||
Menu_GoBack();
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void Reset_OnButton(Button_Type btn, bool longPress) {
|
|
||||||
|
|
||||||
if ((btn == BUTTON_SELECT) && longPress) {
|
|
||||||
ClockManager_ResetTime();
|
|
||||||
ClockManager_SetDuty(5);
|
|
||||||
Menu_GoBack();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ==================== Узлы меню ====================
|
// ==================== Узлы меню ====================
|
||||||
MenuNode g_gamesNode;
|
MenuNode g_gamesNode;
|
||||||
MenuNode g_settingsNode;
|
MenuNode g_settingsNode;
|
||||||
MenuNode g_timeEditNode;
|
|
||||||
MenuNode g_dutyEditNode;
|
|
||||||
MenuNode g_LEDEditNode;
|
|
||||||
MenuNode g_MenuSoundNode;
|
|
||||||
MenuNode g_PowerOnSongNode;
|
|
||||||
MenuNode g_SongNode;
|
|
||||||
MenuNode g_resetNode;
|
|
||||||
|
|
||||||
static MenuNode* g_settingsChildren[] = {
|
|
||||||
&g_timeEditNode,
|
|
||||||
&g_dutyEditNode,
|
|
||||||
&g_LEDEditNode,
|
|
||||||
&g_MenuSoundNode,
|
|
||||||
&g_PowerOnSongNode,
|
|
||||||
&g_SongNode,
|
|
||||||
&g_resetNode
|
|
||||||
};
|
|
||||||
|
|
||||||
static MenuNode* g_mainMenuChildren[] = {
|
static MenuNode* g_mainMenuChildren[] = {
|
||||||
&g_clockNode,
|
&g_clockNode,
|
||||||
@@ -303,45 +80,6 @@ void MenuItems_Init(void) {
|
|||||||
.onButton = NULL,
|
.onButton = NULL,
|
||||||
.data = NULL
|
.data = NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
g_timeEditNode = (MenuNode){
|
|
||||||
.name = "SET T",
|
|
||||||
.parent = &g_settingsNode,
|
|
||||||
.children = NULL,
|
|
||||||
.childCount = 0,
|
|
||||||
.selectedChild = 0,
|
|
||||||
.display = Display_TimeEdit,
|
|
||||||
.onEnter = OnEnter_TimeEdit,
|
|
||||||
.onUpdate = OnUpdate_TimeEdit,
|
|
||||||
.onButton = TimeEdit_OnButton,
|
|
||||||
.data = &g_timeData
|
|
||||||
};
|
|
||||||
|
|
||||||
g_dutyEditNode = (MenuNode){
|
|
||||||
.name = "SET D",
|
|
||||||
.parent = &g_settingsNode,
|
|
||||||
.children = NULL,
|
|
||||||
.childCount = 0,
|
|
||||||
.selectedChild = 0,
|
|
||||||
.display = Display_DutyEdit,
|
|
||||||
.onEnter = OnEnter_DutyEdit,
|
|
||||||
.onUpdate = NULL,
|
|
||||||
.onButton = DutyEdit_OnButton,
|
|
||||||
.data = &g_editDuty
|
|
||||||
};
|
|
||||||
|
|
||||||
g_resetNode = (MenuNode){
|
|
||||||
.name = "RESET",
|
|
||||||
.parent = &g_settingsNode,
|
|
||||||
.children = NULL,
|
|
||||||
.childCount = 0,
|
|
||||||
.selectedChild = 0,
|
|
||||||
.display = Display_Reset,
|
|
||||||
.onEnter = OnEnter_Reset,
|
|
||||||
.onUpdate = NULL,
|
|
||||||
.onButton = Reset_OnButton,
|
|
||||||
.data = NULL
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MenuNode* Menu_GetRootMenu(void) {
|
MenuNode* Menu_GetRootMenu(void) {
|
||||||
|
|||||||
@@ -6,14 +6,8 @@
|
|||||||
extern MenuNode* g_currentActivity;
|
extern MenuNode* g_currentActivity;
|
||||||
// Глобальные узлы меню (для доступа из main.c)
|
// Глобальные узлы меню (для доступа из main.c)
|
||||||
extern MenuNode g_rootMenu;
|
extern MenuNode g_rootMenu;
|
||||||
extern MenuNode g_clockNode;
|
|
||||||
extern MenuNode g_timerNode;
|
|
||||||
extern MenuNode g_stopwatchNode;
|
|
||||||
extern MenuNode g_gamesNode;
|
extern MenuNode g_gamesNode;
|
||||||
extern MenuNode g_settingsNode;
|
extern MenuNode g_settingsNode;
|
||||||
extern MenuNode g_timeEditNode;
|
|
||||||
extern MenuNode g_dutyEditNode;
|
|
||||||
extern MenuNode g_resetNode;
|
|
||||||
|
|
||||||
// Инициализация всех пунктов меню
|
// Инициализация всех пунктов меню
|
||||||
void MenuItems_Init(void);
|
void MenuItems_Init(void);
|
||||||
|
|||||||
430
Core/Menu/settings.c
Normal file
430
Core/Menu/settings.c
Normal file
@@ -0,0 +1,430 @@
|
|||||||
|
#include "menu_items.h"
|
||||||
|
#include "settings.h"
|
||||||
|
#include "segment.h"
|
||||||
|
#include "clock_manager.h"
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
time_t editTime;
|
||||||
|
uint8_t editStep;
|
||||||
|
bool blinkState;
|
||||||
|
uint32_t lastBlink;
|
||||||
|
} TimeEditData;
|
||||||
|
|
||||||
|
static TimeEditData g_timeData;
|
||||||
|
static uint8_t g_originalDuty;
|
||||||
|
static uint8_t g_editDuty;
|
||||||
|
|
||||||
|
/////// TIME EDIT ////////
|
||||||
|
static void Display_TimeEdit(void) {
|
||||||
|
char buf[7];
|
||||||
|
sprintf(buf, "%02d%02d%02d",
|
||||||
|
g_timeData.editTime.hour,
|
||||||
|
g_timeData.editTime.min,
|
||||||
|
g_timeData.editTime.sec);
|
||||||
|
if (g_timeData.blinkState && g_timeData.editStep < 6) {
|
||||||
|
buf[g_timeData.editStep] = ' ';
|
||||||
|
}
|
||||||
|
Segment_SetString(buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void OnEnter_TimeEdit(void) {
|
||||||
|
g_timeData.editTime = ClockManager_GetTime(0);
|
||||||
|
g_timeData.editStep = 0;
|
||||||
|
g_timeData.blinkState = true;
|
||||||
|
g_timeData.lastBlink = HAL_GetTick();
|
||||||
|
}
|
||||||
|
static void OnUpdate_TimeEdit(void) {
|
||||||
|
uint32_t tick = HAL_GetTick();
|
||||||
|
if (tick - g_timeData.lastBlink >= 500) {
|
||||||
|
g_timeData.lastBlink = tick;
|
||||||
|
g_timeData.blinkState = !g_timeData.blinkState;
|
||||||
|
Menu_Refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
static void TimeEdit_OnButton(Button_Type btn, bool longPress) {
|
||||||
|
(void)longPress;
|
||||||
|
|
||||||
|
switch (btn) {
|
||||||
|
case BUTTON_UP: {
|
||||||
|
uint8_t tens, units;
|
||||||
|
switch (g_timeData.editStep) {
|
||||||
|
case 0:
|
||||||
|
tens = g_timeData.editTime.hour / 10;
|
||||||
|
units = g_timeData.editTime.hour % 10;
|
||||||
|
tens = (tens + 1) % 3;
|
||||||
|
g_timeData.editTime.hour = tens * 10 + units;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
tens = g_timeData.editTime.hour / 10;
|
||||||
|
units = (g_timeData.editTime.hour % 10 + 1) % 10;
|
||||||
|
if (tens == 2 && units > 3) units = 0;
|
||||||
|
g_timeData.editTime.hour = tens * 10 + units;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
tens = (g_timeData.editTime.min / 10 + 1) % 6;
|
||||||
|
g_timeData.editTime.min = tens * 10 + (g_timeData.editTime.min % 10);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
units = (g_timeData.editTime.min % 10 + 1) % 10;
|
||||||
|
g_timeData.editTime.min = (g_timeData.editTime.min / 10) * 10 + units;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
tens = (g_timeData.editTime.sec / 10 + 1) % 6;
|
||||||
|
g_timeData.editTime.sec = tens * 10 + (g_timeData.editTime.sec % 10);
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
units = (g_timeData.editTime.sec % 10 + 1) % 10;
|
||||||
|
g_timeData.editTime.sec = (g_timeData.editTime.sec / 10) * 10 + units;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
Menu_Refresh();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BUTTON_DOWN: {
|
||||||
|
uint8_t tens, units;
|
||||||
|
switch (g_timeData.editStep) {
|
||||||
|
case 0:
|
||||||
|
tens = g_timeData.editTime.hour / 10;
|
||||||
|
units = g_timeData.editTime.hour % 10;
|
||||||
|
tens = (tens == 0) ? 2 : tens - 1;
|
||||||
|
g_timeData.editTime.hour = tens * 10 + units;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
tens = g_timeData.editTime.hour / 10;
|
||||||
|
units = g_timeData.editTime.hour % 10;
|
||||||
|
if (units == 0) units = (tens == 2) ? 3 : 9;
|
||||||
|
else units--;
|
||||||
|
g_timeData.editTime.hour = tens * 10 + units;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
tens = g_timeData.editTime.min / 10;
|
||||||
|
tens = (tens == 0) ? 5 : tens - 1;
|
||||||
|
g_timeData.editTime.min = tens * 10 + (g_timeData.editTime.min % 10);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
units = g_timeData.editTime.min % 10;
|
||||||
|
units = (units == 0) ? 9 : units - 1;
|
||||||
|
g_timeData.editTime.min = (g_timeData.editTime.min / 10) * 10 + units;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
tens = g_timeData.editTime.sec / 10;
|
||||||
|
tens = (tens == 0) ? 5 : tens - 1;
|
||||||
|
g_timeData.editTime.sec = tens * 10 + (g_timeData.editTime.sec % 10);
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
units = g_timeData.editTime.sec % 10;
|
||||||
|
units = (units == 0) ? 9 : units - 1;
|
||||||
|
g_timeData.editTime.sec = (g_timeData.editTime.sec / 10) * 10 + units;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
Menu_Refresh();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BUTTON_SELECT:
|
||||||
|
g_timeData.editStep++;
|
||||||
|
if (g_timeData.editStep >= 6) {
|
||||||
|
ClockManager_SetTime(g_timeData.editTime.hour,
|
||||||
|
g_timeData.editTime.min,
|
||||||
|
g_timeData.editTime.sec);
|
||||||
|
Menu_GoBack();
|
||||||
|
}
|
||||||
|
Menu_Refresh();
|
||||||
|
break;
|
||||||
|
case BUTTON_BACK:
|
||||||
|
Menu_GoBack();
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/////// DUTY EDIT ////////
|
||||||
|
static void Display_DutyEdit(void) {
|
||||||
|
char buf[7] = "DUTY ";
|
||||||
|
if (g_editDuty == 10) {
|
||||||
|
buf[4] = '1';
|
||||||
|
buf[5] = '0';
|
||||||
|
} else {
|
||||||
|
buf[5] = '0' + g_editDuty;
|
||||||
|
}
|
||||||
|
Segment_SetString(buf);
|
||||||
|
}
|
||||||
|
static void OnEnter_DutyEdit(void) {
|
||||||
|
g_originalDuty = ClockManager_GetDuty();
|
||||||
|
g_editDuty = g_originalDuty;
|
||||||
|
Segment_SetBrightness(g_editDuty * 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DutyEdit_OnButton(Button_Type btn, bool longPress) {
|
||||||
|
(void)longPress;
|
||||||
|
switch (btn) {
|
||||||
|
case BUTTON_UP:
|
||||||
|
if (g_editDuty < 10) {
|
||||||
|
g_editDuty++;
|
||||||
|
Segment_SetBrightness(g_editDuty * 10);
|
||||||
|
Menu_Refresh();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case BUTTON_DOWN:
|
||||||
|
if (g_editDuty > 0) {
|
||||||
|
g_editDuty--;
|
||||||
|
Segment_SetBrightness(g_editDuty * 10);
|
||||||
|
Menu_Refresh();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case BUTTON_SELECT:
|
||||||
|
ClockManager_SetDuty(g_editDuty);
|
||||||
|
Menu_GoBack();
|
||||||
|
break;
|
||||||
|
case BUTTON_BACK:
|
||||||
|
ClockManager_SetDuty(g_originalDuty);
|
||||||
|
Menu_GoBack();
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/////// RESET ////////
|
||||||
|
static void Display_Reset(void) {
|
||||||
|
Segment_SetString("RESET ");
|
||||||
|
}
|
||||||
|
static void OnEnter_Reset(void) {}
|
||||||
|
static void Reset_OnButton(Button_Type btn, bool longPress) {
|
||||||
|
|
||||||
|
if ((btn == BUTTON_SELECT) && longPress) {
|
||||||
|
ClockManager_ResetTime();
|
||||||
|
ClockManager_SetDuty(5);
|
||||||
|
Menu_GoBack();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/////// LED EDIT ////////
|
||||||
|
static void Display_LEDEdit(void) {
|
||||||
|
if (ClockManager_GetLEDState()) {
|
||||||
|
Segment_SetString("LED 1");
|
||||||
|
} else {
|
||||||
|
Segment_SetString("LED 0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void LEDEdit_OnButton(Button_Type btn, bool longPress) {
|
||||||
|
(void)longPress;
|
||||||
|
uint8_t newState;
|
||||||
|
switch (btn) {
|
||||||
|
case BUTTON_SELECT:
|
||||||
|
newState = !ClockManager_GetLEDState();
|
||||||
|
ClockManager_SetLEDState(newState);
|
||||||
|
Menu_Refresh();
|
||||||
|
break;
|
||||||
|
case BUTTON_BACK:
|
||||||
|
Menu_GoBack();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/////// POWER ON SONG ////////
|
||||||
|
static void Display_PowerOnSong(void) {
|
||||||
|
char buf[7];
|
||||||
|
sprintf(buf, "PnS%02d", ClockManager_GetPowerOnSong());
|
||||||
|
Segment_SetString(buf);
|
||||||
|
}
|
||||||
|
static void PowerOnSong_OnButton(Button_Type btn, bool longPress) {
|
||||||
|
(void)longPress;
|
||||||
|
uint8_t current = ClockManager_GetPowerOnSong();
|
||||||
|
|
||||||
|
switch (btn) {
|
||||||
|
case BUTTON_UP:
|
||||||
|
if (current < 10) {
|
||||||
|
current++;
|
||||||
|
ClockManager_SetPowerOnSong(current);
|
||||||
|
Menu_Refresh();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case BUTTON_DOWN:
|
||||||
|
if (current > 0) {
|
||||||
|
current--;
|
||||||
|
ClockManager_SetPowerOnSong(current);
|
||||||
|
Menu_Refresh();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case BUTTON_SELECT:
|
||||||
|
case BUTTON_BACK:
|
||||||
|
Menu_GoBack();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/////// ALARM SONG ////////
|
||||||
|
static void Display_AlarmSong(void) {
|
||||||
|
char buf[7];
|
||||||
|
sprintf(buf, "AL%02d", ClockManager_GetAlarmSong());
|
||||||
|
Segment_SetString(buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void AlarmSong_OnButton(Button_Type btn, bool longPress) {
|
||||||
|
(void)longPress;
|
||||||
|
uint8_t current = ClockManager_GetAlarmSong();
|
||||||
|
|
||||||
|
switch (btn) {
|
||||||
|
case BUTTON_UP:
|
||||||
|
if (current < 10) {
|
||||||
|
current++;
|
||||||
|
ClockManager_SetAlarmSong(current);
|
||||||
|
Menu_Refresh();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case BUTTON_DOWN:
|
||||||
|
if (current > 0) {
|
||||||
|
current--;
|
||||||
|
ClockManager_SetAlarmSong(current);
|
||||||
|
Menu_Refresh();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case BUTTON_SELECT:
|
||||||
|
case BUTTON_BACK:
|
||||||
|
Menu_GoBack();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/////// ALARM SONG ////////
|
||||||
|
static void Display_MenuSound(void) {
|
||||||
|
if (ClockManager_GetMenuSound()) {
|
||||||
|
Segment_SetString("BEEP 1");
|
||||||
|
} else {
|
||||||
|
Segment_SetString("BEEP 0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void MenuSound_OnButton(Button_Type btn, bool longPress) {
|
||||||
|
(void)longPress;
|
||||||
|
uint8_t newState;
|
||||||
|
switch (btn) {
|
||||||
|
case BUTTON_SELECT:
|
||||||
|
newState = !ClockManager_GetMenuSound();
|
||||||
|
ClockManager_SetMenuSound(newState);
|
||||||
|
Menu_Refresh();
|
||||||
|
break;
|
||||||
|
case BUTTON_BACK:
|
||||||
|
Menu_GoBack();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NODES// NODES
|
||||||
|
MenuNode g_timeEditNode = {
|
||||||
|
.name = "SET T",
|
||||||
|
.parent = &g_settingsNode,
|
||||||
|
.children = NULL,
|
||||||
|
.childCount = 0,
|
||||||
|
.selectedChild = 0,
|
||||||
|
.display = Display_TimeEdit,
|
||||||
|
.onEnter = OnEnter_TimeEdit,
|
||||||
|
.onUpdate = OnUpdate_TimeEdit,
|
||||||
|
.onButton = TimeEdit_OnButton,
|
||||||
|
.data = &g_timeData
|
||||||
|
};
|
||||||
|
|
||||||
|
MenuNode g_dutyEditNode = {
|
||||||
|
.name = "SET D",
|
||||||
|
.parent = &g_settingsNode,
|
||||||
|
.children = NULL,
|
||||||
|
.childCount = 0,
|
||||||
|
.selectedChild = 0,
|
||||||
|
.display = Display_DutyEdit,
|
||||||
|
.onEnter = OnEnter_DutyEdit,
|
||||||
|
.onUpdate = NULL,
|
||||||
|
.onButton = DutyEdit_OnButton,
|
||||||
|
.data = &g_editDuty
|
||||||
|
};
|
||||||
|
|
||||||
|
MenuNode g_LEDEditNode = {
|
||||||
|
.name = "LED",
|
||||||
|
.parent = &g_settingsNode,
|
||||||
|
.children = NULL,
|
||||||
|
.childCount = 0,
|
||||||
|
.selectedChild = 0,
|
||||||
|
.display = Display_LEDEdit,
|
||||||
|
.onEnter = NULL,
|
||||||
|
.onUpdate = NULL,
|
||||||
|
.onButton = LEDEdit_OnButton,
|
||||||
|
.data = NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
MenuNode g_MenuSoundNode = {
|
||||||
|
.name = "BEEP",
|
||||||
|
.parent = &g_settingsNode,
|
||||||
|
.children = NULL,
|
||||||
|
.childCount = 0,
|
||||||
|
.selectedChild = 0,
|
||||||
|
.display = Display_MenuSound,
|
||||||
|
.onEnter = NULL,
|
||||||
|
.onUpdate = NULL,
|
||||||
|
.onButton = MenuSound_OnButton,
|
||||||
|
.data = NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
MenuNode g_PowerOnSongNode = {
|
||||||
|
.name = "PonS",
|
||||||
|
.parent = &g_settingsNode,
|
||||||
|
.children = NULL,
|
||||||
|
.childCount = 0,
|
||||||
|
.selectedChild = 0,
|
||||||
|
.display = Display_PowerOnSong,
|
||||||
|
.onEnter = NULL,
|
||||||
|
.onUpdate = NULL,
|
||||||
|
.onButton = PowerOnSong_OnButton,
|
||||||
|
.data = NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
MenuNode g_AlarmSongNode = {
|
||||||
|
.name = "AL",
|
||||||
|
.parent = &g_settingsNode,
|
||||||
|
.children = NULL,
|
||||||
|
.childCount = 0,
|
||||||
|
.selectedChild = 0,
|
||||||
|
.display = Display_AlarmSong,
|
||||||
|
.onEnter = NULL,
|
||||||
|
.onUpdate = NULL,
|
||||||
|
.onButton = AlarmSong_OnButton,
|
||||||
|
.data = NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
MenuNode g_resetNode = {
|
||||||
|
.name = "RESET",
|
||||||
|
.parent = &g_settingsNode,
|
||||||
|
.children = NULL,
|
||||||
|
.childCount = 0,
|
||||||
|
.selectedChild = 0,
|
||||||
|
.display = Display_Reset,
|
||||||
|
.onEnter = OnEnter_Reset,
|
||||||
|
.onUpdate = NULL,
|
||||||
|
.onButton = Reset_OnButton,
|
||||||
|
.data = NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
MenuNode* g_settingsChildren[] = {
|
||||||
|
&g_timeEditNode,
|
||||||
|
&g_dutyEditNode,
|
||||||
|
&g_LEDEditNode,
|
||||||
|
&g_MenuSoundNode,
|
||||||
|
&g_PowerOnSongNode,
|
||||||
|
&g_AlarmSongNode,
|
||||||
|
&g_resetNode
|
||||||
|
};
|
||||||
15
Core/Menu/settings.h
Normal file
15
Core/Menu/settings.h
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
#ifndef SETTINGS_H
|
||||||
|
#define SETTINGS_H
|
||||||
|
|
||||||
|
#include "menu.h"
|
||||||
|
|
||||||
|
extern MenuNode g_timeEditNode;
|
||||||
|
extern MenuNode g_dutyEditNode;
|
||||||
|
extern MenuNode g_LEDEditNode;
|
||||||
|
extern MenuNode g_MenuSoundNode;
|
||||||
|
extern MenuNode g_PowerOnSongNode;
|
||||||
|
extern MenuNode g_AlarmSongNode;
|
||||||
|
extern MenuNode g_resetNode;
|
||||||
|
extern MenuNode* g_settingsChildren[7];
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -29,6 +29,7 @@
|
|||||||
#include "segment.h"
|
#include "segment.h"
|
||||||
#include "melody.h"
|
#include "melody.h"
|
||||||
#include "songs.h"
|
#include "songs.h"
|
||||||
|
#include "clock.h"
|
||||||
/* USER CODE END Includes */
|
/* USER CODE END Includes */
|
||||||
|
|
||||||
/* Private typedef -----------------------------------------------------------*/
|
/* Private typedef -----------------------------------------------------------*/
|
||||||
@@ -137,7 +138,7 @@ int main(void)
|
|||||||
{
|
{
|
||||||
Menu_Process();
|
Menu_Process();
|
||||||
Melody_Update(&melody);
|
Melody_Update(&melody);
|
||||||
|
ClockManager_GetTime(1);
|
||||||
/* USER CODE END WHILE */
|
/* USER CODE END WHILE */
|
||||||
|
|
||||||
/* USER CODE BEGIN 3 */
|
/* USER CODE BEGIN 3 */
|
||||||
|
|||||||
@@ -180,6 +180,11 @@
|
|||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>g_game1sec</ItemText>
|
<ItemText>g_game1sec</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>6</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>led_enable,0x0A</ItemText>
|
||||||
|
</Ww>
|
||||||
</WatchWindow1>
|
</WatchWindow1>
|
||||||
<Tracepoint>
|
<Tracepoint>
|
||||||
<THDelay>0</THDelay>
|
<THDelay>0</THDelay>
|
||||||
@@ -752,6 +757,30 @@
|
|||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<bDave2>0</bDave2>
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>..\Core\Menu\settings.c</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>settings.c</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>6</GroupNumber>
|
||||||
|
<FileNumber>39</FileNumber>
|
||||||
|
<FileType>5</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>..\Core\Menu\settings.h</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>settings.h</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>6</GroupNumber>
|
||||||
|
<FileNumber>40</FileNumber>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
<PathWithFileName>..\Core\Menu\menu_items.c</PathWithFileName>
|
<PathWithFileName>..\Core\Menu\menu_items.c</PathWithFileName>
|
||||||
<FilenameWithoutPath>menu_items.c</FilenameWithoutPath>
|
<FilenameWithoutPath>menu_items.c</FilenameWithoutPath>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
@@ -759,7 +788,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>6</GroupNumber>
|
||||||
<FileNumber>39</FileNumber>
|
<FileNumber>41</FileNumber>
|
||||||
<FileType>5</FileType>
|
<FileType>5</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -771,7 +800,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>6</GroupNumber>
|
||||||
<FileNumber>40</FileNumber>
|
<FileNumber>42</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -783,7 +812,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>6</GroupNumber>
|
||||||
<FileNumber>41</FileNumber>
|
<FileNumber>43</FileNumber>
|
||||||
<FileType>5</FileType>
|
<FileType>5</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
|||||||
@@ -836,6 +836,16 @@
|
|||||||
<FileType>5</FileType>
|
<FileType>5</FileType>
|
||||||
<FilePath>..\Core\Menu\games.h</FilePath>
|
<FilePath>..\Core\Menu\games.h</FilePath>
|
||||||
</File>
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>settings.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>..\Core\Menu\settings.c</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>settings.h</FileName>
|
||||||
|
<FileType>5</FileType>
|
||||||
|
<FilePath>..\Core\Menu\settings.h</FilePath>
|
||||||
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<FileName>menu_items.c</FileName>
|
<FileName>menu_items.c</FileName>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
|
|||||||
Reference in New Issue
Block a user