diff --git a/right/src/config/config_state.c b/right/src/config/config_state.c index 9ceb7f4..458d676 100644 --- a/right/src/config/config_state.c +++ b/right/src/config/config_state.c @@ -1,6 +1,7 @@ #include "config_state.h" -uint8_t ConfigBuffer[EEPROM_SIZE]; +static uint8_t config[EEPROM_SIZE]; +serialized_buffer_t ConfigBuffer = { config }; uint8_t readUInt8(serialized_buffer_t *buffer) { return buffer->buffer[buffer->offset++]; diff --git a/right/src/config/config_state.h b/right/src/config/config_state.h index 2541363..84065d0 100644 --- a/right/src/config/config_state.h +++ b/right/src/config/config_state.h @@ -12,7 +12,7 @@ // Typedefs: typedef struct { - uint8_t *buffer; + uint8_t *const buffer; uint16_t offset; } serialized_buffer_t; @@ -28,7 +28,7 @@ // Variables: - extern uint8_t ConfigBuffer[EEPROM_SIZE]; + extern serialized_buffer_t ConfigBuffer; // Functions: diff --git a/right/src/usb_protocol_handler.c b/right/src/usb_protocol_handler.c index 8b5f391..a021999 100644 --- a/right/src/usb_protocol_handler.c +++ b/right/src/usb_protocol_handler.c @@ -188,16 +188,15 @@ void uploadConfig() return; } - memcpy(ConfigBuffer+memoryOffset, GenericHidInBuffer+4, byteCount); + memcpy(ConfigBuffer.buffer+memoryOffset, GenericHidInBuffer+4, byteCount); } void applyConfig() { - serialized_buffer_t buffer = { ConfigBuffer, 0 }; - - GenericHidOutBuffer[0] = ParseKeymap(&buffer); - GenericHidOutBuffer[1] = buffer.offset; - GenericHidOutBuffer[2] = buffer.offset >> 8; + ConfigBuffer.offset = 0; + GenericHidOutBuffer[0] = ParseKeymap(&ConfigBuffer); + GenericHidOutBuffer[1] = ConfigBuffer.offset; + GenericHidOutBuffer[2] = ConfigBuffer.offset >> 8; } void setLedPwm()