Commit 41d6d26f authored by Andreas Schmidt's avatar Andreas Schmidt
Browse files

Sequence numbers for redundancy are properly set.

parent d3b878b5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
find_package (Threads)

add_subdirectory(prrt)
add_library(PRRT defines.h prrt/socket.c prrt/block.c prrt/block.h prrt/packet.c prrt/packet.h prrt/processes/feedback_receiver.c prrt/processes/feedback_receiver.h prrt/processes/data_transmitter.c prrt/processes/data_transmitter.h prrt/coding_params.c prrt/coding_params.h prrt/vdmcode/block_code.c prrt/vdmcode/block_code.h prrt/coding_params.c prrt/coding_params.h prrt/collections/in_buffer.c prrt/collections/in_buffer.h)
add_library(PRRT defines.h prrt/socket.c prrt/block.c prrt/block.h prrt/packet.c prrt/packet.h prrt/processes/feedback_receiver.c prrt/processes/feedback_receiver.h prrt/processes/data_transmitter.c prrt/processes/data_transmitter.h prrt/coding_params.c prrt/coding_params.h prrt/vdmcode/block_code.c prrt/vdmcode/block_code.h prrt/coding_params.c prrt/coding_params.h prrt/collections/in_buffer.c prrt/collections/in_buffer.h prrt/stores/forward_packet_table.c prrt/stores/forward_packet_table.h)
add_library(UTIL defines.h util/common.c util/common.h util/list.c util/list.h)

add_executable(sender sender.c)
+8 −5
Original line number Diff line number Diff line
@@ -45,11 +45,11 @@ PrrtPacket *PrrtBlock_get_first_data(PrrtBlock *block_ptr) {
    return List_shift(block_ptr->data_blocks);
}

void PrrtBlock_code(PrrtBlock *block_ptr) {
void PrrtBlock_code(PrrtBlock *block_ptr, uint16_t *seqno) {
    int j = 0, m = 0;
    int k = block_ptr->coding_params.k;
    int n = block_ptr->coding_params.n;
    int r = block_ptr->coding_params.r;
    uint8_t k = block_ptr->coding_params.k;
    uint8_t n = block_ptr->coding_params.n;
    uint8_t r = block_ptr->coding_params.r;
    uint8_t index = 0;
    uint32_t length = block_ptr->largest_data_length;

@@ -75,11 +75,14 @@ void PrrtBlock_code(PrrtBlock *block_ptr) {
        fec[j] = malloc(sizeof(gf) * length);
        memset(fec[j], 0, sizeof(gf) * length);
        PrrtCoder_encode(coder, src, fec[j], j+k, length); // gf **src, gf *fec, int index, int sz
        PrrtPacket* red_packet_ptr = PrrtPacket_create_redundancy_packet(0, (void*) fec[j], length, 0, index,  base_seqno, block_ptr->coding_params);
        PrrtPacket* red_packet_ptr = PrrtPacket_create_redundancy_packet(0, (void*) fec[j], length, *seqno, index,  base_seqno, block_ptr->coding_params);
        *seqno = *seqno+1 % SEQNO_SPACE;
        PrrtPacket_print(red_packet_ptr);
        PrrtBlock_insert_redundancy_packet(block_ptr, red_packet_ptr);
    }

    block_ptr->is_coded = TRUE;

    clear_list(src, k);
    free(src);
}
+1 −1
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ int PrrtBlock_ready(const PrrtBlock *block_ptr);

PrrtPacket *PrrtBlock_get_first_data(PrrtBlock *block_ptr);

void PrrtBlock_code(PrrtBlock *block_ptr);
void PrrtBlock_code(PrrtBlock *block_ptr, uint16_t *seqno);

PrrtPacket *PrrtBlock_get_first_red_data(PrrtBlock *block_ptr);

+0 −1
Original line number Diff line number Diff line
#include "in_buffer.h"
    
 No newline at end of file
+2 −0
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ typedef struct {
    uint32_t payload_len;
} PrrtPacket;

#define SEQNO_SPACE 66536 // 2**16 as seqno is uint16_t

#define PRRT_PACKET_DATA_HEADER_SIZE 12
typedef struct {
    uint32_t timestamp;
Loading