keil/include/drivers/global_param.c
@@ -3,9 +3,10 @@
//#include "dw_app.h"
#include <string.h>
#define FLASH_IAP_CTRL_MAP      (uint32_t)0x0402E000    //the control map start address, 63K MK8000修改
#define FLASH_Authorization_MAP  (uint32_t)0x0402f000 //授权标签列表起始地址
#define AUTHORIZATION_NUM 1024
uint32_t tag_id_authorization_list[AUTHORIZATION_NUM];
uint32_t tag_id_authorization_list_num;
uint16_t g_com_map[COM_MAP_SIZE];
uint8_t parameter_check(void)
{
@@ -49,13 +50,31 @@
    if(!result) {
        flash_erase(FLASH_ID0,FLASH_IAP_CTRL_MAP,FLASH_SECTOR_SIZE);
        flash_write_nbytes(FLASH_ID0, FLASH_IAP_CTRL_MAP, (const uint8_t*)g_com_map, sizeof(g_com_map));
    }
    //flash_close(FLASH_ID0);
    __enable_irq();
    return result;
}
uint32_t save_taglist_map_to_flash(void)
{
    uint32_t result = 0;
    if(parameter_check()) //参数错误,不保存
    {
        return 1;
    }
    __disable_irq();
    //result = FLASH_Prepare(FLASH_IAP_CTRL_MAP, (COM_MAP_SIZE<<1));MK8000修改
    result=flash_open(FLASH_ID0,NULL);
    //MK8000没有对应函数
    if(!result) {
        flash_erase(FLASH_ID0,FLASH_Authorization_MAP,4*FLASH_SECTOR_SIZE);
        flash_write_nbytes(FLASH_ID0, FLASH_Authorization_MAP, (const uint8_t*)tag_id_authorization_list, sizeof(tag_id_authorization_list));
        //result = FLASH_Write(FLASH_IAP_CTRL_MAP, (const uint8_t*)g_com_map, (COM_MAP_SIZE<<1));
    }
    //flash_close(FLASH_ID0);
    __enable_irq();
    return result;
}
void parameter_init(void)//注意看前面有没有关闭flash如果有则打开flash在读取,否则会出错
{   flash_open(FLASH_ID0,NULL);
    //FLASH_Read(FLASH_IAP_CTRL_MAP, (uint8_t*)&g_com_map, (COM_MAP_SIZE<<1));MK8000修改
@@ -65,7 +84,7 @@
        g_com_map[0] = 0x55AA;
        g_com_map[DEV_ID] =0x1234;//DEFAULT_DEV_ID;   //默认设备ID
        g_com_map[COM_INTERVAL]=500;   //频率2HZ
        g_com_map[COM_INTERVAL]=200;   //频率2HZ
        g_com_map[MAX_REPORT_ANC_NUM]=10;
        g_com_map[GROUP_ID]=0;
        g_com_map[DIST_OFFSET]=-31;
@@ -89,15 +108,29 @@
        g_com_map[TCP_IP_0]=0x111;
        g_com_map[TCP_IP_0]=0x198;
        g_com_map[TCP_IP_0]=0x60;
        g_com_map[TCP_IP_0]=0x60;
        g_com_map[TCP_IP_0]=0x6;
        g_com_map[TCP_IP_0]=1234;
        g_com_map[HEIGHTOFFEST_INDEX]=0;
        save_com_map_to_flash();
    }
}
uint32_t check_tag_id_authorization_list_num(void)
{
    uint32_t count = 0;
    for (uint32_t i = 0; i < AUTHORIZATION_NUM; i++) {
        if (tag_id_authorization_list[i] != 0xffffffff) {
            count++;
        }
    }
    return count;
}
void parameter_init_anchor(void)
{
    flash_open(FLASH_ID0,NULL);
@@ -108,7 +141,7 @@
        g_com_map[0] = 0x55AA;
        g_com_map[DEV_ID] =0x1234;//DEFAULT_DEV_ID;   //默认设备ID
        g_com_map[COM_INTERVAL]=500;   //频率2HZ
        g_com_map[COM_INTERVAL]=200;   //频率2HZ
        g_com_map[MAX_REPORT_ANC_NUM]=10;
        g_com_map[GROUP_ID]=0;
        g_com_map[DIST_OFFSET]=-31;
@@ -132,11 +165,14 @@
        g_com_map[TCP_IP_0]=0x111;
        g_com_map[TCP_IP_1]=0x198;
        g_com_map[TCP_IP_2]=0x60;
        g_com_map[TCP_IP_2]=0x60;
        g_com_map[TCP_IP_3]=0x6;
        g_com_map[TCP_PORT]=0x1234;
        g_com_map[HEIGHTOFFEST_INDEX]=0;
        save_com_map_to_flash();
    }
      //新增上电获取授权标签列表
      flash_read(FLASH_ID0, FLASH_Authorization_MAP, (uint8_t*)&tag_id_authorization_list, sizeof(tag_id_authorization_list));//从flash中拿出来授权表
      tag_id_authorization_list_num=check_tag_id_authorization_list_num();//获取实际有效长度减少轮训开销
}