Skip to content

Commit 286d5f3

Browse files
committed
Updated node/message ID handling
1 parent baa52b6 commit 286d5f3

2 files changed

Lines changed: 24 additions & 10 deletions

File tree

src/NodeControllerCore.cpp

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ twai_message_t NodeControllerCore::create_message(uint32_t id, uint64_t *data) {
1313
return message;
1414
}
1515

16-
bool NodeControllerCore::Init(std::function<void(uint16_t nodeID, uint16_t messageID, uint64_t data)> onMessageReceived, uint16_t nodeID)
16+
bool NodeControllerCore::Init(std::function<void(uint8_t nodeID, uint16_t messageID, uint64_t data)> onMessageReceived, uint8_t nodeID)
1717
{
1818
this->debug = debug;
1919
this->onMessageReceived = onMessageReceived;
@@ -161,20 +161,34 @@ void NodeControllerCore::rx_queue_event() {
161161
while(1){
162162
if(xQueueReceive(rx_queue, &message, RX_TX_BLOCK_TIME) == pdTRUE){
163163
uint64_t data = 0;
164-
uint16_t nodeID = 0;
164+
uint8_t nodeID = 0;
165165
uint16_t messageID = 0;
166166
memcpy(&data, message.data, 8);
167-
Serial.println(message.identifier, HEX);
168-
nodeID = message.identifier >> 15;
169-
messageID = message.identifier & 0x7FFF;
167+
nodeID = message.identifier >> 21;
168+
messageID = message.identifier >> 5;
169+
170+
Serial.print("Message received: ");
171+
Serial.print("Node ID: ");
172+
Serial.print(nodeID, HEX);
173+
Serial.print(" Message ID: ");
174+
Serial.print(messageID, HEX);
175+
Serial.print(" Data: ");
176+
Serial.println(data, HEX);
177+
170178
this->onMessageReceived(nodeID,messageID, data);
171179
}
172180
}
173181
}
174182

175183
void NodeControllerCore::sendMessage(uint16_t messageID, uint64_t *data) {
176-
uint32_t id = (this->nodeID << 15) | messageID;
177-
Serial.println(id, HEX);
184+
uint32_t id = 0;
185+
id = ((this->nodeID << 24) | (messageID << 8)) >> 3;
186+
Serial.print("Sending message with Node ID: ");
187+
Serial.print(nodeID, HEX);
188+
Serial.print(" Message ID: ");
189+
Serial.print(messageID, HEX);
190+
Serial.print(" Data: ");
191+
Serial.println(*data, HEX);
178192
twai_message_t message = create_message(id, data);
179193
xQueueSend(tx_queue, &message, portMAX_DELAY);
180194
}

src/NodeControllerCore.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,15 @@ class NodeControllerCore
3434

3535
QueueHandle_t rx_queue;
3636

37-
std::function<void(uint16_t nodeID, uint16_t messageID, uint64_t data)> onMessageReceived;
37+
std::function<void(uint8_t nodeID, uint16_t messageID, uint64_t data)> onMessageReceived;
3838

3939
public:
4040
bool debug;
4141

4242
NodeControllerCore();
43-
bool Init(std::function<void(uint16_t nodeID, uint16_t messageID, uint64_t data)> onMessageReceived, uint16_t nodeID);
43+
bool Init(std::function<void(uint8_t nodeID, uint16_t messageID, uint64_t data)> onMessageReceived, uint8_t nodeID);
4444
void sendMessage(uint16_t messageID, uint64_t *data);
4545

46-
uint16_t nodeID = 0;
46+
uint8_t nodeID = 0;
4747

4848
};

0 commit comments

Comments
 (0)