Merge pull request #50 from UltimateHackingKeyboard/configuration-parser
Polish up the configuration parser
This commit is contained in:
@@ -8,27 +8,27 @@ uint8_t readUInt8(serialized_buffer_t *buffer) {
|
||||
}
|
||||
|
||||
uint16_t readUInt16(serialized_buffer_t *buffer) {
|
||||
uint8_t firstByte = buffer->buffer[buffer->offset++];
|
||||
return firstByte + (buffer->buffer[buffer->offset++] << 8);
|
||||
uint16_t uInt16 = *(uint16_t *)(buffer->buffer + buffer->offset);
|
||||
|
||||
buffer->offset += 2;
|
||||
return uInt16;
|
||||
}
|
||||
|
||||
bool readBool(serialized_buffer_t *buffer) {
|
||||
return buffer->buffer[buffer->offset++] == 1;
|
||||
return readUInt8(buffer);
|
||||
}
|
||||
|
||||
uint16_t readCompactLength(serialized_buffer_t *buffer) {
|
||||
uint16_t length = readUInt8(buffer);
|
||||
if (length == 0xFF) {
|
||||
length = readUInt16(buffer);
|
||||
}
|
||||
return length;
|
||||
uint16_t compactLength = readUInt8(buffer);
|
||||
|
||||
return compactLength == 0xFF ? readUInt16(buffer) : compactLength;
|
||||
}
|
||||
|
||||
const char *readString(serialized_buffer_t *buffer, uint16_t *len) {
|
||||
const char *str = (const char *)&(buffer->buffer[buffer->offset]);
|
||||
const char *string;
|
||||
|
||||
*len = readCompactLength(buffer);
|
||||
string = buffer->buffer + buffer->offset;
|
||||
buffer->offset += *len;
|
||||
|
||||
return str;
|
||||
return string;
|
||||
}
|
||||
|
||||
@@ -22,21 +22,21 @@ parser_error_t ParseConfig(serialized_buffer_t *buffer) {
|
||||
uint16_t keymapCount;
|
||||
|
||||
(void)dataModelVersion;
|
||||
for (uint8_t moduleConfigurationIdx = 0; moduleConfigurationIdx < moduleConfigurationCount; moduleConfigurationIdx++) {
|
||||
for (uint16_t moduleConfigurationIdx = 0; moduleConfigurationIdx < moduleConfigurationCount; moduleConfigurationIdx++) {
|
||||
errorCode = parseModuleConfiguration(buffer);
|
||||
if (errorCode != ParserError_Success) {
|
||||
return errorCode;
|
||||
}
|
||||
}
|
||||
macroCount = readCompactLength(buffer);
|
||||
for (uint8_t macroIdx = 0; macroIdx < macroCount; macroIdx++) {
|
||||
for (uint16_t macroIdx = 0; macroIdx < macroCount; macroIdx++) {
|
||||
// errorCode = ParseMacro(buffer);
|
||||
// if (errorCode != ParserError_Success) {
|
||||
// return errorCode;
|
||||
// }
|
||||
}
|
||||
keymapCount = readCompactLength(buffer);
|
||||
for (uint8_t keymapIdx = 0; keymapIdx < keymapCount; keymapIdx++) {
|
||||
for (uint16_t keymapIdx = 0; keymapIdx < keymapCount; keymapIdx++) {
|
||||
errorCode = ParseKeymap(buffer);
|
||||
if (errorCode != ParserError_Success) {
|
||||
return errorCode;
|
||||
|
||||
Reference in New Issue
Block a user