dl-fldigi/src/include/ssdv_rx.h

76 wiersze
1.3 KiB
C

#include <time.h>
#ifndef _SSDV_RX_H
#define _SSDV_RX_H
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Box.H>
#include <FL/Fl_Image.H>
#include <FL/Fl_Progress.H>
#include <FL/Fl_Scroll.H>
2010-10-03 00:19:41 +00:00
#include "ssdv.h"
class ssdv_rx : public Fl_Double_Window
{
private:
/* UI */
Fl_Scroll *scroll;
Fl_Box *box;
Fl_RGB_Image *flrgb;
Fl_Box *flimageid; /* Current Image ID */
Fl_Box *flreceived;
2012-03-04 18:21:54 +00:00
Fl_Box *flcallsign;
Fl_Box *flsize;
Fl_Box *flmissing;
Fl_Box *flfixes;
Fl_Progress *flprogress;
2010-10-03 00:19:41 +00:00
/* RX buffer */
2010-10-03 00:19:41 +00:00
static const int BUFFER_SIZE = SSDV_PKT_SIZE * 2;
uint8_t *buffer;
uint8_t *erasures;
int bc;
int bl;
2010-10-03 00:19:41 +00:00
/* Packet and RGB image buffer */
uint8_t *packets;
int packets_len;
uint8_t *image;
size_t image_len;
/* Last packet details */
2010-10-03 00:19:41 +00:00
ssdv_packet_info_t pkt_info;
2010-10-03 00:19:41 +00:00
/* Image details */
time_t image_timestamp;
2012-03-04 18:21:54 +00:00
uint32_t image_callsign;
2010-10-03 00:19:41 +00:00
int image_id;
int image_width;
int image_height;
2012-03-04 18:21:54 +00:00
int image_mcu_mode;
int image_received_packets;
2010-10-03 00:19:41 +00:00
int image_lost_packets;
2010-10-04 18:59:42 +00:00
int image_errors;
/* Private functions */
void feed_buffer(uint8_t byte, uint8_t erasure);
2010-04-23 21:44:00 +00:00
void clear_buffer();
void upload_packet(int fixes);
2010-10-03 00:19:41 +00:00
void save_image(uint8_t *jpeg, size_t length);
void render_image(uint8_t *jpeg, size_t length);
public:
ssdv_rx(int w, int h, const char *title);
~ssdv_rx();
2010-04-23 21:44:00 +00:00
void put_byte(uint8_t byte, int lost);
};
#endif