END_TEST START_TEST (test_enqueue) { CanMessage message = {&bus, 42}; enqueueCanMessage(&message, 0x123456); ck_assert_int_eq(1, QUEUE_LENGTH(CanMessage, &message.bus->sendQueue)); }
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); }
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)); }
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; }