如何将Android层的RIL代码移植到Linux平台?

时间:2013-09-06 02:25:31

标签: android linux ril

我已经在linux平台上成功编译了RIL代码层,它已经运行了。 RIL就像服务器一样,它通过socket与客户端通信。现在我写了一个客户端。客户端可以成功绑定服务器,但是当客户端将数据写入RIL服务器时,它是错误的。 RIL服务器崩溃了。我猜客户端的数据格式不正确,服务器无法分析数据。 将数据从套接字发送到服务器时,如何组织客户端的数据格式?

顺便说一句,我没有更改RIL代码,尤其是函数[processCommandsCallback]。我删除了Parcell.cpp中的BINDER并保留其他BINDER。

客户端的恶魔代码在这里:

#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>
#define UNIX_DOMAIN "/tmp/msg_server_addr"
#define RIL_REQUEST_ANSWER 40
struct parcel 
{
int requestID;
int token;
char data[10];  
};

int main(void)
{ 

 int connect_fd;
 struct sockaddr_un srv_addr;
 p.requestID = RIL_REQUEST_ANSWER;
 p.token= 1;
 strcpy(p.data,"");
 if( (connect_fd = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) 
 {
     perror("client create socket failed");
     return 1;
 }

 srv_addr.sun_family = AF_UNIX;
 strcpy(srv_addr.sun_path, UNIX_DOMAIN);  

  ret = connect(connect_fd, (struct sockaddr*)&srv_addr, sizeof(srv_addr));        
  write(connect_fd, (void *)&p, sizeof(p));
  close(connect_fd);
}

0 个答案:

没有答案