mirror of
https://github.com/portapack-mayhem/mayhem-firmware.git
synced 2025-08-13 22:57:41 +00:00
Enhanced Debug -> Peripherals app to allow direct register modification (#1584)
* Add files via upload * Add files via upload * Add files via upload * Add files via upload * Clang * Clang * Tweak position of field on screen * Reverted text on Write button per reviewer feedback
This commit is contained in:
@@ -862,6 +862,10 @@ class AK4951 : public audio::Codec {
|
||||
return read(reg_address);
|
||||
}
|
||||
|
||||
void reg_write(const size_t reg_address, const uint32_t value) override {
|
||||
write(reg_address, value);
|
||||
}
|
||||
|
||||
private:
|
||||
I2C& bus;
|
||||
const I2C::address_t bus_address;
|
||||
|
@@ -345,6 +345,19 @@ struct backup_ram_t {
|
||||
check_value = compute_check_value();
|
||||
copy(*this, dst);
|
||||
}
|
||||
|
||||
/* Access functions for DebugPmemView */
|
||||
uint32_t pmem_data_word(uint32_t index) {
|
||||
return (index > sizeof(regfile) / sizeof(uint32_t)) ? 0xFFFFFFFF : regfile[index];
|
||||
}
|
||||
|
||||
uint32_t pmem_stored_checksum(void) {
|
||||
return check_value;
|
||||
}
|
||||
|
||||
uint32_t pmem_calculated_checksum(void) {
|
||||
return compute_check_value();
|
||||
}
|
||||
};
|
||||
|
||||
static_assert(sizeof(backup_ram_t) == memory::map::backup_ram.size());
|
||||
@@ -413,6 +426,18 @@ void persist() {
|
||||
|
||||
} /* namespace cache */
|
||||
|
||||
uint32_t pmem_data_word(uint32_t index) {
|
||||
return backup_ram->pmem_data_word(index);
|
||||
}
|
||||
|
||||
uint32_t pmem_stored_checksum(void) {
|
||||
return backup_ram->pmem_stored_checksum();
|
||||
}
|
||||
|
||||
uint32_t pmem_calculated_checksum(void) {
|
||||
return backup_ram->pmem_calculated_checksum();
|
||||
}
|
||||
|
||||
rf::Frequency target_frequency() {
|
||||
rf::tuning_range.reset_if_outside(data->target_frequency, target_frequency_reset_value);
|
||||
return data->target_frequency;
|
||||
|
@@ -281,6 +281,10 @@ bool should_use_sdcard_for_pmem();
|
||||
int save_persistent_settings_to_file();
|
||||
int load_persistent_settings_from_file();
|
||||
|
||||
uint32_t pmem_data_word(uint32_t index);
|
||||
uint32_t pmem_stored_checksum(void);
|
||||
uint32_t pmem_calculated_checksum(void);
|
||||
|
||||
size_t data_size();
|
||||
|
||||
bool debug_dump();
|
||||
|
@@ -116,6 +116,8 @@ bool WM8731::write(const Register reg) {
|
||||
}
|
||||
|
||||
bool WM8731::write(const address_t reg_address, const reg_t value) {
|
||||
map.w[reg_address] = value; // Save data written in case this fn is called from Debug->Peripherals app
|
||||
|
||||
const uint16_t word = (reg_address << 9) | value;
|
||||
const std::array<uint8_t, 2> values{
|
||||
static_cast<uint8_t>(word >> 8),
|
||||
@@ -124,10 +126,15 @@ bool WM8731::write(const address_t reg_address, const reg_t value) {
|
||||
return bus.transmit(bus_address, values.data(), values.size());
|
||||
}
|
||||
|
||||
/* WM8731 is a write-only device; the read function only returns the value we last wrote */
|
||||
uint32_t WM8731::reg_read(const size_t reg_address) {
|
||||
return map.w[reg_address];
|
||||
}
|
||||
|
||||
void WM8731::reg_write(const size_t reg_address, uint32_t value) {
|
||||
write(reg_address, value);
|
||||
}
|
||||
|
||||
void WM8731::write(const LeftLineIn value) {
|
||||
map.r.left_line_in = value;
|
||||
write(Register::LeftLineIn);
|
||||
|
@@ -405,6 +405,7 @@ class WM8731 : public audio::Codec {
|
||||
}
|
||||
|
||||
uint32_t reg_read(const size_t reg_address) override;
|
||||
void reg_write(const size_t reg_address, uint32_t value) override;
|
||||
|
||||
private:
|
||||
I2C& bus;
|
||||
|
Reference in New Issue
Block a user