diff --git a/2020TPC Nonvolatile Memory.xlsx b/2020TPC Nonvolatile Memory.xlsx
index 9daca86..5434466 100644
Binary files a/2020TPC Nonvolatile Memory.xlsx and b/2020TPC Nonvolatile Memory.xlsx differ
diff --git a/2020TPCApp1.cydsn/2020TPCApp1.cyprj b/2020TPCApp1.cydsn/2020TPCApp1.cyprj
index ad3dfe6..cc78e20 100644
--- a/2020TPCApp1.cydsn/2020TPCApp1.cyprj
+++ b/2020TPCApp1.cydsn/2020TPCApp1.cyprj
@@ -1654,6 +1654,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2020TPCApp1.cydsn/COMM/BLE/COMM_BLE.c b/2020TPCApp1.cydsn/COMM/BLE/COMM_BLE.c
index 0636c1d..bb57994 100644
--- a/2020TPCApp1.cydsn/COMM/BLE/COMM_BLE.c
+++ b/2020TPCApp1.cydsn/COMM/BLE/COMM_BLE.c
@@ -241,7 +241,7 @@ void COMM_BLE_Task(void * pvParameters)
}
break;
- case COMM_BLE_SCANNING_AND_ADVERTISING:
+ case COMM_BLE_SCANNING_AND_ADVERTISING:
{
TRACE_BLE_STATE_ENTRY("COMM_BLE_SCANNING_AND_ADVERTISING");
@@ -332,6 +332,14 @@ SystemKResult_T BLE_ScanAndAdvertise(void)
return SYSTEMK_RESULT_SUCCESS;
}
+SystemKResult_T BLE_StopAdvertising(void)
+{
+ COMM_BLE_Command_T command = { .ID = COMM_BLE_STOP_ADVERTISING, .Data = (void *)0x00 };
+ xQueueSend(COMM_BLE_CommandQueue, &command, 0);
+
+ return SYSTEMK_RESULT_SUCCESS;
+}
+
void COMM_BLE_RequestState(COMM_BLE_StateID_T state)
{
Next_State = state;
diff --git a/2020TPCApp1.cydsn/NVM/NVM_ExternalEEPROMEntries.c b/2020TPCApp1.cydsn/NVM/NVM_ExternalEEPROMEntries.c
index 832da53..7deaf9b 100644
--- a/2020TPCApp1.cydsn/NVM/NVM_ExternalEEPROMEntries.c
+++ b/2020TPCApp1.cydsn/NVM/NVM_ExternalEEPROMEntries.c
@@ -6,14 +6,15 @@
* /_/ |_|/_/ \__,_/\__, / /____/\____/\__,_/_/ \___/\___/ \____/\____/\__,_/\___/
* /____/
*
- * 🃞 THIS FILE IS PART OF THE KTAG SOURCE CODE. Visit https://ktag.clubk.club/ for more. 🃞
+ * This file is part of the KTag project, a DIY laser tag game with customizable features and wide interoperability.
+ * 🛡️ 🃞
*
*/
/** \file
* \brief [Autogenerated] This file defines the External EEPROM entries.
*
- * \note AUTOGENERATED: This file was generated automatically on Friday, April 28, 2023 at 11:31:31 AM.
+ * \note AUTOGENERATED: This file was generated automatically on Saturday, March 1, 2025 at 08:52:44 AM.
* DO NOT MODIFY THIS FILE MANUALLY!
*/
@@ -102,18 +103,28 @@ static const NVM_Game_Settings_T DEFAULT_Game_Settings =
{
//! Selected weapon.
.Weapon_ID = LASER_X_ID,
- //! Player identification (is this used?)
+ //! Player identification.
.Player_ID = 0,
//! Selected team.
.Team_ID = 1,
+ //! Maximum health.
+ .Max_Health = 100,
+ //! Number of special weapons regained upon reentry to the game.
+ .N_Special_Weapons_On_Reentry = 1,
+ //! Time in milliseconds between instigating a game and when the countdown begins.
+ .T_Start_Game_in_ms = 30000,
+ //! Duration of the game in milliseconds.
+ .T_Game_Length_in_ms = 600000,
+ //! Color representing the player, rather than the team.
+ .Secondary_Color = 0,
};
NVM_EEPROMEntry_T NVM_Game_Settings =
{
//! Size == sizeof(NVM_Game_Settings_T)
- .Size = 3,
+ .Size = 17,
.EE_Address = 22,
- .EE_CRC_Address = 25,
+ .EE_CRC_Address = 39,
.Value = (uint8_t *)&RAM_Game_Settings,
.Default = (uint8_t *)&DEFAULT_Game_Settings,
.State = NVM_STATE_UNINITIALIZED
@@ -130,8 +141,8 @@ NVM_EEPROMEntry_T NVM_Hourmeter =
{
//! Size == sizeof(NVM_Hourmeter_T)
.Size = 2,
- .EE_Address = 27,
- .EE_CRC_Address = 29,
+ .EE_Address = 41,
+ .EE_CRC_Address = 43,
.Value = (uint8_t *)&RAM_Hourmeter,
.Default = (uint8_t *)&DEFAULT_Hourmeter,
.State = NVM_STATE_UNINITIALIZED
diff --git a/2020TPCApp1.cydsn/NVM/NVM_ExternalEEPROMEntries.h b/2020TPCApp1.cydsn/NVM/NVM_ExternalEEPROMEntries.h
index 61d7103..c2e757f 100644
--- a/2020TPCApp1.cydsn/NVM/NVM_ExternalEEPROMEntries.h
+++ b/2020TPCApp1.cydsn/NVM/NVM_ExternalEEPROMEntries.h
@@ -13,7 +13,7 @@
/** \file
* \brief [Autogenerated] This file declares the External EEPROM entries.
*
- * \note AUTOGENERATED: This file was generated automatically on Friday, April 28, 2023 at 11:31:31 AM.
+ * \note AUTOGENERATED: This file was generated automatically on Saturday, March 1, 2025 at 08:52:44 AM.
* DO NOT MODIFY THIS FILE MANUALLY!
*/
@@ -60,10 +60,20 @@ typedef struct __attribute__((packed))
{
//! Selected weapon.
uint8_t Weapon_ID;
- //! Player identification (is this used?)
+ //! Player identification.
uint8_t Player_ID;
//! Selected team.
uint8_t Team_ID;
+ //! Maximum health.
+ uint8_t Max_Health;
+ //! Number of special weapons regained upon reentry to the game.
+ uint8_t N_Special_Weapons_On_Reentry;
+ //! Time in milliseconds between instigating a game and when the countdown begins.
+ uint32_t T_Start_Game_in_ms;
+ //! Duration of the game in milliseconds.
+ uint32_t T_Game_Length_in_ms;
+ //! Color representing the player, rather than the team.
+ uint32_t Secondary_Color;
} NVM_Game_Settings_T;
typedef struct __attribute__((packed))
@@ -123,6 +133,21 @@ extern const uint8_t NVM_N_EXTERNAL_EEPROM_ENTRIES;
#define NVM_TEAM_ID (((NVM_Game_Settings_T*)NVM_Game_Settings.Value)->Team_ID)
#define NVM_TEAM_ID_ENTRY_PTR (&NVM_Game_Settings)
+#define NVM_MAX_HEALTH (((NVM_Game_Settings_T*)NVM_Game_Settings.Value)->Max_Health)
+#define NVM_MAX_HEALTH_ENTRY_PTR (&NVM_Game_Settings)
+
+#define NVM_N_SPECIAL_WEAPONS_ON_REENTRY (((NVM_Game_Settings_T*)NVM_Game_Settings.Value)->N_Special_Weapons_On_Reentry)
+#define NVM_N_SPECIAL_WEAPONS_ON_REENTRY_ENTRY_PTR (&NVM_Game_Settings)
+
+#define NVM_T_START_GAME_IN_MS (((NVM_Game_Settings_T*)NVM_Game_Settings.Value)->T_Start_Game_in_ms)
+#define NVM_T_START_GAME_IN_MS_ENTRY_PTR (&NVM_Game_Settings)
+
+#define NVM_T_GAME_LENGTH_IN_MS (((NVM_Game_Settings_T*)NVM_Game_Settings.Value)->T_Game_Length_in_ms)
+#define NVM_T_GAME_LENGTH_IN_MS_ENTRY_PTR (&NVM_Game_Settings)
+
+#define NVM_SECONDARY_COLOR (((NVM_Game_Settings_T*)NVM_Game_Settings.Value)->Secondary_Color)
+#define NVM_SECONDARY_COLOR_ENTRY_PTR (&NVM_Game_Settings)
+
#define NVM_HOURMETER_STARTUPS (((NVM_Hourmeter_T*)NVM_Hourmeter.Value)->Hourmeter_Startups)
#define NVM_HOURMETER_STARTUPS_ENTRY_PTR (&NVM_Hourmeter)
diff --git a/2020TPCApp1.cydsn/NVM/NVM_OnChipEEPROMEntries.c b/2020TPCApp1.cydsn/NVM/NVM_OnChipEEPROMEntries.c
index 08b72a4..65bd556 100644
--- a/2020TPCApp1.cydsn/NVM/NVM_OnChipEEPROMEntries.c
+++ b/2020TPCApp1.cydsn/NVM/NVM_OnChipEEPROMEntries.c
@@ -6,14 +6,15 @@
* /_/ |_|/_/ \__,_/\__, / /____/\____/\__,_/_/ \___/\___/ \____/\____/\__,_/\___/
* /____/
*
- * 🃞 THIS FILE IS PART OF THE KTAG SOURCE CODE. Visit https://ktag.clubk.club/ for more. 🃞
+ * This file is part of the KTag project, a DIY laser tag game with customizable features and wide interoperability.
+ * 🛡️ 🃞
*
*/
/** \file
* \brief [Autogenerated] This file defines the OnChip EEPROM entries.
*
- * \note AUTOGENERATED: This file was generated automatically on Friday, April 28, 2023 at 11:31:31 AM.
+ * \note AUTOGENERATED: This file was generated automatically on Saturday, March 1, 2025 at 08:52:44 AM.
* DO NOT MODIFY THIS FILE MANUALLY!
*/
diff --git a/2020TPCApp1.cydsn/NVM/NVM_OnChipEEPROMEntries.h b/2020TPCApp1.cydsn/NVM/NVM_OnChipEEPROMEntries.h
index 507737a..e9a6a48 100644
--- a/2020TPCApp1.cydsn/NVM/NVM_OnChipEEPROMEntries.h
+++ b/2020TPCApp1.cydsn/NVM/NVM_OnChipEEPROMEntries.h
@@ -13,7 +13,7 @@
/** \file
* \brief [Autogenerated] This file declares the OnChip EEPROM entries.
*
- * \note AUTOGENERATED: This file was generated automatically on Friday, April 28, 2023 at 11:31:31 AM.
+ * \note AUTOGENERATED: This file was generated automatically on Saturday, March 1, 2025 at 08:52:44 AM.
* DO NOT MODIFY THIS FILE MANUALLY!
*/
diff --git a/2020TPCApp1.cydsn/NVM/NVM_Settings.c b/2020TPCApp1.cydsn/NVM/NVM_Settings.c
index 4585506..964db30 100644
--- a/2020TPCApp1.cydsn/NVM/NVM_Settings.c
+++ b/2020TPCApp1.cydsn/NVM/NVM_Settings.c
@@ -33,6 +33,14 @@ SystemKResult_T SETTINGS_get_uint8_t(SystemKSettingID_T id, uint8_t * value)
*value = NVM_WEAPON_ID;
break;
+ case SYSTEMK_SETTING_MAX_HEALTH:
+ *value = NVM_MAX_HEALTH;
+ break;
+
+ case SYSTEMK_SETTING_N_SPECIAL_WEAPONS_ON_REENTRY:
+ *value = NVM_N_SPECIAL_WEAPONS_ON_REENTRY;
+ break;
+
default:
result = SYSTEMK_RESULT_WRONG_DATATYPE;
break;
@@ -67,6 +75,14 @@ SystemKResult_T SETTINGS_set_uint8_t(SystemKSettingID_T id, uint8_t value)
NVM_WEAPON_ID = value;
break;
+ case SYSTEMK_SETTING_MAX_HEALTH:
+ NVM_MAX_HEALTH = value;
+ break;
+
+ case SYSTEMK_SETTING_N_SPECIAL_WEAPONS_ON_REENTRY:
+ NVM_N_SPECIAL_WEAPONS_ON_REENTRY = value;
+ break;
+
default:
result = SYSTEMK_RESULT_WRONG_DATATYPE;
break;
@@ -81,8 +97,20 @@ SystemKResult_T SETTINGS_get_uint32_t(SystemKSettingID_T id, uint32_t * value)
switch (id)
{
+ case SYSTEMK_SETTING_DEVICE_TYPE:
+ *value = 1; // 2020TPC
+ break;
+
case SYSTEMK_SETTING_T_START_GAME_in_ms:
- *value = CONFIG_KTAG_T_DEFAULT_START_GAME_in_ms;
+ *value = NVM_T_START_GAME_IN_MS;
+ break;
+
+ case SYSTEMK_SETTING_T_GAME_LENGTH_in_ms:
+ *value = NVM_T_GAME_LENGTH_IN_MS;
+ break;
+
+ case SYSTEMK_SETTING_SECONDARY_COLOR:
+ *value = NVM_SECONDARY_COLOR;
break;
default:
@@ -99,9 +127,21 @@ SystemKResult_T SETTINGS_set_uint32_t(SystemKSettingID_T id, uint32_t value)
switch (id)
{
- case SYSTEMK_SETTING_T_START_GAME_in_ms:
+ case SYSTEMK_SETTING_DEVICE_TYPE:
result = SYSTEMK_RESULT_NOT_IMPLEMENTED;
break;
+
+ case SYSTEMK_SETTING_T_START_GAME_in_ms:
+ NVM_T_START_GAME_IN_MS = value;
+ break;
+
+ case SYSTEMK_SETTING_T_GAME_LENGTH_in_ms:
+ NVM_T_GAME_LENGTH_IN_MS = value;
+ break;
+
+ case SYSTEMK_SETTING_SECONDARY_COLOR:
+ NVM_SECONDARY_COLOR = value;
+ break;
default:
result = SYSTEMK_RESULT_WRONG_DATATYPE;
@@ -111,6 +151,20 @@ SystemKResult_T SETTINGS_set_uint32_t(SystemKSettingID_T id, uint32_t value)
return result;
}
+SystemKResult_T SETTINGS_get_device_name(char* name)
+{
+ static char device_name[] = "Another 2020TPC";
+
+ strncpy(name, device_name, sizeof(device_name));
+
+ return SYSTEMK_RESULT_SUCCESS;
+}
+
+SystemKResult_T SETTINGS_set_device_name(char* name)
+{
+ return SYSTEMK_RESULT_NOT_IMPLEMENTED;
+}
+
SystemKResult_T SETTINGS_Save(void)
{
#if (CONFIG__HAS_EXTERNAL_NVM)
diff --git a/2020TPCApp1.cydsn/SystemK b/2020TPCApp1.cydsn/SystemK
index 4fe072f..bfcdf4c 160000
--- a/2020TPCApp1.cydsn/SystemK
+++ b/2020TPCApp1.cydsn/SystemK
@@ -1 +1 @@
-Subproject commit 4fe072f2d3280b19aa53e197bd22ec44b174ff88
+Subproject commit bfcdf4c354ae6c96165e11e2fd6d52d0c8ab91eb
diff --git a/2020TPCAppNoDFU.cydsn/2020TPCAppNoDFU.cyprj b/2020TPCAppNoDFU.cydsn/2020TPCAppNoDFU.cyprj
index 236c4e2..e090c8a 100644
--- a/2020TPCAppNoDFU.cydsn/2020TPCAppNoDFU.cyprj
+++ b/2020TPCAppNoDFU.cydsn/2020TPCAppNoDFU.cyprj
@@ -1839,6 +1839,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2020TPCAppNoDFU.cydsn/COMM/BLE/COMM_BLE.c b/2020TPCAppNoDFU.cydsn/COMM/BLE/COMM_BLE.c
index 0636c1d..bb57994 100644
--- a/2020TPCAppNoDFU.cydsn/COMM/BLE/COMM_BLE.c
+++ b/2020TPCAppNoDFU.cydsn/COMM/BLE/COMM_BLE.c
@@ -241,7 +241,7 @@ void COMM_BLE_Task(void * pvParameters)
}
break;
- case COMM_BLE_SCANNING_AND_ADVERTISING:
+ case COMM_BLE_SCANNING_AND_ADVERTISING:
{
TRACE_BLE_STATE_ENTRY("COMM_BLE_SCANNING_AND_ADVERTISING");
@@ -332,6 +332,14 @@ SystemKResult_T BLE_ScanAndAdvertise(void)
return SYSTEMK_RESULT_SUCCESS;
}
+SystemKResult_T BLE_StopAdvertising(void)
+{
+ COMM_BLE_Command_T command = { .ID = COMM_BLE_STOP_ADVERTISING, .Data = (void *)0x00 };
+ xQueueSend(COMM_BLE_CommandQueue, &command, 0);
+
+ return SYSTEMK_RESULT_SUCCESS;
+}
+
void COMM_BLE_RequestState(COMM_BLE_StateID_T state)
{
Next_State = state;
diff --git a/2020TPCAppNoDFU.cydsn/NVM/NVM_ExternalEEPROMEntries.c b/2020TPCAppNoDFU.cydsn/NVM/NVM_ExternalEEPROMEntries.c
index 832da53..7deaf9b 100644
--- a/2020TPCAppNoDFU.cydsn/NVM/NVM_ExternalEEPROMEntries.c
+++ b/2020TPCAppNoDFU.cydsn/NVM/NVM_ExternalEEPROMEntries.c
@@ -6,14 +6,15 @@
* /_/ |_|/_/ \__,_/\__, / /____/\____/\__,_/_/ \___/\___/ \____/\____/\__,_/\___/
* /____/
*
- * 🃞 THIS FILE IS PART OF THE KTAG SOURCE CODE. Visit https://ktag.clubk.club/ for more. 🃞
+ * This file is part of the KTag project, a DIY laser tag game with customizable features and wide interoperability.
+ * 🛡️ 🃞
*
*/
/** \file
* \brief [Autogenerated] This file defines the External EEPROM entries.
*
- * \note AUTOGENERATED: This file was generated automatically on Friday, April 28, 2023 at 11:31:31 AM.
+ * \note AUTOGENERATED: This file was generated automatically on Saturday, March 1, 2025 at 08:52:44 AM.
* DO NOT MODIFY THIS FILE MANUALLY!
*/
@@ -102,18 +103,28 @@ static const NVM_Game_Settings_T DEFAULT_Game_Settings =
{
//! Selected weapon.
.Weapon_ID = LASER_X_ID,
- //! Player identification (is this used?)
+ //! Player identification.
.Player_ID = 0,
//! Selected team.
.Team_ID = 1,
+ //! Maximum health.
+ .Max_Health = 100,
+ //! Number of special weapons regained upon reentry to the game.
+ .N_Special_Weapons_On_Reentry = 1,
+ //! Time in milliseconds between instigating a game and when the countdown begins.
+ .T_Start_Game_in_ms = 30000,
+ //! Duration of the game in milliseconds.
+ .T_Game_Length_in_ms = 600000,
+ //! Color representing the player, rather than the team.
+ .Secondary_Color = 0,
};
NVM_EEPROMEntry_T NVM_Game_Settings =
{
//! Size == sizeof(NVM_Game_Settings_T)
- .Size = 3,
+ .Size = 17,
.EE_Address = 22,
- .EE_CRC_Address = 25,
+ .EE_CRC_Address = 39,
.Value = (uint8_t *)&RAM_Game_Settings,
.Default = (uint8_t *)&DEFAULT_Game_Settings,
.State = NVM_STATE_UNINITIALIZED
@@ -130,8 +141,8 @@ NVM_EEPROMEntry_T NVM_Hourmeter =
{
//! Size == sizeof(NVM_Hourmeter_T)
.Size = 2,
- .EE_Address = 27,
- .EE_CRC_Address = 29,
+ .EE_Address = 41,
+ .EE_CRC_Address = 43,
.Value = (uint8_t *)&RAM_Hourmeter,
.Default = (uint8_t *)&DEFAULT_Hourmeter,
.State = NVM_STATE_UNINITIALIZED
diff --git a/2020TPCAppNoDFU.cydsn/NVM/NVM_ExternalEEPROMEntries.h b/2020TPCAppNoDFU.cydsn/NVM/NVM_ExternalEEPROMEntries.h
index 61d7103..c2e757f 100644
--- a/2020TPCAppNoDFU.cydsn/NVM/NVM_ExternalEEPROMEntries.h
+++ b/2020TPCAppNoDFU.cydsn/NVM/NVM_ExternalEEPROMEntries.h
@@ -13,7 +13,7 @@
/** \file
* \brief [Autogenerated] This file declares the External EEPROM entries.
*
- * \note AUTOGENERATED: This file was generated automatically on Friday, April 28, 2023 at 11:31:31 AM.
+ * \note AUTOGENERATED: This file was generated automatically on Saturday, March 1, 2025 at 08:52:44 AM.
* DO NOT MODIFY THIS FILE MANUALLY!
*/
@@ -60,10 +60,20 @@ typedef struct __attribute__((packed))
{
//! Selected weapon.
uint8_t Weapon_ID;
- //! Player identification (is this used?)
+ //! Player identification.
uint8_t Player_ID;
//! Selected team.
uint8_t Team_ID;
+ //! Maximum health.
+ uint8_t Max_Health;
+ //! Number of special weapons regained upon reentry to the game.
+ uint8_t N_Special_Weapons_On_Reentry;
+ //! Time in milliseconds between instigating a game and when the countdown begins.
+ uint32_t T_Start_Game_in_ms;
+ //! Duration of the game in milliseconds.
+ uint32_t T_Game_Length_in_ms;
+ //! Color representing the player, rather than the team.
+ uint32_t Secondary_Color;
} NVM_Game_Settings_T;
typedef struct __attribute__((packed))
@@ -123,6 +133,21 @@ extern const uint8_t NVM_N_EXTERNAL_EEPROM_ENTRIES;
#define NVM_TEAM_ID (((NVM_Game_Settings_T*)NVM_Game_Settings.Value)->Team_ID)
#define NVM_TEAM_ID_ENTRY_PTR (&NVM_Game_Settings)
+#define NVM_MAX_HEALTH (((NVM_Game_Settings_T*)NVM_Game_Settings.Value)->Max_Health)
+#define NVM_MAX_HEALTH_ENTRY_PTR (&NVM_Game_Settings)
+
+#define NVM_N_SPECIAL_WEAPONS_ON_REENTRY (((NVM_Game_Settings_T*)NVM_Game_Settings.Value)->N_Special_Weapons_On_Reentry)
+#define NVM_N_SPECIAL_WEAPONS_ON_REENTRY_ENTRY_PTR (&NVM_Game_Settings)
+
+#define NVM_T_START_GAME_IN_MS (((NVM_Game_Settings_T*)NVM_Game_Settings.Value)->T_Start_Game_in_ms)
+#define NVM_T_START_GAME_IN_MS_ENTRY_PTR (&NVM_Game_Settings)
+
+#define NVM_T_GAME_LENGTH_IN_MS (((NVM_Game_Settings_T*)NVM_Game_Settings.Value)->T_Game_Length_in_ms)
+#define NVM_T_GAME_LENGTH_IN_MS_ENTRY_PTR (&NVM_Game_Settings)
+
+#define NVM_SECONDARY_COLOR (((NVM_Game_Settings_T*)NVM_Game_Settings.Value)->Secondary_Color)
+#define NVM_SECONDARY_COLOR_ENTRY_PTR (&NVM_Game_Settings)
+
#define NVM_HOURMETER_STARTUPS (((NVM_Hourmeter_T*)NVM_Hourmeter.Value)->Hourmeter_Startups)
#define NVM_HOURMETER_STARTUPS_ENTRY_PTR (&NVM_Hourmeter)
diff --git a/2020TPCAppNoDFU.cydsn/NVM/NVM_OnChipEEPROMEntries.c b/2020TPCAppNoDFU.cydsn/NVM/NVM_OnChipEEPROMEntries.c
index 08b72a4..65bd556 100644
--- a/2020TPCAppNoDFU.cydsn/NVM/NVM_OnChipEEPROMEntries.c
+++ b/2020TPCAppNoDFU.cydsn/NVM/NVM_OnChipEEPROMEntries.c
@@ -6,14 +6,15 @@
* /_/ |_|/_/ \__,_/\__, / /____/\____/\__,_/_/ \___/\___/ \____/\____/\__,_/\___/
* /____/
*
- * 🃞 THIS FILE IS PART OF THE KTAG SOURCE CODE. Visit https://ktag.clubk.club/ for more. 🃞
+ * This file is part of the KTag project, a DIY laser tag game with customizable features and wide interoperability.
+ * 🛡️ 🃞
*
*/
/** \file
* \brief [Autogenerated] This file defines the OnChip EEPROM entries.
*
- * \note AUTOGENERATED: This file was generated automatically on Friday, April 28, 2023 at 11:31:31 AM.
+ * \note AUTOGENERATED: This file was generated automatically on Saturday, March 1, 2025 at 08:52:44 AM.
* DO NOT MODIFY THIS FILE MANUALLY!
*/
diff --git a/2020TPCAppNoDFU.cydsn/NVM/NVM_OnChipEEPROMEntries.h b/2020TPCAppNoDFU.cydsn/NVM/NVM_OnChipEEPROMEntries.h
index 507737a..e9a6a48 100644
--- a/2020TPCAppNoDFU.cydsn/NVM/NVM_OnChipEEPROMEntries.h
+++ b/2020TPCAppNoDFU.cydsn/NVM/NVM_OnChipEEPROMEntries.h
@@ -13,7 +13,7 @@
/** \file
* \brief [Autogenerated] This file declares the OnChip EEPROM entries.
*
- * \note AUTOGENERATED: This file was generated automatically on Friday, April 28, 2023 at 11:31:31 AM.
+ * \note AUTOGENERATED: This file was generated automatically on Saturday, March 1, 2025 at 08:52:44 AM.
* DO NOT MODIFY THIS FILE MANUALLY!
*/
diff --git a/2020TPCAppNoDFU.cydsn/NVM/NVM_Settings.c b/2020TPCAppNoDFU.cydsn/NVM/NVM_Settings.c
index 4585506..964db30 100644
--- a/2020TPCAppNoDFU.cydsn/NVM/NVM_Settings.c
+++ b/2020TPCAppNoDFU.cydsn/NVM/NVM_Settings.c
@@ -33,6 +33,14 @@ SystemKResult_T SETTINGS_get_uint8_t(SystemKSettingID_T id, uint8_t * value)
*value = NVM_WEAPON_ID;
break;
+ case SYSTEMK_SETTING_MAX_HEALTH:
+ *value = NVM_MAX_HEALTH;
+ break;
+
+ case SYSTEMK_SETTING_N_SPECIAL_WEAPONS_ON_REENTRY:
+ *value = NVM_N_SPECIAL_WEAPONS_ON_REENTRY;
+ break;
+
default:
result = SYSTEMK_RESULT_WRONG_DATATYPE;
break;
@@ -67,6 +75,14 @@ SystemKResult_T SETTINGS_set_uint8_t(SystemKSettingID_T id, uint8_t value)
NVM_WEAPON_ID = value;
break;
+ case SYSTEMK_SETTING_MAX_HEALTH:
+ NVM_MAX_HEALTH = value;
+ break;
+
+ case SYSTEMK_SETTING_N_SPECIAL_WEAPONS_ON_REENTRY:
+ NVM_N_SPECIAL_WEAPONS_ON_REENTRY = value;
+ break;
+
default:
result = SYSTEMK_RESULT_WRONG_DATATYPE;
break;
@@ -81,8 +97,20 @@ SystemKResult_T SETTINGS_get_uint32_t(SystemKSettingID_T id, uint32_t * value)
switch (id)
{
+ case SYSTEMK_SETTING_DEVICE_TYPE:
+ *value = 1; // 2020TPC
+ break;
+
case SYSTEMK_SETTING_T_START_GAME_in_ms:
- *value = CONFIG_KTAG_T_DEFAULT_START_GAME_in_ms;
+ *value = NVM_T_START_GAME_IN_MS;
+ break;
+
+ case SYSTEMK_SETTING_T_GAME_LENGTH_in_ms:
+ *value = NVM_T_GAME_LENGTH_IN_MS;
+ break;
+
+ case SYSTEMK_SETTING_SECONDARY_COLOR:
+ *value = NVM_SECONDARY_COLOR;
break;
default:
@@ -99,9 +127,21 @@ SystemKResult_T SETTINGS_set_uint32_t(SystemKSettingID_T id, uint32_t value)
switch (id)
{
- case SYSTEMK_SETTING_T_START_GAME_in_ms:
+ case SYSTEMK_SETTING_DEVICE_TYPE:
result = SYSTEMK_RESULT_NOT_IMPLEMENTED;
break;
+
+ case SYSTEMK_SETTING_T_START_GAME_in_ms:
+ NVM_T_START_GAME_IN_MS = value;
+ break;
+
+ case SYSTEMK_SETTING_T_GAME_LENGTH_in_ms:
+ NVM_T_GAME_LENGTH_IN_MS = value;
+ break;
+
+ case SYSTEMK_SETTING_SECONDARY_COLOR:
+ NVM_SECONDARY_COLOR = value;
+ break;
default:
result = SYSTEMK_RESULT_WRONG_DATATYPE;
@@ -111,6 +151,20 @@ SystemKResult_T SETTINGS_set_uint32_t(SystemKSettingID_T id, uint32_t value)
return result;
}
+SystemKResult_T SETTINGS_get_device_name(char* name)
+{
+ static char device_name[] = "Another 2020TPC";
+
+ strncpy(name, device_name, sizeof(device_name));
+
+ return SYSTEMK_RESULT_SUCCESS;
+}
+
+SystemKResult_T SETTINGS_set_device_name(char* name)
+{
+ return SYSTEMK_RESULT_NOT_IMPLEMENTED;
+}
+
SystemKResult_T SETTINGS_Save(void)
{
#if (CONFIG__HAS_EXTERNAL_NVM)
diff --git a/2020TPCAppNoDFU.cydsn/SystemK b/2020TPCAppNoDFU.cydsn/SystemK
index 4fe072f..bfcdf4c 160000
--- a/2020TPCAppNoDFU.cydsn/SystemK
+++ b/2020TPCAppNoDFU.cydsn/SystemK
@@ -1 +1 @@
-Subproject commit 4fe072f2d3280b19aa53e197bd22ec44b174ff88
+Subproject commit bfcdf4c354ae6c96165e11e2fd6d52d0c8ab91eb
diff --git a/autocode.py b/autocode.py
index 85580f3..43247a3 100644
--- a/autocode.py
+++ b/autocode.py
@@ -18,7 +18,7 @@ import openpyxl
APP_NAME = "KTag Autocode Generator"
__author__ = "Joe Kearney"
-__version__ = "00.02"
+__version__ = "00.03"
NVM_SPREADSHEET_FILENAME = "2020TPC Nonvolatile Memory.xlsx"
SCRIPT_PATH = os.path.dirname(os.path.realpath(__file__))
@@ -164,17 +164,17 @@ def generate_NVM_autocode():
with codecs.open('NVM_' + location + 'EEPROMEntries.h', 'w', "utf-8") as f:
f.write("/*\n")
f.write(
- " * __ ________ _____ ______ __ \n")
+ r" * __ ________ _____ ______ __ " + "\n")
f.write(
- " * / //_/_ __/___ _____ _ / ___/____ __ _______________ / ____/___ ____/ /__ \n")
+ r" * / //_/_ __/___ _____ _ / ___/____ __ _______________ / ____/___ ____/ /__ " + "\n")
f.write(
- " * / ,< / / / __ `/ __ `/ \__ \/ __ \/ / / / ___/ ___/ _ \ / / / __ \/ __ / _ \ \n")
+ r" * / ,< / / / __ `/ __ `/ \__ \/ __ \/ / / / ___/ ___/ _ \ / / / __ \/ __ / _ \ " + "\n")
f.write(
- " * / /| | / / / /_/ / /_/ / ___/ / /_/ / /_/ / / / /__/ __/ / /___/ /_/ / /_/ / __/ \n")
+ r" * / /| | / / / /_/ / /_/ / ___/ / /_/ / /_/ / / / /__/ __/ / /___/ /_/ / /_/ / __/ " + "\n")
f.write(
- " * /_/ |_|/_/ \__,_/\__, / /____/\____/\__,_/_/ \___/\___/ \____/\____/\__,_/\___/ \n")
+ r" * /_/ |_|/_/ \__,_/\__, / /____/\____/\__,_/_/ \___/\___/ \____/\____/\__,_/\___/ " + "\n")
f.write(
- " * /____/ \n")
+ r" * /____/ " + "\n")
f.write(" *\n")
f.write(
" * 🃞 THIS FILE IS PART OF THE KTAG SOURCE CODE. Visit https://ktag.clubk.club/ for more. 🃞\n")
@@ -259,20 +259,21 @@ def generate_NVM_autocode():
with codecs.open('NVM_' + location + 'EEPROMEntries.c', 'w', "utf-8") as f:
f.write("/*\n")
f.write(
- " * __ ________ _____ ______ __ \n")
+ r" * __ ________ _____ ______ __ " + "\n")
f.write(
- " * / //_/_ __/___ _____ _ / ___/____ __ _______________ / ____/___ ____/ /__ \n")
+ r" * / //_/_ __/___ _____ _ / ___/____ __ _______________ / ____/___ ____/ /__ " + "\n")
f.write(
- " * / ,< / / / __ `/ __ `/ \__ \/ __ \/ / / / ___/ ___/ _ \ / / / __ \/ __ / _ \ \n")
+ r" * / ,< / / / __ `/ __ `/ \__ \/ __ \/ / / / ___/ ___/ _ \ / / / __ \/ __ / _ \ " + "\n")
f.write(
- " * / /| | / / / /_/ / /_/ / ___/ / /_/ / /_/ / / / /__/ __/ / /___/ /_/ / /_/ / __/ \n")
+ r" * / /| | / / / /_/ / /_/ / ___/ / /_/ / /_/ / / / /__/ __/ / /___/ /_/ / /_/ / __/ " + "\n")
f.write(
- " * /_/ |_|/_/ \__,_/\__, / /____/\____/\__,_/_/ \___/\___/ \____/\____/\__,_/\___/ \n")
+ r" * /_/ |_|/_/ \__,_/\__, / /____/\____/\__,_/_/ \___/\___/ \____/\____/\__,_/\___/ " + "\n")
f.write(
- " * /____/ \n")
+ r" * /____/ " + "\n")
f.write(" *\n")
+ f.write(" * This file is part of the KTag project, a DIY laser tag game with customizable features and wide interoperability.\n")
f.write(
- " * 🃞 THIS FILE IS PART OF THE KTAG SOURCE CODE. Visit https://ktag.clubk.club/ for more. 🃞\n")
+ " * 🛡️ 🃞\n")
f.write(" *\n")
f.write(" */\n")
@@ -294,7 +295,7 @@ def generate_NVM_autocode():
f.write('\n')
f.write('/* EEPROM Entries */\n')
f.write('\n')
- f.write('/** \defgroup NVM_' + location.upper() +
+ f.write(r'/** \defgroup NVM_' + location.upper() +
'_EEPROM NVM ' + location + ' EEPROM\n')
f.write(' *\n')
f.write(' * The ' + location +