Add new command "capability" to get the platform capability information.
authorKim Gunsoo <gunsoo83.kim@samsung.com>
Thu, 28 May 2015 13:03:12 +0000 (22:03 +0900)
committerGunSoo Kim <gunsoo83.kim@samsung.com>
Fri, 19 Jun 2015 06:08:30 +0000 (15:08 +0900)
Change-Id: Id351161877ba1598625c8e996fbf47260a5306cd
Signed-off-by: Kim Gunsoo <gunsoo83.kim@samsung.com>
src/command_function.c
src/command_function.h
src/commandline.c
src/sdb_constants.c
src/sdb_constants.h

index 46486cc48b3e9641a01b96535d7c7e535ede2b72..d3b8d3448d7f883c1ca92832edd03667070c2864 100644 (file)
@@ -704,6 +704,30 @@ int uninstall(int argc, char **argv) {
     return 0;
 }
 
+#define CAPBUF_SIZE 4096
+int get_capability(int argc, char ** argv) {
+    char full_cmd[16] = {0,};
+    char cap_buffer[CAPBUF_SIZE] = {0,};
+    uint16_t len = 0;
+
+    snprintf(full_cmd, sizeof(full_cmd), "capability:");
+    D(COMMANDLINE_MSG_FULL_CMD, argv[0], full_cmd);
+    int fd = sdb_connect(full_cmd);
+
+    if(fd >= 0) {
+        readx(fd, &len, sizeof(uint16_t));
+        if (len > CAPBUF_SIZE-1) {
+            len = CAPBUF_SIZE-1;
+        }
+        readx(fd, cap_buffer, len);
+
+        fprintf(stdout, "%s\n", cap_buffer);
+        sdb_close(fd);
+        return 0;
+    }
+    return 1;
+}
+
 // Get the package temporary path. Returns minus if exception happens.
 static int get_pkg_tmp_dir(char* pkg_tmp_dir){
 
index fc49f9ed54d4d1c344e10c5383b44804edf6b745..19ddf697c7577966bfb1c24eda3e5aec829e979a 100644 (file)
@@ -59,5 +59,6 @@ int install(int argc, char **argv);
 int uninstall(int argc, char **argv);
 int forkserver(int argc, char** argv);
 int shell(int argc, char ** argv);
+int get_capability(int argc, char ** argv);
 
 #endif /* COMMAND_FUNCTION_H_ */
index 3b7c92d26f7a2f4830079cee5ba1b90406a33856..3fe1885c2bf8719c186cf01060c007cf7068ac24 100755 (executable)
@@ -612,6 +612,11 @@ static void create_cmd_list(LIST_NODE** cmd_list) {
     create_command(&da_cmd , COMMANDLINE_DA_NAME, NULL,
             0, EMPTY_STRING, da, COMMANDLINE_DA_MAX_ARG, COMMANDLINE_DA_MIN_ARG);
     prepend(cmd_list, da_cmd );
+
+    COMMAND* capability_cmd = NULL;
+    create_command(&capability_cmd, COMMANDLINE_CAPABILITY_NAME, NULL,
+            0, EMPTY_STRING, get_capability, COMMANDLINE_CAPABILITY_MAX_ARG, COMMANDLINE_CAPABILITY_MIN_ARG);
+    prepend(cmd_list, capability_cmd);
 }
 
 int process_cmdline(int argc, char** argv) {
index 7e23d388a8fc7b0deec8f1863038cad31c4d9707..510428c02e3a7f381d908c884d1f852d2599e600 100644 (file)
     const int COMMANDLINE_FORKSERVER_MAX_ARG = 1;
     const int COMMANDLINE_FORKSERVER_MIN_ARG = 1;
 
+    const char* COMMANDLINE_CAPABILITY_NAME = "capability";
+    const int COMMANDLINE_CAPABILITY_MAX_ARG = 0;
+    const int COMMANDLINE_CAPABILITY_MIN_ARG = 0;
+
     const char* COMMANDLINE_SERIAL_SHORT_OPT = "s";
     const char* COMMANDLINE_SERIAL_LONG_OPT = "serial";
     const char* COMMANDLINE_SERIAL_DESC[] = {
index 8ef1be80fa75a6527a26511bf93b5b48094c6feb..3d8ea044ed2b60c0ef29bf153d19c55456c3515c 100644 (file)
@@ -223,6 +223,11 @@ typedef enum host_type HOST_TYPE;
     extern const int COMMANDLINE_FORKSERVER_MAX_ARG;
     extern const int COMMANDLINE_FORKSERVER_MIN_ARG;
 
+    extern const char* COMMANDLINE_CAPABILITY_NAME;
+    extern const int COMMANDLINE_CAPABILITY_MAX_ARG;
+    extern const int COMMANDLINE_CAPABILITY_MIN_ARG;
+
+
     extern const char* COMMANDLINE_SERIAL_SHORT_OPT;
     extern const char* COMMANDLINE_SERIAL_LONG_OPT;
     extern const char* COMMANDLINE_SERIAL_DESC[];