コード例 #1
0
uint8 Process_Event()
{
    uint8 current_event;
    current_event = Pop_T();

    switch(current_event)
    {
			case EVENT_BEACON_SEND:
				SendBeacon();
				break;
			case EVENT_JOINREQUEST_HANDLER:
				JoinRequestHandler();
				break;
			case EVENT_JOINREQUESTACKOK_HANDLER:
				JoinRequestACKOKHandler();
				break;
			case EVENT_DATA_HANDLER:
				DataHandler();
				break;
			case EVENT_UPLOAD_DATA:
				Upload_Data();
				break;
			case EVENT_REJOIN_SEND:
				SendReJoin();
				break;
			
    }
    return current_event;
}
コード例 #2
0
ファイル: mac.cpp プロジェクト: butterflyy/openthread
void Mac::HandleBeginTransmit(void)
{
    ThreadError error = kThreadError_None;

    if (otPlatRadioIdle() != kThreadError_None)
    {
        mBeginTransmit.Post();
        ExitNow();
    }

    switch (mState)
    {
    case kStateActiveScan:
        mSendFrame.SetChannel(mScanChannel);
        SendBeaconRequest(mSendFrame);
        mSendFrame.SetSequence(0);
        break;

    case kStateTransmitBeacon:
        mSendFrame.SetChannel(mChannel);
        SendBeacon(mSendFrame);
        mSendFrame.SetSequence(mBeaconSequence++);
        break;

    case kStateTransmitData:
        mSendFrame.SetChannel(mChannel);
        SuccessOrExit(error = mSendHead->HandleFrameRequest(mSendFrame));
        mSendFrame.SetSequence(mDataSequence);
        break;

    default:
        assert(false);
        break;
    }

    // Security Processing
    ProcessTransmitSecurity();

    SuccessOrExit(error = otPlatRadioTransmit(&mSendFrame));

    if (mSendFrame.GetAckRequest() && !(otPlatRadioGetCaps() & kRadioCapsAckTimeout))
    {
        mAckTimer.Start(kAckTimeout);
        otLogDebgMac("ack timer start\n");
    }

exit:

    if (error != kThreadError_None)
    {
        assert(false);
    }
}
コード例 #3
0
ファイル: Beacon.cpp プロジェクト: Danathus/net-set-go
   void BeaconTransmitter::Update(float deltaTime)
   {
      if (IsRunning())
      {
         for (mTimeAccumulator += deltaTime; mTimeAccumulator > mDelayBetweenBeacons; mTimeAccumulator -= mDelayBetweenBeacons)
         {
            const bool success = SendBeacon();

            if (!success)
            {
               //printf("failed to send broadcast packet\n");
            }
         }
      }
   }