Merge pull request #50 from UltimateHackingKeyboard/configuration-parser

Polish up the configuration parser
This commit is contained in:
László Monda
2017-07-14 22:34:51 +02:00
committed by GitHub
2 changed files with 14 additions and 14 deletions

View File

@@ -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;
} }

View File

@@ -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;