Advertisement
Guest User

Untitled

a guest
Apr 30th, 2020
313
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.44 KB | None | 0 0
  1. #include "settings.h"
  2. #include "lib_crc32.h"
  3. #include "lib_tcp.h"
  4. /**t************************************************************************/
  5. #include <inttypes.h>
  6. /**e************************************************************************/
  7. /***************************************************************************/
  8. static unsigned char commands[16];
  9. static unsigned int commandsLen;
  10.  
  11. static unsigned char parameters[16];
  12. static unsigned int parametersLen;
  13.  
  14. static uint32_t crc;
  15.  
  16. /**h************************************************************************/
  17. extern void lib_g6request_init()
  18. {
  19.     commandsLen=0;
  20.     parametersLen=0;
  21.  
  22.     return;
  23. }
  24. /**h************************************************************************/
  25. extern void lib_g6request_CRCme()
  26. {
  27.     lib_crc32_init();
  28.     lib_crc32_data(commands, commandsLen);
  29.     lib_crc32_data(parameters, parametersLen);
  30.     crc=lib_crc32_crc();
  31.  
  32.     return;
  33. }
  34. /**h************************************************************************/
  35. extern int lib_g6request_CRCcheck(uint32_t crcIn)
  36. {
  37.     return crcIn==crc;
  38. }
  39. /**h************************************************************************/
  40. extern void lib_g6request_get_data()
  41. {
  42.     commands[commandsLen++]='D';
  43.     return;
  44. }
  45. /**h************************************************************************/
  46. extern void lib_g6request_get_fromLine(uint32_t lineFrom)
  47. {
  48.     commands[commandsLen++]='w';
  49.     *((uint32_t*)(&parameters[parametersLen]))=lineFrom;
  50.     parametersLen +=4;
  51.     return;
  52. }
  53. /**h************************************************************************/
  54. extern void lib_g6request_get_lines(int32_t lines)
  55. {
  56.     commands[commandsLen++]='v';
  57.     *((uint16_t*)(&parameters[parametersLen]))=lines;
  58.     parametersLen +=2;
  59.     return;
  60. }
  61. /**h************************************************************************/
  62. extern void lib_g6request_flag(unsigned char flagCh)
  63. {
  64.     commands[commandsLen++]=flagCh;
  65.     return;
  66. }
  67. /**h************************************************************************/
  68. extern int lib_g6request_send()
  69. {
  70.  
  71.     res=lib_tcp_send("\t\t", 2);
  72.     res=lib_tcp_send(commands, commandsLen);
  73.     res=lib_tcp_send("\r\n", 2);
  74.     res=lib_tcp_send(parameters, parametersLen);
  75.  
  76.     return res;
  77. }
  78. /***************************************************************************/
  79. // usage:
  80.     lib_tcp_setPort("70");
  81.  
  82.     res=lib_tcp_connect("hostname.com");
  83.  
  84.     res=lib_tcp_send(string, "/main_page");
  85.  
  86.     lib_g6request_init();
  87.     lib_g6request_get_data();
  88.     lib_g6request_get_fromLine(fromLineN);
  89.     lib_g6request_get_lines(lines);
  90.     lib_g6request_flag('5');
  91.     lib_g6request_CRCme();
  92.     res=lib_g6request_send();
  93.  
  94.     res=lib_tcp_readN((char *)&crcIn, 4);
  95.  
  96.     res=lib_g6request_CRCcheck(crcIn);
  97.     if (res)
  98.     {
  99. //        lib_status_printSt( 9,"G6 answer" );
  100.         res=lib_tcp_readN((char *)&lib_gopher6_rcode, 1);
  101.         if (lib_gopher6_rcode>=16)
  102.         {
  103.              lib_status_printSt( 9,"G6 error:" );
  104.              return 1;
  105.         }
  106.         res=lib_tcp_readN((char *)&lib_gopher6_gtype, 1);
  107.  
  108.         unsigned char varA=lib_gopher6_rcode & 0x03;
  109.         unsigned char varB=lib_gopher6_rcode >> 2;
  110.  
  111.         lib_gopher6_dataLen=readNum(varB);
  112.  
  113.         res=lib_tcp_readN((char *)&varB, 1);
  114.  
  115.         lib_gopher6_dataStrings=readNum(varB);
  116.  
  117.     }
  118.     else
  119.     {
  120.         lib_gopher6_dataLen=0;
  121.         lib_gopher6_dataStrings=LINE_NUM_MEM;
  122.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement