Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d093c84fb4 | ||
|
|
95d7197394 | ||
|
|
989774ced9 | ||
|
|
0e29276a56 | ||
|
|
5b90d78518 | ||
|
|
d2eb4b43c7 | ||
|
|
a545324693 | ||
|
|
27b02c32b5 | ||
|
|
01e92e57f4 | ||
|
|
51b2631012 | ||
|
|
66c877f7bd |
16
CHANGELOG.md
16
CHANGELOG.md
@@ -5,6 +5,22 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is loosely based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
The format is loosely based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
||||||
and this project adheres to the [UHK Versioning](VERSIONING.md) conventions.
|
and this project adheres to the [UHK Versioning](VERSIONING.md) conventions.
|
||||||
|
|
||||||
|
## [8.2.4] - 2018-05-21
|
||||||
|
|
||||||
|
Device Protocol: 4.3.**1** | Module Protocol: 4.0.0 | User Config: 4.0.1 | Hardware Config: 1.0.0
|
||||||
|
|
||||||
|
- Fix the bug that made the hardware and user configuration not load from the EEPROM on some hosts right after firmware update.
|
||||||
|
- Set the signature of the hardware config to "FTY" in the RAM when the keyboard is in factory reset mode, allowing Agent to be aware of the factory reset state. `DEVICEPROTOCOL:PATCH`
|
||||||
|
- Load the hardware and user configuration from the EEPROM even in factory reset mode.
|
||||||
|
- Set key debounce timeout from 60ms to 80ms. This should further reduce key chattering.
|
||||||
|
|
||||||
|
## [8.2.3] - 2018-05-15
|
||||||
|
|
||||||
|
Device Protocol: 4.3.0 | Module Protocol: 4.0.0 | User Config: 4.0.1 | Hardware Config: 1.0.0
|
||||||
|
|
||||||
|
- Don't switch keymaps instead of playing macros.
|
||||||
|
- Make saving the user configuration faster by only writing the part of the EEPROM which actually contains the user configuration.
|
||||||
|
|
||||||
## [8.2.2] - 2018-05-09
|
## [8.2.2] - 2018-05-09
|
||||||
|
|
||||||
Device Protocol: 4.3.0 | Module Protocol: 4.0.0 | User Config: 4.0.**1** | Hardware Config: 1.0.0
|
Device Protocol: 4.3.0 | Module Protocol: 4.0.0 | User Config: 4.0.**1** | Hardware Config: 1.0.0
|
||||||
|
|||||||
Submodule lib/agent updated: 88c16af4a9...ab8ae31324
@@ -6,10 +6,13 @@ static uint8_t hardwareConfig[HARDWARE_CONFIG_SIZE];
|
|||||||
static uint8_t ATTR_DATA2 stagingUserConfig[USER_CONFIG_SIZE];
|
static uint8_t ATTR_DATA2 stagingUserConfig[USER_CONFIG_SIZE];
|
||||||
static uint8_t validatedUserConfig[USER_CONFIG_SIZE];
|
static uint8_t validatedUserConfig[USER_CONFIG_SIZE];
|
||||||
|
|
||||||
|
uint16_t ValidatedUserConfigLength;
|
||||||
config_buffer_t HardwareConfigBuffer = { hardwareConfig };
|
config_buffer_t HardwareConfigBuffer = { hardwareConfig };
|
||||||
config_buffer_t StagingUserConfigBuffer = { stagingUserConfig };
|
config_buffer_t StagingUserConfigBuffer = { stagingUserConfig };
|
||||||
config_buffer_t ValidatedUserConfigBuffer = { validatedUserConfig };
|
config_buffer_t ValidatedUserConfigBuffer = { validatedUserConfig };
|
||||||
|
|
||||||
|
hardware_config_t *HardwareConfig = (hardware_config_t*)hardwareConfig;
|
||||||
|
|
||||||
bool ParserRunDry;
|
bool ParserRunDry;
|
||||||
|
|
||||||
bool IsConfigBufferIdValid(config_buffer_id_t configBufferId)
|
bool IsConfigBufferIdValid(config_buffer_id_t configBufferId)
|
||||||
|
|||||||
@@ -6,6 +6,10 @@
|
|||||||
#include "fsl_common.h"
|
#include "fsl_common.h"
|
||||||
#include "basic_types.h"
|
#include "basic_types.h"
|
||||||
|
|
||||||
|
// Macros:
|
||||||
|
|
||||||
|
#define HARDWARE_CONFIG_SIGNATURE_LENGTH 3
|
||||||
|
|
||||||
// Typedefs:
|
// Typedefs:
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
@@ -14,14 +18,29 @@
|
|||||||
ConfigBufferId_ValidatedUserConfig,
|
ConfigBufferId_ValidatedUserConfig,
|
||||||
} config_buffer_id_t;
|
} config_buffer_id_t;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint8_t signatureLength;
|
||||||
|
char signature[HARDWARE_CONFIG_SIGNATURE_LENGTH];
|
||||||
|
uint8_t majorVersion;
|
||||||
|
uint8_t minorVersion;
|
||||||
|
uint8_t patchVersion;
|
||||||
|
uint8_t brandId;
|
||||||
|
uint8_t deviceId;
|
||||||
|
uint32_t uniqueId;
|
||||||
|
bool isVendorModeOn;
|
||||||
|
bool isIso;
|
||||||
|
} hardware_config_t;
|
||||||
|
|
||||||
// Variables:
|
// Variables:
|
||||||
|
|
||||||
extern bool ParserRunDry;
|
extern bool ParserRunDry;
|
||||||
|
extern uint16_t ValidatedUserConfigLength;
|
||||||
extern config_buffer_t HardwareConfigBuffer;
|
extern config_buffer_t HardwareConfigBuffer;
|
||||||
extern config_buffer_t StagingUserConfigBuffer;
|
extern config_buffer_t StagingUserConfigBuffer;
|
||||||
extern config_buffer_t ValidatedUserConfigBuffer;
|
extern config_buffer_t ValidatedUserConfigBuffer;
|
||||||
|
extern hardware_config_t *HardwareConfig;
|
||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
bool IsConfigBufferIdValid(config_buffer_id_t configBufferId);
|
bool IsConfigBufferIdValid(config_buffer_id_t configBufferId);
|
||||||
config_buffer_t* ConfigBufferIdToConfigBuffer(config_buffer_id_t configBufferId);
|
config_buffer_t* ConfigBufferIdToConfigBuffer(config_buffer_id_t configBufferId);
|
||||||
|
|||||||
@@ -51,7 +51,6 @@ parser_error_t ParseConfig(config_buffer_t *buffer)
|
|||||||
const char *deviceName = ReadString(buffer, &len);
|
const char *deviceName = ReadString(buffer, &len);
|
||||||
uint16_t doubleTapSwitchLayerTimeout = ReadUInt16(buffer);
|
uint16_t doubleTapSwitchLayerTimeout = ReadUInt16(buffer);
|
||||||
|
|
||||||
(void)userConfigLength;
|
|
||||||
(void)dataModelMajorVersion;
|
(void)dataModelMajorVersion;
|
||||||
(void)dataModelMinorVersion;
|
(void)dataModelMinorVersion;
|
||||||
(void)dataModelPatchVersion;
|
(void)dataModelPatchVersion;
|
||||||
@@ -141,6 +140,8 @@ parser_error_t ParseConfig(config_buffer_t *buffer)
|
|||||||
|
|
||||||
// Update LED brightnesses and reinitialize LED drivers
|
// Update LED brightnesses and reinitialize LED drivers
|
||||||
|
|
||||||
|
ValidatedUserConfigLength = userConfigLength;
|
||||||
|
|
||||||
IconsAndLayerTextsBrightness = iconsAndLayerTextsBrightness;
|
IconsAndLayerTextsBrightness = iconsAndLayerTextsBrightness;
|
||||||
AlphanumericSegmentsBrightness = alphanumericSegmentsBrightness;
|
AlphanumericSegmentsBrightness = alphanumericSegmentsBrightness;
|
||||||
KeyBacklightBrightness = keyBacklightBrightness;
|
KeyBacklightBrightness = keyBacklightBrightness;
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ static parser_error_t parsePlayMacroAction(key_action_t *keyAction, config_buffe
|
|||||||
if (macroIndex >= tempMacroCount) {
|
if (macroIndex >= tempMacroCount) {
|
||||||
return ParserError_InvalidSerializedPlayMacroAction;
|
return ParserError_InvalidSerializedPlayMacroAction;
|
||||||
}
|
}
|
||||||
keyAction->type = KeyActionType_SwitchKeymap;
|
keyAction->type = KeyActionType_PlayMacro;
|
||||||
keyAction->playMacro.macroId = macroIndex;
|
keyAction->playMacro.macroId = macroIndex;
|
||||||
return ParserError_Success;
|
return ParserError_Success;
|
||||||
}
|
}
|
||||||
@@ -196,4 +196,3 @@ parser_error_t ParseKeymap(config_buffer_t *buffer, uint8_t keymapIdx, uint8_t k
|
|||||||
}
|
}
|
||||||
return ParserError_Success;
|
return ParserError_Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -94,14 +94,14 @@ void EEPROM_Init(void)
|
|||||||
I2C_MasterTransferCreateHandle(I2C_EEPROM_BUS_BASEADDR, &i2cHandle, i2cCallback, NULL);
|
I2C_MasterTransferCreateHandle(I2C_EEPROM_BUS_BASEADDR, &i2cHandle, i2cCallback, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t EEPROM_LaunchTransfer(eeprom_operation_t operation, config_buffer_id_t config_buffer_id, void (*successCallback))
|
status_t EEPROM_LaunchTransfer(eeprom_operation_t operation, config_buffer_id_t configBufferId, void (*successCallback))
|
||||||
{
|
{
|
||||||
if (IsEepromBusy) {
|
if (IsEepromBusy) {
|
||||||
return kStatus_I2C_Busy;
|
return kStatus_I2C_Busy;
|
||||||
}
|
}
|
||||||
|
|
||||||
CurrentEepromOperation = operation;
|
CurrentEepromOperation = operation;
|
||||||
CurrentConfigBufferId = config_buffer_id;
|
CurrentConfigBufferId = configBufferId;
|
||||||
SuccessCallback = successCallback;
|
SuccessCallback = successCallback;
|
||||||
|
|
||||||
bool isHardwareConfig = CurrentConfigBufferId == ConfigBufferId_HardwareConfig;
|
bool isHardwareConfig = CurrentConfigBufferId == ConfigBufferId_HardwareConfig;
|
||||||
@@ -117,7 +117,8 @@ status_t EEPROM_LaunchTransfer(eeprom_operation_t operation, config_buffer_id_t
|
|||||||
case EepromOperation_Write:
|
case EepromOperation_Write:
|
||||||
sourceBuffer = ConfigBufferIdToConfigBuffer(CurrentConfigBufferId)->buffer;
|
sourceBuffer = ConfigBufferIdToConfigBuffer(CurrentConfigBufferId)->buffer;
|
||||||
sourceOffset = 0;
|
sourceOffset = 0;
|
||||||
sourceLength = isHardwareConfig ? HARDWARE_CONFIG_SIZE : USER_CONFIG_SIZE;
|
uint16_t userConfigSize = ValidatedUserConfigLength && configBufferId == ConfigBufferId_ValidatedUserConfig ? ValidatedUserConfigLength : USER_CONFIG_SIZE;
|
||||||
|
sourceLength = isHardwareConfig ? HARDWARE_CONFIG_SIZE : userConfigSize;
|
||||||
LastEepromTransferStatus = writePage();
|
LastEepromTransferStatus = writePage();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,10 +33,10 @@ static void initInterruptPriorities(void)
|
|||||||
{
|
{
|
||||||
NVIC_SetPriority(PIT_I2C_WATCHDOG_IRQ_ID, 1);
|
NVIC_SetPriority(PIT_I2C_WATCHDOG_IRQ_ID, 1);
|
||||||
NVIC_SetPriority(PIT_TIMER_IRQ_ID, 2);
|
NVIC_SetPriority(PIT_TIMER_IRQ_ID, 2);
|
||||||
|
NVIC_SetPriority(I2C_EEPROM_BUS_IRQ_ID, 2);
|
||||||
NVIC_SetPriority(PIT_KEY_SCANNER_IRQ_ID, 3);
|
NVIC_SetPriority(PIT_KEY_SCANNER_IRQ_ID, 3);
|
||||||
NVIC_SetPriority(PIT_KEY_DEBOUNCER_IRQ_ID, 3);
|
NVIC_SetPriority(PIT_KEY_DEBOUNCER_IRQ_ID, 3);
|
||||||
NVIC_SetPriority(I2C_MAIN_BUS_IRQ_ID, 3);
|
NVIC_SetPriority(I2C_MAIN_BUS_IRQ_ID, 3);
|
||||||
NVIC_SetPriority(I2C_EEPROM_BUS_IRQ_ID, 3);
|
|
||||||
NVIC_SetPriority(USB_IRQ_ID, 3);
|
NVIC_SetPriority(USB_IRQ_ID, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
KeyActionType_SwitchLayer,
|
KeyActionType_SwitchLayer,
|
||||||
KeyActionType_SwitchKeymap,
|
KeyActionType_SwitchKeymap,
|
||||||
KeyActionType_PlayMacro,
|
KeyActionType_PlayMacro,
|
||||||
KeyActionType_Test,
|
|
||||||
} key_action_type_t;
|
} key_action_type_t;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
// Macros:
|
// Macros:
|
||||||
|
|
||||||
#define KEY_DEBOUNCER_INTERVAL_MSEC 1
|
#define KEY_DEBOUNCER_INTERVAL_MSEC 1
|
||||||
#define KEY_DEBOUNCER_TIMEOUT_MSEC 60
|
#define KEY_DEBOUNCER_TIMEOUT_MSEC 80
|
||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
uint8_t IconsAndLayerTextsBrightness = 0xff;
|
uint8_t IconsAndLayerTextsBrightness = 0xff;
|
||||||
uint8_t AlphanumericSegmentsBrightness = 0xff;
|
uint8_t AlphanumericSegmentsBrightness = 0xff;
|
||||||
bool ledIconStates[LedDisplayIcon_Last];
|
bool ledIconStates[LedDisplayIcon_Last];
|
||||||
|
char LedDisplay_DebugString[] = " ";
|
||||||
|
|
||||||
static const uint16_t capitalLetterToSegmentMap[] = {
|
static const uint16_t capitalLetterToSegmentMap[] = {
|
||||||
0b0000000011110111,
|
0b0000000011110111,
|
||||||
@@ -116,8 +117,12 @@ void LedDisplay_UpdateIcons(void)
|
|||||||
|
|
||||||
void LedDisplay_UpdateText(void)
|
void LedDisplay_UpdateText(void)
|
||||||
{
|
{
|
||||||
|
#if LED_DISPLAY_DEBUG_MODE == 0
|
||||||
keymap_reference_t *currentKeymap = AllKeymaps + CurrentKeymapIndex;
|
keymap_reference_t *currentKeymap = AllKeymaps + CurrentKeymapIndex;
|
||||||
LedDisplay_SetText(currentKeymap->abbreviationLen, currentKeymap->abbreviation);
|
LedDisplay_SetText(currentKeymap->abbreviationLen, currentKeymap->abbreviation);
|
||||||
|
#else
|
||||||
|
LedDisplay_SetText(strlen(LedDisplay_DebugString), LedDisplay_DebugString);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void LedDisplay_UpdateAll(void)
|
void LedDisplay_UpdateAll(void)
|
||||||
|
|||||||
@@ -7,6 +7,10 @@
|
|||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include "layer.h"
|
#include "layer.h"
|
||||||
|
|
||||||
|
// Macros:
|
||||||
|
|
||||||
|
#define LED_DISPLAY_DEBUG_MODE 0
|
||||||
|
|
||||||
// Typedefs:
|
// Typedefs:
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
@@ -20,6 +24,7 @@
|
|||||||
|
|
||||||
extern uint8_t IconsAndLayerTextsBrightness;
|
extern uint8_t IconsAndLayerTextsBrightness;
|
||||||
extern uint8_t AlphanumericSegmentsBrightness;
|
extern uint8_t AlphanumericSegmentsBrightness;
|
||||||
|
extern char LedDisplay_DebugString[];
|
||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
#include "key_scanner.h"
|
#include "key_scanner.h"
|
||||||
#include "usb_commands/usb_command_apply_config.h"
|
#include "usb_commands/usb_command_apply_config.h"
|
||||||
#include "peripherals/reset_button.h"
|
#include "peripherals/reset_button.h"
|
||||||
|
#include "config_parser/config_globals.h"
|
||||||
#include "usb_report_updater.h"
|
#include "usb_report_updater.h"
|
||||||
|
|
||||||
static bool IsEepromInitialized = false;
|
static bool IsEepromInitialized = false;
|
||||||
@@ -21,6 +22,10 @@ static void userConfigurationReadFinished(void)
|
|||||||
|
|
||||||
static void hardwareConfigurationReadFinished(void)
|
static void hardwareConfigurationReadFinished(void)
|
||||||
{
|
{
|
||||||
|
if (IsFactoryResetModeEnabled) {
|
||||||
|
HardwareConfig->signatureLength = HARDWARE_CONFIG_SIGNATURE_LENGTH;
|
||||||
|
strncpy(HardwareConfig->signature, "FTY", HARDWARE_CONFIG_SIGNATURE_LENGTH);
|
||||||
|
}
|
||||||
EEPROM_LaunchTransfer(EepromOperation_Read, ConfigBufferId_StagingUserConfig, userConfigurationReadFinished);
|
EEPROM_LaunchTransfer(EepromOperation_Read, ConfigBufferId_StagingUserConfig, userConfigurationReadFinished);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -29,9 +34,9 @@ int main(void)
|
|||||||
InitClock();
|
InitClock();
|
||||||
InitPeripherals();
|
InitPeripherals();
|
||||||
|
|
||||||
if (!RESET_BUTTON_IS_PRESSED) {
|
IsFactoryResetModeEnabled = RESET_BUTTON_IS_PRESSED;
|
||||||
EEPROM_LaunchTransfer(EepromOperation_Read, ConfigBufferId_HardwareConfig, hardwareConfigurationReadFinished);
|
|
||||||
}
|
EEPROM_LaunchTransfer(EepromOperation_Read, ConfigBufferId_HardwareConfig, hardwareConfigurationReadFinished);
|
||||||
|
|
||||||
if (IsBusPalOn) {
|
if (IsBusPalOn) {
|
||||||
init_hardware();
|
init_hardware();
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
#include "fsl_port.h"
|
#include "fsl_port.h"
|
||||||
#include "bootloader/wormhole.h"
|
#include "bootloader/wormhole.h"
|
||||||
|
|
||||||
|
bool IsFactoryResetModeEnabled = false;
|
||||||
|
|
||||||
void RESET_BUTTON_IRQ_HANDLER(void)
|
void RESET_BUTTON_IRQ_HANDLER(void)
|
||||||
{
|
{
|
||||||
Wormhole.magicNumber = WORMHOLE_MAGIC_NUMBER;
|
Wormhole.magicNumber = WORMHOLE_MAGIC_NUMBER;
|
||||||
|
|||||||
@@ -16,6 +16,10 @@
|
|||||||
|
|
||||||
#define RESET_BUTTON_IS_PRESSED !GPIO_ReadPinInput(RESET_BUTTON_GPIO, RESET_BUTTON_PIN)
|
#define RESET_BUTTON_IS_PRESSED !GPIO_ReadPinInput(RESET_BUTTON_GPIO, RESET_BUTTON_PIN)
|
||||||
|
|
||||||
|
// Variables:
|
||||||
|
|
||||||
|
extern bool IsFactoryResetModeEnabled;
|
||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
void InitResetButton(void);
|
void InitResetButton(void);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#include "usb_commands/usb_command_apply_config.h"
|
#include "usb_commands/usb_command_apply_config.h"
|
||||||
#include "config_parser/config_globals.h"
|
#include "config_parser/config_globals.h"
|
||||||
#include "config_parser/parse_config.h"
|
#include "config_parser/parse_config.h"
|
||||||
|
#include "peripherals/reset_button.h"
|
||||||
#include "usb_protocol_handler.h"
|
#include "usb_protocol_handler.h"
|
||||||
#include "keymap.h"
|
#include "keymap.h"
|
||||||
|
|
||||||
@@ -35,6 +36,10 @@ void UsbCommand_ApplyConfig(void)
|
|||||||
ValidatedUserConfigBuffer.buffer = StagingUserConfigBuffer.buffer;
|
ValidatedUserConfigBuffer.buffer = StagingUserConfigBuffer.buffer;
|
||||||
StagingUserConfigBuffer.buffer = temp;
|
StagingUserConfigBuffer.buffer = temp;
|
||||||
|
|
||||||
|
if (IsFactoryResetModeEnabled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ParserRunDry = false;
|
ParserRunDry = false;
|
||||||
ValidatedUserConfigBuffer.offset = 0;
|
ValidatedUserConfigBuffer.offset = 0;
|
||||||
parseConfigStatus = ParseConfig(&ValidatedUserConfigBuffer);
|
parseConfigStatus = ParseConfig(&ValidatedUserConfigBuffer);
|
||||||
|
|||||||
@@ -15,10 +15,10 @@
|
|||||||
"commander": "^2.11.0",
|
"commander": "^2.11.0",
|
||||||
"shelljs": "^0.7.8"
|
"shelljs": "^0.7.8"
|
||||||
},
|
},
|
||||||
"firmwareVersion": "8.2.2",
|
"firmwareVersion": "8.2.4",
|
||||||
"deviceProtocolVersion": "4.3.0",
|
"deviceProtocolVersion": "4.3.1",
|
||||||
"moduleProtocolVersion": "4.0.0",
|
"moduleProtocolVersion": "4.0.0",
|
||||||
"userConfigVersion": "4.0.0",
|
"userConfigVersion": "4.0.1",
|
||||||
"hardwareConfigVersion": "1.0.0",
|
"hardwareConfigVersion": "1.0.0",
|
||||||
"devices": [
|
"devices": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -20,11 +20,11 @@
|
|||||||
|
|
||||||
#define FIRMWARE_MAJOR_VERSION 8
|
#define FIRMWARE_MAJOR_VERSION 8
|
||||||
#define FIRMWARE_MINOR_VERSION 2
|
#define FIRMWARE_MINOR_VERSION 2
|
||||||
#define FIRMWARE_PATCH_VERSION 2
|
#define FIRMWARE_PATCH_VERSION 4
|
||||||
|
|
||||||
#define DEVICE_PROTOCOL_MAJOR_VERSION 4
|
#define DEVICE_PROTOCOL_MAJOR_VERSION 4
|
||||||
#define DEVICE_PROTOCOL_MINOR_VERSION 3
|
#define DEVICE_PROTOCOL_MINOR_VERSION 3
|
||||||
#define DEVICE_PROTOCOL_PATCH_VERSION 0
|
#define DEVICE_PROTOCOL_PATCH_VERSION 1
|
||||||
|
|
||||||
#define MODULE_PROTOCOL_MAJOR_VERSION 4
|
#define MODULE_PROTOCOL_MAJOR_VERSION 4
|
||||||
#define MODULE_PROTOCOL_MINOR_VERSION 0
|
#define MODULE_PROTOCOL_MINOR_VERSION 0
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
#define USER_CONFIG_MAJOR_VERSION 4
|
#define USER_CONFIG_MAJOR_VERSION 4
|
||||||
#define USER_CONFIG_MINOR_VERSION 0
|
#define USER_CONFIG_MINOR_VERSION 0
|
||||||
#define USER_CONFIG_PATCH_VERSION 0
|
#define USER_CONFIG_PATCH_VERSION 1
|
||||||
|
|
||||||
#define HARDWARE_CONFIG_MAJOR_VERSION 1
|
#define HARDWARE_CONFIG_MAJOR_VERSION 1
|
||||||
#define HARDWARE_CONFIG_MINOR_VERSION 0
|
#define HARDWARE_CONFIG_MINOR_VERSION 0
|
||||||
|
|||||||
Reference in New Issue
Block a user