diff --git a/common/include/message.h b/common/include/message.h index 0ee2b9ac3e0e8db57945c9a60b9f934e057563ca..4805ababde0951ed21f970ab4af2c2dbf4c5bfae 100644 --- a/common/include/message.h +++ b/common/include/message.h @@ -15,7 +15,7 @@ typedef s64 int64_t; #include <stdint.h> #endif -#define MAX_MESSAGE_DATA_SIZE 4096 +#define MAX_MESSAGE_DATA_SIZE 8 enum message_data_type { INT8, diff --git a/kernel/kmod.c b/kernel/kmod.c index d36d71b35f67fbc0905942e3c69fbcf1d41d2432..ab812ef4046c2068180645606d92eb90f41b6d33 100644 --- a/kernel/kmod.c +++ b/kernel/kmod.c @@ -35,6 +35,11 @@ static atomic_t wake_counter = ATOMIC_INIT(0); static int slot = 0; +typedef struct packet { + message_t data; + uint32_t crc; +} packet_t; + static int device_open(struct inode *inode, struct file *file) { return 0; @@ -110,10 +115,12 @@ static int timed_thread_fn(void *args) { atomic_dec(&wake_counter); if (slot == 0) { - uint32_t crc = calculate_crc32(&message, sizeof(message)); + packet_t packet; + + packet.data = *message; + packet.crc = calculate_crc32(&packet.data, sizeof(&packet.data)); - send_data(&message, sizeof(message)); - send_data(&crc, sizeof(uint32_t)); + send_data(&packet, sizeof(packet)); } slot = (slot + 1) % SLOTS;