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) {
|
uint16_t readUInt16(serialized_buffer_t *buffer) {
|
||||||
uint8_t firstByte = buffer->buffer[buffer->offset++];
|
uint16_t uInt16 = *(uint16_t *)(buffer->buffer + buffer->offset);
|
||||||
return firstByte + (buffer->buffer[buffer->offset++] << 8);
|
|
||||||
|
buffer->offset += 2;
|
||||||
|
return uInt16;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool readBool(serialized_buffer_t *buffer) {
|
bool readBool(serialized_buffer_t *buffer) {
|
||||||
return buffer->buffer[buffer->offset++] == 1;
|
return readUInt8(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t readCompactLength(serialized_buffer_t *buffer) {
|
uint16_t readCompactLength(serialized_buffer_t *buffer) {
|
||||||
uint16_t length = readUInt8(buffer);
|
uint16_t compactLength = readUInt8(buffer);
|
||||||
if (length == 0xFF) {
|
|
||||||
length = readUInt16(buffer);
|
return compactLength == 0xFF ? readUInt16(buffer) : compactLength;
|
||||||
}
|
|
||||||
return length;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *readString(serialized_buffer_t *buffer, uint16_t *len) {
|
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);
|
*len = readCompactLength(buffer);
|
||||||
|
string = buffer->buffer + buffer->offset;
|
||||||
buffer->offset += *len;
|
buffer->offset += *len;
|
||||||
|
return string;
|
||||||
return str;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,21 +22,21 @@ parser_error_t ParseConfig(serialized_buffer_t *buffer) {
|
|||||||
uint16_t keymapCount;
|
uint16_t keymapCount;
|
||||||
|
|
||||||
(void)dataModelVersion;
|
(void)dataModelVersion;
|
||||||
for (uint8_t moduleConfigurationIdx = 0; moduleConfigurationIdx < moduleConfigurationCount; moduleConfigurationIdx++) {
|
for (uint16_t moduleConfigurationIdx = 0; moduleConfigurationIdx < moduleConfigurationCount; moduleConfigurationIdx++) {
|
||||||
errorCode = parseModuleConfiguration(buffer);
|
errorCode = parseModuleConfiguration(buffer);
|
||||||
if (errorCode != ParserError_Success) {
|
if (errorCode != ParserError_Success) {
|
||||||
return errorCode;
|
return errorCode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
macroCount = readCompactLength(buffer);
|
macroCount = readCompactLength(buffer);
|
||||||
for (uint8_t macroIdx = 0; macroIdx < macroCount; macroIdx++) {
|
for (uint16_t macroIdx = 0; macroIdx < macroCount; macroIdx++) {
|
||||||
// errorCode = ParseMacro(buffer);
|
// errorCode = ParseMacro(buffer);
|
||||||
// if (errorCode != ParserError_Success) {
|
// if (errorCode != ParserError_Success) {
|
||||||
// return errorCode;
|
// return errorCode;
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
keymapCount = readCompactLength(buffer);
|
keymapCount = readCompactLength(buffer);
|
||||||
for (uint8_t keymapIdx = 0; keymapIdx < keymapCount; keymapIdx++) {
|
for (uint16_t keymapIdx = 0; keymapIdx < keymapCount; keymapIdx++) {
|
||||||
errorCode = ParseKeymap(buffer);
|
errorCode = ParseKeymap(buffer);
|
||||||
if (errorCode != ParserError_Success) {
|
if (errorCode != ParserError_Success) {
|
||||||
return errorCode;
|
return errorCode;
|
||||||
|
|||||||
Reference in New Issue
Block a user