Skip to content

f4goh/DSTAR

Repository files navigation

#DSTAR Arduino header Encoding and decoding library# F4GOH Anthony f4goh@orange.fr

November 2015

Use this library freely with Arduino 1.6.5

Installation

To use the DSTAR library:

  • Go to https://github.com/f4goh/DSTAR, click the Download ZIP button and save the ZIP file to a convenient location on your PC.
  • Uncompress the downloaded file. This will result in a folder containing all the files for the library, that has a name that includes the branch name, usually DSTAR-master.
  • Rename the folder to DSTAR.
  • Copy the renamed folder to the Arduino sketchbook\libraries folder.

Usage notes

To use the DSTAR library, see /exemples/Radio_frame_header.ino.

CMX589 DSTAR Modem soon...

73

here is the results :

/*
Serial Monitor results :

Data to encode :
@  F4GOH  GF4GOH  BCQCQCQ  F4GOH   ID51

Add CRC :crc : A3BC
Data to encode :
0x40,0x0,0x0,0x46,0x34,0x47,0x4F,0x48,0x20,0x20,0x47,0x46,0x34,0x47,0x4F,0x48,0x20,0x20,0x42,0x43,0x51,0x43,0x51,0x43,0x51,0x20,0x20,0x46,0x34,0x47,0x4F,0x48,0x20,0x20,0x20,0x49,0x44,0x35,0x31,0xBC,0xA3,0x0,

Data convolued :
0x0,0xE,0xC0,0x0,0x0,0x0,0x35,0xCE,0xCE,0x17,0xD9,0xCE,0x1A,0x7E,0xC3,0xBE,0xC0,0x3B,0x0,0x3B,0xD9,0xCE,0xF5,0xCE,0xCE,0x17,0xD9,0xCE,0x1A,0x7E,0xC3,0xBE,0xC0,0x3B,0x0,0x3B,0x3B,0xE,0x17,0xE,0x2C,0xE2,0x17,0xE,0x2C,0xE2,0x17,0xE,0x2C,0xE2,0xC0,0x3B,0x0,0x3B,0x35,0xCE,0xCE,0x17,0xD9,0xCE,0x1A,0x7E,0xC3,0xBE,0xC0,0x3B,0x0,0x3B,0x0,0x3B,0xEF,0xBE,0xCE,0xCE,0x22,0x17,0xEC,0xD7,0xD,0xA4,0x67,0x38,0xB0,0x0,

Data interleaving :
0x5,0xE1,0x4,0x80,0x1E,0x10,0x8,0x24,0x19,0xE5,0x13,0xC1,0xA7,0xD5,0xD,0xDC,0xCD,0xB3,0x5C,0x6B,0x4E,0x1D,0xFF,0x5D,0xC3,0x3,0xA7,0x16,0x35,0x20,0xB5,0xF3,0xD0,0xB,0xDC,0xB,0x24,0x8B,0x71,0xBE,0x11,0xA1,0xBA,0x6E,0x3B,0xD5,0x35,0xE5,0x3E,0xAB,0xAE,0xAE,0x9,0xC0,0x89,0x8B,0xBA,0x4B,0x95,0x77,0xC9,0x70,0xC1,0x15,0x91,0x68,0x36,0xC2,0x2A,0x37,0xD3,0x75,0x6,0x29,0x66,0x2C,0xF5,0x75,0xF7,0x87,0x4C,0x26,0x30,0x0,

Data scrambling :
0xB,0x13,0xCD,0x82,0x38,0x3E,0xBE,0x28,0xCD,0x2,0xA7,0xEB,0x5D,0x84,0xB5,0x22,0xD0,0x56,0xCE,0x6F,0x2,0x40,0x93,0x44,0x6A,0xCC,0xCF,0x43,0xC1,0x83,0xC4,0xF,0xEB,0xC0,0xF8,0x3,0xBC,0x31,0xA9,0x8D,0x42,0x3F,0x6A,0xC5,0xD2,0x93,0xD6,0x1D,0x49,0x3D,0xE6,0xBF,0x38,0xB5,0x39,0xED,0x1D,0x76,0x34,0x20,0x1B,0xFD,0x6,0xE5,0x7E,0x44,0xA6,0xE0,0x48,0xDC,0xB3,0xB8,0x48,0x52,0x24,0x83,0x50,0x6E,0x78,0x66,0x92,0x7F,0x10,0x0,

Data de-scrambling :
0x5,0xE1,0x4,0x80,0x1E,0x10,0x8,0x24,0x19,0xE5,0x13,0xC1,0xA7,0xD5,0xD,0xDC,0xCD,0xB3,0x5C,0x6B,0x4E,0x1D,0xFF,0x5D,0xC3,0x3,0xA7,0x16,0x35,0x20,0xB5,0xF3,0xD0,0xB,0xDC,0xB,0x24,0x8B,0x71,0xBE,0x11,0xA1,0xBA,0x6E,0x3B,0xD5,0x35,0xE5,0x3E,0xAB,0xAE,0xAE,0x9,0xC0,0x89,0x8B,0xBA,0x4B,0x95,0x77,0xC9,0x70,0xC1,0x15,0x91,0x68,0x36,0xC2,0x2A,0x37,0xD3,0x75,0x6,0x29,0x66,0x2C,0xF5,0x75,0xF7,0x87,0x4C,0x26,0x30,0x0,

Data de-interleaving :
0x0,0xE,0xC0,0x0,0x0,0x0,0x35,0xCE,0xCE,0x17,0xD9,0xCE,0x1A,0x7E,0xC3,0xBE,0xC0,0x3B,0x0,0x3B,0xD9,0xCE,0xF5,0xCE,0xCE,0x17,0xD9,0xCE,0x1A,0x7E,0xC3,0xBE,0xC0,0x3B,0x0,0x3B,0x3B,0xE,0x17,0xE,0x2C,0xE2,0x17,0xE,0x2C,0xE2,0x17,0xE,0x2C,0xE2,0xC0,0x3B,0x0,0x3B,0x35,0xCE,0xCE,0x17,0xD9,0xCE,0x1A,0x7E,0xC3,0xBE,0xC0,0x3B,0x0,0x3B,0x0,0x3B,0xEF,0xBE,0xCE,0xCE,0x22,0x17,0xEC,0xD7,0xD,0xA4,0x67,0x38,0xB0,0x0,

Data decoded(viterbi) :
0x40,0x0,0x0,0x46,0x34,0x47,0x4F,0x48,0x20,0x20,0x47,0x46,0x34,0x47,0x4F,0x48,0x20,0x20,0x42,0x43,0x51,0x43,0x51,0x43,0x51,0x20,0x20,0x46,0x34,0x47,0x4F,0x48,0x20,0x20,0x20,0x49,0x44,0x35,0x31,0xBC,0xA3,0x0,

Nb errors :0
Checking crc : 1
Original data :@  F4GOH  GF4GOH  BCQCQCQ  F4GOH   ID51¼£
*/

