20181003_jeffrey - silenceuncrio/diary GitHub Wiki

0840

LTE / Engineer 繼續推進

修改 proscend/prosrc/webcgi/lte.c 為了新增兩組 CGI

  • HTTP GET - lte.cgi?get_multi_lock_pci
  • HTTP GET - lte.cgi?get_multi_lock_pci_conf_opt

修改如下

@@ -676,6 +676,74 @@ static void _multi_neighbor_pci()



+static json_object * _get_multi_lock_pci_lock_pci()
+{
+    json_object *o = json_object_new_array();
+    for (int i = 0; i < Lock_pci_list.num; i ++)
+    {
+        json_object *e = json_object_new_object();
+        json_object_object_add(e, "idx", json_object_new_int(Lock_pci_list.lock_pci[i].idx));
+        json_object_object_add(e, "frequence", json_object_new_int(Lock_pci_list.lock_pci[i].frequence));
+        json_object_object_add(e, "pcid", json_object_new_int(Lock_pci_list.lock_pci[i].pcid));
+        json_object_object_add(e, "locked", json_object_new_int(Lock_pci_list.lock_pci[i].locked));
+        json_object_array_add(o, e);
+    }
+
+    return o;
+}
+
+static json_object * _get_multi_lock_pci()
+{
+    int res = ICOS_GetSetting(MODULE_LTE, MULTI_LOCK_PCI, 0, &Lock_pci_list, sizeof(Lock_pci_list));
+    if (res != ICOS_SUCCESS)
+    {
+        jweb.http.status(500);
+        jweb.out.json.fail("ICOS_GetSetting fail");
+    }
+
+    json_object *o = json_object_new_object();
+    json_object_object_add(o, "num", json_object_new_int(Lock_pci_list.num));
+    json_object_object_add(o, "lock_pci", _get_multi_lock_pci_lock_pci());
+
+    jweb.out.json.data("multi_lock_pci", o);
+}
+
+
+
+static json_object * _get_multi_lock_pci_conf_opt_lock_pci()
+{
+    json_object *o = json_object_new_array();
+    for (int i = 0; i < Lock_pci_list.num; i ++)
+    {
+        json_object *e = json_object_new_object();
+        json_object_object_add(e, "idx", json_object_new_int(Lock_pci_list.lock_pci[i].idx));
+        json_object_object_add(e, "frequence", json_object_new_int(Lock_pci_list.lock_pci[i].frequence));
+        json_object_object_add(e, "pcid", json_object_new_int(Lock_pci_list.lock_pci[i].pcid));
+        json_object_object_add(e, "locked", json_object_new_int(Lock_pci_list.lock_pci[i].locked));
+        json_object_array_add(o, e);
+    }
+
+    return o;
+}
+
+static json_object * _get_multi_lock_pci_conf_opt()
+{
+    int res = ICOS_GetSetting(MODULE_LTE, MULTI_LOCK_PCI_CONF_OPT, 0, &Lock_pci_list, sizeof(Lock_pci_list));
+    if (res != ICOS_SUCCESS)
+    {
+        jweb.http.status(500);
+        jweb.out.json.fail("ICOS_GetSetting fail");
+    }
+
+    json_object *o = json_object_new_object();
+    json_object_object_add(o, "num", json_object_new_int(Lock_pci_list.num));
+    json_object_object_add(o, "lock_pci", _get_multi_lock_pci_conf_opt_lock_pci());
+
+    jweb.out.json.data("multi_lock_pci_conf_opt", o);
+}
+
+
+
 static void _help()
 {
     jweb.out.json.ok();
@@ -759,6 +827,14 @@ int main(void)
     {
         _multi_neighbor_pci();
     }
+    else if (STRCMP(jweb.in.act, "get_multi_lock_pci"))
+    {
+        _get_multi_lock_pci();
+    }
+    else if (STRCMP(jweb.in.act, "get_multi_lock_pci_conf_opt"))
+    {
+        _get_multi_lock_pci_conf_opt();
+    }
     else if (STRCMP(jweb.in.act, "help"))
     {
         _help();

成果如下 - 不過還沒 implement apply 所以都是空的

lte.cgi?get_multi_lock_pci

image

lte.cgi?get_multi_lock_pci_conf_opt

image

先 commit 但不 push

commit 08e79ba366130b8c5d32204a06b0d534238d3610
Refs: [release/v0.08]
Author: jeffrey <[email protected]>
Date:   Wed Oct 3 09:11:27 2018 +0800

    add 2 CGIs for 'LTE / Engineer' web page:
    - HTTP GET - lte.cgi?get_multi_lock_pci
    - HTTP GET - lte.cgi?get_multi_lock_pci_conf_opt

 proscend/prosrc/webcgi/lte.c | 76 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 76 insertions(+)

來作 apply 的部分

  • HTTP POST - lte.cgi?act=apply_multi_lock_pci
  • HTTP POST - lte.cgi?act=apply_multi_lock_pci_conf_opt

修改如下 - proscend/prosrc/webcgi/lte.c

@@ -744,6 +744,70 @@ static json_object * _get_multi_lock_pci_conf_opt()



+static void _apply_multi_lock_pci()
+{
+    jweb.in.to_int("num", &Neighbour_list.num);
+
+    json_object *neighbor;
+    jweb.in.to_raw("neighbor", &neighbor);
+    for (int i = 0; i < Neighbour_list.num; i ++)
+    {
+        json_object *e = json_object_array_get_idx(neighbor, i);
+        jweb.j.to_nstring(e, "rate", Neighbour_list.neighbor[i].rate, 10 - 1);
+        jweb.j.to_int(e, "earfcn", &Neighbour_list.neighbor[i].earfcn);
+        jweb.j.to_int(e, "pcid", &Neighbour_list.neighbor[i].pcid);
+        jweb.j.to_int(e, "rsrq", &Neighbour_list.neighbor[i].rsrq);
+        jweb.j.to_int(e, "rsrp", &Neighbour_list.neighbor[i].rsrp);
+        jweb.j.to_int(e, "rssi", &Neighbour_list.neighbor[i].rssi);
+        jweb.j.to_int(e, "sinr", &Neighbour_list.neighbor[i].sinr);
+        jweb.j.to_int(e, "cell_resel_priority", &Neighbour_list.neighbor[i].cell_resel_priority);
+        jweb.j.to_bool(e, "select", &Neighbour_list.neighbor[i].select);
+    }
+
+    int res = ICOS_Apply(MODULE_LTE, MULTI_LOCK_PCI, 0, &Neighbour_list, sizeof(Neighbour_list));
+    if (res != ICOS_SUCCESS)
+    {
+        jweb.http.status(500);
+        jweb.out.json.fail("ICOS_Apply fail");
+    }
+
+    jweb.out.json.ok();
+}
+
+
+
+static void _apply_multi_lock_pci_conf_opt()
+{
+    jweb.in.to_int("num", &Neighbour_list.num);
+
+    json_object *neighbor;
+    jweb.in.to_raw("neighbor", &neighbor);
+    for (int i = 0; i < Neighbour_list.num; i ++)
+    {
+        json_object *e = json_object_array_get_idx(neighbor, i);
+        jweb.j.to_nstring(e, "rate", Neighbour_list.neighbor[i].rate, 10 - 1);
+        jweb.j.to_int(e, "earfcn", &Neighbour_list.neighbor[i].earfcn);
+        jweb.j.to_int(e, "pcid", &Neighbour_list.neighbor[i].pcid);
+        jweb.j.to_int(e, "rsrq", &Neighbour_list.neighbor[i].rsrq);
+        jweb.j.to_int(e, "rsrp", &Neighbour_list.neighbor[i].rsrp);
+        jweb.j.to_int(e, "rssi", &Neighbour_list.neighbor[i].rssi);
+        jweb.j.to_int(e, "sinr", &Neighbour_list.neighbor[i].sinr);
+        jweb.j.to_int(e, "cell_resel_priority", &Neighbour_list.neighbor[i].cell_resel_priority);
+        jweb.j.to_bool(e, "select", &Neighbour_list.neighbor[i].select);
+    }
+
+    int res = ICOS_Apply(MODULE_LTE, MULTI_LOCK_PCI_CONF_OPT, 0, &Neighbour_list, sizeof(Neighbour_list));
+    if (res != ICOS_SUCCESS)
+    {
+        jweb.http.status(500);
+        jweb.out.json.fail("ICOS_Apply fail");
+    }
+
+    jweb.out.json.ok();
+}
+
+
+
 static void _help()
 {
     jweb.out.json.ok();
@@ -835,6 +899,14 @@ int main(void)
     {
         _get_multi_lock_pci_conf_opt();
     }
+    else if (STRCMP(jweb.in.act, "apply_multi_lock_pci"))
+    {
+        _apply_multi_lock_pci();
+    }
+    else if (STRCMP(jweb.in.act, "apply_multi_lock_pci_conf_opt"))
+    {
+        _apply_multi_lock_pci_conf_opt();
+    }
     else if (STRCMP(jweb.in.act, "help"))
     {
         _help();

1350

完工

commit 8ae5f83adafc11a09c4d4ad7a6cba7d85ae8ab9c
Refs: [release/v0.08], {origin/release/v0.08}
Author: jeffrey <[email protected]>
Date:   Wed Oct 3 13:44:27 2018 +0800

    re-design 'LTE / Engineer' web page:
    - nav tab Neighbors
      - Search
      - Lock
      - Unlock
      - Save for bootup locked
    - nav tab Locked PCIs
      - Refresh
    - nav tab Saved Locked PCIs
      - Refresh

 proscend/prosrc/webcgi/lte.c                     |  72 ++++++++++++
 proscend/prosrc/www/app/feature/engineer.html    | 120 ++++++++++---------
 proscend/prosrc/www/app/feature/engineer.js      | 139 ++++++++++++-----------
 proscend/prosrc/www/app/locale-en.json           |  41 ++-----
 proscend/prosrc/www/app/locale-fr.json           |  35 ++----
 proscend/prosrc/www/app/locale-zh-tw.json        |  35 ++----
 proscend/prosrc/www/app/services/icos.service.js |  12 ++
 7 files changed, 248 insertions(+), 206 deletions(-)

push and pull latest then build image... ok

1425

剛剛 aaron 那邊也發生 firmware upgrade javascript 沒要到最後的 finish

aaron 那邊和 john 發生的現象又不一樣

FirmwareUpgrade.log 表示已作完

不過 FirmwareUpgrade.progress 卻還是顯示 busy

aaron 表示他今天利用 web ui 作 upgrade 大概作了 三四 次

我想者問題有待查證

最糟就要退回去 CGI 咬住的狀態了

1450

Lock PCIs 應該算完工了

commit dd1f4ad2d2d13d88e21692b81b8071238e9cad44
Refs: [release/v0.08], {origin/release/v0.08}
Author: jeffrey <[email protected]>
Date:   Wed Oct 3 14:47:15 2018 +0800

    re-design 'LTE / Engineer' web page:
    - rm 'LTE / Engineer' web page
    - add 'LTE / Lock PCIs' web page

 proscend/prosrc/icos/iweb/iweb.c               |   2 +
 proscend/prosrc/www/app/feature/engineer.html  | 180 -------------------------
 proscend/prosrc/www/app/feature/engineer.js    | 172 -----------------------
 proscend/prosrc/www/app/feature/lock_pcis.html | 180 +++++++++++++++++++++++++
 proscend/prosrc/www/app/feature/lock_pcis.js   | 157 +++++++++++++++++++++
 proscend/prosrc/www/app/locale-en.json         |  39 +++---
 proscend/prosrc/www/app/locale-fr.json         |  39 +++---
 proscend/prosrc/www/app/locale-zh-tw.json      |  39 +++---
 proscend/prosrc/www/src/index.html.src         |   2 +-
 proscend/prosrc/www/src/menu.html.src          |   2 +-
 10 files changed, 401 insertions(+), 411 deletions(-)

1505

commit 18652e0b9c65713d5b2b291dfc3d7c5d997c47d7
Refs: [release/v0.08], {origin/release/v0.08}
Author: jeffrey <[email protected]>
Date:   Wed Oct 3 15:04:11 2018 +0800

    add 'Connection Request Port' field for 'Service / TR069' web page

 proscend/prosrc/webcgi/cwmp.c             | 4 ++++
 proscend/prosrc/www/app/feature/cwmp.html | 8 ++++++++
 proscend/prosrc/www/app/locale-en.json    | 1 +
 proscend/prosrc/www/app/locale-fr.json    | 1 +
 proscend/prosrc/www/app/locale-zh-tw.json | 1 +
 5 files changed, 15 insertions(+)

1515

commit a8759b531f3dd49a00f9c23c78c9b2f5eda8233c
Refs: [release/v0.08], {origin/release/v0.08}
Author: jeffrey <[email protected]>
Date:   Wed Oct 3 15:12:05 2018 +0800

    about 'Management / Identification' web page:
    - rm MAC Address field
    - add LAN MAC Address field
    - add WAN MAC Address field

 proscend/prosrc/www/app/feature/identification.html | 3 ++-
 proscend/prosrc/www/app/locale-en.json              | 2 ++
 proscend/prosrc/www/app/locale-fr.json              | 2 ++
 proscend/prosrc/www/app/locale-zh-tw.json           | 2 ++
 4 files changed, 8 insertions(+), 1 deletion(-)

1650

再回頭 check 一下為何 52XXZ 的 zebra 起不來

先把相關的 icos module 都不要 init - proscend/prosrc/icos/icoslib/entry.c

@@ -182,7 +182,7 @@ sAttStringSet moduleInitAry[] =
     { "MODULE_ROUTE", MODULE_ROUTE },
 #endif
 #ifdef PROSRC_ZEBRA
-    { "MODULE_ZEBRA", MODULE_ZEBRA },
+//    { "MODULE_ZEBRA", MODULE_ZEBRA },
 #endif
 #ifdef PROSRC_RIP
     { "MODULE_RIP", MODULE_RIP },
@@ -194,13 +194,13 @@ sAttStringSet moduleInitAry[] =
     { "MODULE_SMTP", MODULE_SMTP },
 #endif
 #ifdef PROSRC_OSPF_2G
-    { "MODULE_OSPF_2G", MODULE_OSPF_2G },
+//    { "MODULE_OSPF_2G", MODULE_OSPF_2G },
 #endif
 #ifdef PROSRC_RIP_2G
-    { "MODULE_RIP_2G", MODULE_RIP_2G },
+//    { "MODULE_RIP_2G", MODULE_RIP_2G },
 #endif
 #ifdef PROSRC_BGP
-    { "MODULE_BGP", MODULE_BGP },
+//    { "MODULE_BGP", MODULE_BGP },
 #endif
 #ifdef PROSRC_AZ
     { "MODULE_AZ", MODULE_AZ },

發現 quagga package 52XXZ 與 M360P 版本和放的位置都不一樣

M360P

  • package/net/quagga
  • PKG_VERSION: 1.1.0 52XXZ
  • package/feeds/open_applications/quagga
  • PKG_VERSION: 0.99.20

先把 52XXZ 的 quagga package 移除

直接在 proscend 外層 make

再進 proscend make clean 後再 make

upgrade via uboot... ok

...
insmod: can't insert '/lib/modules/3.10.12/usb-storage.ko': unknown symbol in module, or unknown parameter
insmod: can't insert '/lib/modules/3.10.12/usbserial.ko': unknown symbol in module, or unknown parameter
insmod: can't insert '/lib/modules/3.10.12/usb_wwan.ko': unknown symbol in module, or unknown parameter
insmod: can't insert '/lib/modules/3.10.12/option.ko': unknown symbol in module, or unknown parameter
...

怎麼跟上次 busybox 更新後的狀況一一樣

不管

直接從 M360P 將 quagga package 複製過來

在 proscend 外層作 make distclean 後再 make