UE iniial Handover measures的部分,在LteUePhy.cc Measurement Report 的部分,在LteUeRrc.cc內 構想LteUePhy量測玩RSRP後,呼叫LteUeRrc不會做report的新增函式,再來觸發Handover,新增一個Reverse HO Request - [ ] phy呼叫rrc - [ ] rrc儲存RSRP給HO判斷 - [ ] HO判斷呼叫Reverse HO Request - [ ] 接續元HO步驟 HO如何觸發準備跟請求的   這裡是接收到UE report 之後,在這裡觸發呼叫換手演算法內的reportUeMeas在倒過去做判斷是否換手  ```cpp! if ((m_rrc->m_handoverManagementSapProvider != nullptr) && (m_rrc->m_handoverMeasIds.find(measId) != m_rrc->m_handoverMeasIds.end())) { // this measurement was requested by the handover algorithm m_rrc->m_handoverManagementSapProvider->ReportUeMeas(m_rnti, msg.measResults); } ``` 又是lte-enb-rrc.cc 內要做接收呼叫的 ```cpp! void LteEnbRrc::DoRecvMeasurementReport(uint16_t rnti, LteRrcSap::MeasurementReport msg) { NS_LOG_FUNCTION(this << rnti); GetUeManager(rnti)->RecvMeasurementReport(msg); } ``` 由目前已知的資訊 UE 通過socket 傳送量測報告後,enb會在呼叫接受量測回報動作的函數,裡面再根據條件決定呼叫什麼方式的換手檢測(ho decision) 在lte-rrc-sap.h內 ```cpp! template <class C> void MemberLteEnbRrcSapProvider<C>::RecvMeasurementReport(uint16_t rnti, MeasurementReport msg) { Simulator::ScheduleNow(&C::DoRecvMeasurementReport, m_owner, rnti, msg); } ``` 那誰會呼叫 lterrcsapprovider的接收 由lte-rrc-protocol-ideal.cc內的 ```Cpp! void LteUeRrcProtocolIdeal::DoSendMeasurementReport(LteRrcSap::MeasurementReport msg) { std::cout << "ideal Recv call"<< std::endl; Simulator::Schedule(RRC_IDEAL_MSG_DELAY, &LteEnbRrcSapProvider::RecvMeasurementReport, m_enbRrcSapProvider, m_rnti, msg); } ``` 由此呼叫,此檔案為UE與enb的rrc portocol共通檔案 由rrc-sap發起發送量測報告  最後一行影響到有沒有Measurement report 沒有的話LOG就不會出現HO過,推測是Re-Establishement 所以可以從這邊下手去阻斷Measurement report 新增HO decision --------------------------- Header 跟 payload ```cpp! /// MeasurementReport structure struct MeasurementReport { MeasResults measResults; ///< measure results }; /// MeasResults structure struct MeasResults { uint8_t measId; ///< measure ID MeasResultPCell measResultPCell; ///< measurement result primary cell bool haveMeasResultNeighCells; ///< have measure result neighbor cells std::list<MeasResultEutra> measResultListEutra; ///< measure result list eutra bool haveMeasResultServFreqList; ///< has measResultServFreqList-r10 std::list<MeasResultServFreq> measResultServFreqList; ///< MeasResultServFreqList-r10 }; ``` Header 結構分析 measId (uint8_t):用於標識測量的 ID,大小為 1 字節。 haveMeasResultNeighCells (bool):標識是否有鄰近小區的測量結果,大小為 1 字節。 haveMeasResultServFreqList (bool):標識是否有服務頻段測量結果列表,大小為 1 字節。 MeasResultServFreq 結構中的控制字段: servFreqId (uint16_t):標識服務小區的頻段 ID,大小為 2 字節。 haveMeasResultSCell (bool):標識是否有次服務小區測量結果,大小為 1 字節。 haveMeasResultBestNeighCell (bool):標識是否有最佳鄰近小區測量結果,大小為 1 字節。 **MeasResults 結構的基本控制字段大小為 3 字節。**
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up