// 秒寻科技
// 全局数据
// 周涛
// 2023-03-01
#include <string.h>
#include "./globaldata.h"
#include "../sysdefine/sysdef.h"

// 系统状态机
PUB_SYS_STATUS_T gg_stSysStatus = {0};

// 定位缓存队列
uint32 gg_dwFrameNo = 0;                                               // 全局帧号
uint32 gg_dwDdcIndex = 0;                                              // 全局变频索引
PUB_LOCATION_DATA_T gg_astLocationDataList[PUB_SYS_CARRIER_NUM] = {0}; // 定位数据缓存
flt32 gg_afOneFrameLocationData[PUB_SLOT_FRAME_LEN] = {0};             // 一帧定位数据

// 周边基站队列
ROUTE_NEARBY_BTS_LIST gg_stNearbyBtsList;

// 定位基站组
PUB_LCT_BTS_LIST_T gg_stLctBtsList = {0};

// 当前定位点
PUB_CURRENT_LCT_RESULT_T gg_stCurrentLctCoord = {0};

// 第一径参数
LCT_FIRSTPATH_PARAM_T gg_stFirstPathParam = {0};

MIRROR_LCT_FIRSTPATH_LIST_T gg_stMirrorLctFirstPathGroup = {0};

// 计算定位坐标模块参数
LCT_COORDCAL_PARAM_T gg_stLctCoordcalParam = {0};

// 选择最优定位坐标模块参数
LCT_COORDSEL_PARAM_T gg_stLctCoordselParam = {0};

// 初始化全局数据
void globaldata_init()
{
    // 系统状态
    memset(&gg_stSysStatus, 0, sizeof(PUB_SYS_STATUS_T));

    // 定位数据
    memset(gg_astLocationDataList, 0, sizeof(PUB_LOCATION_DATA_T) * PUB_SYS_CARRIER_NUM);
    for (uint8 i = 0; i < PUB_SYS_CARRIER_NUM; i++)
    {
        gg_astLocationDataList[i].byFreqIndex = i; // 频率索引初始化
        gg_astLocationDataList[i].dwDdcIndex = 6000;
    }
    memset(gg_afOneFrameLocationData, 0, sizeof(uint32) * PUB_SLOT_FRAME_LEN);

    // 周边基站
    memset(&gg_stNearbyBtsList, 0, sizeof(ROUTE_NEARBY_BTS_LIST));

    // 定位基站组
    memset(&gg_stLctBtsList, 0, sizeof(PUB_LCT_BTS_LIST_T));

    // 第一径参数
    memset(&gg_stFirstPathParam, 0, sizeof(LCT_FIRSTPATH_PARAM_T));
    memset(&gg_stMirrorLctFirstPathGroup, 0, sizeof(MIRROR_LCT_FIRSTPATH_LIST_T));

    // 计算定位坐标
    memset(&gg_stLctCoordcalParam, 0, sizeof(LCT_COORDCAL_PARAM_T));

    // 选择最优定位坐标
    memset(&gg_stLctCoordselParam, 0, sizeof(LCT_COORDSEL_PARAM_T));

    // 当前定位点
    memset(&gg_stCurrentLctCoord, 0, sizeof(PUB_CURRENT_LCT_RESULT_T));

    return;
}
