Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "settings.h"
- #include "lib_crc32.h"
- #include "lib_tcp.h"
- /**t************************************************************************/
- #include <inttypes.h>
- /**e************************************************************************/
- /***************************************************************************/
- static unsigned char commands[16];
- static unsigned int commandsLen;
- static unsigned char parameters[16];
- static unsigned int parametersLen;
- static uint32_t crc;
- /**h************************************************************************/
- extern void lib_g6request_init()
- {
- commandsLen=0;
- parametersLen=0;
- return;
- }
- /**h************************************************************************/
- extern void lib_g6request_CRCme()
- {
- lib_crc32_init();
- lib_crc32_data(commands, commandsLen);
- lib_crc32_data(parameters, parametersLen);
- crc=lib_crc32_crc();
- return;
- }
- /**h************************************************************************/
- extern int lib_g6request_CRCcheck(uint32_t crcIn)
- {
- return crcIn==crc;
- }
- /**h************************************************************************/
- extern void lib_g6request_get_data()
- {
- commands[commandsLen++]='D';
- return;
- }
- /**h************************************************************************/
- extern void lib_g6request_get_fromLine(uint32_t lineFrom)
- {
- commands[commandsLen++]='w';
- *((uint32_t*)(¶meters[parametersLen]))=lineFrom;
- parametersLen +=4;
- return;
- }
- /**h************************************************************************/
- extern void lib_g6request_get_lines(int32_t lines)
- {
- commands[commandsLen++]='v';
- *((uint16_t*)(¶meters[parametersLen]))=lines;
- parametersLen +=2;
- return;
- }
- /**h************************************************************************/
- extern void lib_g6request_flag(unsigned char flagCh)
- {
- commands[commandsLen++]=flagCh;
- return;
- }
- /**h************************************************************************/
- extern int lib_g6request_send()
- {
- res=lib_tcp_send("\t\t", 2);
- res=lib_tcp_send(commands, commandsLen);
- res=lib_tcp_send("\r\n", 2);
- res=lib_tcp_send(parameters, parametersLen);
- return res;
- }
- /***************************************************************************/
- // usage:
- lib_tcp_setPort("70");
- res=lib_tcp_connect("hostname.com");
- res=lib_tcp_send(string, "/main_page");
- lib_g6request_init();
- lib_g6request_get_data();
- lib_g6request_get_fromLine(fromLineN);
- lib_g6request_get_lines(lines);
- lib_g6request_flag('5');
- lib_g6request_CRCme();
- res=lib_g6request_send();
- res=lib_tcp_readN((char *)&crcIn, 4);
- res=lib_g6request_CRCcheck(crcIn);
- if (res)
- {
- // lib_status_printSt( 9,"G6 answer" );
- res=lib_tcp_readN((char *)&lib_gopher6_rcode, 1);
- if (lib_gopher6_rcode>=16)
- {
- lib_status_printSt( 9,"G6 error:" );
- return 1;
- }
- res=lib_tcp_readN((char *)&lib_gopher6_gtype, 1);
- unsigned char varA=lib_gopher6_rcode & 0x03;
- unsigned char varB=lib_gopher6_rcode >> 2;
- lib_gopher6_dataLen=readNum(varB);
- res=lib_tcp_readN((char *)&varB, 1);
- lib_gopher6_dataStrings=readNum(varB);
- }
- else
- {
- lib_gopher6_dataLen=0;
- lib_gopher6_dataStrings=LINE_NUM_MEM;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement