Sending commands to RTL_TCP What format do the commands need to be in order to change the frequency of RTL_TCP. I have tried the following and the frequency will change but no to the frequency that is expected for example: This code : char SET_FREQUENCY[] ={0x01}; string Freq = string(SET_FREQUENCY,1)+"500000000"; answer = send(sConnect,Freq.c_str(),11,0); Changes the freq to this: client accepted! set freq 892350512 ll+, now 1 ll+, now 2 Any help would be greatly appreciated as i have been stuck on this for days. Thanks
Hi, On 25.03.2013 18:10, Chris Svendsen wrote:
char SET_FREQUENCY[] ={0x01}; string Freq = string(SET_FREQUENCY,1)+"500000000"; answer = send(sConnect,Freq.c_str(),11,0);
The "set frequency"-command of rtl_tcp expects an unsigned 32 bit integer in network byte order, not a string. Host implementation: http://cgit.osmocom.org/rtl-sdr/tree/src/rtl_tcp.c#n325 Client implementation: http://cgit.osmocom.org/gr-osmosdr/tree/lib/rtl_tcp/rtl_tcp_source_f.cc#n275 Regards, Steve
Added the attribute packed struct command{ unsigned char cmd; unsigned int param; }__attribute__((packed)); The sizeof(cmd) is 8 it was also 8 before attrib packed was added. thanks ---------- Forwarded message ---------- From: Chris Svendsen <csvendsen2143@gmail.com> Date: Mon, Mar 25, 2013 at 1:10 PM Subject: RTL_TCP Commands To: osmocom-sdr@lists.osmocom.org Sending commands to RTL_TCP What format do the commands need to be in order to change the frequency of RTL_TCP. I have tried the following and the frequency will change but no to the frequency that is expected for example: This code : char SET_FREQUENCY[] ={0x01}; string Freq = string(SET_FREQUENCY,1)+"500000000"; answer = send(sConnect,Freq.c_str(),11,0); Changes the freq to this: client accepted! set freq 892350512 ll+, now 1 ll+, now 2 Any help would be greatly appreciated as i have been stuck on this for days. Thanks
Got it I was missing the below: #ifdef _WIN32 #define __attribute__(x) #pragma pack(push, 1) #ifdef _WIN32 #pragma pack(pop) #endif for now in the function i have int nFreq; #define COMM_SET_FREQ ((unsigned char) 0x01) #ifdef _WIN32 #define __attribute__(x) #pragma pack(push, 1) #endif struct command{ unsigned char cmd; unsigned int param; }__attribute__((packed)); #ifdef _WIN32 #pragma pack(pop) #endif void sendCommand(unsigned char cmds, unsigned int parami) { int left; int sent; int retr = 0; struct command cmd={cmds, htonl(parami)}; left=sizeof(cmd); while(left >0) { //start the funtion of winsock dll int answer; WSAData wsaData; WORD DLLVersion; DLLVersion = MAKEWORD(2,1); answer = WSAStartup(DLLVersion, &wsaData); SOCKADDR_IN addr; int addrlen = sizeof(addr); //setup socket SOCKET sConnect; // internet family of connection oriented socket sConnect = socket(AF_INET, SOCK_STREAM,NULL); //configure the strucket it addre addr.sin_addr.s_addr = inet_addr("127.0.0.1"); //Now we have to retype the faimly addr.sin_family = AF_INET; // set port google htons addr.sin_port = htons(1234); // no we have to type in the client should connect to tthe server connect(sConnect, (SOCKADDR*)&addr, sizeof(addr)); answer = send(sConnect, (char*)&cmd+(sizeof(cmd)-left), left, 0); cout << (char*)&cmd+(sizeof(cmd)-left) <<endl; closesocket(sConnect); return; } } Works perfectly. Thanks every one for the help. ---------- Forwarded message ---------- From: Chris Svendsen <csvendsen2143@gmail.com> Date: Mon, Mar 25, 2013 at 1:10 PM Subject: RTL_TCP Commands To: osmocom-sdr@lists.osmocom.org Sending commands to RTL_TCP What format do the commands need to be in order to change the frequency of RTL_TCP. I have tried the following and the frequency will change but no to the frequency that is expected for example: This code : char SET_FREQUENCY[] ={0x01}; string Freq = string(SET_FREQUENCY,1)+"500000000"; answer = send(sConnect,Freq.c_str(),11,0); Changes the freq to this: client accepted! set freq 892350512 ll+, now 1 ll+, now 2 Any help would be greatly appreciated as i have been stuck on this for days. Thanks
participants (2)
-
Chris Svendsen -
Steve Markgraf