Added various read-only debug registers to register map

pull/53/head
Simon Kueppers 2024-01-01 17:03:30 +01:00
rodzic e853047a2c
commit 2fd3f70917
2 zmienionych plików z 166 dodań i 8 usunięć

Wyświetl plik

@ -15,7 +15,7 @@ void Settings_Init()
uint8_t Settings_RegWrite(uint8_t address, const uint8_t * buffer, uint8_t bufsize)
{
if (address < SETTINGS_REGMAP_SIZE) {
if (address < SETTINGS_REGMAP_READONLYADDR) {
assert(bufsize == sizeof(uint32_t));
uint32_t data = ( (((uint32_t) buffer[0]) << 0) |
@ -23,7 +23,9 @@ uint8_t Settings_RegWrite(uint8_t address, const uint8_t * buffer, uint8_t bufsi
(((uint32_t) buffer[2]) << 16) |
(((uint32_t) buffer[3]) << 24) );
__disable_irq();
settingsRegMap[address] = data;
__enable_irq();
return bufsize;
}
@ -36,7 +38,9 @@ uint8_t Settings_RegRead(uint8_t address, uint8_t * buffer, uint8_t bufsize)
if (address < SETTINGS_REGMAP_SIZE) {
assert(bufsize == sizeof(uint32_t));
__disable_irq();
uint64_t data = settingsRegMap[address];
__enable_irq();
buffer[0] = (uint8_t) (data >> 0);
buffer[1] = (uint8_t) (data >> 8);
@ -52,9 +56,12 @@ void Settings_Store(void)
HAL_FLASH_Unlock();
uint32_t pageError = 0;
extern uint32_t * _eeprom;
uint32_t pageAddress = (uint32_t) &_eeprom;
FLASH_EraseInitTypeDef eraseInitStruct = {
.TypeErase = FLASH_TYPEERASE_PAGES,
.PageAddress = SETTINGS_FLASH_ADDRESS,
.PageAddress = pageAddress,
.NbPages = (SETTINGS_REGMAP_SIZE * sizeof(uint32_t) + FLASH_PAGE_SIZE-1) / FLASH_PAGE_SIZE
};
@ -64,7 +71,8 @@ void Settings_Store(void)
return;
}
uint32_t wordAddress = SETTINGS_FLASH_ADDRESS;
extern uint32_t * _eeprom;
uint32_t wordAddress = (uint32_t) &_eeprom;
uint32_t wordCount = SETTINGS_REGMAP_SIZE;
uint32_t * wordPtr = settingsRegMap;
@ -134,5 +142,25 @@ void Settings_Default(void)
settingsRegMap[SETTINGS_REG_VCOS_LVLCTRL] = SETTINGS_REG_VCOS_LVLCTRL_DEFAULT;
settingsRegMap[SETTINGS_REG_VCOS_TIMCTRL] = SETTINGS_REG_VCOS_TIMCTRL_DEFAULT;
/* AIOC Debug registers */
settingsRegMap[SETTINGS_REG_DBGAIOC0] = SETTINGS_REG_DBGAIOC0_DEFAULT;
/* Audio Debug registers */
settingsRegMap[SETTINGS_REG_DBGAUDIO0] = SETTINGS_REG_DBGAUDIO0_DEFAULT;
settingsRegMap[SETTINGS_REG_DBGAUDIO1] = SETTINGS_REG_DBGAUDIO1_DEFAULT;
settingsRegMap[SETTINGS_REG_DBGAUDIO2] = SETTINGS_REG_DBGAUDIO2_DEFAULT;
settingsRegMap[SETTINGS_REG_DBGAUDIO3] = SETTINGS_REG_DBGAUDIO3_DEFAULT;
settingsRegMap[SETTINGS_REG_DBGAUDIO4] = SETTINGS_REG_DBGAUDIO4_DEFAULT;
settingsRegMap[SETTINGS_REG_DBGAUDIO5] = SETTINGS_REG_DBGAUDIO5_DEFAULT;
settingsRegMap[SETTINGS_REG_DBGAUDIO6] = SETTINGS_REG_DBGAUDIO6_DEFAULT;
settingsRegMap[SETTINGS_REG_DBGAUDIO7] = SETTINGS_REG_DBGAUDIO7_DEFAULT;
settingsRegMap[SETTINGS_REG_DBGAUDIO8] = SETTINGS_REG_DBGAUDIO9_DEFAULT;
settingsRegMap[SETTINGS_REG_DBGAUDIO9] = SETTINGS_REG_DBGAUDIO10_DEFAULT;
settingsRegMap[SETTINGS_REG_DBGAUDIO10] = SETTINGS_REG_DBGAUDIO11_DEFAULT;
settingsRegMap[SETTINGS_REG_DBGAUDIO11] = SETTINGS_REG_DBGAUDIO11_DEFAULT;
settingsRegMap[SETTINGS_REG_DBGAUDIO12] = SETTINGS_REG_DBGAUDIO12_DEFAULT;
settingsRegMap[SETTINGS_REG_DBGAUDIO13] = SETTINGS_REG_DBGAUDIO13_DEFAULT;
settingsRegMap[SETTINGS_REG_DBGAUDIO14] = SETTINGS_REG_DBGAUDIO14_DEFAULT;
settingsRegMap[SETTINGS_REG_DBGAUDIO15] = SETTINGS_REG_DBGAUDIO15_DEFAULT;
}

Wyświetl plik

@ -5,6 +5,7 @@
#include "usb_descriptors.h"
#define SETTINGS_REGMAP_SIZE 256
#define SETTINGS_REGMAP_READONLYADDR 0xC0
extern uint32_t settingsRegMap[SETTINGS_REGMAP_SIZE];
@ -188,10 +189,10 @@ extern uint32_t settingsRegMap[SETTINGS_REGMAP_SIZE];
/* Virtual PTT timing control register */
#define SETTINGS_REG_VPTT_TIMCTRL 0x84
#define SETTINGS_REG_VPTT_TIMCTRL_DEFAULT (SETTINGS_REG_VPTT_TIMCTRL_TIMEOUT_DFLT)
/* TIMEOUT: Timeout (trailing) time in microseconds */
#define SETTINGS_REG_VPTT_TIMCTRL_TIMEOUT_DFLT ((uint32_t) 10000 << SETTINGS_REG_VPTT_TIMCTRL_TIMEOUT_OFFS)
/* TIMEOUT: Timeout (trailing) time in milliseconds in 12.4 format */
#define SETTINGS_REG_VPTT_TIMCTRL_TIMEOUT_DFLT ((uint32_t) (20 << 4) << SETTINGS_REG_VPTT_TIMCTRL_TIMEOUT_OFFS)
#define SETTINGS_REG_VPTT_TIMCTRL_TIMEOUT_OFFS 0
#define SETTINGS_REG_VPTT_TIMCTRL_TIMEOUT_MASK 0x0000FFFFUL
#define SETTINGS_REG_VPTT_TIMCTRL_TIMEOUT_MASK 0xFFFFFFFFUL
/* Virtual COS level control register */
#define SETTINGS_REG_VCOS_LVLCTRL 0x92
@ -204,11 +205,140 @@ extern uint32_t settingsRegMap[SETTINGS_REGMAP_SIZE];
/* Virtual COS timing control register */
#define SETTINGS_REG_VCOS_TIMCTRL 0x94
#define SETTINGS_REG_VCOS_TIMCTRL_DEFAULT (SETTINGS_REG_VCOS_TIMCTRL_TIMEOUT_DFLT)
/* TIMEOUT: Timeout (trailing) time in microseconds */
#define SETTINGS_REG_VCOS_TIMCTRL_TIMEOUT_DFLT ((uint32_t) 10000 << SETTINGS_REG_VCOS_TIMCTRL_TIMEOUT_OFFS)
/* TIMEOUT: Timeout (trailing) time in milliseconds in 12.4 format */
#define SETTINGS_REG_VCOS_TIMCTRL_TIMEOUT_DFLT ((uint32_t) (200 << 4) << SETTINGS_REG_VCOS_TIMCTRL_TIMEOUT_OFFS)
#define SETTINGS_REG_VCOS_TIMCTRL_TIMEOUT_OFFS 0
#define SETTINGS_REG_VCOS_TIMCTRL_TIMEOUT_MASK 0x0000FFFFUL
/* AIOC debug register 0 */
#define SETTINGS_REG_DBGAIOC0 0xC0
#define SETTINGS_REG_DBGAIOC0_DEFAULT 0
/* Various digital signal states */
#define SETTINGS_REG_DBGAIOC0_PTT1STATE_MASK 0x00010000UL
#define SETTINGS_REG_DBGAIOC0_PTT2STATE_MASK 0x00020000UL
/* UAC audio debug register 0 */
#define SETTINGS_REG_DBGAUDIO0 0xD0
#define SETTINGS_REG_DBGAUDIO0_DEFAULT 0
/* Playback or recording muted (master and first channel) */
#define SETTINGS_REG_DBGAUDIO0_RECMUTE0_MASK 0x00010000UL
#define SETTINGS_REG_DBGAUDIO0_RECMUTE1_MASK 0x00020000UL
#define SETTINGS_REG_DBGAUDIO0_PLAYMUTE0_MASK 0x00100000UL
#define SETTINGS_REG_DBGAUDIO0_PLAYMUTE1_MASK 0x00200000UL
/* Virtual PTT and COS states */
#define SETTINGS_REG_DBGAIOC0_VPTTSTATE_MASK 0x01000000UL
#define SETTINGS_REG_DBGAIOC0_VCOSSTATE_MASK 0x10000000UL
/* Playback and recording state */
#define SETTINGS_REG_DBGAUDIO0_RECSTATE_OFFS 24
#define SETTINGS_REG_DBGAUDIO0_RECSTATE_MASK 0x0F000000UL
#define SETTINGS_REG_DBGAUDIO0_RECSTATE_OFF_ENUM 0
#define SETTINGS_REG_DBGAUDIO0_RECSTATE_START_ENUM 1
#define SETTINGS_REG_DBGAUDIO0_RECSTATE_RUN_ENUM 2
#define SETTINGS_REG_DBGAUDIO0_PLAYSTATE_OFFS 28
#define SETTINGS_REG_DBGAUDIO0_PLAYSTATE_MASK 0xF0000000UL
#define SETTINGS_REG_DBGAUDIO0_PLAYSTATE_OFF_ENUM 0
#define SETTINGS_REG_DBGAUDIO0_PLAYSTATE_START_ENUM 1
#define SETTINGS_REG_DBGAUDIO0_PLAYSTATE_RUN_ENUM 2
/* Audio debug register 1 */
#define SETTINGS_REG_DBGAUDIO1 0xD1
#define SETTINGS_REG_DBGAUDIO1_DEFAULT 0
/* Audio debug register 2 */
#define SETTINGS_REG_DBGAUDIO2 0xD2
#define SETTINGS_REG_DBGAUDIO2_DEFAULT 0
/* Recording samplerate */
#define SETTINGS_REG_DBGAUDIO2_RECRATE_OFFS 0
#define SETTINGS_REG_DBGAUDIO2_RECRATE_MASK 0xFFFFFFFFUL
/* Audio debug register 3 */
#define SETTINGS_REG_DBGAUDIO3 0xD3
#define SETTINGS_REG_DBGAUDIO3_DEFAULT 0
/* Recording volume (master and first channel) */
#define SETTINGS_REG_DBGAUDIO3_RECVOL0_OFFS 0
#define SETTINGS_REG_DBGAUDIO3_RECVOL0_MASK 0x0000FFFFUL
#define SETTINGS_REG_DBGAUDIO3_RECVOL1_OFFS 16
#define SETTINGS_REG_DBGAUDIO3_RECVOL1_MASK 0xFFFF0000UL
/* TODO: D4, D5, D6 -> Recording buffer levels (avg/min/max) */
/* Audio debug register 4 */
#define SETTINGS_REG_DBGAUDIO4 0xD4
#define SETTINGS_REG_DBGAUDIO4_DEFAULT 0
/* Audio debug register 5 */
#define SETTINGS_REG_DBGAUDIO5 0xD5
#define SETTINGS_REG_DBGAUDIO5_DEFAULT 0
/* Audio debug register 6 */
#define SETTINGS_REG_DBGAUDIO6 0xD6
#define SETTINGS_REG_DBGAUDIO6_DEFAULT 0
/* Audio debug register 7 */
#define SETTINGS_REG_DBGAUDIO7 0xD7
#define SETTINGS_REG_DBGAUDIO7_DEFAULT 0
/* Audio debug register 8 */
#define SETTINGS_REG_DBGAUDIO8 0xD8
#define SETTINGS_REG_DBGAUDIO8_DEFAULT 0
/* Playback samplerate */
#define SETTINGS_REG_DBGAUDIO8_PLAYRATE_OFFS 0
#define SETTINGS_REG_DBGAUDIO8_PLAYRATE_MASK 0xFFFFFFFFUL
/* Audio debug register 9 */
#define SETTINGS_REG_DBGAUDIO9 0xD9
#define SETTINGS_REG_DBGAUDIO9_DEFAULT 0
/* Playback volume (master and first channel) */
#define SETTINGS_REG_DBGAUDIO9_PLAYVOL0_OFFS 0
#define SETTINGS_REG_DBGAUDIO9_PLAYVOL0_MASK 0x0000FFFFUL
#define SETTINGS_REG_DBGAUDIO9_PLAYVOL1_OFFS 16
#define SETTINGS_REG_DBGAUDIO9_PLAYVOL1_MASK 0xFFFF0000UL
/* Audio debug register 10 */
#define SETTINGS_REG_DBGAUDIO10 0xDA
#define SETTINGS_REG_DBGAUDIO10_DEFAULT 0
/* Average playback buffer level */
#define SETTINGS_REG_DBGAUDIO10_PLAYBUFAVG_OFFS 0
#define SETTINGS_REG_DBGAUDIO10_PLAYBUFAVG_MASK 0x0000FFFFUL
/* Audio debug register 11 */
#define SETTINGS_REG_DBGAUDIO11 0xDB
#define SETTINGS_REG_DBGAUDIO11_DEFAULT 0
/* Minimum playback buffer level */
#define SETTINGS_REG_DBGAUDIO11_PLAYBUFMIN_OFFS 0
#define SETTINGS_REG_DBGAUDIO11_PLAYBUFMIN_MASK 0x0000FFFFUL
/* Audio debug register 12 */
#define SETTINGS_REG_DBGAUDIO12 0xDC
#define SETTINGS_REG_DBGAUDIO12_DEFAULT 0
/* Maximum playback buffer level */
#define SETTINGS_REG_DBGAUDIO12_PLAYBUFMAX_OFFS 0
#define SETTINGS_REG_DBGAUDIO12_PLAYBUFMAX_MASK 0x0000FFFFUL
/* Audio debug register 13 */
#define SETTINGS_REG_DBGAUDIO13 0xDD
#define SETTINGS_REG_DBGAUDIO13_DEFAULT 0
/* Average UAC2.0 Feedback Value since last playback */
#define SETTINGS_REG_DBGAUDIO13_PLAYFBAVG_OFFS 0
#define SETTINGS_REG_DBGAUDIO13_PLAYFBAVG_MASK 0xFFFFFFFFUL
/* Audio debug register 14 */
#define SETTINGS_REG_DBGAUDIO14 0xDE
#define SETTINGS_REG_DBGAUDIO14_DEFAULT 0
/* Minimum UAC2.0 Feedback Value since last playback */
#define SETTINGS_REG_DBGAUDIO14_PLAYFBMIN_OFFS 0
#define SETTINGS_REG_DBGAUDIO14_PLAYFBMIN_MASK 0xFFFFFFFFUL
/* Audio debug register 15 */
#define SETTINGS_REG_DBGAUDIO15 0xDF
#define SETTINGS_REG_DBGAUDIO15_DEFAULT 0
/* Maximum UAC2.0 Feedback Value since last playback */
#define SETTINGS_REG_DBGAUDIO15_PLAYFBMAX_OFFS 0
#define SETTINGS_REG_DBGAUDIO15_PLAYFBMAX_MASK 0xFFFFFFFFUL
void Settings_Init();
uint8_t Settings_RegWrite(uint8_t address, const uint8_t * buffer, uint8_t bufsize);
uint8_t Settings_RegRead(uint8_t address, uint8_t * buffer, uint8_t bufsize);