Example #1
0
static void awakeMode_onTXFailed()
{
    // We don't know what the receiver's state is because it may
    // have received the packet but lost the ACK.
    g_awakeState.receiverButtonStateValid = 0;

    if (g_awakeState.consecutiveSendFailures < 255)
    {
        g_awakeState.consecutiveSendFailures++;
    }

    if (g_awakeState.consecutiveSendFailures < 3)
    {
        resendPacket();
    }
    else if (g_awakeState.consecutiveSendFailures == 3)
    {
        g_awakeState.waitTime = 10;

        g_awakeState.state = AWAKE_STATE_WAIT;
        g_awakeState.stateMillis = 0;
    }
    else // > 3
    {
        g_awakeState.waitTime += g_awakeState.waitTime;
        if (g_awakeState.waitTime > 1000)
        {
            g_awakeState.waitTime = 1000;
        }

        g_awakeState.state = AWAKE_STATE_WAIT;
        g_awakeState.stateMillis = 0;
    }
}
void AmptekSDD123Server::sendPacketInQueue()
{
	if(!packetQueue_.isEmpty()){
		AmptekSDD123Packet resendPacket(packetQueue_.takeFirst());
		if(resendPacket.commandId() == AmptekCommandManagerSGM::RequestCommTestEchoPacket)
			sendSyncDatagram(resendPacket);
		else
			sendRequestDatagram(resendPacket);
	}
}
Example #3
0
static int awakeMode_timerTick()
{
    g_awakeState.stateMillis += 10;

    if (g_awakeState.state == AWAKE_STATE_IDLE && g_awakeState.stateMillis > 1000)
    {
        sendPacket();
    }
    else if (g_awakeState.state == AWAKE_STATE_WAIT && g_awakeState.stateMillis >= g_awakeState.waitTime)
    {
        resendPacket();
    }

    return 0;
}
Example #4
0
static void sendPacket()
{
    g_awakeState.consecutiveSendFailures = 0;
    resendPacket();
}