Ejemplo n.º 1
0
END_TEST

START_TEST (test_enqueue)
{
    CanMessage message = {&bus, 42};
    enqueueCanMessage(&message, 0x123456);

    ck_assert_int_eq(1, QUEUE_LENGTH(CanMessage, &message.bus->sendQueue));
}
Ejemplo n.º 2
0
END_TEST

START_TEST (test_swaps_byte_order)
{
    CanMessage message = {&bus, 42};
    enqueueCanMessage(&message, 0x123456);

    CanMessage queuedMessage = QUEUE_POP(CanMessage, &message.bus->sendQueue);
    ck_assert_int_eq(queuedMessage.data, 0x5634120000000000LLU);
}
Ejemplo n.º 3
0
void receiveRawWriteRequest(cJSON* idObject, cJSON* root) {
    uint32_t id = idObject->valueint;
    cJSON* dataObject = cJSON_GetObjectItem(root, "data");
    if(dataObject == NULL) {
        debug("Raw write request missing data", id);
        return;
    }

    char* dataString = dataObject->valuestring;
    char* end;
    // TODO hard coding bus 0 right now, but it should support sending on either
    CanMessage message = {&getCanBuses()[0], id};
    enqueueCanMessage(&message, strtoull(dataString, &end, 16));
}
Ejemplo n.º 4
0
bool sendCanSignal(CanSignal* signal, cJSON* value,
        uint64_t (*writer)(CanSignal*, CanSignal*, int, cJSON*, bool*),
        CanSignal* signals, int signalCount) {
    if(writer == NULL) {
        if(signal->stateCount > 0) {
            writer = stateWriter;
        } else {
            writer = numberWriter;
        }
    }

    bool send = true;
    uint64_t data = writer(signal, signals, signalCount, value, &send);
    if(send) {
        enqueueCanMessage(signal->message, data);
    }
    return send;
}