📄 bt-core.h
字号:
TDDHandler tdd_handler_; static int firsttime_; int namTrace_; int seed_; int masterIndex_; int isOffset_; double xpos_; double ypos_; double interArrival_; uchar am_addr_; uchar new_am_addr_; int numACLlinks_; /* Identifies currently used clock ie, CLK or CLKN */ clock_type tx_clock_;public: Baseband(); void sendUp (Packet* p, Handler* h); int command (int, const char*const* ); int recv_filter (Packet*); double calcLossProb (bt_packet_type, double); void getAM_ADDR(); void sendIDPacket(int); void sendFHSPacket(); void sendPOLLPacket(uchar); void sendNULLPacket(uchar); void sendPacket (Packet* p); void sendHCI_Inquiry_Result(){} void sendPageResult() {} void sendPageSuccess(int) {} void sendPollResponse() {} void handleInqRespTO(); void start(); Packet* schedule_next() {} // HCI_commands void HCI_Inquiry (long, int); void HCI_Create_Connection (int, int); void updateInqPageParam(); void initInqPageParam(); void changeState(state_type); uchar FH_kernel(int CLK, int CLK_frozen, FH_sequence_type FH_seq_type_t, int BD_addr); uchar ADD_mod32(uchar ip1, uchar ip2); uchar EXOR_5(uchar ip1, uchar ip2); uchar EXOR_9(uint ip1, uint ip2); uchar PERM(uchar ip1, uchar ip2, uint ip3); uchar ADD_mod79(uchar ip1, uchar ip2, uchar ip3, uchar ip4); void BFLY(uchar ctrl, uchar& ip1, uchar& ip2);};/*============================================================== MAC SCHEDULING MODULE==============================================================*///***********************Helper classes*************************class BT_DRRScheduler; class BluePollHandler : public Handler {public: BluePollHandler(BT_DRRScheduler* sched) : sched_(sched) {} void handle(Event* e); BT_DRRScheduler* sched_;};class BluePollEvent : public Event {public: BluePollEvent():Event() {} int num_;};/**************************************************************** SCHEDULER CLASS****************************************************************/class BT_DRRScheduler : public BiConnector { friend class BluePollHandler; double rate_[MaxQueues]; uchar tos_[MaxQueues]; int dc_[MaxQueues]; uchar incr_[MaxQueues]; int backlog_fwd_[MaxQueues]; int backlog_rev_[MaxQueues]; uchar active_[MaxQueues]; int quanta_[MaxQueues]; uchar maxPollInterval_[MaxQueues]; uchar nextround_; BluePollEvent** pollEvent_; double cycleTime_; //double serviceRate_; double slotsPerCycle_; double totalRate_; int totalQuanta_; PacketQueue* pollQ_; NsObject** lc_; uchar currQueue_; uchar numFlows_; BluePollHandler ph_;public: BT_DRRScheduler (); int command(int, const char*const*); uchar updateQuanta (uchar, int, bt_packet_type); uchar mapQoS(uchar, flowSpec*, con_attr*); uchar nextActive(); Packet* schedule_next(); void sendUp (Packet*, Handler*); void schedulePoll(int); Packet* createPOLLpacket(uchar);};/*================================================================ ARQ MODULE================================================================*//***************************************************************** LINK CONTROLLER CLASS: Bluetooth Spec v1.0A pp 81*****************************************************************/class LinkController : public BiConnector { int tx_cnt_; int tx_thresh_; unsigned char seq_, ack_, seq_old_; int am_addr_; unsigned char firsttime_; Packet* curr_reg_; Packet* next_reg_;public: LinkController(); void sendDown (Packet* p, Handler* h); void sendUp (Packet* p, Handler* h); Packet* send(); int pktSize(); void compose_pkt (Packet* p); void switch_reg(); void flush_payload(); void initialize(); void recvACK();};class L2CAP : public BiConnector { int cid_; int identifier_; uchar callback_[7]; bt_packet_type packetType_[7]; list<CID_attr*>* cid_list_vec_; queue<WriteReq*>* write_reqQ_;public: L2CAP(); void L2CA_ConnectReq (uchar psm, uchar connection_handle, bt_packet_type); void sendUp (Packet* p, Handler* h); void dataWrite (Packet* p, uchar lcid); void callback(uchar ch); void L2CA_ConnectRsp (CID_attr* cid, uchar result); void sendL2CAP_ConnectRequest (int ch, uchar scid, uchar id, uchar psm); void sendL2CAP_ConnectRsp (CID_attr* cid, uchar result); bt_packet_type getPacketType (Packet*, uchar); CID_attr* findCID (uchar cid, uchar connection_handle); CID_attr* findCID (uchar cid);};/*==================================================================== LEAKY BUCKET MODULE====================================================================*///***********************Helper Classes*******************************class LBF;class SendHandler : public Handler {public: SendHandler(LBF* lbf) : lbf_(lbf) {} void handle(Event* e); LBF* lbf_;};class TokenHandler : public Handler {public: TokenHandler(LBF* lbf) : lbf_(lbf) {} void handle(Event* e); LBF* lbf_;};/******************************************************************* LEAKY BUCKET FILTER*******************************************************************/class LBF : public BiConnector { friend class SendHandler; friend class TokenHandler; int firsttime_; void updatetokens(); double tokens_; double tokenRate_; int bucket_; int qlength_; int conn_handle_; double peak_bw_; double lastupdate_; PacketQueue *inputQ_; PacketQueue *blockedQ_; Event send_ev_; SendHandler sh_; TokenHandler th_;public: LBF(); void release(); void setParameters(flowSpec*); void recv(Packet *, Handler *);};/*================================================================== LINK MANAGER PROTOCOL MODULE==================================================================*/class LMP : public BiConnector { PacketQueue* l2capq_; PacketQueue* lmpq_; BT_DRRScheduler* sched_; BTHost* bthost_; LBF* tbf_; uchar am_addr_; uchar packetType_; uchar pollInterval_; uchar callback_; con_attr qoslm_; int master_;public: LMP(); int command(int argc, const char*const* argv); void HCI_QoS_Setup (flowSpec*); void HCI_change_connection_packet_type (uchar); void HCI_accept_connection_request(); void callback(); void sendDown(Packet*, Handler*); void sendUp(Packet*, Handler*); void sendLMPCommand(uchar, uchar);};struct HL_proto { NsObject* uptarget_; uchar arp_table_[256]; uchar cid; uchar value;}; /*============================================================= BTHOST MODULE=============================================================*/class BTHost : public Connector { // bind variables int inqTimeout_; int numResponses_; int bd_addr_; uchar master_; int numInqResp_; int numPaged_; int numConnections_; int currPaged_; int numApps_; // pointers to other simulation objects Baseband* lm_; L2CAP* l2cap_; NsObject** trafgen_; LMP** linkq_; // structures required for multiplexing protocols over L2CAP HL_proto proto1_; HL_proto proto2_; vector<FHS_payload*> vec_addr_; int active_addr_[7]; bt_packet_type type_[7]; int slave_am_addr_; string appNames_[7]; flowSpec** appFlowSpec_; public: BTHost(); int command(int, const char*const*); // HCI Events void HCI_Inquiry_Result (vector<FHS_payload*>&); void HCI_Connection_Complete_Event (char); void sendHCICreateConnection(); void HCI_QoS_Setup_Complete_Event(char, bt_packet_type); void HCI_ConnectionRequestEvent(uchar); // L2CA Actions void L2CA_ConnectCfm (int, uchar, uchar); void L2CA_ConnectInd (CID_attr*, uchar); void recv(Packet*, Handler*); void dataRead (Packet*, CID_attr*); void findAppNames();};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -