Change handling of msgid output from backend
This commit is contained in:
parent
a534cacd0e
commit
c19d05c64e
2 changed files with 25 additions and 17 deletions
|
@ -425,6 +425,15 @@ void writeallx(int fd, const void *buf, size_t length) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void writeallx_u16(int fd, uint16_t value) {
|
||||||
|
// Write these little-endian (native for x86) instead of network
|
||||||
|
// byte order
|
||||||
|
unsigned char buf[2];
|
||||||
|
buf[0] = value & 0xff;
|
||||||
|
buf[1] = value >> 8;
|
||||||
|
writeallx(fd, buf, sizeof(buf));
|
||||||
|
}
|
||||||
|
|
||||||
bool check_utf8(const unsigned char *data, size_t data_length, bool newline_allowed);
|
bool check_utf8(const unsigned char *data, size_t data_length, bool newline_allowed);
|
||||||
|
|
||||||
void read_status(void) {
|
void read_status(void) {
|
||||||
|
@ -485,10 +494,6 @@ void read_command(void) {
|
||||||
send_status_request(mac);
|
send_status_request(mac);
|
||||||
} else if (cmd == 'S') {
|
} else if (cmd == 'S') {
|
||||||
read_status();
|
read_status();
|
||||||
} else if (cmd == 'i') {
|
|
||||||
unsigned char mac[6];
|
|
||||||
readallx(0, mac, sizeof(mac));
|
|
||||||
send_msgid_request(mac);
|
|
||||||
} else if (cmd == 'm') {
|
} else if (cmd == 'm') {
|
||||||
read_message();
|
read_message();
|
||||||
} else {
|
} else {
|
||||||
|
@ -704,17 +709,6 @@ void handle_msgid(const unsigned char source_mac[6], const unsigned char *data,
|
||||||
msgid_cache[cache_index].next_send = msgid;
|
msgid_cache[cache_index].next_send = msgid;
|
||||||
msgid_cache[cache_index].know_send = true;
|
msgid_cache[cache_index].know_send = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
char mac[18];
|
|
||||||
format_mac(source_mac, mac);
|
|
||||||
|
|
||||||
if (printf("%s awaits message ID %" PRIu16 "\n", mac, msgid_cache[cache_index].next_send) == 0) {
|
|
||||||
err(1, "printf");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fflush(stdout) == EOF) {
|
|
||||||
err(1, "fflush");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void handle_message(const unsigned char source_mac[6], const unsigned char *data, size_t data_length) {
|
void handle_message(const unsigned char source_mac[6], const unsigned char *data, size_t data_length) {
|
||||||
|
@ -977,7 +971,15 @@ void eventloop(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (own_message_send_state == SENDING) {
|
if (own_message_send_state == SENDING) {
|
||||||
|
// Type of event: msgid for a message
|
||||||
|
writeallx(1, "i", 1);
|
||||||
|
|
||||||
|
// Msgid
|
||||||
|
writeallx_u16(1, own_message_msgid);
|
||||||
|
|
||||||
|
// Send message
|
||||||
send_message();
|
send_message();
|
||||||
|
|
||||||
// Wait around 1 to 1.5 before sending again
|
// Wait around 1 to 1.5 before sending again
|
||||||
next_retransmission = ms_in_future(EM_RETRANSMIT_TIME);
|
next_retransmission = ms_in_future(EM_RETRANSMIT_TIME);
|
||||||
retransmission_count = 0;
|
retransmission_count = 0;
|
||||||
|
|
10
ethermess.py
10
ethermess.py
|
@ -59,7 +59,7 @@ def handle_user_command(backend, command):
|
||||||
writeall(backend, b'm' + mac + bytes([len(message) >> 8, len(message) & 0xff]) + message)
|
writeall(backend, b'm' + mac + bytes([len(message) >> 8, len(message) & 0xff]) + message)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
print('s - request status, i - request msgid, m - send message, ^D - quit')
|
print('s - request status, m - send message, ^D - quit')
|
||||||
|
|
||||||
def eventloop(proc):
|
def eventloop(proc):
|
||||||
# Create unbuffered version of stdin
|
# Create unbuffered version of stdin
|
||||||
|
@ -86,6 +86,12 @@ def eventloop(proc):
|
||||||
|
|
||||||
print('%s (%s) ~%s' % (format_mac(source_mac), format_status(status), nick.decode('utf-8')))
|
print('%s (%s) ~%s' % (format_mac(source_mac), format_status(status), nick.decode('utf-8')))
|
||||||
|
|
||||||
|
elif event_type == b'i':
|
||||||
|
# Msgid for message
|
||||||
|
msgid_bytes = readall(proc.stdout, 2)
|
||||||
|
msgid = (msgid_bytes[1] << 8) | msgid_bytes[0]
|
||||||
|
print('Msgid: %i' % msgid)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
# Not sth we handle yet
|
# Not sth we handle yet
|
||||||
data = proc.stdout.read(1023)
|
data = proc.stdout.read(1023)
|
||||||
|
@ -134,7 +140,7 @@ def main():
|
||||||
|
|
||||||
print('Own mac: %s' % format_mac(mac))
|
print('Own mac: %s' % format_mac(mac))
|
||||||
|
|
||||||
print('s - request status, i - request msgid, m - send message, ^D - quit')
|
print('s - request status, m - send message, ^D - quit')
|
||||||
|
|
||||||
eventloop(proc)
|
eventloop(proc)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue