| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- #include "user_config.h"
- user_config_param_s user_config_param = USER_CONFIG_STAT_DEFAULT_CONFIG;
- /*******************************************************************************
- * @函数名称 set_user_config_param_init
- * @函数说明 解析注册指纹采集图像
- * @输入参数 param:参数
- * @输出参数 无
- * @返回参数 无
- *******************************************************************************/
- void set_user_config_param_init(user_config_param_s *param)
- {
- memset(param,0,sizeof(user_config_param_s));
- param->head = HEAD_VALUE;
- param->can_baud = CAN_BAUD_1000;
- param->npn_in_param.left_elect_level = 0;
- param->npn_in_param.right_elect_level = 0;
- memset(param->rs485_param.rs485_func, 0, EXT_FUNC_COUNT);
- memset(param->i2c_param.i2c_func, 0, EXT_FUNC_COUNT);
- param->left_ws2812b_count = WS2812B_DEFAULT_COUNT;
- param->right_ws2812b_count = WS2812B_DEFAULT_COUNT;
- param->elect_param.elect_on_timne[LEFT_IDX] = ELECT_TIME_DEFAULT;
- param->elect_param.elect_on_timne[RIGHT_IDX] = ELECT_TIME_DEFAULT;
- }
- /*******************************************************************************
- * @函数名称 check_can_baud
- * @函数说明 检查CAN波特率
- * @输入参数 baud:波特率
- * @输出参数 无
- * @返回参数 无
- *******************************************************************************/
- bool check_can_baud(uint32_t baud)
- {
- switch(baud)
- {
- case CAN_BAUD_100:
- case CAN_BAUD_150:
- case CAN_BAUD_200:
- case CAN_BAUD_250:
- case CAN_BAUD_300:
- case CAN_BAUD_400:
- case CAN_BAUD_500:
- case CAN_BAUD_666:
- case CAN_BAUD_800:
- case CAN_BAUD_1000:return true;
- default:return false;
- }
- }
- /*******************************************************************************
- * @函数名称 FLASH_read
- * @函数说明 读取flash
- * @输入参数 addr:地址
- pData:数据指针
- len:数据长度
- * @输出参数 无
- * @返回参数 无
- *******************************************************************************/
- void FLASH_read(uint32_t addr, uint8_t *pData, uint32_t len)
- {
- uint32_t i;
- for(i=0;i<len;i++)
- {
- *pData++ = *(uint8_t*)addr++;
- }
- }
- /*******************************************************************************
- * @函数名称 check_read_config_param
- * @函数说明 比较读到的参数
- * @输入参数 param:参数
- * @输出参数 无
- * @返回参数 比较结果
- *******************************************************************************/
- static bool check_read_config_param(user_config_param_s *param)
- {
- if(param->head != HEAD_VALUE)
- {
- return false;
- }
- if(false == check_can_baud(param->can_baud))
- {
- return false;
- }
- return true;
- }
- /*******************************************************************************
- * @函数名称 User_Config_Read_Config
- * @函数说明 读取配置信息
- * @输入参数 无
- * @输出参数 无
- * @返回参数 无
- *******************************************************************************/
- void User_Config_Read_Config(void)
- {
- user_config_param_s param;
- /* Read the first block */
- FLASH_read(CONFIG_DATAFLASH_ADDR, (uint8_t *)¶m, sizeof(user_config_param_s));
- if(true == check_read_config_param(¶m))
- {
- PRINT("rd config succ!\n");
- memcpy(&user_config_param, ¶m, sizeof(user_config_param_s));
- PRINT("can baud=%d\n", user_config_param.can_baud);
- PRINT("left ws2812b count=%d\n", user_config_param.left_ws2812b_count);
- PRINT("right ws2812b count=%d\n", user_config_param.right_ws2812b_count);
- }
- else{
- PRINT("rd config error!\n");
- set_user_config_param_init(&user_config_param);
- User_Config_Write_Config();
- }
- }
- /*******************************************************************************
- * @函数名称 User_Config_Write_Config
- * @函数说明 写入配置信息
- * @输入参数 无
- * @输出参数 无
- * @返回参数 无
- *******************************************************************************/
- void User_Config_Write_Config(void)
- {
- uint8_t buf[256] = {0xFF};
- memset(buf, 0xFF, 256);
- memcpy(buf, (uint8_t *)&user_config_param, sizeof(user_config_param_s));
- FLASH_Unlock_Fast();
- /* Erase the first block */
- FLASH_ErasePage_Fast(CONFIG_DATAFLASH_ADDR);
- /* Programming DataFlash */
- FLASH_ProgramPage_Fast(CONFIG_DATAFLASH_ADDR, (uint32_t *)buf);
- FLASH_Lock_Fast();
- }
- /*******************************************************************************
- * @函数名称 user_config_save_can_baud
- * @函数说明 保存can波特率
- * @输入参数 无
- * @输出参数 无
- * @返回参数 无
- *******************************************************************************/
- bool user_config_save_can_baud(uint32_t baud)
- {
- if(false == check_can_baud(baud))
- {
- return false;
- }
- if(user_config_param.can_baud != baud)
- {
- user_config_param.can_baud = baud;
- User_Config_Write_Config();
- }
- return true;
- }
- /*******************************************************************************
- * @函数名称 user_config_save_ws2812b_count
- * @函数说明 保存幻彩灯珠数量
- * @输入参数 left:左边数量
- * right:右边数量
- * @输出参数 无
- * @返回参数 无
- *******************************************************************************/
- bool user_config_save_ws2812b_count(uint8_t left, uint8_t right)
- {
- bool stat = false;
- if(left > WS2812B_MAX_COUNT || right > WS2812B_MAX_COUNT)
- {
- return false;
- }
- if(user_config_param.left_ws2812b_count != left)
- {
- user_config_param.left_ws2812b_count = left;
- stat = true;
- }
- if(user_config_param.right_ws2812b_count != right)
- {
- user_config_param.right_ws2812b_count = right;
- stat = true;
- }
- if(stat == true)
- {
- User_Config_Write_Config();
- }
- return true;
- }
- /*******************************************************************************
- * @函数名称 user_config_save_elect_time
- * @函数说明 设置电子锁上电时间
- * @输入参数 left:左边电磁锁时间
- * right:右边电磁锁时间
- * @输出参数 无
- * @返回参数 无
- *******************************************************************************/
- bool user_config_save_elect_time(uint16_t left, uint16_t right)
- {
- bool stat = false;
- if(left < ELECT_TIME_MIN || left > ELECT_TIME_MAX
- || right < ELECT_TIME_MIN || right > ELECT_TIME_MAX)
- {
- return false;
- }
- if(user_config_param.elect_param.elect_on_timne[LEFT_IDX] != left)
- {
- user_config_param.elect_param.elect_on_timne[LEFT_IDX] = left;
- stat = true;
- }
- if(user_config_param.elect_param.elect_on_timne[RIGHT_IDX] != right)
- {
- user_config_param.elect_param.elect_on_timne[RIGHT_IDX] = right;
- stat = true;
- }
- if(stat == true)
- {
- User_Config_Write_Config();
- }
- return true;
- }
- /*******************************************************************************
- * @函数名称 user_config_init
- * @函数说明 初始化
- * @输入参数 无
- * @输出参数 无
- * @返回参数 无
- *******************************************************************************/
- void user_config_init(void)
- {
- User_Config_Read_Config();
- }
|