Specify protocol version per-packet. Not used yet, but will be for the file transfer extension
This commit is contained in:
parent
27a8418f21
commit
605bb9d26f
|
@ -28,6 +28,7 @@
|
||||||
#define EM_RETRANSMIT_TIME (1000 + random_byte() * 2)
|
#define EM_RETRANSMIT_TIME (1000 + random_byte() * 2)
|
||||||
#define EM_MAX_RETRANSMIT 5
|
#define EM_MAX_RETRANSMIT 5
|
||||||
|
|
||||||
|
// Version 0
|
||||||
#define EMT_SPEAK_VERSION 0
|
#define EMT_SPEAK_VERSION 0
|
||||||
#define EMT_STATUS_REQUEST 1
|
#define EMT_STATUS_REQUEST 1
|
||||||
#define EMT_STATUS 2
|
#define EMT_STATUS 2
|
||||||
|
@ -272,7 +273,7 @@ void send_frame(const unsigned char *frame, size_t frame_length) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void write_headers(unsigned char frame[14], const unsigned char destination_mac[6], unsigned char packet_type) {
|
void write_headers(unsigned char frame[14], const unsigned char destination_mac[6], unsigned char version, unsigned char packet_type) {
|
||||||
// Destination MAC
|
// Destination MAC
|
||||||
memcpy(&frame[0], destination_mac, 6);
|
memcpy(&frame[0], destination_mac, 6);
|
||||||
|
|
||||||
|
@ -284,7 +285,7 @@ void write_headers(unsigned char frame[14], const unsigned char destination_mac[
|
||||||
frame[13] = 0x7a;
|
frame[13] = 0x7a;
|
||||||
|
|
||||||
// Ethermess version
|
// Ethermess version
|
||||||
frame[14] = EM_PROTOCOL_VERSION;
|
frame[14] = version;
|
||||||
|
|
||||||
// Ethermess packet type
|
// Ethermess packet type
|
||||||
frame[15] = packet_type;
|
frame[15] = packet_type;
|
||||||
|
@ -293,7 +294,7 @@ void write_headers(unsigned char frame[14], const unsigned char destination_mac[
|
||||||
void send_speak_version(const unsigned char destination[6]) {
|
void send_speak_version(const unsigned char destination[6]) {
|
||||||
unsigned char frame[14 + 2 + 1];
|
unsigned char frame[14 + 2 + 1];
|
||||||
|
|
||||||
write_headers(frame, destination, EMT_SPEAK_VERSION);
|
write_headers(frame, destination, 0, EMT_SPEAK_VERSION);
|
||||||
|
|
||||||
// Version to speak
|
// Version to speak
|
||||||
frame[16] = EM_PROTOCOL_VERSION;
|
frame[16] = EM_PROTOCOL_VERSION;
|
||||||
|
@ -304,7 +305,7 @@ void send_speak_version(const unsigned char destination[6]) {
|
||||||
void send_status_request(const unsigned char destination[6]) {
|
void send_status_request(const unsigned char destination[6]) {
|
||||||
unsigned char frame[14 + 2];
|
unsigned char frame[14 + 2];
|
||||||
|
|
||||||
write_headers(frame, destination, EMT_STATUS_REQUEST);
|
write_headers(frame, destination, 0, EMT_STATUS_REQUEST);
|
||||||
|
|
||||||
send_frame(frame, sizeof(frame));
|
send_frame(frame, sizeof(frame));
|
||||||
}
|
}
|
||||||
|
@ -312,7 +313,7 @@ void send_status_request(const unsigned char destination[6]) {
|
||||||
void send_status(const unsigned char destination[6]) {
|
void send_status(const unsigned char destination[6]) {
|
||||||
unsigned char frame[14 + 2 + 1 + 1 + own_nick_length];
|
unsigned char frame[14 + 2 + 1 + 1 + own_nick_length];
|
||||||
|
|
||||||
write_headers(frame, destination, EMT_STATUS);
|
write_headers(frame, destination, 0, EMT_STATUS);
|
||||||
|
|
||||||
// Status
|
// Status
|
||||||
frame[16] = own_status;
|
frame[16] = own_status;
|
||||||
|
@ -329,7 +330,7 @@ void send_status(const unsigned char destination[6]) {
|
||||||
void send_msgid_request(const unsigned char destination[6]) {
|
void send_msgid_request(const unsigned char destination[6]) {
|
||||||
unsigned char frame[14 + 2];
|
unsigned char frame[14 + 2];
|
||||||
|
|
||||||
write_headers(frame, destination, EMT_MSGID_REQUEST);
|
write_headers(frame, destination, 0, EMT_MSGID_REQUEST);
|
||||||
|
|
||||||
send_frame(frame, sizeof(frame));
|
send_frame(frame, sizeof(frame));
|
||||||
}
|
}
|
||||||
|
@ -337,7 +338,7 @@ void send_msgid_request(const unsigned char destination[6]) {
|
||||||
void send_msgid(const unsigned char destination[6]) {
|
void send_msgid(const unsigned char destination[6]) {
|
||||||
unsigned char frame[14 + 2 + 2];
|
unsigned char frame[14 + 2 + 2];
|
||||||
|
|
||||||
write_headers(frame, destination, EMT_MSGID);
|
write_headers(frame, destination, 0, EMT_MSGID);
|
||||||
|
|
||||||
// Look up destination in the ID cache
|
// Look up destination in the ID cache
|
||||||
ssize_t cache_index = msgid_cache_lookup(destination);
|
ssize_t cache_index = msgid_cache_lookup(destination);
|
||||||
|
@ -366,7 +367,7 @@ void send_msgid(const unsigned char destination[6]) {
|
||||||
void send_message(void) {
|
void send_message(void) {
|
||||||
unsigned char frame[14 + 2 + 2 + 2 + own_message_length];
|
unsigned char frame[14 + 2 + 2 + 2 + own_message_length];
|
||||||
|
|
||||||
write_headers(frame, own_message_destination_mac, EMT_MESSAGE);
|
write_headers(frame, own_message_destination_mac, 0, EMT_MESSAGE);
|
||||||
|
|
||||||
// Message ID
|
// Message ID
|
||||||
frame[16] = own_message_msgid >> 8;
|
frame[16] = own_message_msgid >> 8;
|
||||||
|
@ -385,7 +386,7 @@ void send_message(void) {
|
||||||
void send_ack(const unsigned char destination[6], uint16_t msgid) {
|
void send_ack(const unsigned char destination[6], uint16_t msgid) {
|
||||||
unsigned char frame[14 + 2 + 2];
|
unsigned char frame[14 + 2 + 2];
|
||||||
|
|
||||||
write_headers(frame, destination, EMT_ACK);
|
write_headers(frame, destination, 0, EMT_ACK);
|
||||||
|
|
||||||
// Message ID
|
// Message ID
|
||||||
frame[16] = msgid >> 8;
|
frame[16] = msgid >> 8;
|
||||||
|
|
Loading…
Reference in New Issue