Have fun with Viterbi
Download PDF : Viterbi how to

To Understand pdf, take a look at https://github.com/f4goh/CONVOLUTION

#include <DSTAR.h>

#define pinLed 13   //Output led

#define BUFSIZE 42          //size of bufferTxRx

//format :  flag1,flag2,flag3,RCV Call,Send Call,Your Call,Own Call 1,Own Call 2
//            1by   1by   1by    8by     8by       8by        8by      4by
byte bufferTxRx[]={0x40,0,0,'F','4','G','O','H',' ',' ','G','F','4','G','O','H',' ',' ','B','C','Q','C','Q','C','Q',' ',' ','F','4','G','O','H',' ',' ',' ','I','D','5','1',0,0,0};

byte bufferConv[BUFSIZE*2];      //buffer convolued,randomize and interleaved data 
byte history[BUFSIZE*8];    //buffer for viterbi decoding (large buffer need)

void convol()
{
  Serial.println("Data to encode :");
  
  print_data(bufferTxRx,sizeof(bufferTxRx),1);     

  Serial.print("Add CRC :");
  Dstar.add_crc(bufferTxRx); 
  
   Serial.print("crc : ");
   Serial.println(Dstar.crc,HEX);    
   Serial.println("Data to encode :");
   
   print_data(bufferTxRx,sizeof(bufferTxRx),0);     
   
   Serial.println("Data convolued :");    

   Dstar.convolution(bufferTxRx,bufferConv);    //source, dest
   print_data(bufferConv,sizeof(bufferConv),0);

   Serial.println("Data interleaving :");    
   Dstar.interleave(bufferConv);  
   
   print_data(bufferConv,sizeof(bufferConv),0); 

   Serial.println("Data scrambling :");    
   Dstar.pseudo_random(bufferConv,660);       
   
   print_data(bufferConv,sizeof(bufferConv),0); 
  
}

void decode()
{

   Serial.println("Data de-scrambling :");    
   Dstar.pseudo_random(bufferConv,660);       
   
   print_data(bufferConv,sizeof(bufferConv),0); 
   
   Serial.println("Data de-interleaving :");    
   Dstar.deInterleave(bufferConv);

   print_data(bufferConv,sizeof(bufferConv),0); 
  
   Serial.println("Data decoded(viterbi) :");    

   Dstar.viterbi(bufferConv,history,bufferTxRx);  //decode data
   print_data(bufferTxRx,sizeof(bufferTxRx),0);     
   
   Serial.print("Nb errors :");
   Serial.println(Dstar.acc_error[1][0]);    //print nb errors

   Serial.print("Checking crc : ");     
   Serial.println(Dstar.check_crc(bufferTxRx));    //crc testing

   Serial.print("Original data :");
   print_data(bufferTxRx,sizeof(bufferTxRx),1);     

}

About

DSTAR Arduino library

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages