123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- #include "../../includes/includes.h"
- extern PUB_SYS_STATUS_T gg_stSysStatus;
- extern PUB_LOCATION_DATA_T gg_astLocationDataList[PUB_SYS_CARRIER_NUM];
- void bts_idcheck_main(BTS_ID_JUDGEMENT_MAIN_BTS_T *pstJudgementMainBtsList, PUB_LCT_BTS_LIST_T *pstLctBtsList)
- {
- BTS_ID_MAIN_BTS_T stJudgementBtsData = {0};
- BTS_INSTALL_BTS_LIST_T *pstInstallBtsList = NULL;
- BTS_INSTALL_BTS_T stMainBtsData = {0};
- uint8 byCheckFlag = 0;
-
- if (pstJudgementMainBtsList->byBtsNum < 1)
- {
- return;
- }
-
- pstInstallBtsList = (BTS_INSTALL_BTS_LIST_T *)bts_main_get_install_bts_list();
-
- for (uint8 i = 0; i < pstJudgementMainBtsList->byBtsNum; i++)
- {
- stJudgementBtsData = pstJudgementMainBtsList->astBtsList[i];
-
- for (uint16 j = 0; j < pstInstallBtsList->dwBtsNum; j++)
- {
- stMainBtsData = pstInstallBtsList->astLocalBtsList[j];
-
- if (stJudgementBtsData.dwBtsId == stMainBtsData.dwBtsId && stJudgementBtsData.byFreqIndex == (uint8)stMainBtsData.dwFreqIndex)
- {
-
- byCheckFlag = bts_idcheck_check_nearby_bts(stMainBtsData, pstInstallBtsList, pstJudgementMainBtsList);
- if (byCheckFlag)
- {
- break;
- }
- }
- }
-
- if (byCheckFlag)
- {
- break;
- }
- }
-
- if (byCheckFlag)
- {
- bts_idcheck_gen_location_bts(stJudgementBtsData.byShiftTimes, stMainBtsData, pstInstallBtsList, pstLctBtsList);
- if (pstLctBtsList->byBtsNum > 1)
- {
- gg_stSysStatus.byShiftTimes = stJudgementBtsData.byShiftTimes;
-
- if (!gg_stSysStatus.byBtsCaptureFlag)
- {
- gg_stSysStatus.byBtsCaptureFlag = 1;
- }
- }
- }
- return;
- }
- uint8 bts_idcheck_check_nearby_bts(BTS_INSTALL_BTS_T stMainBtsData, BTS_INSTALL_BTS_LIST_T *pstInstallBtsList, BTS_ID_JUDGEMENT_MAIN_BTS_T *pstJudgementMainBtsList)
- {
- BTS_INSTALL_BTS_T stSlaveBts;
- flt32 fDistance = 0.0;
- uint8 byCheckFlag = 0;
- for (uint16 i = 0; i < pstInstallBtsList->dwBtsNum; i++)
- {
- stSlaveBts = pstInstallBtsList->astLocalBtsList[i];
-
- if ((stMainBtsData.dwBtsId != stSlaveBts.dwBtsId && stMainBtsData.dwFreqIndex != stSlaveBts.dwFreqIndex) && (stMainBtsData.dwBuildId == stSlaveBts.dwBuildId) && (stMainBtsData.dwLayerId == stSlaveBts.dwLayerId))
- {
-
- fDistance = bts_idcheck_cal_pp_distance(stMainBtsData.dwCoordX, stMainBtsData.dwCoordY, stSlaveBts.dwCoordX, stSlaveBts.dwCoordY);
- if (fDistance <= PUB_BTS_VALID_DISTANCE)
- {
-
- for (uint8 j = 0; j < pstJudgementMainBtsList->byBtsNum; j++)
- {
- if (stSlaveBts.dwBtsId == pstJudgementMainBtsList->astBtsList[j].dwBtsId && (uint8)stSlaveBts.dwFreqIndex == pstJudgementMainBtsList->astBtsList[j].byFreqIndex)
- {
- byCheckFlag = 1;
- break;
- }
- }
- }
- }
- if (byCheckFlag)
- {
- break;
- }
- }
- return byCheckFlag;
- }
- flt32 bts_idcheck_cal_pp_distance(int32 x1, int32 y1, int32 x2, int32 y2)
- {
- flt32 fDistance = 0.0;
- fDistance = (flt32)sqrt(((flt32)x1 / 100 - (flt32)x2 / 100) * ((flt32)x1 / 100 - (flt32)x2 / 100) + ((flt32)y1 / 100 - (flt32)y2 / 100) * ((flt32)y1 / 100 - (flt32)y2 / 100));
- return fDistance;
- }
- void bts_idcheck_gen_location_bts(uint8 byShiftTimes, BTS_INSTALL_BTS_T stMainBtsData, BTS_INSTALL_BTS_LIST_T *pstInstallBtsList, PUB_LCT_BTS_LIST_T *pstLocationGroup)
- {
- BTS_INSTALL_BTS_T stSlaveBts;
- flt32 fDistance = 0.0;
- PUB_LCT_BTS_T stLocationBts = {0};
- uint8 byCounter = 0;
-
-
-
-
-
-
-
-
-
-
-
-
-
- for (uint16 i = 0; i < pstInstallBtsList->dwBtsNum; i++)
- {
- stSlaveBts = pstInstallBtsList->astLocalBtsList[i];
- if (stMainBtsData.dwBuildId == stSlaveBts.dwBuildId && stMainBtsData.dwLayerId == stSlaveBts.dwLayerId)
- {
-
- fDistance = bts_idcheck_cal_pp_distance(stMainBtsData.dwCoordX, stMainBtsData.dwCoordY, stSlaveBts.dwCoordX, stSlaveBts.dwCoordY);
- if (fDistance <= PUB_BTS_VALID_DISTANCE)
- {
- stLocationBts.dwMainBtsFlag = 2;
- stLocationBts.dwBuildId = stSlaveBts.dwBuildId;
- stLocationBts.dwLayerId = stSlaveBts.dwLayerId;
- stLocationBts.dwBtsId = stSlaveBts.dwBtsId;
- stLocationBts.dwFreqIndex = stSlaveBts.dwFreqIndex;
- stLocationBts.dwSlot = stSlaveBts.dwSlot;
- stLocationBts.dwCoordX = stSlaveBts.dwCoordX;
- stLocationBts.dwCoordY = stSlaveBts.dwCoordY;
- stLocationBts.dwCoordZ = stSlaveBts.dwCoordZ;
- pstLocationGroup->astLocationBts[byCounter] = stLocationBts;
- byCounter++;
- if (byCounter >= PUB_LCT_BTS_MAX_NUM)
- {
- break;
- }
- }
- }
- }
- pstLocationGroup->byBtsNum = byCounter;
- return;
- }
|