1.1 --- a/src/mih/mih-protocol.cc Mon Dec 01 09:22:24 2008 +0100
1.2 +++ b/src/mih/mih-protocol.cc Tue Dec 02 18:09:09 2008 +0100
1.3 @@ -168,26 +168,116 @@
1.4 events.TlvDeserialize (buffer);
1.5 session = GetSession (toMihfId, Address (), fromMihfId, from, socket);
1.6 RemoteEventSourceTrap remoteEventSourceTrap = session->GetRemoteEventSourceTrap ();
1.7 +
1.8 + MihLinkDetectedIndicationCallback linkDetectedEventCallback1;
1.9 + EventList::Type linkDetectedEventType1 = EventList::INVALID;
1.10 + MihLinkUpIndicationCallback linkUpEventCallback2;
1.11 + EventList::Type linkUpEventType2 = EventList::INVALID;
1.12 + MihLinkDownIndicationCallback linkDownEventCallback3;
1.13 + EventList::Type linkDownEventType3 = EventList::INVALID;
1.14 + MihLinkParametersReportIndicationCallback linkParamReportEventCallback4;
1.15 + EventList::Type linkParamReportEventType4 = EventList::INVALID;
1.16 + MihLinkGoingDownIndicationCallback linkGoingDownEventCallback5;
1.17 + EventList::Type linkGoingDownEventType5 = EventList::INVALID;
1.18 + MihLinkHandoverImminentIndicationCallback linkHOImminentEventCallback6;
1.19 + EventList::Type linkHOImminentEventType6 = EventList::INVALID;
1.20 + MihLinkHandoverCompleteIndicationCallback linkHOCompleteEventCallback7;
1.21 + EventList::Type linkHOCompleteEventType7 = EventList::INVALID;
1.22 + MihLinkPduTransmitStatusIndicationCallback linkPduTxStatusEventCallback8;
1.23 + EventList::Type linkPduTxStatusEventType8 = EventList::INVALID;
1.24
1.25 + if (events.GetEventList () & EventList::LINK_DETECTED)
1.26 + {
1.27 + linkDetectedEventCallback1 = MakeCallback (&RemoteEventSourceTrap::LinkDetected, &remoteEventSourceTrap);
1.28 + linkDetectedEventType1 = EventList::LINK_DETECTED;
1.29 + }
1.30 + else
1.31 + {
1.32 + linkDetectedEventCallback1 = MakeNullCallback<void, MihfId, LinkDetectedInformation> ();
1.33 + }
1.34 + if (events.GetEventList () & EventList::LINK_UP)
1.35 + {
1.36 + linkUpEventCallback2 = MakeCallback (&RemoteEventSourceTrap::LinkUp, &remoteEventSourceTrap);
1.37 + linkUpEventType2 = EventList::LINK_UP;
1.38 + }
1.39 + else
1.40 + {
1.41 + linkUpEventCallback2 = MakeNullCallback<void, MihfId, LinkIdentifier, Address, Address, bool, MobilityManagementSupport> ();
1.42 + }
1.43 + if (events.GetEventList () & EventList::LINK_DOWN)
1.44 + {
1.45 + linkDownEventCallback3 = MakeCallback (&RemoteEventSourceTrap::LinkDown, &remoteEventSourceTrap);
1.46 + linkDownEventType3 = EventList::LINK_DOWN;
1.47 + }
1.48 + else
1.49 + {
1.50 + linkDownEventCallback3 = MakeNullCallback<void, MihfId, LinkIdentifier, Address, LinkDownReason> ();
1.51 + }
1.52 + if (events.GetEventList () & EventList::LINK_PARAMETERS_REPORT)
1.53 + {
1.54 + linkParamReportEventCallback4 = MakeCallback (&RemoteEventSourceTrap::LinkParametersReport, &remoteEventSourceTrap);
1.55 + linkParamReportEventType4 = EventList::LINK_PARAMETERS_REPORT;
1.56 + }
1.57 + else
1.58 + {
1.59 + linkParamReportEventCallback4 = MakeNullCallback<void, MihfId, LinkIdentifier, LinkParameterReportList> ();
1.60 + }
1.61 + if (events.GetEventList () & EventList::LINK_GOING_DOWN)
1.62 + {
1.63 + linkGoingDownEventCallback5 = MakeCallback (&RemoteEventSourceTrap::LinkGoingDown, &remoteEventSourceTrap);
1.64 + linkGoingDownEventType5 = EventList::LINK_GOING_DOWN;
1.65 + }
1.66 + else
1.67 + {
1.68 + linkGoingDownEventCallback5 = MakeNullCallback<void, MihfId, LinkIdentifier, uint64_t, LinkGoingDownReason> ();
1.69 + }
1.70 + if (events.GetEventList () & EventList::LINK_HANDOVER_IMMINENT)
1.71 + {
1.72 + linkHOImminentEventCallback6 = MakeCallback (&RemoteEventSourceTrap::LinkHandoverImminent, &remoteEventSourceTrap);
1.73 + linkHOImminentEventType6 = EventList::LINK_HANDOVER_IMMINENT;
1.74 + }
1.75 + else
1.76 + {
1.77 + linkHOImminentEventCallback6 = MakeNullCallback<void, MihfId, LinkIdentifier, LinkIdentifier, Address, Address> ();
1.78 + }
1.79 + if (events.GetEventList () & EventList::LINK_HANDOVER_COMPLETE)
1.80 + {
1.81 + linkHOCompleteEventCallback7 = MakeCallback (&RemoteEventSourceTrap::LinkHandoverComplete, &remoteEventSourceTrap);
1.82 + linkHOCompleteEventType7 = EventList::LINK_HANDOVER_COMPLETE;
1.83 + }
1.84 + else
1.85 + {
1.86 + linkHOCompleteEventCallback7 = MakeNullCallback<void, MihfId, LinkIdentifier, LinkIdentifier, Address, Address, Status> ();
1.87 + }
1.88 + if (events.GetEventList () & EventList::LINK_PDU_TRANSMIT_STATUS)
1.89 + {
1.90 + linkPduTxStatusEventCallback8 = MakeCallback (&RemoteEventSourceTrap::LinkPduTxStatus, &remoteEventSourceTrap);
1.91 + linkPduTxStatusEventType8 = EventList::LINK_PDU_TRANSMIT_STATUS;
1.92 + }
1.93 + else
1.94 + {
1.95 + linkPduTxStatusEventCallback8 = MakeNullCallback<void, MihfId, LinkIdentifier, uint16_t, bool> ();
1.96 + }
1.97 + // Call Local EventSubscribe;
1.98 mihFunction->EventSubcribe (toMihfId,
1.99 linkIdentifier,
1.100 EventConfigurationInformation (),
1.101 - events.GetEventList () & EventList::LINK_DETECTED ? EventList::LINK_DETECTED : EventList::INVALID,
1.102 - events.GetEventList () & EventList::LINK_DETECTED ? MakeCallback (&RemoteEventSourceTrap::LinkDetected, &remoteEventSourceTrap) : MakeNullCallback<void, MihfId, LinkDetectedInformation> (),
1.103 - events.GetEventList () & EventList::LINK_UP ? EventList::LINK_UP : EventList::INVALID,
1.104 - events.GetEventList () & EventList::LINK_UP ? MakeCallback (&RemoteEventSourceTrap::LinkUp, &remoteEventSourceTrap): MakeNullCallback<void, MihfId, LinkIdentifier, Address, Address, bool, MobilityManagementSupport> (),
1.105 - events.GetEventList () & EventList::LINK_DOWN ? EventList::LINK_DOWN : EventList::INVALID,
1.106 - events.GetEventList () & EventList::LINK_DOWN ? MakeCallback (&RemoteEventSourceTrap::LinkDown, &remoteEventSourceTrap) : MakeNullCallback<void, MihfId, LinkIdentifier, Address, LinkDownReason> (),
1.107 - events.GetEventList () & EventList::LINK_PARAMETERS_REPORT ? EventList::LINK_PARAMETERS_REPORT : EventList::INVALID,
1.108 - events.GetEventList () & EventList::LINK_PARAMETERS_REPORT ? MakeCallback (&RemoteEventSourceTrap::LinkParametersReport, &remoteEventSourceTrap) : MakeNullCallback<void, MihfId, LinkIdentifier, Address, LinkDownReason> (),
1.109 - events.GetEventList () & EventList::LINK_GOING_DOWN ? EventList::LINK_GOING_DOWN : EventList::INVALID,
1.110 - events.GetEventList () & EventList::LINK_GOING_DOWN ? MakeCallback (&RemoteEventSourceTrap::LinkGoingDown, &remoteEventSourceTrap) : MakeNullCallback<void, MihfId, LinkIdentifier, uint64_t, LinkGoingDownReason> (),
1.111 - events.GetEventList () & EventList::LINK_HANDOVER_IMMINENT ? EventList::LINK_HANDOVER_IMMINENT : EventList::INVALID,
1.112 - events.GetEventList () & EventList::LINK_HANDOVER_IMMINENT ? MakeCallback (&RemoteEventSourceTrap::LinkHandoverImminent, &remoteEventSourceTrap) : MakeNullCallback<void, MihfId, LinkIdentifier, LinkIdentifier, Address, Address> (),
1.113 - events.GetEventList () & EventList::LINK_HANDOVER_COMPLETE ? EventList::LINK_HANDOVER_COMPLETE : EventList::INVALID,
1.114 - events.GetEventList () & EventList::LINK_HANDOVER_COMPLETE ? MakeCallback (&RemoteEventSourceTrap::LinkHandoverComplete, &remoteEventSourceTrap) : MakeNullCallback<void, MihfId, LinkIdentifier, LinkIdentifier, Address, Address, Status> (),
1.115 - events.GetEventList () & EventList::LINK_PDU_TRANSMIT_STATUS ? EventList::LINK_PDU_TRANSMIT_STATUS : EventList::INVALID,
1.116 - events.GetEventList () & EventList::LINK_PDU_TRANSMIT_STATUS ? MakeCallback (&RemoteEventSourceTrap::LinkPduTxStatus, &remoteEventSourceTrap) : MakeNullCallback<void, MihfId, LinkIdentifier, uint16_t, bool> (),
1.117 + linkDetectedEventType1,
1.118 + linkDetectedEventCallback1,
1.119 + linkUpEventType2,
1.120 + linkUpEventCallback2,
1.121 + linkDownEventType3,
1.122 + linkDownEventCallback3,
1.123 + linkParamReportEventType4,
1.124 + linkParamReportEventCallback4,
1.125 + linkGoingDownEventType5,
1.126 + linkGoingDownEventCallback5,
1.127 + linkHOImminentEventType6,
1.128 + linkHOImminentEventCallback6,
1.129 + linkHOCompleteEventType7,
1.130 + linkHOCompleteEventCallback7,
1.131 + linkPduTxStatusEventType8,
1.132 + linkPduTxStatusEventCallback8,
1.133 session->ReceiveEventSubscribeRequest (packet, mihHeader.GetTransactionId ()));
1.134 }
1.135 else if (mihHeader.GetOpCode () == MihHeader::RESPONSE)