diff --git a/firmware/application/src/rfid/nfctag/tag_emulation.h b/firmware/application/src/rfid/nfctag/tag_emulation.h index 1be4573..789424f 100644 --- a/firmware/application/src/rfid/nfctag/tag_emulation.h +++ b/firmware/application/src/rfid/nfctag/tag_emulation.h @@ -5,12 +5,11 @@ #include #include +#include "utils.h" #include "tag_base_type.h" // 最多八张卡槽 #define TAG_MAX_SLOT_NUM 8 -// u32 size align. -#define ALIGN_U32 __attribute__((aligned(4))) extern bool g_is_tag_emulating; diff --git a/firmware/application/src/settings.c b/firmware/application/src/settings.c index 52db9bf..73cd281 100644 --- a/firmware/application/src/settings.c +++ b/firmware/application/src/settings.c @@ -53,11 +53,10 @@ uint8_t settings_save_config(void) uint8_t settings_get_animation_config() { - return config & 0x3; + return config.animation_config; } void settings_set_animation_config(uint8_t value) { - config &= ~(0x3); - config |= value; + config.animation_config = value; } diff --git a/firmware/application/src/settings.h b/firmware/application/src/settings.h index a42baa3..b0dcadd 100644 --- a/firmware/application/src/settings.h +++ b/firmware/application/src/settings.h @@ -3,15 +3,17 @@ #include +#include "utils.h" + #define SETTINGS_ANIMATION_FULL 0 #define SETTINGS_ANIMATION_MINIMAL 1 #define SETTINGS_ANIMATION_NONE 2 -/* - * bits [0-1]: animation config - * bits [2-31]: reserved - */ -typedef uint32_t settings_data_t; + +typedef struct ALIGN_U32 { + uint16_t version; + uint16_t animation_config : 2; +} settings_data_t; void settings_load_config(void); uint8_t settings_save_config(void); diff --git a/firmware/common/utils.h b/firmware/common/utils.h new file mode 100644 index 0000000..00ecf46 --- /dev/null +++ b/firmware/common/utils.h @@ -0,0 +1,7 @@ +#ifndef UTILS_H_ +#define UTILS_H_ + +// u32 size align. +#define ALIGN_U32 __attribute__((aligned(4))) + +#endif \ No newline at end of file