예제 #1
0
void JArduino::sendeeprom_write_ack() {
    payload[0] = 0x01; // source addr (not used)
    payload[1] = 0x00; // target addr (not used)
    payload[2] = 0x00; // frame num (not used)
    payload[3] = 0; // length of the params
    payload[4] = 35; // command code
    // set params here
    // send the message
    sendOutgoingMessage(payload, 16);
}
예제 #2
0
void JArduino::senddigitalReadResult(uint8_t value) {
    payload[0] = 0x01; // source addr (not used)
    payload[1] = 0x00; // target addr (not used)
    payload[2] = 0x00; // frame num (not used)
    payload[3] = 1; // length of the params
    payload[4] = 5; // command code
    // set params here
    payload[5] = value;
    // send the message
    sendOutgoingMessage(payload, 16);
}
예제 #3
0
void JArduino::sendinterruptNotification(uint8_t interrupt) {
    payload[0] = 0x01; // source addr (not used)
    payload[1] = 0x00; // target addr (not used)
    payload[2] = 0x00; // frame num (not used)
    payload[3] = 1; // length of the params
    payload[4] = 23; // command code
    // set params here
    payload[5] = interrupt;
    // send the message
    sendOutgoingMessage(payload, 16);
}
예제 #4
0
void JArduino::sendanalogReadResult(uint16_t value) {
   payload[0] = 0x01; // source addr (not used)
   payload[1] = 0x00; // target addr (not used)
   payload[2] = 0x00; // frame num (not used)
   payload[3] = 2; // length of the params
   payload[4] = 8; // command code
   // set params here
   payload[5] = value >> 8 & 0x00ff; payload[6] = value & 0x00ff;
   // send the message
   sendOutgoingMessage(payload, 16);
}
예제 #5
0
void JArduino::sendpulseInResult(unsigned long value) {
   payload[0] = 0x01; // source addr (not used)
   payload[1] = 0x00; // target addr (not used)
   payload[2] = 0x00; // frame num (not used)
   payload[3] = 4; // length of the params
   payload[4] = 13; // command code
   // set params here
   payload[5] = value >> 24 & 0x00ff; payload[6] = value >> 16 & 0x00ff; payload[7] = value >> 8 & 0x00ff; payload[8] = value & 0x00ff;
   // send the message
   sendOutgoingMessage(payload, 16);
}
예제 #6
0
void Connection::sendOutgoingMessages()
{
    if (!m_isConnected)
        return;

    Vector<OutgoingMessage> outgoingMessages;

    {
        MutexLocker locker(m_outgoingMessagesLock);
        m_outgoingMessages.swap(outgoingMessages);
    }

    // Send messages.
    for (size_t i = 0; i < outgoingMessages.size(); ++i)
        sendOutgoingMessage(outgoingMessages[i].messageID(), std::auto_ptr<ArgumentEncoder>(outgoingMessages[i].arguments()));
}
예제 #7
0
void Connection::sendOutgoingMessages()
{
    if (!canSendOutgoingMessages())
        return;

    while (true) {
        OutgoingMessage message;
        {
            MutexLocker locker(m_outgoingMessagesLock);
            if (m_outgoingMessages.isEmpty())
                break;
            message = m_outgoingMessages.takeFirst();
        }

        if (!sendOutgoingMessage(message.messageID(), adoptPtr(message.arguments())))
            break;
    }
}
예제 #8
0
void Connection::sendOutgoingMessages()
{
    if (!canSendOutgoingMessages())
        return;

    while (true) {
        std::unique_ptr<MessageEncoder> message;

        {
            MutexLocker locker(m_outgoingMessagesLock);
            if (m_outgoingMessages.isEmpty())
                break;
            message = m_outgoingMessages.takeFirst();
        }

        if (!sendOutgoingMessage(std::move(message)))
            break;
    }
}