S1APNode* S1mmeSession::InitialProcedure(ENBKey_T& enb_key) { S1APNode** pp_node = p_s1ap_init_map_->GetData(enb_key); if (pp_node == NULL) { InsertNewData(pp_node, p_s1ap_init_map_, enb_key); (*pp_node)->SetENBKey(enb_key); } return *pp_node; }什么意思
时间: 2024-04-01 14:33:55 浏览: 40
这是一个函数的实现,函数名为S1mmeSession::InitialProcedure。该函数的作用是根据ENBKey_T类型的enb_key找到或创建一个S1APNode对象,并返回该对象的指针。在函数中,首先通过ENBKey_T类型的enb_key在p_s1ap_init_map_中查找对应的S1APNode对象的指针。如果查找到了,则直接返回该指针;如果没有查找到,则需要创建一个新的S1APNode对象,将该对象的指针存储到pp_node指向的位置,并设置该对象的ENBKey为enb_key。最后返回该对象的指针。
相关问题
typedef struct MsgCommonInfo { void Reset() { memset(this, 0, sizeof(*this)); } uint32_t mme_ue_s1ap_id; Address mme_ip; uint16_t mme_port; uint32_t enb_ue_s1ap_id; Address enb_ip; uint16_t enb_port; uint16_t mcc; uint16_t mnc; uint16_t tac; uint16_t ecgi_mcc; uint16_t ecgi_mnc; uint32_t eci;// enb_id(20) + cell_id(8) uint32_t target_eci; uint16_t mmegi; uint8_t mmec; uint32_t mtmsi; uint8_t has_nr_restriction; uint8_t is_modify_indication; uint8_t is_second_rat; Address gnb_ip; uint32_t gnb_teid; Address not_mod_ip; uint64_t imei; uint32_t ue_ambr_ul; uint32_t ue_ambr_dl; unsigned char ue_radio_capability[1024]; uint16_t ue_radio_capability_len; uint16_t celevel; uint8_t is_nas_5g; uint8_t is_nb_iot; uint8_t not_associate; //#ifdef CUCC_OPEN identity_t identity_info; auth_t auth_info; defaultBearerActivate_t default_bearer_active_info; initialContext_t initial_context_info; cipher_t cipher_info; esmInfo_t esm_info; erabSetup_t erab_setup_info; erabModify_t erab_modify_info; //#endif }MsgCommonInfo_T;
这段代码是 C++ 语言中的一个结构体定义,结构体名为 MsgCommonInfo,其中包含了多个成员变量,如 mme_ue_s1ap_id、mme_ip、mme_port、enb_ue_s1ap_id、enb_ip、enb_port 等等。这些成员变量记录了通信过程中的一些常用信息,如通信双方的 IP 地址、端口号、设备 ID 等,以及一些与通信相关的参数,如用户的最大上下行带宽、加密信息等。结构体中还定义了一个 Reset() 函数,用于将结构体中的成员变量清零。代码中还有一些注释,说明了这些成员变量的含义和用途。
/********************** SN8P2501B 4M __interrupt IntIn() StartOneTImeSample(void) **********************/ typedef struct { unsigned char u8WihtchIOCharge; unsigned long u16ChargeTimeIo; // unsigned long u16ChargeTimeHumi; // }ChargeTyPe; #define CHARGE_HUMIDITY_IO_HIGH() FP21 = 1 #define CHARGE_HUNIDITY_IO_LOW() FP21 = 0 #define CHARGE_IO_HIGH() FP20 = 1 #define CHARGE_IO_LOW() FP20 = 0 #define CHARGE_IO_HI() P2M = 0X00 #define F_data 20 __interrupt IntIn() { WDTR = 0X5A; // T0C = F_data; m_st_ChargeType.u8WihtchIOCharge++; if(m_st_ChargeType.u8WihtchIOCharge&0x80) // { if(m_st_ChargeType.u8WihtchIOCharge >= 0x84) // 3:1 { CHARGE_HUNIDITY_IO_LOW(); m_st_ChargeType.u8WihtchIOCharge = 0x80; } else if(m_st_ChargeType.u8WihtchIOCharge >= 0x81) { CHARGE_HUMIDITY_IO_HIGH(); } } else { if(m_st_ChargeType.u8WihtchIOCharge == 0x01)// { CHARGE_IO_HIGH(); } else if(m_st_ChargeType.u8WihtchIOCharge == 0x04)// 3:1 { CHARGE_IO_LOW(); m_st_ChargeType.u8WihtchIOCharge = 0x00; } } m_st_ChargeType.u16ChargeTimeIo++; FT0IRQ = 0; //clear t0 irq flag } void StartOneTImeSample(void) { CHARGE_IO_HI(); //P1 m_st_ChargeType.u16ChargeTimeIo = 0; // if(m_st_ChargeType.u8WihtchIOCharge&0x80) { FP21M = 1; // CHARGE_HUNIDITY_IO_LOW(); } else { FP20M = 1; // CHARGE_IO_LOW(); } delay1N(2); // T0C = F_data; // FT0ENB = 1;// // while(1) { if(FP22) // { FT0ENB = 0;// , if(m_st_ChargeType.u8WihtchIOCharge&0x80)// { m_st_ChargeType.u16ChargeTimeHumi = m_st_ChargeType.u16ChargeTimeIo; } break; } } P2M = 0X23; P2 = 0X00;// FP22M = 1; FP22 = 0; delay1N(100); FP22M = 0; }
这段代码是使用 SN8P2501B 微控制器来实现对 HGL12A 的驱动程序。代码中定义了一个 ChargeType 结构体,包含了用于充电时间的变量。接下来定义了一些宏,用于控制充电引脚的高低电平状态。在 IntIn() 中断函数中,根据 u8WihtchIOCharge 的值来控制充电引脚的状态和切换。在 StartOneTImeSample() 函数中,首先配置充电引脚的模式和初始状态,然后通过延时和定时器来进行充电时间的测量,并将结果存储在 u16ChargeTimeIo 和 u16ChargeTimeHumi 变量中。
请注意,这段代码仅提供了部分片段,并且缺少一些关键的信息,如函数定义、相关引脚配置等。如果你需要完整的驱动程序,请提供更完整的代码或详细的需求描述,以便我能够更好地帮助你。
阅读全文