Skip to content

dxbsw/version_checker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Version Checker

这是一个用于 ESP-IDF 工程的版本号比较组件。

功能说明

  • 支持纯数字方式比较 3 位或 4 位版本号大小。
  • 支持纯数字方式判断 3 位或 4 位版本号是否完全相同。
  • 支持字符串方式比较 "1.5.23""2.0.32.105" 这类版本号大小。
  • 支持字符串方式判断版本号是否完全相同。

目录结构

version_checker/
├── include/
│   └── version_checker.h
├── src/
│   └── version_checker.c
├── CMakeLists.txt
├── idf_component.yml
└── README.md

对外接口

头文件:

#include "version_checker.h"

接口分类:

bool version_is_greater_parts(...);
bool version_is_equal_parts(...);
bool version_is_greater_string(const char *current_version, const char *compare_version);
bool version_is_equal_string(const char *current_version, const char *compare_version);

说明:

  • version_is_greater_parts(...) 支持 6 个参数和 8 个参数两种形式,分别对应 3 位版本号和 4 位版本号。
  • version_is_equal_parts(...) 支持 6 个参数和 8 个参数两种形式,分别对应 3 位版本号和 4 位版本号。
  • version_is_greater_string(...)version_is_equal_string(...) 要求两边的版本号位数一致。

使用示例

数字方式

bool result1 = version_is_greater_parts(1, 5, 26, 1, 5, 25);
bool result2 = version_is_greater_parts(2, 0, 32, 105, 2, 0, 32, 104);
bool result3 = version_is_equal_parts(1, 5, 23, 1, 5, 23);
bool result4 = version_is_equal_parts(2, 0, 32, 105, 2, 0, 32, 105);

字符串方式

bool result1 = version_is_greater_string("1.5.26", "1.5.25");
bool result2 = version_is_greater_string("2.0.32.105", "2.0.32.104");
bool result3 = version_is_equal_string("1.5.23", "1.5.23");
bool result4 = version_is_equal_string("2.0.32.105", "2.0.32.105");

main.c 测试示例

下面示例整理自 main/main.c 中的测试代码,可直接用于串口日志验证:

bool parts_greater_3_true = version_is_greater_parts(1, 5, 26, 1, 5, 25);
ESP_LOGI(TAG, "比较 1.5.26 是否大于 1.5.25: %s", parts_greater_3_true ? "true" : "false");
bool parts_greater_3_false = version_is_greater_parts(1, 5, 25, 1, 5, 26);
ESP_LOGI(TAG, "比较 1.5.25 是否大于 1.5.26: %s", parts_greater_3_false ? "true" : "false");

bool parts_greater_4_true = version_is_greater_parts(2, 0, 32, 105, 2, 0, 32, 104);
ESP_LOGI(TAG, "比较 2.0.32.105 是否大于 2.0.32.104: %s", parts_greater_4_true ? "true" : "false");
bool parts_greater_4_false = version_is_greater_parts(2, 0, 32, 104, 2, 0, 32, 105);
ESP_LOGI(TAG, "比较 2.0.32.104 是否大于 2.0.32.105: %s", parts_greater_4_false ? "true" : "false");

bool parts_equal_3_true = version_is_equal_parts(1, 5, 23, 1, 5, 23);
ESP_LOGI(TAG, "比较 1.5.23 是否等于 1.5.23: %s", parts_equal_3_true ? "true" : "false");
bool parts_equal_3_false = version_is_equal_parts(1, 5, 23, 1, 5, 24);
ESP_LOGI(TAG, "比较 1.5.23 是否等于 1.5.24: %s", parts_equal_3_false ? "true" : "false");

bool parts_equal_4_true = version_is_equal_parts(2, 0, 32, 105, 2, 0, 32, 105);
ESP_LOGI(TAG, "比较 2.0.32.105 是否等于 2.0.32.105: %s", parts_equal_4_true ? "true" : "false");
bool parts_equal_4_false = version_is_equal_parts(2, 0, 32, 105, 2, 0, 32, 106);
ESP_LOGI(TAG, "比较 2.0.32.105 是否等于 2.0.32.106: %s", parts_equal_4_false ? "true" : "false");

bool string_greater_3_true = version_is_greater_string("1.5.26", "1.5.25");
ESP_LOGI(TAG, "比较 \"1.5.26\" 是否大于 \"1.5.25\": %s", string_greater_3_true ? "true" : "false");
bool string_greater_3_false = version_is_greater_string("1.5.25", "1.5.26");
ESP_LOGI(TAG, "比较 \"1.5.25\" 是否大于 \"1.5.26\": %s", string_greater_3_false ? "true" : "false");

bool string_greater_4_true = version_is_greater_string("2.0.32.105", "2.0.32.104");
ESP_LOGI(TAG, "比较 \"2.0.32.105\" 是否大于 \"2.0.32.104\": %s", string_greater_4_true ? "true" : "false");
bool string_greater_4_false = version_is_greater_string("2.0.32.104", "2.0.32.105");
ESP_LOGI(TAG, "比较 \"2.0.32.104\" 是否大于 \"2.0.32.105\": %s", string_greater_4_false ? "true" : "false");

bool string_equal_3_true = version_is_equal_string("1.5.23", "1.5.23");
ESP_LOGI(TAG, "比较 \"1.5.23\" 是否等于 \"1.5.23\": %s", string_equal_3_true ? "true" : "false");
bool string_equal_3_false = version_is_equal_string("1.5.23", "1.5.24");
ESP_LOGI(TAG, "比较 \"1.5.23\" 是否等于 \"1.5.24\": %s", string_equal_3_false ? "true" : "false");

bool string_equal_4_true = version_is_equal_string("2.0.32.105", "2.0.32.105");
ESP_LOGI(TAG, "比较 \"2.0.32.105\" 是否等于 \"2.0.32.105\": %s", string_equal_4_true ? "true" : "false");
bool string_equal_4_false = version_is_equal_string("2.0.32.105", "2.0.32.106");
ESP_LOGI(TAG, "比较 \"2.0.32.105\" 是否等于 \"2.0.32.106\": %s", string_equal_4_false ? "true" : "false");

About

version comparison component

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors