diff --git a/mbtk/mbtk_gnssd/gnss_main.c b/mbtk/mbtk_gnssd/gnss_main.c
index 3d48ea0..8b91df2 100755
--- a/mbtk/mbtk_gnssd/gnss_main.c
+++ b/mbtk/mbtk_gnssd/gnss_main.c
@@ -959,6 +959,40 @@
     }
 }
 
+int gnss_agnss_get_eph(const void* param)
+{
+    if(gnss_info.gnss_agnss_get_eph)
+    {
+        return gnss_info.gnss_agnss_get_eph(param);
+    }
+    else
+    {
+        return GNSS_ERR_UNSUPPORT;
+    }
+
+    return GNSS_ERR_OK;
+}
+
+int gnss_agnss_inject(void)
+{
+    if(gnss_info.state != GNSS_STATE_READY)
+    {
+        LOGE("gnss not ready");
+        return GNSS_ERR_UNKNOWN;
+    }
+    
+    if(gnss_info.gnss_agnss_inject)
+    {
+        return gnss_info.gnss_agnss_inject(gnss_info.fd);
+    }
+    else
+    {
+        return GNSS_ERR_UNSUPPORT;
+    }
+    
+    return GNSS_ERR_OK;
+}
+
 int gnss_ind_set(int fd, int ind_type)
 {
     int index = 0;
@@ -1092,6 +1126,8 @@
         gnss_info.gnss_dl_read_cb = gnss_6228_dl_read_cb;
         gnss_info.gnss_set = gnss_6228_set;
         gnss_info.gnss_set_cb = gnss_6228_set_cb;
+        gnss_info.gnss_agnss_get_eph = NULL;
+        gnss_info.gnss_agnss_inject = NULL;
     } else if(!strcmp(argv[1], GNSS_ID_8122)) {
         gnss_info.gnss_id = GNSS_TYPE_8122;
         gnss_info.auto_open = (bool)atoi(argv[3]);
@@ -1105,6 +1141,8 @@
         gnss_info.gnss_dl_read_cb = NULL;
         gnss_info.gnss_set = gnss_8122_set;
         gnss_info.gnss_set_cb = gnss_8122_set_cb;
+        gnss_info.gnss_agnss_get_eph = gnss_8122_agnss_get_eph;
+        gnss_info.gnss_agnss_inject = gnss_8122_agnss_inject;
     } else if(!strcmp(argv[1], GNSS_ID_5311)) {
         gnss_info.gnss_id = GNSS_TYPE_5311;
         gnss_info.auto_open = (bool)atoi(argv[3]);
@@ -1118,6 +1156,8 @@
         gnss_info.gnss_dl_read_cb = NULL;
         gnss_info.gnss_set = gnss_5311_set;
         gnss_info.gnss_set_cb = gnss_5311_set_cb;
+        gnss_info.gnss_agnss_get_eph = NULL;
+        gnss_info.gnss_agnss_inject = NULL;
     } else if(!strcmp(argv[1], GNSS_ID_N50DB)) {
         gnss_info.gnss_id = GNSS_TYPE_N50DB;
         gnss_info.auto_open = (bool)atoi(argv[3]);
@@ -1131,6 +1171,8 @@
         gnss_info.gnss_dl_read_cb = NULL;
         gnss_info.gnss_set = gnss_n50db_set;
         gnss_info.gnss_set_cb = gnss_n50db_set_cb;
+        gnss_info.gnss_agnss_get_eph = NULL;
+        gnss_info.gnss_agnss_inject = NULL;
     } else {
         LOGE("No support : %s", argv[1]);
         return -1;
