Advertisement
redsees

Untitled

Mar 17th, 2017
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.47 KB | None | 0 0
  1. /*
  2.  *  AX.25 protocol frame structure:
  3.  *  -------------------------------
  4.  *
  5.  *  Flag Field: 8 bits (1 byte)
  6.  *  Header Field: 128 bits (16 bytes)
  7.  *      {
  8.  *    Destination Address: 56 bits (7 bytes)
  9.  *    Source      Address: 56 bits (7 bytes)
  10.  *    Control Bits       : 8  bits (1 byte )
  11.  *    Protocol Identifier: 8  bits (1 byte )
  12.  *  }
  13.  *  Data Field: 32-2048 bits (4-256 bytes)
  14.  *  Frame Checksum Field: 128 bits (16 bytes)
  15.  *  Flag Field: 8 bits (1 byte)
  16.  *
  17.  */
  18.  
  19. #include<MD5.h>
  20.  
  21. unsigned char AX25_Flag;
  22. unsigned char AX25_Header[16]  = {0};
  23. unsigned char AX25_Data[256]   = {0};
  24. unsigned char AX25_CheckSum[16] = {0};
  25.  
  26. int inByte = 0;
  27. unsigned char* Hash;
  28. char* MD5CheckSum;
  29. int i;
  30.  
  31. void setup()
  32. {
  33.     // Serial1 : TX pin 18, RX pin 19
  34.     // Serial2 : TX pin 16, RX pin 17
  35.     // Serial1 will receive data from a device and resend it on Serial2 using AX25 protocol format
  36.  
  37.     Serial1.begin(9600);
  38.     Serial2.begin(9600);
  39. }
  40.  
  41. void loop()
  42. {
  43.     // Wait until data is received on Serial1 port
  44.     while ( !(Serial1.available()) );
  45.    
  46.     // Read received data
  47.     inByte = Serial1.read();
  48.     Hash = MD5::make_hash(inByte);
  49.        
  50.     // Send the data using AX.25 protocol format
  51.     AX25_Data[0] = (unsigned char) inByte & 0xFF;
  52.     Hash = MD5::make_hash(AX25_Data[0]);
  53.     MD5CheckSum = MD5::make_digest(Hash, 16);
  54.     for ( i = 0; i < 16 ; i++)
  55.         AX25_CheckSum[i] = MD5CheckSum[i];
  56.  
  57.     Serial2.write(AX25_Flag);
  58.     Serial2.write(AX25_Header, 16);
  59.     Serial2.write(AX25_Data, 256);
  60.     Serial2.write(AX25_CheckSum, 16);
  61.     Serial2.write(AX25_Flag);
  62.    
  63.     delay(500);
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement