diff options
Diffstat (limited to 'Transceiver52M/proto_trxd.h')
-rw-r--r-- | Transceiver52M/proto_trxd.h | 48 |
1 files changed, 36 insertions, 12 deletions
diff --git a/Transceiver52M/proto_trxd.h b/Transceiver52M/proto_trxd.h index 9da18db..2e5ad52 100644 --- a/Transceiver52M/proto_trxd.h +++ b/Transceiver52M/proto_trxd.h @@ -1,28 +1,52 @@ #pragma once #include <stdint.h> +#include <stdbool.h> +#include <unistd.h> +#include <math.h> + #include <osmocom/core/endian.h> +#include "debug.h" + +#define MAX_RX_BURST_BUF_SIZE 444 /* 444 = EDGE_BURST_NBITS */ + +struct trx_ul_burst_ind { + float rx_burst[MAX_RX_BURST_BUF_SIZE]; /* soft bits normalized 0..1 */ + unsigned nbits; // number of symbols per slot in rxBurst, not counting guard periods + uint32_t fn; // TDMA frame number + uint8_t tn; // TDMA time-slot number + double rssi; // in dBFS + double toa; // in symbols + double noise; // noise level in dBFS + bool idle; // true if no valid burst is included +}; + +bool trxd_send_burst_ind_v0(size_t chan, int fd, const struct trx_ul_burst_ind *bi); + +/* The latest supported TRXD header format version */ +#define TRX_DATA_FORMAT_VER 0 + struct trxd_hdr_common { #if OSMO_IS_LITTLE_ENDIAN - uint8_t tn:3, - reserved:1, - version:4; + uint8_t tn:3, + reserved:1, + version:4; #elif OSMO_IS_BIG_ENDIAN - uint8_t version:4, - reserved:1, - tn:3; + uint8_t version:4, + reserved:1, + tn:3; #endif - uint32_t fn; /* big endian */ + uint32_t fn; /* big endian */ } __attribute__ ((packed)); struct trxd_hdr_v0_specific { - uint8_t rssi; - uint16_t toa; /* big endian */ + uint8_t rssi; + uint16_t toa; /* big endian */ } __attribute__ ((packed)); struct trxd_hdr_v0 { - struct trxd_hdr_common common; - struct trxd_hdr_v0_specific v0; - uint8_t soft_bits[0]; + struct trxd_hdr_common common; + struct trxd_hdr_v0_specific v0; + uint8_t soft_bits[0]; } __attribute__ ((packed)); |