[RK3288][Android6.0] 调试笔记 --- Netd测试工具ndc

Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92

目的:
Netd中的命令在命令行可以通过ndc工具来执行.

功能:
1.监控Netd
2.发送命令给Netd 

源代码路径:
system/netd/server/ndc.c

原理:
ndc的原理其实就是通过socket连接上netd进行交互, 这部分可以从源代码体现:

ndc.c

int main(int argc, char **argv) {
    //argv[1]可以是socket name.
    if ((sock = socket_local_client(argv[1],
                                     ANDROID_SOCKET_NAMESPACE_RESERVED,
                                     SOCK_STREAM)) < 0) {
        //如果不传,那么默认就是name为"netd"socket                   
        if ((sock = socket_local_client("netd",
                                         ANDROID_SOCKET_NAMESPACE_RESERVED,
                                         SOCK_STREAM)) < 0) {
            fprintf(stderr, "Error connecting (%s)\n", strerror(errno));
            exit(4);
        }
    }
    exit(do_cmd(sock, argc-cmdOffset, &(argv[cmdOffset])));
} 
static int do_cmd(int sock, int argc, char **argv) {
   //命令参数最终通过socket发送给netd服务进程处理
   if (write(sock, final_cmd, strlen(final_cmd) + 1) < 0) {
        int res = errno;
        perror("write");
        free(final_cmd);
        return res;
    }
}

测试:

  • 监听:
    [RK3288][Android6.0] 调试笔记 --- Netd测试工具ndc_第1张图片
  • 命令发送:
    这里写图片描述

支持命令:
对应的命令以及参数可以在system/netd/server/CommandListener.cpp查看。

你可能感兴趣的:(子类__WiFi)