private void ParseMLEPDU(LogicChannel channelData, int offset, ReceivedData result) { var length = 3; var type = (MlePrimitivesType)TetraUtils.BitsToInt32(channelData.Ptr, offset, length); offset += length; result.Add(GlobalNames.MLE_Primitives_Type, (int)type); //Debug.Write(" " + type.ToString()); switch (type) { case MlePrimitivesType.D_NWRK_BROADCAST: offset = Global.ParseParams(channelData, offset, _d_Nwrk_BroadcastRules, result); var count = 0; if (result.TryGetValue(GlobalNames.Number_of_Neighbour_cells_element, ref count)) { for (int i = 0; i < count; i++) { var neighbourData = new ReceivedData(); offset = Global.ParseParams(channelData, offset, _neighbour_Cell_InfoRules, neighbourData); var cellID = 0; if (neighbourData.TryGetValue(GlobalNames.Cell_identifier, ref cellID)) { //////Debug.WriteLine("Neighbour " + Thread.CurrentThread.ManagedThreadId.ToString()); if (Global.NeighbourList.Count < 32) { Global.NeighbourList.Add(neighbourData); } } } } break; case MlePrimitivesType.D_NEW_CELL: case MlePrimitivesType.D_PREPARE: case MlePrimitivesType.D_RESTORE_ACK: case MlePrimitivesType.D_RESTORE_FAIL: default: //Debug.Write(" Unknow_MLE_SDU"); result.Add(GlobalNames.UnknowData, 1); break; } }
public void SyncPDUHalfSlot(LogicChannel channelData, ReceivedData result) { var pduType = -1; var offset = 0; if (result.TryGetValue(GlobalNames.SYNC_PDU_type, ref pduType)) { switch (pduType) { case 0: offset = Global.ParseParams(channelData, offset, _dmacSyncInfoHalfSlotRules, result); var realLength = channelData.Length - offset; if (result.Value(GlobalNames.Fill_bit) != 0) { realLength = CalcRealLength(channelData.Ptr, offset, realLength); } if (result.Value(GlobalNames.Fragmentation_flag) == 1) { Debug.Write(" Start_fragmented_PDU"); CreateFraqmentsBuffer(channelData, offset, realLength, result); } //Debug.Write(" " + (DMAC_Message_Type)result[GlobalNames.Message_type]); break; case 1: Global.ParseParams(channelData, 0, _dpresSyncInfoHalfSlotRules, result); break; default: Debug.Write(" Unknow_DMO_SyncPdu_type"); result.SetValue(GlobalNames.UnknowData, 1); break; } } }