1 void ssdv_encode_picture() 2 { 3 char copy_paste[24]="cp ssdv_temp ssdv_ax25\0"; // Erstelle Kopie des gesendeten Bildes 4 system(copy_paste); 5 // Codieren Bild nach SSDV --> basierend auf Philip Herons SSDV Open Source Projekt 6 int c; 7 FILE *fin=NULL; 8 FILE *fout=NULL; 9 fin=fopen("ssdv_ax25","rb"); 10 fout=fopen("SSDV_DATA_AX25","wb"); 11 char type = SSDV_TYPE_NORMAL; 12 char callsign[6]="DN4GB "; 13 ssdv_t ssdv; 14 uint8_t pkt[SSDV_PKT_SIZE], b[128]; 15 ssdv_enc_init(&ssdv, type, callsign, ssdv_index); // Header vorbereiten (Rufzeichen, Nummer) 16 ssdv_enc_set_buffer(&ssdv, pkt); // Buffer vorbereiten 17 while(1) 18 { 19 while((c = ssdv_enc_get_packet(&ssdv)) == SSDV_FEED_ME) 20 { 21 size_t r = fread(b, 1, 128, fin); // lese zu kodierendes Bild ein 22 ssdv_enc_feed(&ssdv, b, r); // codiere Bilddaten nach SSDV 23 } 24 if(c==SSDV_EOI) 25 { 26 break; // Datei vollständig umgewandelt 27 } 28 fwrite(pkt, 1, SSDV_PKT_SIZE, fout); // schreibe codierete Daten in Datei 29 } 30 fclose(fin); 31 fclose(fout); 32 }